Clearfy – WordPress optimization plugin and disable ultimate tweaker - Version 1.8.9

Version Description

(06.04.2021) = * Fixed: Clearfy was blocking htaccess file overwriting in some cases, now the problem is fixed.

Download this release

Release Info

Developer alexkovalevv
Plugin Icon 128x128 Clearfy – WordPress optimization plugin and disable ultimate tweaker
Version 1.8.9
Comparing to
See all releases

Code changes from version 1.8.7 to 1.8.9

Files changed (276) hide show
  1. admin/activation.php +2 -2
  2. admin/ajax/configurate.php +1 -1
  3. admin/ajax/import-settings.php +2 -2
  4. admin/assets/css/general.css +2 -2
  5. admin/assets/js/general.js +17 -17
  6. admin/assets/js/license-manager.js +4 -4
  7. admin/boot.php +12 -10
  8. admin/includes/compatibility.php +4 -4
  9. admin/pages/class-page.php +8 -8
  10. admin/pages/class-pages-advanced.php +1 -1
  11. admin/pages/class-pages-clearfy-settings.php +2 -2
  12. admin/pages/class-pages-components-license.php +5 -5
  13. admin/pages/class-pages-components.php +1 -1
  14. admin/pages/class-pages-defence-titan.php +3 -3
  15. admin/pages/class-pages-defence.php +2 -2
  16. admin/pages/class-pages-hide-login-page.php +3 -3
  17. admin/pages/class-pages-image-optimization.php +3 -3
  18. admin/pages/class-pages-license.php +3 -3
  19. admin/pages/class-pages-performance-cache.php +15 -3
  20. admin/pages/class-pages-performance-google.php +1 -1
  21. admin/pages/class-pages-quick-start.php +2 -2
  22. admin/pages/class-pages-seo-double-pages.php +1 -1
  23. admin/pages/class-pages-seo.php +1 -1
  24. admin/pages/class-pages-widgets.php +1 -1
  25. admin/pages/setup/class-pages-setup.php +4 -4
  26. admin/pages/setup/steps/class-step-congratulation.php +2 -2
  27. admin/pages/setup/steps/class-step-default.php +5 -5
  28. admin/pages/setup/steps/class-step-google-page-speed-after.php +2 -2
  29. admin/pages/setup/steps/class-step-google-page-speed-before.php +2 -2
  30. admin/pages/setup/steps/class-step-optimize-images.php +4 -4
  31. admin/pages/setup/steps/class-step-plugins.php +2 -2
  32. admin/pages/setup/steps/class-step-setting-seo-optimize.php +1 -1
  33. admin/pages/setup/steps/class-step-setting-speed-optimize.php +1 -1
  34. clearfy.php +10 -10
  35. components/assets-manager/admin/activation.php +2 -2
  36. components/assets-manager/admin/ajax/save-settings.php +47 -154
  37. components/assets-manager/admin/boot.php +2 -2
  38. components/assets-manager/admin/pages/class-pages-more-features.php +1 -1
  39. components/assets-manager/admin/pages/class-pages-settings.php +4 -4
  40. components/assets-manager/assets/js/wam-assets-conditions.js +78 -5
  41. components/assets-manager/assets/js/wam-assets-manager.js +1 -3
  42. components/assets-manager/gonzales.php +7 -7
  43. components/assets-manager/includes/class-plugin.php +3 -3
  44. components/assets-manager/includes/classes/class-assets-manager-global.php +24 -7
  45. components/assets-manager/includes/classes/class-check-conditions.php +154 -119
  46. components/assets-manager/includes/classes/class-views.php +4 -4
  47. components/assets-manager/migrations/010100.php +1 -1
  48. components/assets-manager/migrations/010108.php +1 -1
  49. components/assets-manager/migrations/020005.php +1 -1
  50. components/assets-manager/mu-plugins/assets-manager.php +54 -2
  51. components/assets-manager/views/conditions-logic-editor-template.php +72 -71
  52. components/comments-plus/admin/boot.php +1 -1
  53. components/comments-plus/admin/pages/class-page-comments.php +3 -3
  54. components/comments-plus/admin/pages/class-page-delete-comments.php +6 -6
  55. components/comments-plus/admin/pages/class-page-more-features.php +1 -1
  56. components/comments-plus/comments-plus.php +7 -7
  57. components/comments-plus/includes/class-plugin.php +3 -3
  58. components/comments-plus/includes/classes/class-configurate-comments.php +3 -3
  59. components/cyrlitera/admin/activation.php +2 -2
  60. components/cyrlitera/admin/boot.php +1 -1
  61. components/cyrlitera/admin/pages/class-page-cyrlitera.php +4 -4
  62. components/cyrlitera/admin/pages/class-page-more-features.php +1 -1
  63. components/cyrlitera/cyrlitera.php +7 -7
  64. components/cyrlitera/includes/class-plugin.php +3 -3
  65. components/cyrlitera/includes/classes/class-configurate-cyrlitera.php +2 -2
  66. components/cyrlitera/migrations/010004.php +1 -1
  67. components/disable-admin-notices/admin/boot.php +1 -1
  68. components/disable-admin-notices/admin/class-page-basic.php +4 -4
  69. components/disable-admin-notices/admin/options.php +2 -2
  70. components/disable-admin-notices/admin/pages/class-pages-edit-admin-bar.php +3 -3
  71. components/disable-admin-notices/admin/pages/class-pages-edit-redirects.php +3 -3
  72. components/disable-admin-notices/admin/pages/class-pages-license.php +3 -3
  73. components/disable-admin-notices/admin/pages/class-pages-notices.php +3 -3
  74. components/disable-admin-notices/admin/pages/class-pages-settings.php +6 -6
  75. components/disable-admin-notices/disable-admin-notices.php +8 -8
  76. components/disable-admin-notices/includes/class-plugin.php +4 -4
  77. components/disable-admin-notices/includes/classes/class-configurate-notices.php +1 -1
  78. components/disable-admin-notices/migrations/010007.php +1 -1
  79. components/ga-cache/admin/activation.php +2 -2
  80. components/ga-cache/admin/boot.php +2 -2
  81. components/ga-cache/admin/options.php +1 -1
  82. components/ga-cache/admin/pages/class-pages-general-settings.php +3 -3
  83. components/ga-cache/admin/pages/class-pages-more-features.php +1 -1
  84. components/ga-cache/includes/class-plugin.php +3 -3
  85. components/ga-cache/includes/classes/class-configurate-ga.php +1 -1
  86. components/ga-cache/migrations/030002.php +1 -1
  87. components/ga-cache/simple_google_analytics.php +6 -6
  88. components/html-minify/admin/pages/class-pages-settings.php +3 -3
  89. components/html-minify/html-minify.php +7 -7
  90. components/html-minify/includes/class-plugin.php +3 -3
  91. components/minify-and-combine/admin/pages/class-pages-settings.php +6 -6
  92. components/minify-and-combine/includes/class-plugin.php +3 -3
  93. components/minify-and-combine/includes/classes/class-cache.php +1 -1
  94. components/minify-and-combine/includes/classes/class-css-min.php +0 -1
  95. components/minify-and-combine/includes/classes/class-styles.php +344 -338
  96. components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Colors.php +152 -152
  97. components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Minifier.php +872 -910
  98. components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Utils.php +131 -136
  99. components/minify-and-combine/minify-and-combine.php +7 -7
  100. components/updates-manager/admin/activation.php +2 -2
  101. components/updates-manager/admin/assets/js/ajax-components.js +4 -4
  102. components/updates-manager/admin/boot.php +1 -1
  103. components/updates-manager/admin/includes/class-abstract-filters.php +1 -1
  104. components/updates-manager/admin/pages/class-page-advanced.php +5 -5
  105. components/updates-manager/admin/pages/class-page-more-features.php +1 -1
  106. components/updates-manager/admin/pages/class-page-plugins.php +5 -5
  107. components/updates-manager/admin/pages/class-page-themes.php +4 -4
  108. components/updates-manager/admin/pages/class-page-updates.php +5 -5
  109. components/updates-manager/includes/class-plugin.php +3 -3
  110. components/updates-manager/includes/classes/class-configurate-updates.php +1 -1
  111. components/updates-manager/migrations/010008.php +1 -1
  112. components/updates-manager/webcraftic-updates-manager.php +7 -7
  113. includes/boot.php +1 -1
  114. includes/class.plugin.php +5 -5
  115. includes/classes/3rd-party/boot.php +1 -1
  116. includes/classes/3rd-party/class-form-entity.php +3 -3
  117. includes/classes/class.configurate-advanced.php +1 -1
  118. includes/classes/class.configurate-google-performance.php +1 -1
  119. includes/classes/class.configurate-performance.php +1 -1
  120. includes/classes/class.configurate-privacy.php +37 -29
  121. includes/classes/class.configurate-security.php +1 -1
  122. includes/classes/class.configurate-seo.php +1 -1
  123. includes/helpers.php +14 -0
  124. libs/factory/adverts/boot.php +13 -13
  125. libs/factory/adverts/includes/class-base.php +6 -6
  126. libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
  127. libs/factory/adverts/includes/class-rest-request.php +4 -4
  128. libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.mo → wbcr_factory_adverts_124-ru_RU.mo} +0 -0
  129. libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.po → wbcr_factory_adverts_124-ru_RU.po} +0 -0
  130. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
  131. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
  132. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
  133. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
  134. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
  135. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
  136. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
  137. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
  138. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
  139. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
  140. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
  141. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
  142. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
  143. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
  144. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
  145. libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
  146. libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
  147. libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
  148. libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
  149. libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
  150. libs/factory/bootstrap/boot.php +9 -9
  151. libs/factory/bootstrap/includes/functions.php +10 -10
  152. libs/factory/clearfy/assets/css/clearfy-base.css +25 -25
  153. libs/factory/clearfy/assets/css/components.css +24 -24
  154. libs/factory/clearfy/assets/css/libs/autocomplete.css +9 -9
  155. libs/factory/clearfy/assets/css/page-setup.css +102 -102
  156. libs/factory/clearfy/assets/js/clearfy-globals.js +26 -26
  157. libs/factory/clearfy/assets/js/clearfy-license-manager.js +4 -4
  158. libs/factory/clearfy/assets/js/clearfy-search-options.js +2 -2
  159. libs/factory/clearfy/assets/js/clearfy-widgets.js +4 -4
  160. libs/factory/clearfy/assets/js/libs/jquery.autocomplete.min.js +1 -1
  161. libs/factory/clearfy/boot.php +24 -24
  162. libs/factory/clearfy/includes/ajax-handlers.php +13 -13
  163. libs/factory/clearfy/includes/class-configurate.php +3 -3
  164. libs/factory/clearfy/includes/class-helpers.php +100 -85
  165. libs/factory/clearfy/includes/class-search-options.php +1 -1
  166. libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.mo → wbcr_factory_clearfy_237-ru_RU.mo} +0 -0
  167. libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.po → wbcr_factory_clearfy_237-ru_RU.po} +0 -0
  168. libs/factory/clearfy/pages/class-page-license.php +33 -33
  169. libs/factory/clearfy/pages/class-page-more-features.php +23 -23
  170. libs/factory/clearfy/pages/class-page-setup.php +18 -18
  171. libs/factory/clearfy/pages/class-pages-components.php +19 -19
  172. libs/factory/clearfy/pages/class-pages.php +55 -55
  173. libs/factory/clearfy/pages/setup-parts/class-step-custom.php +7 -7
  174. libs/factory/clearfy/pages/setup-parts/class-step-form.php +12 -12
  175. libs/factory/clearfy/pages/setup-parts/class-step.php +5 -5
  176. libs/factory/core/ajax/install-addons.php +10 -10
  177. libs/factory/core/assets/js/core-components.js +14 -14
  178. libs/factory/core/assets/js/core-general.js +6 -6
  179. libs/factory/core/boot.php +33 -33
  180. libs/factory/core/includes/activation/class-factory-activator.php +3 -3
  181. libs/factory/core/includes/activation/class-factory-update.php +3 -3
  182. libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
  183. libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
  184. libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
  185. libs/factory/core/includes/class-check-compatibility.php +3 -3
  186. libs/factory/core/includes/class-factory-migrations.php +13 -13
  187. libs/factory/core/includes/class-factory-notices.php +5 -5
  188. libs/factory/core/includes/class-factory-options.php +2 -2
  189. libs/factory/core/includes/class-factory-plugin-abstract.php +70 -70
  190. libs/factory/core/includes/class-factory-plugin-base.php +25 -25
  191. libs/factory/core/includes/class-factory-requests.php +1 -1
  192. libs/factory/core/includes/class-factory-requirements.php +6 -6
  193. libs/factory/core/includes/components/class-delete-component-button.php +1 -1
  194. libs/factory/core/includes/components/class-install-component-button.php +11 -11
  195. libs/factory/core/includes/entities/class-factory-paths.php +1 -1
  196. libs/factory/core/includes/entities/class-factory-support.php +1 -1
  197. libs/factory/core/includes/functions.php +7 -7
  198. libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
  199. libs/factory/core/includes/premium/class-factory-manager.php +10 -10
  200. libs/factory/core/includes/premium/class-factory-provider-abstract.php +6 -6
  201. libs/factory/core/includes/updates/class-factory-premium-upgrader.php +11 -11
  202. libs/factory/core/includes/updates/class-factory-upgrader.php +10 -10
  203. libs/factory/core/includes/updates/repositories/class-factory-github.php +4 -4
  204. libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php +5 -5
  205. libs/factory/core/includes/updates/repositories/class-factory-wordpress.php +4 -4
  206. libs/factory/core/langs/{wbcr_factory_445-ru_RU.mo → wbcr_factory_446-ru_RU.mo} +0 -0
  207. libs/factory/core/langs/{wbcr_factory_445-ru_RU.po → wbcr_factory_446-ru_RU.po} +0 -0
  208. libs/factory/forms/boot.php +95 -95
  209. libs/factory/forms/controls/checkbox.php +4 -4
  210. libs/factory/forms/controls/color-and-opacity.php +4 -4
  211. libs/factory/forms/controls/color.php +2 -2
  212. libs/factory/forms/controls/customs/html.php +2 -2
  213. libs/factory/forms/controls/customs/separator.php +2 -2
  214. libs/factory/forms/controls/datepicker-range.php +4 -4
  215. libs/factory/forms/controls/dropdown-and-colors.php +6 -6
  216. libs/factory/forms/controls/dropdown.php +5 -5
  217. libs/factory/forms/controls/font.php +11 -11
  218. libs/factory/forms/controls/google-font.php +8 -8
  219. libs/factory/forms/controls/gradient.php +4 -4
  220. libs/factory/forms/controls/hidden.php +2 -2
  221. libs/factory/forms/controls/holders/accordion-item.php +2 -2
  222. libs/factory/forms/controls/holders/accordion.php +2 -2
  223. libs/factory/forms/controls/holders/columns.php +2 -2
  224. libs/factory/forms/controls/holders/control-group-item.php +2 -2
  225. libs/factory/forms/controls/holders/control-group.php +3 -3
  226. libs/factory/forms/controls/holders/div.php +2 -2
  227. libs/factory/forms/controls/holders/form-group.php +2 -2
  228. libs/factory/forms/controls/holders/more-link.php +2 -2
  229. libs/factory/forms/controls/holders/tab-item.php +2 -2
  230. libs/factory/forms/controls/holders/tab.php +4 -4
  231. libs/factory/forms/controls/integer.php +2 -2
  232. libs/factory/forms/controls/list.php +4 -4
  233. libs/factory/forms/controls/multiple-textbox.php +3 -3
  234. libs/factory/forms/controls/paddings-editor.php +3 -3
  235. libs/factory/forms/controls/pattern.php +9 -9
  236. libs/factory/forms/controls/radio-colors.php +2 -2
  237. libs/factory/forms/controls/radio.php +2 -2
  238. libs/factory/forms/controls/textarea.php +2 -2
  239. libs/factory/forms/controls/textbox.php +2 -2
  240. libs/factory/forms/controls/url.php +3 -3
  241. libs/factory/forms/controls/wp-editor.php +3 -3
  242. libs/factory/forms/includes/complex-control.class.php +4 -4
  243. libs/factory/forms/includes/control-holder.class.php +5 -5
  244. libs/factory/forms/includes/control.class.php +5 -5
  245. libs/factory/forms/includes/custom-element.class.php +2 -2
  246. libs/factory/forms/includes/form-element.class.php +7 -7
  247. libs/factory/forms/includes/form-layout.class.php +5 -5
  248. libs/factory/forms/includes/form.class.php +39 -39
  249. libs/factory/forms/includes/holder.class.php +6 -6
  250. libs/factory/forms/includes/html-builder.class.php +2 -2
  251. libs/factory/forms/includes/providers/meta-value-provider.class.php +2 -2
  252. libs/factory/forms/includes/providers/options-value-provider.class.php +3 -3
  253. libs/factory/forms/includes/providers/value-provider.interface.php +2 -2
  254. libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.mo → wbcr_factory_forms_443-ru_RU.mo} +0 -0
  255. libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.po → wbcr_factory_forms_443-ru_RU.po} +0 -0
  256. libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +7 -7
  257. libs/factory/freemius/boot.php +18 -18
  258. libs/factory/freemius/includes/class-freemius-api.php +7 -7
  259. libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
  260. libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
  261. libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
  262. libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
  263. libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
  264. libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
  265. libs/factory/freemius/includes/licensing/class-freemius-provider.php +18 -18
  266. libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
  267. libs/factory/pages/boot.php +13 -12
  268. libs/factory/pages/includes/admin-page.class.php +6 -6
  269. libs/factory/pages/includes/page.class.php +7 -7
  270. libs/factory/pages/langs/{wbcr_factory_pages_444-fr_FR.mo → wbcr_factory_pages_445-fr_FR.mo} +0 -0
  271. libs/factory/pages/langs/{wbcr_factory_pages_444-fr_FR.po → wbcr_factory_pages_445-fr_FR.po} +0 -0
  272. libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.mo → wbcr_factory_pages_445-ru_RU.mo} +0 -0
  273. libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.po → wbcr_factory_pages_445-ru_RU.po} +0 -0
  274. libs/factory/pages/pages.php +11 -11
  275. libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css +552 -0
  276. libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css.map +1 -0
admin/activation.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
- * @see Factory445_Activator
8
  * @version 1.0
9
  */
10
 
@@ -13,7 +13,7 @@ if( !defined('ABSPATH') ) {
13
  exit;
14
  }
15
 
16
- class WCL_Activation extends Wbcr_Factory445_Activator {
17
 
18
  /**
19
  * Runs activation actions.
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
+ * @see Factory446_Activator
8
  * @version 1.0
9
  */
10
 
13
  exit;
14
  }
15
 
16
+ class WCL_Activation extends Wbcr_Factory446_Activator {
17
 
18
  /**
19
  * Runs activation actions.
admin/ajax/configurate.php CHANGED
@@ -57,7 +57,7 @@
57
  }
58
 
59
  if( !$flush_redirect ) {
60
- WbcrFactoryClearfy236_Helpers::flushPageCache();
61
  }
62
 
63
  do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
57
  }
58
 
59
  if( !$flush_redirect ) {
60
+ WbcrFactoryClearfy237_Helpers::flushPageCache();
61
  }
62
 
63
  do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
admin/ajax/import-settings.php CHANGED
@@ -62,7 +62,7 @@
62
  }
63
 
64
  if( is_array($option_value) || is_object($option_value) ) {
65
- $option_value = WbcrFactoryClearfy236_Helpers::recursiveSanitizeArray($option_value, 'wp_kses_post');
66
  $option_value = maybe_serialize($option_value);
67
  } else {
68
  $option_value = wp_kses_post($option_value);
@@ -140,7 +140,7 @@
140
  //$send_data['update_notice'] = $package_plugin->getUpdateNotice();
141
 
142
  // Сбрасываем кеш для кеширующих плагинов
143
- WbcrFactoryClearfy236_Helpers::flushPageCache();
144
 
145
  do_action('wbcr_clearfy_imported_settings');
146
 
62
  }
63
 
64
  if( is_array($option_value) || is_object($option_value) ) {
65
+ $option_value = WbcrFactoryClearfy237_Helpers::recursiveSanitizeArray($option_value, 'wp_kses_post');
66
  $option_value = maybe_serialize($option_value);
67
  } else {
68
  $option_value = wp_kses_post($option_value);
140
  //$send_data['update_notice'] = $package_plugin->getUpdateNotice();
141
 
142
  // Сбрасываем кеш для кеширующих плагинов
143
+ WbcrFactoryClearfy237_Helpers::flushPageCache();
144
 
145
  do_action('wbcr_clearfy_imported_settings');
146
 
admin/assets/css/general.css CHANGED
@@ -33,10 +33,10 @@
33
  //float: right;
34
  }*/
35
  }
36
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header {
37
  height: 80px !important;
38
  }
39
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo span {
40
  display: inline-block !important;
41
  }
42
  #WBCR .row {
33
  //float: right;
34
  }*/
35
  }
36
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-page-header {
37
  height: 80px !important;
38
  }
39
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo span {
40
  display: inline-block !important;
41
  }
42
  #WBCR .row {
admin/assets/js/general.js CHANGED
@@ -13,7 +13,7 @@
13
  this.qickStartAssistent();
14
  this.importOptions();
15
 
16
- /*$.wfactory_445.hooks.add('core/components/pre_activate', function(button) {
17
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
18
  if( !$('#WBCR').length ) {
19
  return false;
@@ -29,14 +29,14 @@
29
  }
30
  });*/
31
 
32
- /*$.wfactory_445.hooks.add('core/components/updated', function(button, data, response) {
33
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
34
- if( !($('#WBCR').length && $.wbcr_factory_clearfy_236) ) {
35
  return false;
36
  }
37
 
38
  if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
39
- $.wbcr_factory_clearfy_236.app.showNotice(response.data.need_rewrite_rules, 'warning');
40
  }
41
 
42
  });*/
@@ -115,13 +115,13 @@
115
  * Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
116
  * результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
117
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
118
- * $.wbcr_factory_clearfy_236.hooks.add('wbcr/factory_clearfy_236/updated',
119
  * function(noticeId) {});
120
  * @param {string} modeName - имя режима конфигурации
121
  * @param {object} data
122
  */
123
 
124
- $.wbcr_factory_clearfy_236.hooks.run('clearfy/quick_start/configurated_error', [
125
  modeName,
126
  data
127
  ]);
@@ -138,12 +138,12 @@
138
  * Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
139
  * конфигурации Реализация системы фильтров и хуков в файле
140
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
141
- * $.wbcr_factory_clearfy_236.hooks.add('wbcr/factory_clearfy_236/updated', function(noticeId)
142
  * {});
143
  * @param {string} modeName - имя режима конфигурации
144
  * @param {object} data
145
  */
146
- $.wbcr_factory_clearfy_236.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
147
 
148
  if( modeName !== 'reset' ) {
149
  switcher.addClass('wbcr-clearfy-active');
@@ -211,12 +211,12 @@
211
  $this = $(this);
212
 
213
  if( !settings ) {
214
- $.wbcr_factory_clearfy_236.app.showNotice('Import options is empty!', 'danger');
215
  return false;
216
  }
217
 
218
  if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
219
- $.wbcr_factory_clearfy_236.app.showNotice('Unknown Javascript error, most likely the wbcr_clearfy_ajax variable does not exist!', 'danger');
220
  return false;
221
  }
222
 
@@ -231,7 +231,7 @@
231
 
232
  if( response.data.update_notice ) {
233
  if( !$('.wbcr-clr-update-package').length ) {
234
- $.wbcr_factory_clearfy_236.app.showNotice(response.data.update_notice);
235
  }
236
  } else {
237
  if( $('.wbcr-clr-update-package').length ) {
@@ -268,15 +268,15 @@
268
  console.log(data);
269
 
270
  if( data ) {
271
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice(data.error_message, 'danger');
272
  } else {
273
  if( void 0 !== wbcr_clearfy_ajax ) {
274
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice(wbcr_clearfy_ajax.i18n.unknown_error, 'danger');
275
  }
276
  }
277
 
278
  setTimeout(function() {
279
- $.wbcr_factory_clearfy_236.app.hideNotice(noticeId);
280
  }, 5000);
281
  return;
282
  }
@@ -285,10 +285,10 @@
285
 
286
  if( !request_data.flush_redirect ) {
287
  if( void 0 !== wbcr_clearfy_ajax ) {
288
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice(wbcr_clearfy_ajax.i18n.success_update_settings, 'success');
289
 
290
  setTimeout(function() {
291
- $.wbcr_factory_clearfy_236.app.hideNotice(noticeId);
292
  }, 5000);
293
  }
294
  return;
@@ -303,7 +303,7 @@
303
  console.log(xhr.responseText);
304
  console.log(thrownError);
305
 
306
- var noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
307
  }
308
  });
309
  }
13
  this.qickStartAssistent();
14
  this.importOptions();
15
 
16
+ /*$.wfactory_446.hooks.add('core/components/pre_activate', function(button) {
17
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
18
  if( !$('#WBCR').length ) {
19
  return false;
29
  }
30
  });*/
31
 
32
+ /*$.wfactory_446.hooks.add('core/components/updated', function(button, data, response) {
33
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
34
+ if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
35
  return false;
36
  }
37
 
38
  if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
39
+ $.wbcr_factory_clearfy_237.app.showNotice(response.data.need_rewrite_rules, 'warning');
40
  }
41
 
42
  });*/
115
  * Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
116
  * результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
117
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
118
+ * $.wbcr_factory_clearfy_237.hooks.add('wbcr/factory_clearfy_237/updated',
119
  * function(noticeId) {});
120
  * @param {string} modeName - имя режима конфигурации
121
  * @param {object} data
122
  */
123
 
124
+ $.wbcr_factory_clearfy_237.hooks.run('clearfy/quick_start/configurated_error', [
125
  modeName,
126
  data
127
  ]);
138
  * Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
139
  * конфигурации Реализация системы фильтров и хуков в файле
140
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
141
+ * $.wbcr_factory_clearfy_237.hooks.add('wbcr/factory_clearfy_237/updated', function(noticeId)
142
  * {});
143
  * @param {string} modeName - имя режима конфигурации
144
  * @param {object} data
145
  */
146
+ $.wbcr_factory_clearfy_237.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
147
 
148
  if( modeName !== 'reset' ) {
149
  switcher.addClass('wbcr-clearfy-active');
211
  $this = $(this);
212
 
213
  if( !settings ) {
214
+ $.wbcr_factory_clearfy_237.app.showNotice('Import options is empty!', 'danger');
215
  return false;
216
  }
217
 
218
  if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
219
+ $.wbcr_factory_clearfy_237.app.showNotice('Unknown Javascript error, most likely the wbcr_clearfy_ajax variable does not exist!', 'danger');
220
  return false;
221
  }
222
 
231
 
232
  if( response.data.update_notice ) {
233
  if( !$('.wbcr-clr-update-package').length ) {
234
+ $.wbcr_factory_clearfy_237.app.showNotice(response.data.update_notice);
235
  }
236
  } else {
237
  if( $('.wbcr-clr-update-package').length ) {
268
  console.log(data);
269
 
270
  if( data ) {
271
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice(data.error_message, 'danger');
272
  } else {
273
  if( void 0 !== wbcr_clearfy_ajax ) {
274
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice(wbcr_clearfy_ajax.i18n.unknown_error, 'danger');
275
  }
276
  }
277
 
278
  setTimeout(function() {
279
+ $.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
280
  }, 5000);
281
  return;
282
  }
285
 
286
  if( !request_data.flush_redirect ) {
287
  if( void 0 !== wbcr_clearfy_ajax ) {
288
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice(wbcr_clearfy_ajax.i18n.success_update_settings, 'success');
289
 
290
  setTimeout(function() {
291
+ $.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
292
  }, 5000);
293
  }
294
  return;
303
  console.log(xhr.responseText);
304
  console.log(thrownError);
305
 
306
+ var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
307
  }
308
  });
309
  }
admin/assets/js/license-manager.js CHANGED
@@ -20,7 +20,7 @@ jQuery(function($) {
20
  // Глобальные уведомления не трогаем
21
 
22
  for( i = 0; i < allNotices.length; i++ ) {
23
- $.wbcr_factory_clearfy_236.app.hideNotice(allNotices[i]);
24
  }
25
 
26
  $('.wcl-control-btn').hide();
@@ -55,7 +55,7 @@ jQuery(function($) {
55
 
56
  if( response.data ) {
57
  console.log(response.data.error_message);
58
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
59
  allNotices.push(noticeId);
60
  } else {
61
  console.log(response);
@@ -65,7 +65,7 @@ jQuery(function($) {
65
  }
66
 
67
  if( response.data && response.data.message ) {
68
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice(response.data.message, 'success');
69
  allNotices.push(noticeId);
70
 
71
  // todo: доработать генерацию формы, вместо перезагрузки страницы
@@ -82,7 +82,7 @@ jQuery(function($) {
82
  console.log(xhr.responseText);
83
  console.log(thrownError);
84
 
85
- var noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
86
 
87
  allNotices.push(noticeId);
88
  }
20
  // Глобальные уведомления не трогаем
21
 
22
  for( i = 0; i < allNotices.length; i++ ) {
23
+ $.wbcr_factory_clearfy_237.app.hideNotice(allNotices[i]);
24
  }
25
 
26
  $('.wcl-control-btn').hide();
55
 
56
  if( response.data ) {
57
  console.log(response.data.error_message);
58
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
59
  allNotices.push(noticeId);
60
  } else {
61
  console.log(response);
65
  }
66
 
67
  if( response.data && response.data.message ) {
68
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice(response.data.message, 'success');
69
  allNotices.push(noticeId);
70
 
71
  // todo: доработать генерацию формы, вместо перезагрузки страницы
82
  console.log(xhr.responseText);
83
  console.log(thrownError);
84
 
85
+ var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
86
 
87
  allNotices.push(noticeId);
88
  }
admin/boot.php CHANGED
@@ -21,7 +21,7 @@ if( !defined('ABSPATH') ) {
21
  * Уведомление будет показано на всех страницах Clearfy и его компонентах.
22
  *
23
  * @param WCL_Plugin $plugin
24
- * @param Wbcr_FactoryPages444_ImpressiveThemplate $obj
25
  */
26
 
27
  add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) {
@@ -50,7 +50,7 @@ add_action('admin_init', function () {
50
  if( WCL_Helper::is_need_show_setup_page() ) {
51
  try {
52
  $redirect_url = '';
53
- if( class_exists('Wbcr_FactoryPages444') ) {
54
  $redirect_url = WCL_Plugin::app()->getPluginPageUrl('setup', ['wclearfy_setup_page_viewed' => 1]);
55
  }
56
  if( $redirect_url ) {
@@ -84,8 +84,8 @@ add_action('wbcr/factory/pages/impressive/header', function ($plugin_name) {
84
 
85
  /**
86
  * @param $form
87
- * @param Wbcr_Factory445_Plugin $plugin
88
- * @param Wbcr_FactoryPages444_ImpressiveThemplate $obj
89
  */
90
  function wbcr_clearfy_multisite_before_save($form, $plugin, $obj)
91
  {
@@ -127,25 +127,27 @@ add_action('wbcr/factory/pages/impressive/plugin_title', 'wbcr_clearfy_branding'
127
  wp_enqueue_style('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/css/install-addons.css', [], WCL_Plugin::app()->getPluginVersion());
128
  wp_enqueue_script('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/js/install-addons.js', [
129
  'jquery',
130
- 'wbcr-factory-clearfy-236-global'
131
  ], WCL_Plugin::app()->getPluginVersion());
132
  });*/
133
 
134
  /**
135
- * Удалем уведомление Clearfy о том, что нужно перезаписать постоянные ссылоки.s
136
  */
137
- function wbcr_clearfy_flush_rewrite_rules()
138
  {
139
  WCL_Plugin::app()->deletePopulateOption('need_rewrite_rules', 1);
 
 
140
  }
141
 
142
- add_action('flush_rewrite_rules_hard', 'wbcr_clearfy_flush_rewrite_rules');
143
 
144
  /**
145
  * Обновить постоынные ссылки, после выполнения быстрых настроек
146
  *
147
  * @param WHM_Plugin $plugin
148
- * @param Wbcr_FactoryPages444_ImpressiveThemplate $obj
149
  */
150
  function wbcr_clearfy_after_form_save($plugin, $obj)
151
  {
@@ -168,7 +170,7 @@ add_action('wbcr/factory/pages/impressive/after_form_save', 'wbcr_clearfy_after_
168
  *
169
  * @param array $widgets
170
  * @param string $position
171
- * @param Wbcr_Factory445_Plugin $plugin
172
  */
173
 
174
  add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
21
  * Уведомление будет показано на всех страницах Clearfy и его компонентах.
22
  *
23
  * @param WCL_Plugin $plugin
24
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
25
  */
26
 
27
  add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) {
50
  if( WCL_Helper::is_need_show_setup_page() ) {
51
  try {
52
  $redirect_url = '';
53
+ if( class_exists('Wbcr_FactoryPages445') ) {
54
  $redirect_url = WCL_Plugin::app()->getPluginPageUrl('setup', ['wclearfy_setup_page_viewed' => 1]);
55
  }
56
  if( $redirect_url ) {
84
 
85
  /**
86
  * @param $form
87
+ * @param Wbcr_Factory446_Plugin $plugin
88
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
89
  */
90
  function wbcr_clearfy_multisite_before_save($form, $plugin, $obj)
91
  {
127
  wp_enqueue_style('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/css/install-addons.css', [], WCL_Plugin::app()->getPluginVersion());
128
  wp_enqueue_script('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/js/install-addons.js', [
129
  'jquery',
130
+ 'wbcr-factory-clearfy-237-global'
131
  ], WCL_Plugin::app()->getPluginVersion());
132
  });*/
133
 
134
  /**
135
+ * Удаляем уведомление Clearfy о том, что нужно перезаписать постоянные ссылоки.
136
  */
137
+ function wbcr_clearfy_flush_rewrite_rules($hard)
138
  {
139
  WCL_Plugin::app()->deletePopulateOption('need_rewrite_rules', 1);
140
+
141
+ return $hard;
142
  }
143
 
144
+ add_filter('flush_rewrite_rules_hard', 'wbcr_clearfy_flush_rewrite_rules');
145
 
146
  /**
147
  * Обновить постоынные ссылки, после выполнения быстрых настроек
148
  *
149
  * @param WHM_Plugin $plugin
150
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
151
  */
152
  function wbcr_clearfy_after_form_save($plugin, $obj)
153
  {
170
  *
171
  * @param array $widgets
172
  * @param string $position
173
+ * @param Wbcr_Factory446_Plugin $plugin
174
  */
175
 
176
  add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
admin/includes/compatibility.php CHANGED
@@ -22,8 +22,8 @@ add_action( 'plugins_loaded', function () {
22
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
23
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
24
  *
25
- * @param Wbcr_Factory445_Plugin $plugin
26
- * @param Wbcr_FactoryPages444_ImpressiveThemplate $obj
27
  *
28
  * @return bool
29
  */
@@ -52,8 +52,8 @@ add_action( 'plugins_loaded', function () {
52
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
53
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
54
  *
55
- * @param Wbcr_Factory445_Plugin $plugin
56
- * @param Wbcr_FactoryPages444_ImpressiveThemplate $obj
57
  *
58
  * @return bool
59
  */
22
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
23
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
24
  *
25
+ * @param Wbcr_Factory446_Plugin $plugin
26
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
27
  *
28
  * @return bool
29
  */
52
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
53
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
54
  *
55
+ * @param Wbcr_Factory446_Plugin $plugin
56
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
57
  *
58
  * @return bool
59
  */
admin/pages/class-page.php CHANGED
@@ -7,7 +7,7 @@
7
  * @version 1.0
8
  */
9
 
10
- class WCL_Page extends Wbcr_FactoryClearfy236_PageBase {
11
 
12
  /**
13
  * Действие выполняется для всех страниц Clearfy и его компонентах.
@@ -20,15 +20,15 @@ class WCL_Page extends Wbcr_FactoryClearfy236_PageBase {
20
  $license_page_url = $this->getBaseUrl('clearfy_license');
21
  $upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
22
 
23
- $html = '<div class="wbcr-factory-clearfy-236-multisite-suggetion">';
24
  $html .= '<div class="wbcr-factory-inner-contanier">';
25
- $html .= '<h3>' . __('Upgrade to Clearfy Business', 'wbcr_factory_clearfy_236') . '</h3>';
26
- $html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', 'wbcr_factory_clearfy_236') . '</p>';
27
- $html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', 'wbcr_factory_clearfy_236') . '</p>';
28
- $html .= '<p>' . __('You can activate the plugin on each website and use it with zero limitations. But you can’t save the plugin’s settings under the Super Administrator role!', 'wbcr_factory_clearfy_236') . '</p>';
29
  $html .= '<p style="margin-top:20px">';
30
- $html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', 'wbcr_factory_clearfy_236') . '</a> ';
31
- $html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', 'wbcr_factory_clearfy_236') . '</a>';
32
  $html .= '</p>';
33
  $html .= '</div>';
34
  $html .= '</div>';
7
  * @version 1.0
8
  */
9
 
10
+ class WCL_Page extends Wbcr_FactoryClearfy237_PageBase {
11
 
12
  /**
13
  * Действие выполняется для всех страниц Clearfy и его компонентах.
20
  $license_page_url = $this->getBaseUrl('clearfy_license');
21
  $upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
22
 
23
+ $html = '<div class="wbcr-factory-clearfy-237-multisite-suggetion">';
24
  $html .= '<div class="wbcr-factory-inner-contanier">';
25
+ $html .= '<h3>' . __('Upgrade to Clearfy Business', 'wbcr_factory_clearfy_237') . '</h3>';
26
+ $html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', 'wbcr_factory_clearfy_237') . '</p>';
27
+ $html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', 'wbcr_factory_clearfy_237') . '</p>';
28
+ $html .= '<p>' . __('You can activate the plugin on each website and use it with zero limitations. But you can’t save the plugin’s settings under the Super Administrator role!', 'wbcr_factory_clearfy_237') . '</p>';
29
  $html .= '<p style="margin-top:20px">';
30
+ $html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', 'wbcr_factory_clearfy_237') . '</a> ';
31
+ $html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', 'wbcr_factory_clearfy_237') . '</a>';
32
  $html .= '</p>';
33
  $html .= '</div>';
34
  $html .= '</div>';
admin/pages/class-pages-advanced.php CHANGED
@@ -17,7 +17,7 @@ class WCL_AdvancedPage extends WCL_Page {
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages444_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages445_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
admin/pages/class-pages-clearfy-settings.php CHANGED
@@ -19,7 +19,7 @@ class WCL_ClearfySettingsPage extends WCL_Page {
19
  * Mainly used to navigate between pages.
20
  *
21
  * @since 1.0.0
22
- * @see FactoryPages444_AdminPage
23
  *
24
  * @var string
25
  */
@@ -59,7 +59,7 @@ class WCL_ClearfySettingsPage extends WCL_Page {
59
  *
60
  * @return void
61
  * @since 1.0.0
62
- * @see FactoryPages444_AdminPage
63
  *
64
  */
65
  public function assets($scripts, $styles)
19
  * Mainly used to navigate between pages.
20
  *
21
  * @since 1.0.0
22
+ * @see FactoryPages445_AdminPage
23
  *
24
  * @var string
25
  */
59
  *
60
  * @return void
61
  * @since 1.0.0
62
+ * @see FactoryPages445_AdminPage
63
  *
64
  */
65
  public function assets($scripts, $styles)
admin/pages/class-pages-components-license.php CHANGED
@@ -55,12 +55,12 @@ class WCL_ComponentsLicensePage extends WCL_Page {
55
  /**
56
  * WCL_LicensePage constructor.
57
  *
58
- * @param \Wbcr_Factory445_Plugin $plugin
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
  */
63
- public function __construct(Wbcr_Factory445_Plugin $plugin)
64
  {
65
  $this->menu_title = __('License', 'robin-image-optimizer');
66
  $this->page_menu_short_description = __('Product activation', 'robin-image-optimizer');
@@ -74,7 +74,7 @@ class WCL_ComponentsLicensePage extends WCL_Page {
74
  *
75
  * @return void
76
  * @since 1.0.0
77
- * @see FactoryPages444_AdminPage
78
  *
79
  */
80
  public function assets($scripts, $styles)
@@ -84,8 +84,8 @@ class WCL_ComponentsLicensePage extends WCL_Page {
84
  $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
85
 
86
  /**
87
- * @param Wbcr_Factory445_StyleList $styles
88
- * @param Wbcr_Factory445_ScriptList $scripts
89
  *
90
  * @since 1.4.0
91
  *
55
  /**
56
  * WCL_LicensePage constructor.
57
  *
58
+ * @param \Wbcr_Factory446_Plugin $plugin
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
  */
63
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
64
  {
65
  $this->menu_title = __('License', 'robin-image-optimizer');
66
  $this->page_menu_short_description = __('Product activation', 'robin-image-optimizer');
74
  *
75
  * @return void
76
  * @since 1.0.0
77
+ * @see FactoryPages445_AdminPage
78
  *
79
  */
80
  public function assets($scripts, $styles)
84
  $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
85
 
86
  /**
87
+ * @param Wbcr_Factory446_StyleList $styles
88
+ * @param Wbcr_Factory446_ScriptList $scripts
89
  *
90
  * @since 1.4.0
91
  *
admin/pages/class-pages-components.php CHANGED
@@ -13,7 +13,7 @@ if( !defined('ABSPATH') ) {
13
  exit;
14
  }
15
 
16
- class WCL_ComponentsPage extends \WBCR\FactoryClearfy236\Pages\Components {
17
 
18
  public function get_components()
19
  {
13
  exit;
14
  }
15
 
16
+ class WCL_ComponentsPage extends \WBCR\FactoryClearfy237\Pages\Components {
17
 
18
  public function get_components()
19
  {
admin/pages/class-pages-defence-titan.php CHANGED
@@ -19,7 +19,7 @@ class WCL_TitanSecurityPage extends WCL_Page {
19
  * Mainly used to navigate between pages.
20
  *
21
  * @since 1.0.0
22
- * @see FactoryPages444_AdminPage
23
  *
24
  * @var string
25
  */
@@ -83,7 +83,7 @@ class WCL_TitanSecurityPage extends WCL_Page {
83
  ?>
84
  <script>
85
  jQuery(document).ready(function($) {
86
- $.wfactory_445.hooks.add('core/components/updated', function(button, component_name) {
87
  if( component_name.plugin_action === 'install' ) {
88
  button.removeClass('wbcr-factory-purchase-premium');
89
  button.addClass('wbcr-factory-activate-premium');
@@ -96,7 +96,7 @@ class WCL_TitanSecurityPage extends WCL_Page {
96
  });
97
  });
98
  </script>
99
- <div class="wbcr-factory-clearfy-236-multisite-suggetion">
100
  <div class="wbcr-factory-inner-contanier">
101
  <h3>
102
  <a href="https://wordpress.org/plugins/anti-spam" target="_blank"><?php _e('Install Firewall and Malware scanner (Titan sucurity) component', 'clearfy') ?></a>
19
  * Mainly used to navigate between pages.
20
  *
21
  * @since 1.0.0
22
+ * @see FactoryPages445_AdminPage
23
  *
24
  * @var string
25
  */
83
  ?>
84
  <script>
85
  jQuery(document).ready(function($) {
86
+ $.wfactory_446.hooks.add('core/components/updated', function(button, component_name) {
87
  if( component_name.plugin_action === 'install' ) {
88
  button.removeClass('wbcr-factory-purchase-premium');
89
  button.addClass('wbcr-factory-activate-premium');
96
  });
97
  });
98
  </script>
99
+ <div class="wbcr-factory-clearfy-237-multisite-suggetion">
100
  <div class="wbcr-factory-inner-contanier">
101
  <h3>
102
  <a href="https://wordpress.org/plugins/anti-spam" target="_blank"><?php _e('Install Firewall and Malware scanner (Titan sucurity) component', 'clearfy') ?></a>
admin/pages/class-pages-defence.php CHANGED
@@ -17,7 +17,7 @@ class WCL_DefencePage extends WCL_Page {
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages444_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -132,7 +132,7 @@ class WCL_DefencePage extends WCL_Page {
132
  //'cssClass' => 'postbox'
133
  );
134
 
135
- return wbcr_factory_445_apply_filters_deprecated( 'wbcr_clr_defence_form_options', array(
136
  $form_options,
137
  $this
138
  ), '1.3.1', 'wbcr_clearfy_defence_form_options' );
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages445_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
132
  //'cssClass' => 'postbox'
133
  );
134
 
135
+ return wbcr_factory_446_apply_filters_deprecated( 'wbcr_clr_defence_form_options', array(
136
  $form_options,
137
  $this
138
  ), '1.3.1', 'wbcr_clearfy_defence_form_options' );
admin/pages/class-pages-hide-login-page.php CHANGED
@@ -17,7 +17,7 @@ class WCL_HideLoginPage extends WCL_Page {
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages444_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -78,7 +78,7 @@ class WCL_HideLoginPage extends WCL_Page {
78
  ?>
79
  <script>
80
  jQuery(document).ready(function($) {
81
- $.wfactory_445.hooks.add('core/components/updated', function(button, component_name) {
82
  if( component_name.plugin_action === 'install' ) {
83
  button.removeClass('wbcr-factory-purchase-premium');
84
  button.addClass('wbcr-factory-activate-premium');
@@ -91,7 +91,7 @@ class WCL_HideLoginPage extends WCL_Page {
91
  });
92
  });
93
  </script>
94
- <div class="wbcr-factory-clearfy-236-multisite-suggetion">
95
  <div class="wbcr-factory-inner-contanier">
96
  <h3><?php _e('Install Hide login page component', 'clearfy') ?></h3>
97
 
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages445_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
78
  ?>
79
  <script>
80
  jQuery(document).ready(function($) {
81
+ $.wfactory_446.hooks.add('core/components/updated', function(button, component_name) {
82
  if( component_name.plugin_action === 'install' ) {
83
  button.removeClass('wbcr-factory-purchase-premium');
84
  button.addClass('wbcr-factory-activate-premium');
91
  });
92
  });
93
  </script>
94
+ <div class="wbcr-factory-clearfy-237-multisite-suggetion">
95
  <div class="wbcr-factory-inner-contanier">
96
  <h3><?php _e('Install Hide login page component', 'clearfy') ?></h3>
97
 
admin/pages/class-pages-image-optimization.php CHANGED
@@ -19,7 +19,7 @@ class WCL_ImageOptimizationPage extends WCL_Page {
19
  * Mainly used to navigate between pages.
20
  *
21
  * @since 1.0.0
22
- * @see FactoryPages444_AdminPage
23
  *
24
  * @var string
25
  */
@@ -79,7 +79,7 @@ class WCL_ImageOptimizationPage extends WCL_Page {
79
  ?>
80
  <script>
81
  jQuery(document).ready(function($) {
82
- $.wfactory_445.hooks.add('core/components/updated', function(button, component_name) {
83
  if( component_name.plugin_action === 'install' ) {
84
  button.removeClass('wbcr-factory-purchase-premium');
85
  button.addClass('wbcr-factory-activate-premium');
@@ -92,7 +92,7 @@ class WCL_ImageOptimizationPage extends WCL_Page {
92
  });
93
  });
94
  </script>
95
- <div class="wbcr-factory-clearfy-236-multisite-suggetion">
96
  <div class="wbcr-factory-inner-contanier">
97
  <h3><?php _e( 'Install Robin Image Optimizer component', 'clearfy' ) ?></h3>
98
  <p><?php _e( 'To start optimizing images, you need to install the additional component Robin image optimizer!', 'clearfy' ) ?></p>
19
  * Mainly used to navigate between pages.
20
  *
21
  * @since 1.0.0
22
+ * @see FactoryPages445_AdminPage
23
  *
24
  * @var string
25
  */
79
  ?>
80
  <script>
81
  jQuery(document).ready(function($) {
82
+ $.wfactory_446.hooks.add('core/components/updated', function(button, component_name) {
83
  if( component_name.plugin_action === 'install' ) {
84
  button.removeClass('wbcr-factory-purchase-premium');
85
  button.addClass('wbcr-factory-activate-premium');
92
  });
93
  });
94
  </script>
95
+ <div class="wbcr-factory-clearfy-237-multisite-suggetion">
96
  <div class="wbcr-factory-inner-contanier">
97
  <h3><?php _e( 'Install Robin Image Optimizer component', 'clearfy' ) ?></h3>
98
  <p><?php _e( 'To start optimizing images, you need to install the additional component Robin image optimizer!', 'clearfy' ) ?></p>
admin/pages/class-pages-license.php CHANGED
@@ -13,7 +13,7 @@
13
  *
14
  * @copyright (c) 2018 Webraftic Ltd
15
  */
16
- class WCL_LicensePage extends Wbcr_FactoryClearfy236_LicensePage {
17
 
18
  /**
19
  * {@inheritdoc}
@@ -36,12 +36,12 @@
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
- * @param \Wbcr_Factory445_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
45
  $this->menu_title = __( 'License', 'robin-image-optimizer' );
46
  $this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
47
  $this->plan_name = __( 'Clearfy Business', 'robin-image-optimizer' );
13
  *
14
  * @copyright (c) 2018 Webraftic Ltd
15
  */
16
+ class WCL_LicensePage extends Wbcr_FactoryClearfy237_LicensePage {
17
 
18
  /**
19
  * {@inheritdoc}
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
+ * @param \Wbcr_Factory446_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
45
  $this->menu_title = __( 'License', 'robin-image-optimizer' );
46
  $this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
47
  $this->plan_name = __( 'Clearfy Business', 'robin-image-optimizer' );
admin/pages/class-pages-performance-cache.php CHANGED
@@ -228,6 +228,18 @@ spider
228
  Yandex
229
  '
230
  ];
 
 
 
 
 
 
 
 
 
 
 
 
231
 
232
  $form_options = [];
233
 
@@ -260,7 +272,7 @@ Yandex
260
  ?>
261
  <script>
262
  jQuery(document).ready(function($) {
263
- $.wfactory_445.hooks.add('core/components/updated', function(button, data) {
264
  console.log(data);
265
 
266
  if( data.plugin_action === 'install' ) {
@@ -270,14 +282,14 @@ Yandex
270
 
271
  });
272
 
273
- $.wfactory_445.hooks.add('core/components/activated', function(button, data) {
274
  button.remove();
275
  window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
276
 
277
  });
278
  });
279
  </script>
280
- <div class="wbcr-factory-clearfy-236-multisite-suggetion">
281
  <div class="wbcr-factory-inner-contanier">
282
  <h3><?php _e('Install Page Cache component', 'clearfy') ?></h3>
283
  <p><?php _e('To start page caching, you need to install the additional component Cache!', 'clearfy') ?></p>
228
  Yandex
229
  '
230
  ];
231
+ $options[] = [
232
+ 'type' => 'textarea',
233
+ 'name' => 'cache_reject_uri',
234
+ 'title' => __('Never Cache URL(s)', 'clearfy'),
235
+ //'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
236
+ 'hint' => __('Specify URLs of pages or posts that should never be cached (one per line). The domain part of the URL will be stripped automatically.
237
+ Use (.*) wildcards to address multiple URLs under a given path.', 'clearfy'),
238
+ 'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? [
239
+ 'disabled' => 'disabled',
240
+ 'placeholder' => '/members/(.*)'
241
+ ] : ['placeholder' => '/members/(.*)'],
242
+ ];
243
 
244
  $form_options = [];
245
 
272
  ?>
273
  <script>
274
  jQuery(document).ready(function($) {
275
+ $.wfactory_446.hooks.add('core/components/updated', function(button, data) {
276
  console.log(data);
277
 
278
  if( data.plugin_action === 'install' ) {
282
 
283
  });
284
 
285
+ $.wfactory_446.hooks.add('core/components/activated', function(button, data) {
286
  button.remove();
287
  window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
288
 
289
  });
290
  });
291
  </script>
292
+ <div class="wbcr-factory-clearfy-237-multisite-suggetion">
293
  <div class="wbcr-factory-inner-contanier">
294
  <h3><?php _e('Install Page Cache component', 'clearfy') ?></h3>
295
  <p><?php _e('To start page caching, you need to install the additional component Cache!', 'clearfy') ?></p>
admin/pages/class-pages-performance-google.php CHANGED
@@ -16,7 +16,7 @@
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages444_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages445_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
admin/pages/class-pages-quick-start.php CHANGED
@@ -17,7 +17,7 @@ class WCL_QuickStartPage extends WCL_Page {
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
- * @see FactoryPages444_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -81,7 +81,7 @@ class WCL_QuickStartPage extends WCL_Page {
81
  *
82
  * @return void
83
  * @since 1.0.0
84
- * @see FactoryPages444_AdminPage
85
  *
86
  */
87
  public function assets($scripts, $styles)
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages445_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
81
  *
82
  * @return void
83
  * @since 1.0.0
84
+ * @see FactoryPages445_AdminPage
85
  *
86
  */
87
  public function assets($scripts, $styles)
admin/pages/class-pages-seo-double-pages.php CHANGED
@@ -16,7 +16,7 @@
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages444_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages445_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
admin/pages/class-pages-seo.php CHANGED
@@ -16,7 +16,7 @@
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages444_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages445_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
admin/pages/class-pages-widgets.php CHANGED
@@ -16,7 +16,7 @@ class WCL_WidgetsPage extends WCL_Page {
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
- * @see FactoryPages444_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages445_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
admin/pages/setup/class-pages-setup.php CHANGED
@@ -11,12 +11,12 @@ if( !defined('ABSPATH') ) {
11
  exit;
12
  }
13
 
14
- class WCL_Setup extends WBCR\FactoryClearfy236\Pages\Setup {
15
 
16
  /**
17
- * @param \Wbcr_Factory445_Plugin $plugin
18
  */
19
- public function __construct(\Wbcr_Factory445_Plugin $plugin)
20
  {
21
  parent::__construct($plugin);
22
 
@@ -53,7 +53,7 @@ class WCL_Setup extends WBCR\FactoryClearfy236\Pages\Setup {
53
  *
54
  * @return void
55
  * @since 1.0.0
56
- * @see FactoryPages444_AdminPage
57
  *
58
  */
59
  public function assets($scripts, $styles)
11
  exit;
12
  }
13
 
14
+ class WCL_Setup extends WBCR\FactoryClearfy237\Pages\Setup {
15
 
16
  /**
17
+ * @param \Wbcr_Factory446_Plugin $plugin
18
  */
19
+ public function __construct(\Wbcr_Factory446_Plugin $plugin)
20
  {
21
  parent::__construct($plugin);
22
 
53
  *
54
  * @return void
55
  * @since 1.0.0
56
+ * @see FactoryPages445_AdminPage
57
  *
58
  */
59
  public function assets($scripts, $styles)
admin/pages/setup/steps/class-step-congratulation.php CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Congratulation extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step6';
14
  protected $id = 'step7';
@@ -24,7 +24,7 @@ class Step_Congratulation extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
24
  {
25
  $pricing_page_url = $this->plugin->get_support()->get_pricing_url(true, 'setup_wizard');
26
  ?>
27
- <div class="w-factory-clearfy-236-setup__inner-wrap">
28
  <h3><?php echo __("Congratulations, the plugin configuration is complete!", "clearfy"); ?></h3>
29
  <p style="text-align: left;">
30
  <?php _e('You have successfully completed the basic plugin setup! You can go to the general plugin settings to enable other options that we did not offer you.', 'clearfy'); ?>
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Congratulation extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step6';
14
  protected $id = 'step7';
24
  {
25
  $pricing_page_url = $this->plugin->get_support()->get_pricing_url(true, 'setup_wizard');
26
  ?>
27
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
28
  <h3><?php echo __("Congratulations, the plugin configuration is complete!", "clearfy"); ?></h3>
29
  <p style="text-align: left;">
30
  <?php _e('You have successfully completed the basic plugin setup! You can go to the general plugin settings to enable other options that we did not offer you.', 'clearfy'); ?>
admin/pages/setup/steps/class-step-default.php CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Default extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
12
 
13
  protected $id = 'step0';
14
  protected $next_id = 'step1';
@@ -21,10 +21,10 @@ class Step_Default extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
21
  public function html()
22
  {
23
  ?>
24
- <div class="w-factory-clearfy-236-setup__inner-wrap">
25
- <div class="w-factory-clearfy-236-setup-step__new_onboarding-wrapper">
26
- <p class="w-factory-clearfy-236-setup-step__new_onboarding-welcome">Welcome to</p>
27
- <h1 class="w-factory-clearfy-236-logo">
28
  <img src="<?php echo WCL_PLUGIN_URL ?>/admin/assets/img/clearfylogo-768x300.png" alt="Clearfy">
29
  </h1>
30
  <p><?php _e('Optimize your site even faster using the setup wizard!', 'clearfy') ?></p>
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Default extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
12
 
13
  protected $id = 'step0';
14
  protected $next_id = 'step1';
21
  public function html()
22
  {
23
  ?>
24
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
25
+ <div class="w-factory-clearfy-237-setup-step__new_onboarding-wrapper">
26
+ <p class="w-factory-clearfy-237-setup-step__new_onboarding-welcome">Welcome to</p>
27
+ <h1 class="w-factory-clearfy-237-logo">
28
  <img src="<?php echo WCL_PLUGIN_URL ?>/admin/assets/img/clearfylogo-768x300.png" alt="Clearfy">
29
  </h1>
30
  <p><?php _e('Optimize your site even faster using the setup wizard!', 'clearfy') ?></p>
admin/pages/setup/steps/class-step-google-page-speed-after.php CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Google_Page_Speed_After extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step5';
14
  protected $id = 'step6';
@@ -28,7 +28,7 @@ class Step_Google_Page_Speed_After extends \WBCR\FactoryClearfy236\Pages\Step_Cu
28
  wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>", true);
29
  });
30
  </script>
31
- <div class="w-factory-clearfy-236-setup__inner-wrap">
32
  <h3>Google Page Speed</h3>
33
  <p style="text-align: left;">
34
  We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Google_Page_Speed_After extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step5';
14
  protected $id = 'step6';
28
  wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>", true);
29
  });
30
  </script>
31
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
32
  <h3>Google Page Speed</h3>
33
  <p style="text-align: left;">
34
  We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
admin/pages/setup/steps/class-step-google-page-speed-before.php CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Google_Page_Speed_Before extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step0';
14
  protected $id = 'step1';
@@ -27,7 +27,7 @@ class Step_Google_Page_Speed_Before extends \WBCR\FactoryClearfy236\Pages\Step_C
27
  wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>");
28
  });
29
  </script>
30
- <div class="w-factory-clearfy-236-setup__inner-wrap">
31
  <h3><?php _e('Google Page Speed', 'clearfy') ?></h3>
32
  <p style="text-align: left;">
33
  <?php _e('We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Google_Page_Speed_Before extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step0';
14
  protected $id = 'step1';
27
  wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>");
28
  });
29
  </script>
30
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
31
  <h3><?php _e('Google Page Speed', 'clearfy') ?></h3>
32
  <p style="text-align: left;">
33
  <?php _e('We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
admin/pages/setup/steps/class-step-optimize-images.php CHANGED
@@ -8,13 +8,13 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Optimize_Images extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step4';
14
  protected $id = 'step5';
15
  protected $next_id = 'step6';
16
 
17
- public function __construct(\WBCR\FactoryClearfy236\Pages\Setup $page)
18
  {
19
  parent::__construct($page);
20
  }
@@ -58,7 +58,7 @@ class Step_Optimize_Images extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
58
  ];
59
  ?>
60
 
61
- <div class="w-factory-clearfy-236-setup__inner-wrap">
62
  <h3><?php _e("Optimize images", "clearfy") ?></h3>
63
  <p style="text-align: left;">
64
  <?php _e("We found unoptimized images in your media library. You can run background image optimization with the Robin image optimizer component of the Clearfy plugin. Background optimization is a long process, your images will be optimized after some time, so you won't be able to immediately see the improvement in Google Page Speed, but when the images are fully optimized you will see a score increase in Google Page Speed.", "clearfy"); ?>
@@ -165,7 +165,7 @@ class Step_Optimize_Images extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
165
  $install_robin_plugin_btn->add_class('wclearfy-setup__install-component-button');
166
 
167
  ?>
168
- <div class="w-factory-clearfy-236-setup__inner-wrap">
169
  <h3><?php _e("Optimize images", "clearfy") ?></h3>
170
  <p style="text-align: left;">
171
  <?php _e("Robin Image optimizer plugin isn't installed or activated, you need to install or activate it to optimize your images.", "clearfy"); ?>
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Optimize_Images extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step4';
14
  protected $id = 'step5';
15
  protected $next_id = 'step6';
16
 
17
+ public function __construct(\WBCR\FactoryClearfy237\Pages\Setup $page)
18
  {
19
  parent::__construct($page);
20
  }
58
  ];
59
  ?>
60
 
61
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
62
  <h3><?php _e("Optimize images", "clearfy") ?></h3>
63
  <p style="text-align: left;">
64
  <?php _e("We found unoptimized images in your media library. You can run background image optimization with the Robin image optimizer component of the Clearfy plugin. Background optimization is a long process, your images will be optimized after some time, so you won't be able to immediately see the improvement in Google Page Speed, but when the images are fully optimized you will see a score increase in Google Page Speed.", "clearfy"); ?>
165
  $install_robin_plugin_btn->add_class('wclearfy-setup__install-component-button');
166
 
167
  ?>
168
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
169
  <h3><?php _e("Optimize images", "clearfy") ?></h3>
170
  <p style="text-align: left;">
171
  <?php _e("Robin Image optimizer plugin isn't installed or activated, you need to install or activate it to optimize your images.", "clearfy"); ?>
admin/pages/setup/steps/class-step-plugins.php CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Plugins extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step1';
14
  protected $id = 'step2';
@@ -26,7 +26,7 @@ class Step_Plugins extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
26
  $install_assets_manager_component_btn = $this->plugin->get_install_component_button('internal', 'assets_manager');
27
  $install_minify_and_combine_component_btn = $this->plugin->get_install_component_button('internal', 'minify_and_combine');
28
  ?>
29
- <div class="w-factory-clearfy-236-setup__inner-wrap">
30
  <h3><?php _e('Installing plugins', 'clearfy') ?></h3>
31
  <p style="text-align: left;"><?php _e('We analyzed your site and decided that in order to get the maximum result in
32
  optimizing your site, you will need to install additional plugins.', 'clearfy') ?></p>
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Plugins extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step1';
14
  protected $id = 'step2';
26
  $install_assets_manager_component_btn = $this->plugin->get_install_component_button('internal', 'assets_manager');
27
  $install_minify_and_combine_component_btn = $this->plugin->get_install_component_button('internal', 'minify_and_combine');
28
  ?>
29
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
30
  <h3><?php _e('Installing plugins', 'clearfy') ?></h3>
31
  <p style="text-align: left;"><?php _e('We analyzed your site and decided that in order to get the maximum result in
32
  optimizing your site, you will need to install additional plugins.', 'clearfy') ?></p>
admin/pages/setup/steps/class-step-setting-seo-optimize.php CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Setting_Seo extends \WBCR\FactoryClearfy236\Pages\Step_Form {
12
 
13
  protected $prev_id = 'step3';
14
  protected $id = 'step4';
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Setting_Seo extends \WBCR\FactoryClearfy237\Pages\Step_Form {
12
 
13
  protected $prev_id = 'step3';
14
  protected $id = 'step4';
admin/pages/setup/steps/class-step-setting-speed-optimize.php CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
- class Step_Setting_Speed_Optimize extends \WBCR\FactoryClearfy236\Pages\Step_Form {
12
 
13
  protected $prev_id = 'step2';
14
  protected $id = 'step3';
8
  * @copyright (c) 23.07.2020, Webcraftic
9
  * @version 1.0
10
  */
11
+ class Step_Setting_Speed_Optimize extends \WBCR\FactoryClearfy237\Pages\Step_Form {
12
 
13
  protected $prev_id = 'step2';
14
  protected $id = 'step3';
clearfy.php CHANGED
@@ -4,11 +4,11 @@
4
  * Plugin URI: https://clearfy.pro
5
  * Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
6
  * Author: Creative Motion <info@cm-wp.com>
7
- * Version: 1.8.7
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  * Author URI: https://cm-wp.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  // Exit if accessed directly
@@ -89,12 +89,12 @@ $plugin_info = array(
89
  ),
90
  // FRAMEWORK MODULES
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/clearfy', 'factory_clearfy_236', 'all'),
96
- array('libs/factory/freemius', 'factory_freemius_133', 'all'),
97
- array('libs/factory/adverts', 'factory_adverts_123', 'admin')
98
  ),
99
  'load_plugin_components' => array(
100
  'disable_notices' => array(
@@ -134,7 +134,7 @@ $plugin_info = array(
134
 
135
 
136
 
137
- $clearfy_compatibility = new Wbcr_Factory445_Requirements(__FILE__, array_merge($plugin_info, array(
138
  'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
139
  'required_php_version' => '7.0',
140
  'required_wp_version' => '5.2.0',
@@ -165,7 +165,7 @@ define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
165
 
166
  // Plugin version
167
  define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
168
- define('WCL_FRAMEWORK_VER', 'FACTORY_445_VERSION');
169
 
170
  define('WCL_PLUGIN_DIR', dirname(__FILE__));
171
  define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
4
  * Plugin URI: https://clearfy.pro
5
  * Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
6
  * Author: Creative Motion <info@cm-wp.com>
7
+ * Version: 1.8.9
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  * Author URI: https://cm-wp.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  // Exit if accessed directly
89
  ),
90
  // FRAMEWORK MODULES
91
  'load_factory_modules' => array(
92
+ array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
93
+ array('libs/factory/forms', 'factory_forms_443', 'admin'),
94
+ array('libs/factory/pages', 'factory_pages_445', 'admin'),
95
+ array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
96
+ array('libs/factory/freemius', 'factory_freemius_134', 'all'),
97
+ array('libs/factory/adverts', 'factory_adverts_124', 'admin')
98
  ),
99
  'load_plugin_components' => array(
100
  'disable_notices' => array(
134
 
135
 
136
 
137
+ $clearfy_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($plugin_info, array(
138
  'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
139
  'required_php_version' => '7.0',
140
  'required_wp_version' => '5.2.0',
165
 
166
  // Plugin version
167
  define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
168
+ define('WCL_FRAMEWORK_VER', 'FACTORY_446_VERSION');
169
 
170
  define('WCL_PLUGIN_DIR', dirname(__FILE__));
171
  define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
components/assets-manager/admin/activation.php CHANGED
@@ -5,7 +5,7 @@
5
  *
6
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.03.2018, Webcraftic
8
- * @see Wbcr_Factory445_Activator
9
  * @version 1.0
10
  */
11
 
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WGNZ_Activation extends Wbcr_Factory445_Activator {
18
 
19
  /**
20
  * Runs activation actions.
5
  *
6
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.03.2018, Webcraftic
8
+ * @see Wbcr_Factory446_Activator
9
  * @version 1.0
10
  */
11
 
14
  exit;
15
  }
16
 
17
+ class WGNZ_Activation extends Wbcr_Factory446_Activator {
18
 
19
  /**
20
  * Runs activation actions.
components/assets-manager/admin/ajax/save-settings.php CHANGED
@@ -8,7 +8,7 @@
8
  */
9
 
10
  // Exit if accessed directly
11
- if ( ! defined( 'ABSPATH' ) ) {
12
  exit;
13
  }
14
 
@@ -18,199 +18,92 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
19
  * @since 2.0.0
20
  */
21
- function wam_save_settings_action() {
22
- check_ajax_referer( 'wam_save_settigns' );
23
-
24
- if ( ! current_user_can( 'manage_options' ) ) {
25
- wp_send_json_error( [
26
- 'error_message_title' => __( 'Save settings failed!', 'gonzales' ),
27
- 'error_message_content' => __( 'You don\'t have enough capability to edit this information.', 'gonzales' )
28
- ] );
 
29
  }
30
 
31
- /*$scrape_key = md5( rand() );
32
- $transient = 'scrape_key_' . $scrape_key;
33
- $scrape_nonce = strval( rand() );
34
- set_transient( $transient, $scrape_nonce, 60 ); // It shouldn't take more than 60 seconds to make the two loopback requests.
35
-
36
- $cookies = wp_unslash( $_COOKIE );
37
- $scrape_params = array(
38
- 'wp_scrape_key' => $scrape_key,
39
- 'wp_scrape_nonce' => $scrape_nonce,
40
- );
41
- $headers = array(
42
- 'Cache-Control' => 'no-cache',
43
- );
44
-
45
- /** This filter is documented in wp-includes/class-wp-http-streams.php */ ///*$sslverify = apply_filters( 'https_local_ssl_verify', false );
46
- //
47
- //// Include Basic auth in loopback requests.
48
- //if ( isset( $_SERVER['PHP_AUTH_USER'] ) && isset( $_SERVER['PHP_AUTH_PW'] ) ) {
49
- // $headers['Authorization'] = 'Basic ' . base64_encode( wp_unslash( $_SERVER['PHP_AUTH_USER'] ) . ':' . wp_unslash( $_SERVER['PHP_AUTH_PW'] ) );
50
- //}
51
- //
52
- //// Make sure PHP process doesn't die before loopback requests complete.
53
- //set_time_limit( 300 );
54
- //
55
- //// Time to wait for loopback requests to finish.
56
- //$timeout = 100;
57
- //
58
- //$needle_start = "###### wp_scraping_result_start:$scrape_key ######";
59
- //$needle_end = "###### wp_scraping_result_end:$scrape_key ######";
60
- //
61
- //// Attempt loopback request to editor to see if user just whitescreened themselves.
62
- //if ( $plugin ) {
63
- // $url = add_query_arg( compact( 'plugin', 'file' ), admin_url( 'plugin-editor.php' ) );
64
- //} elseif ( isset( $stylesheet ) ) {
65
- // $url = add_query_arg(
66
- // array(
67
- // 'theme' => $stylesheet,
68
- // 'file' => $file,
69
- // ),
70
- // admin_url( 'theme-editor.php' )
71
- // );
72
- //} else {
73
- // $url = admin_url();
74
- //}
75
- //$url = add_query_arg( $scrape_params, $url );
76
- //$r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout', 'sslverify' ) );
77
- //$body = wp_remote_retrieve_body( $r );
78
- //$scrape_result_position = strpos( $body, $needle_start );
79
- //
80
- //$loopback_request_failure = array(
81
- // 'code' => 'loopback_request_failed',
82
- // 'message' => __( 'Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.' ),
83
- //);
84
- //$json_parse_failure = array(
85
- // 'code' => 'json_parse_error',
86
- //);
87
- //
88
- //$result = null;
89
- //if ( false === $scrape_result_position ) {
90
- // $result = $loopback_request_failure;
91
- //} else {
92
- // $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
93
- // $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
94
- // $result = json_decode( trim( $error_output ), true );
95
- // if ( empty( $result ) ) {
96
- // $result = $json_parse_failure;
97
- // }
98
- //}
99
- //
100
- //// Try making request to homepage as well to see if visitors have been whitescreened.
101
- //if ( true === $result ) {
102
- // $url = home_url( '/' );
103
- // $url = add_query_arg( $scrape_params, $url );
104
- // $r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout' ) );
105
- // $body = wp_remote_retrieve_body( $r );
106
- // $scrape_result_position = strpos( $body, $needle_start );
107
- //
108
- // if ( false === $scrape_result_position ) {
109
- // $result = $loopback_request_failure;
110
- // } else {
111
- // $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
112
- // $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
113
- // $result = json_decode( trim( $error_output ), true );
114
- // if ( empty( $result ) ) {
115
- // $result = $json_parse_failure;
116
- // }
117
- // }
118
- //}
119
- //
120
- //delete_transient( $transient );
121
- //
122
- //if ( true !== $result ) {
123
- //
124
- // // Roll-back file change.
125
- // file_put_contents( $real_file, $previous_content );
126
- // if ( function_exists( 'opcache_invalidate' ) ) {
127
- // opcache_invalidate( $real_file, true );
128
- // }
129
- //
130
- // if ( ! isset( $result['message'] ) ) {
131
- // $message = __( 'Something went wrong.' );
132
- // } else {
133
- // $message = $result['message'];
134
- // unset( $result['message'] );
135
- // }
136
- // return new WP_Error( 'php_error', $message, $result );
137
- //}*/
138
-
139
- $save_message_title = __( 'Settings saved successfully!', 'clearfy' );
140
- $save_message_content = __( 'If you use test mode, do not forget to disable it. We also recommend that you flush the cache if you use caching plugins.', 'clearfy' );
141
- $scope = WGZ_Plugin::app()->request->post( 'scope', 'frontend' );
142
- $raw_updated_settings = WGZ_Plugin::app()->request->post( 'settings', [], true );
143
-
144
- if ( ! empty( $raw_updated_settings ) ) {
145
- if ( 'networkadmin' === $scope ) {
146
- $settings = WGZ_Plugin::app()->getNetworkOption( 'backend_assets_states', [] );
147
- } else if ( 'admin' === $scope ) {
148
- $settings = WGZ_Plugin::app()->getOption( 'backend_assets_states', [] );
149
  } else {
150
- $settings = WGZ_Plugin::app()->getOption( 'assets_states', [] );
151
  }
152
 
153
- if ( ! defined( 'WGZP_PLUGIN_ACTIVE' ) || ( is_array( $settings ) && ! isset( $settings['save_mode'] ) ) ) {
154
  $settings['save_mode'] = false;
155
  }
156
 
157
- if ( ! empty( $raw_updated_settings['plugins'] ) ) {
158
- foreach ( (array) $raw_updated_settings['plugins'] as $plugin_name => $plugin_group ) {
159
- if ( ! empty( $plugin_group['load_mode'] ) ) {
160
- if ( 'enable' == $plugin_group['load_mode'] ) {
161
  $plugin_group['visability'] = "";
162
  } else {
163
- foreach ( [ 'js', 'css' ] as $assets_type ) {
164
- if ( ! empty( $plugin_group[ $assets_type ] ) ) {
165
- foreach ( $plugin_group[ $assets_type ] as $resource_handle => $resource_params ) {
166
- $plugin_group[ $assets_type ][ $resource_handle ]['visability'] = "";
167
  }
168
  }
169
  }
170
  }
171
  }
172
 
173
- $settings['plugins'][ $plugin_name ] = $plugin_group;
174
  }
175
  }
176
 
177
- if ( ! empty( $raw_updated_settings['theme'] ) ) {
178
  $settings['theme'] = $raw_updated_settings['theme'];
179
  }
180
 
181
- if ( ! empty( $raw_updated_settings['misc'] ) ) {
182
  $settings['misc'] = $raw_updated_settings['misc'];
183
  }
184
 
185
  /**
186
  * Filter run before save settings.
187
  *
188
- * @param array $settings
189
- * @param array $raw_updated_settings
190
  * @param string $scope
191
  */
192
- $settings = apply_filters( 'wam/before_save_settings', $settings, $raw_updated_settings, $scope );
193
 
194
- if ( 'networkadmin' === $scope ) {
195
- WGZ_Plugin::app()->updateNetworkOption( 'backend_assets_states', $settings );
196
- } else if ( 'admin' === $scope ) {
197
- WGZ_Plugin::app()->updateOption( 'backend_assets_states', $settings );
198
  } else {
199
- WGZ_Plugin::app()->updateOption( 'assets_states', $settings );
200
  }
201
 
202
  // If mu plugin does not exist, install it.
203
  wbcr_gnz_deploy_mu_plugin();
204
 
205
  // Flush cache for all cache plugins
206
- WbcrFactoryClearfy236_Helpers::flushPageCache();
207
  }
208
 
209
- wp_send_json_success( [
210
- 'save_massage_title' => $save_message_title,
211
  'save_message_content' => $save_message_content
212
- ] );
213
  }
214
 
215
- add_action( 'wp_ajax_nopriv_wam-save-settings', 'wam_save_settings_action' );
216
- add_action( 'wp_ajax_wam-save-settings', 'wam_save_settings_action' );
8
  */
9
 
10
  // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
  exit;
13
  }
14
 
18
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
19
  * @since 2.0.0
20
  */
21
+ function wam_save_settings_action()
22
+ {
23
+ check_ajax_referer('wam_save_settigns');
24
+
25
+ if( !current_user_can('manage_options') ) {
26
+ wp_send_json_error([
27
+ 'error_message_title' => __('Save settings failed!', 'gonzales'),
28
+ 'error_message_content' => __('You don\'t have enough capability to edit this information.', 'gonzales')
29
+ ]);
30
  }
31
 
32
+ $save_message_title = __('Settings saved successfully!', 'clearfy');
33
+ $save_message_content = __('If you use test mode, do not forget to disable it. We also recommend that you flush the cache if you use caching plugins.', 'clearfy');
34
+ $scope = WGZ_Plugin::app()->request->post('scope', 'frontend');
35
+ $raw_updated_settings = WGZ_Plugin::app()->request->post('settings', [], true);
36
+
37
+ if( !empty($raw_updated_settings) ) {
38
+ if( 'networkadmin' === $scope ) {
39
+ $settings = WGZ_Plugin::app()->getNetworkOption('backend_assets_states', []);
40
+ } else if( 'admin' === $scope ) {
41
+ $settings = WGZ_Plugin::app()->getOption('backend_assets_states', []);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  } else {
43
+ $settings = WGZ_Plugin::app()->getOption('assets_states', []);
44
  }
45
 
46
+ if( !defined('WGZP_PLUGIN_ACTIVE') || (is_array($settings) && !isset($settings['save_mode'])) ) {
47
  $settings['save_mode'] = false;
48
  }
49
 
50
+ if( !empty($raw_updated_settings['plugins']) ) {
51
+ foreach((array)$raw_updated_settings['plugins'] as $plugin_name => $plugin_group) {
52
+ if( !empty($plugin_group['load_mode']) ) {
53
+ if( 'enable' == $plugin_group['load_mode'] ) {
54
  $plugin_group['visability'] = "";
55
  } else {
56
+ foreach(['js', 'css'] as $assets_type) {
57
+ if( !empty($plugin_group[$assets_type]) ) {
58
+ foreach($plugin_group[$assets_type] as $resource_handle => $resource_params) {
59
+ $plugin_group[$assets_type][$resource_handle]['visability'] = "";
60
  }
61
  }
62
  }
63
  }
64
  }
65
 
66
+ $settings['plugins'][$plugin_name] = $plugin_group;
67
  }
68
  }
69
 
70
+ if( !empty($raw_updated_settings['theme']) ) {
71
  $settings['theme'] = $raw_updated_settings['theme'];
72
  }
73
 
74
+ if( !empty($raw_updated_settings['misc']) ) {
75
  $settings['misc'] = $raw_updated_settings['misc'];
76
  }
77
 
78
  /**
79
  * Filter run before save settings.
80
  *
81
+ * @param array $settings
82
+ * @param array $raw_updated_settings
83
  * @param string $scope
84
  */
85
+ $settings = apply_filters('wam/before_save_settings', $settings, $raw_updated_settings, $scope);
86
 
87
+ if( 'networkadmin' === $scope ) {
88
+ WGZ_Plugin::app()->updateNetworkOption('backend_assets_states', $settings);
89
+ } else if( 'admin' === $scope ) {
90
+ WGZ_Plugin::app()->updateOption('backend_assets_states', $settings);
91
  } else {
92
+ WGZ_Plugin::app()->updateOption('assets_states', $settings);
93
  }
94
 
95
  // If mu plugin does not exist, install it.
96
  wbcr_gnz_deploy_mu_plugin();
97
 
98
  // Flush cache for all cache plugins
99
+ WbcrFactoryClearfy237_Helpers::flushPageCache();
100
  }
101
 
102
+ wp_send_json_success([
103
+ 'save_massage_title' => $save_message_title,
104
  'save_message_content' => $save_message_content
105
+ ]);
106
  }
107
 
108
+ add_action('wp_ajax_nopriv_wam-save-settings', 'wam_save_settings_action');
109
+ add_action('wp_ajax_wam-save-settings', 'wam_save_settings_action');
components/assets-manager/admin/boot.php CHANGED
@@ -147,7 +147,7 @@ if( defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
147
  *
148
  * @param array $widgets
149
  * @param string $position
150
- * @param Wbcr_Factory445_Plugin $plugin
151
  */
152
  add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
153
  if( $plugin->getPluginName() == WGZ_Plugin::app()->getPluginName() ) {
@@ -207,5 +207,5 @@ if( defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
207
  return $page_url;
208
  }
209
 
210
- add_filter('wbcr_factory_pages_444_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
211
  }
147
  *
148
  * @param array $widgets
149
  * @param string $position
150
+ * @param Wbcr_Factory446_Plugin $plugin
151
  */
152
  add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
153
  if( $plugin->getPluginName() == WGZ_Plugin::app()->getPluginName() ) {
207
  return $page_url;
208
  }
209
 
210
+ add_filter('wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
211
  }
components/assets-manager/admin/pages/class-pages-more-features.php CHANGED
@@ -17,6 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  *
18
  * @copyright (c) 2018 Webraftic Ltd
19
  */
20
- class WGZ_MoreFeaturesPage extends Wbcr_FactoryClearfy236_MoreFeaturesPage {
21
 
22
  }
17
  *
18
  * @copyright (c) 2018 Webraftic Ltd
19
  */
20
+ class WGZ_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
21
 
22
  }
components/assets-manager/admin/pages/class-pages-settings.php CHANGED
@@ -16,7 +16,7 @@ if( !defined('ABSPATH') ) {
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
- class WGZ_AssetsManagerPage extends Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  * The id of the page in the admin menu.
@@ -24,7 +24,7 @@ class WGZ_AssetsManagerPage extends Wbcr_FactoryClearfy236_PageBase {
24
  * Mainly used to navigate between pages.
25
  *
26
  * @since 1.0.0
27
- * @see FactoryPages444_AdminPage
28
  *
29
  * @var string
30
  */
@@ -48,9 +48,9 @@ class WGZ_AssetsManagerPage extends Wbcr_FactoryClearfy236_PageBase {
48
  public $available_for_multisite = true;
49
 
50
  /**
51
- * @param Wbcr_Factory445_Plugin $plugin
52
  */
53
- public function __construct(Wbcr_Factory445_Plugin $plugin)
54
  {
55
  $this->menu_title = __('Assets manager', 'gonzales');
56
 
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WGZ_AssetsManagerPage extends Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  * The id of the page in the admin menu.
24
  * Mainly used to navigate between pages.
25
  *
26
  * @since 1.0.0
27
+ * @see FactoryPages445_AdminPage
28
  *
29
  * @var string
30
  */
48
  public $available_for_multisite = true;
49
 
50
  /**
51
+ * @param Wbcr_Factory446_Plugin $plugin
52
  */
53
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
54
  {
55
  $this->menu_title = __('Assets manager', 'gonzales');
56
 
components/assets-manager/assets/js/wam-assets-conditions.js CHANGED
@@ -29,9 +29,11 @@
29
  let value = null;
30
 
31
  if( 'select' === paramOptions['type'] ) {
32
- value = this._getSelectValue(paramOptions);
 
 
33
  } else if( 'integer' === paramOptions['type'] ) {
34
- value = this._getIntegerValue(paramOptions);
35
  } else {
36
  value = this._getTextValue(paramOptions);
37
  }
@@ -106,6 +108,8 @@
106
  operators = ['between'];
107
  } else if( 'integer' === paramOptions['type'] ) {
108
  operators = ['equals', 'notequal', 'less', 'greater', 'between'];
 
 
109
  } else if( 'regexp' === paramOptions['type'] ) {
110
  operators = ['equals'];
111
  } else if( 'default' === paramOptions['type'] ) {
@@ -144,6 +148,8 @@
144
  _createValueControl(paramOptions, isInit) {
145
  if( 'select' === paramOptions['type'] ) {
146
  this._createValueAsSelect(paramOptions, isInit);
 
 
147
  } else if( 'integer' === paramOptions['type'] ) {
148
  this._createValueAsInteger(paramOptions, isInit);
149
  } else {
@@ -218,7 +224,7 @@
218
  /**
219
  * Returns a value for the select control.
220
  */
221
- _getSelectValue() {
222
  let $select = this._conditionElement.find(".wam-cleditor__condition-value select");
223
 
224
  let value = $select.val();
@@ -275,7 +281,7 @@
275
  /**
276
  * Returns a value for the Integer control.
277
  */
278
- _getIntegerValue() {
279
  let value = {};
280
 
281
  let $operator = this._conditionElement.find(".wam-cleditor__operator-select");
@@ -309,6 +315,73 @@
309
  }
310
  }
311
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  // -------------------
313
  // Text Control
314
  // -------------------
@@ -400,7 +473,7 @@
400
  description: optionElement.data('hint').trim()
401
  };
402
 
403
- if( "text" === type || "default" === type || "regexp" === type ) {
404
  data['placeholder'] = optionElement.data('placeholder');
405
  delete data['values'];
406
  }
29
  let value = null;
30
 
31
  if( 'select' === paramOptions['type'] ) {
32
+ value = this._getSelectControlValue(paramOptions);
33
+ } else if( 'equals' === paramOptions['type'] ) {
34
+ value = this._getEqualsControlValue(paramOptions);
35
  } else if( 'integer' === paramOptions['type'] ) {
36
+ value = this._getIntegerControlValue(paramOptions);
37
  } else {
38
  value = this._getTextValue(paramOptions);
39
  }
108
  operators = ['between'];
109
  } else if( 'integer' === paramOptions['type'] ) {
110
  operators = ['equals', 'notequal', 'less', 'greater', 'between'];
111
+ } else if( 'equals' === paramOptions['type'] ) {
112
+ operators = ['equals', 'notequal'];
113
  } else if( 'regexp' === paramOptions['type'] ) {
114
  operators = ['equals'];
115
  } else if( 'default' === paramOptions['type'] ) {
148
  _createValueControl(paramOptions, isInit) {
149
  if( 'select' === paramOptions['type'] ) {
150
  this._createValueAsSelect(paramOptions, isInit);
151
+ } else if( 'equals' === paramOptions['type'] ) {
152
+ this._createValueAsEquals(paramOptions, isInit);
153
  } else if( 'integer' === paramOptions['type'] ) {
154
  this._createValueAsInteger(paramOptions, isInit);
155
  } else {
224
  /**
225
  * Returns a value for the select control.
226
  */
227
+ _getSelectControlValue() {
228
  let $select = this._conditionElement.find(".wam-cleditor__condition-value select");
229
 
230
  let value = $select.val();
281
  /**
282
  * Returns a value for the Integer control.
283
  */
284
+ _getIntegerControlValue() {
285
  let value = {};
286
 
287
  let $operator = this._conditionElement.find(".wam-cleditor__operator-select");
315
  }
316
  }
317
 
318
+ // -------------------
319
+ // Query string Control
320
+ // -------------------
321
+
322
+ /**
323
+ * Creates a control for the input linked with the integer.
324
+ */
325
+ _createValueAsEquals(paramOptions, isInit) {
326
+ let self = this;
327
+
328
+ let $operator = this._conditionElement.find(".wam-cleditor__operator-select");
329
+ let $control;
330
+
331
+ $control = $("<span><input type='text' class='wam-cleditor__equals-value1' /> <span class='wam-cleditor__equals-icon'>=</span> <input type='text' class='wam-cleditor__equals-value2' /></span>");
332
+
333
+ if( paramOptions['placeholder'] && $.isArray(paramOptions['placeholder']) ) {
334
+ $control.find('.wam-cleditor__equals-value1').attr('placeholder', paramOptions['placeholder'][0]);
335
+
336
+ if( paramOptions['placeholder'][1] ) {
337
+ $control.find('.wam-cleditor__equals-value2').attr('placeholder', paramOptions['placeholder'][1]);
338
+ }
339
+ }
340
+
341
+ self._insertValueControl($control);
342
+
343
+ $operator.on('change', function() {
344
+ let currentOperator = $operator.val();
345
+ let equalIcon = $control.find('.wam-cleditor__equals-icon');
346
+
347
+ if( 'equals' === currentOperator ) {
348
+ equalIcon.text('=');
349
+ } else {
350
+ equalIcon.text('≠');
351
+ }
352
+ });
353
+
354
+ $operator.change();
355
+
356
+ if( isInit && this.options.value ) {
357
+ this._setEqualsControlValue(this.options.value);
358
+ }
359
+ }
360
+
361
+ /**
362
+ * Returns a value for the Integer control.
363
+ */
364
+ _getEqualsControlValue() {
365
+ let value = {};
366
+
367
+ value.var_name = this._conditionElement.find(".wam-cleditor__equals-value1").val();
368
+ value.var_value = this._conditionElement.find(".wam-cleditor__equals-value2").val();
369
+
370
+ return value;
371
+ }
372
+
373
+ /**
374
+ * Sets a value for the Integer control.
375
+ */
376
+ _setEqualsControlValue(value) {
377
+ if( !value ) {
378
+ value = {};
379
+ }
380
+
381
+ this._conditionElement.find(".wam-cleditor__equals-value1").val(value.var_name);
382
+ this._conditionElement.find(".wam-cleditor__equals-value2").val(value.var_value);
383
+ }
384
+
385
  // -------------------
386
  // Text Control
387
  // -------------------
473
  description: optionElement.data('hint').trim()
474
  };
475
 
476
+ if( "text" === type || "default" === type || "regexp" === type || "equals" === type ) {
477
  data['placeholder'] = optionElement.data('placeholder');
478
  delete data['values'];
479
  }
components/assets-manager/assets/js/wam-assets-manager.js CHANGED
@@ -90,6 +90,7 @@
90
  }
91
 
92
  if( requires.length ) {
 
93
  // show warning
94
  var notice = WamPnotify.notice({
95
  title: self.pluginVars.i18n.asset_canbe_required_title,
@@ -513,8 +514,6 @@ notice.on('pnotify.cancel', function() {
513
  settings[groupType][recourceType][resourceHandle]['visability'] = $(this).val();
514
  });
515
 
516
- console.log(settings);
517
-
518
  let stackBottomRight = {
519
  'dir1': 'up',
520
  'dir2': 'left',
@@ -544,7 +543,6 @@ notice.on('pnotify.cancel', function() {
544
 
545
  if( !response || !response.success ) {
546
  if( response.data ) {
547
- console.log(response.data.error_message_content);
548
  WamPnotify.alert({
549
  title: response.data.error_message_title,
550
  text: response.data.error_message_content,
90
  }
91
 
92
  if( requires.length ) {
93
+
94
  // show warning
95
  var notice = WamPnotify.notice({
96
  title: self.pluginVars.i18n.asset_canbe_required_title,
514
  settings[groupType][recourceType][resourceHandle]['visability'] = $(this).val();
515
  });
516
 
 
 
517
  let stackBottomRight = {
518
  'dir1': 'up',
519
  'dir2': 'left',
543
 
544
  if( !response || !response.success ) {
545
  if( response.data ) {
 
546
  WamPnotify.alert({
547
  title: response.data.error_message_title,
548
  text: response.data.error_message_content,
components/assets-manager/gonzales.php CHANGED
@@ -8,7 +8,7 @@
8
  * Text Domain: gonzales
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  // Exit if accessed directly
@@ -68,15 +68,15 @@ $wgnz_plugin_info = array(
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
- array('libs/factory/bootstrap', 'factory_bootstrap_445', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_442', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_444', 'admin'),
74
- array('libs/factory/clearfy', 'factory_clearfy_236', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_123', 'admin')
76
  )
77
  );
78
 
79
- $wgnz_compatibility = new Wbcr_Factory445_Requirements(__FILE__, array_merge($wgnz_plugin_info, array(
80
  'plugin_already_activate' => defined('WGZ_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
8
  * Text Domain: gonzales
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_443', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_445', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_124', 'admin')
76
  )
77
  );
78
 
79
+ $wgnz_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wgnz_plugin_info, array(
80
  'plugin_already_activate' => defined('WGZ_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
components/assets-manager/includes/class-plugin.php CHANGED
@@ -11,11 +11,11 @@ if ( ! defined( 'ABSPATH' ) ) {
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  * @version 1.0
13
  */
14
- class WGZ_Plugin extends Wbcr_Factory445_Plugin {
15
 
16
  /**
17
  * @see self::app()
18
- * @var Wbcr_Factory445_Plugin
19
  */
20
  private static $app;
21
 
@@ -53,7 +53,7 @@ class WGZ_Plugin extends Wbcr_Factory445_Plugin {
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
- * @return \Wbcr_Factory445_Plugin|\WGZ_Plugin
57
  */
58
  public static function app() {
59
  return self::$app;
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  * @version 1.0
13
  */
14
+ class WGZ_Plugin extends Wbcr_Factory446_Plugin {
15
 
16
  /**
17
  * @see self::app()
18
+ * @var Wbcr_Factory446_Plugin
19
  */
20
  private static $app;
21
 
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
+ * @return \Wbcr_Factory446_Plugin|\WGZ_Plugin
57
  */
58
  public static function app() {
59
  return self::$app;
components/assets-manager/includes/classes/class-assets-manager-global.php CHANGED
@@ -25,9 +25,9 @@ class WGZ_Assets_Manager_Public {
25
  private $deregistered = [];
26
 
27
  /**
28
- * @param Wbcr_Factory445_Plugin $plugin
29
  */
30
- public function __construct(Wbcr_Factory445_Plugin $plugin)
31
  {
32
  $this->plugin = $plugin;
33
 
@@ -221,11 +221,13 @@ class WGZ_Assets_Manager_Public {
221
  return;
222
  }
223
  ?>
224
- <label class="wam-table__label-move-to-footer-premium">
225
- <input type="checkbox" class="wam-checkbox wam-table__checkbox" disabled="disabled" <?php checked($item['move_to_footer']) ?>>
226
- <?php _e('Move to footer (PRO)', 'gonzales') ?>
227
- <i class="wam-help-hint wam-tooltip wam-tooltip--bottom" data-tooltip="<?php _e('This function will force a script or style from the header to the footer. This can fix problems of blocking page rendering.', 'gonzales') ?>"></i>
228
- </label>
 
 
229
  <?php
230
  }
231
 
@@ -645,6 +647,7 @@ class WGZ_Assets_Manager_Public {
645
  <script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-conditions.js'; ?>'></script>
646
  <script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-manager.js'; ?>'></script>
647
  <?php
 
648
  }
649
 
650
  /**
@@ -722,6 +725,7 @@ class WGZ_Assets_Manager_Public {
722
  'wp-includes/js/admin-bar.min.js',
723
  // --
724
  'assets/js/wam-assets-manager.js',
 
725
  'assets/js/wam-assets-conditions.js',
726
  // --
727
  'assets/js/libs/wam-pnotify.js',
@@ -998,6 +1002,12 @@ class WGZ_Assets_Manager_Public {
998
  $s['move_to_footer'] = false;
999
  }
1000
 
 
 
 
 
 
 
1001
  if( 'disable' === $s['load_mode'] ) {
1002
  $s['row_classes'] = " js-wam-table__tr--disabled-section";
1003
  $s['select_control_classes'] = " js-wam-select--disable";
@@ -1204,6 +1214,13 @@ class WGZ_Assets_Manager_Public {
1204
  'default_value' => $this->get_current_url_path(),
1205
  'description' => __('Current Url', 'gonzales')
1206
  ],
 
 
 
 
 
 
 
1207
  [
1208
  'id' => 'location-page',
1209
  'title' => __('Custom URL', 'gonzales') . $pro_label,
25
  private $deregistered = [];
26
 
27
  /**
28
+ * @param Wbcr_Factory446_Plugin $plugin
29
  */
30
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
31
  {
32
  $this->plugin = $plugin;
33
 
221
  return;
222
  }
223
  ?>
224
+ <div>
225
+ <label class="wam-table__label-move-to-footer-premium" style="display: inline-block">
226
+ <input type="checkbox" class="wam-checkbox wam-table__checkbox" disabled="disabled" <?php checked($item['move_to_footer']) ?>>
227
+ <?php _e('Move to footer (PRO)', 'gonzales') ?>
228
+ <i class="wam-help-hint wam-tooltip wam-tooltip--bottom" data-tooltip="<?php _e('This function will force a script or style from the header to the footer. This can fix problems of blocking page rendering.', 'gonzales') ?>"></i>
229
+ </label>
230
+ </div>
231
  <?php
232
  }
233
 
647
  <script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-conditions.js'; ?>'></script>
648
  <script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-manager.js'; ?>'></script>
649
  <?php
650
+ do_action("wam/plugin_print_scripts");
651
  }
652
 
653
  /**
725
  'wp-includes/js/admin-bar.min.js',
726
  // --
727
  'assets/js/wam-assets-manager.js',
728
+ 'assets/js/wam-assets-manager-pro.js',
729
  'assets/js/wam-assets-conditions.js',
730
  // --
731
  'assets/js/libs/wam-pnotify.js',
1002
  $s['move_to_footer'] = false;
1003
  }
1004
 
1005
+ if( isset($settings[$type]) && isset($settings[$type][$name]) && !empty($settings[$type][$name]['dns_prefetch']) ) {
1006
+ $s['dns_prefetch'] = "true" === $settings[$type][$name]['dns_prefetch'];
1007
+ } else {
1008
+ $s['dns_prefetch'] = false;
1009
+ }
1010
+
1011
  if( 'disable' === $s['load_mode'] ) {
1012
  $s['row_classes'] = " js-wam-table__tr--disabled-section";
1013
  $s['select_control_classes'] = " js-wam-select--disable";
1214
  'default_value' => $this->get_current_url_path(),
1215
  'description' => __('Current Url', 'gonzales')
1216
  ],
1217
+ [
1218
+ 'id' => 'query-string',
1219
+ 'title' => __('Query string var', 'gonzales'),
1220
+ 'type' => 'equals',
1221
+ 'placeholder' => [__('Var name', 'gonzales'), __('Value', 'gonzales')],
1222
+ 'description' => __('You can set this rule if the page url contains a query string. For example ?editor=classic&<b>type</b>=<b>float</b>. For example add the variable <b>"type"</b> to the first input field, and add <b>"float"</b> to the second input field. So field1: <b>type</b> = field2: <b>float</b>. Now, if you go to a page where there is a query string with the <b>"type"</b> variable equal to the <b>"float"</b> value, the script or style file will not be loaded.', 'gonzales')
1223
+ ],
1224
  [
1225
  'id' => 'location-page',
1226
  'title' => __('Custom URL', 'gonzales') . $pro_label,
components/assets-manager/includes/classes/class-check-conditions.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  // Exit if accessed directly
3
- if ( ! defined( 'ABSPATH' ) ) {
4
  exit;
5
  }
6
 
@@ -15,11 +15,12 @@ class WGZ_Check_Conditions {
15
 
16
  protected $condition;
17
 
18
- public function __construct( $condition ) {
19
- if ( empty( $condition ) ) {
 
20
  $this->condition = [];
21
  } else {
22
- $condition = @json_decode( stripslashes( $condition ) );
23
  $this->condition = $condition;
24
  }
25
  }
@@ -27,28 +28,30 @@ class WGZ_Check_Conditions {
27
  /**
28
  * Проверяем в правильном ли формате нам передано условие
29
  *
30
- * @since 2.2.0
31
- *
32
  * @param \stdClass $condition
33
  *
34
  * @return bool
 
 
35
  */
36
- protected function validate_condition_schema( $condition ) {
37
- $isset_attrs = ! empty( $condition->param ) && ! empty( $condition->operator ) && ! empty( $condition->type ) && isset( $condition->value );
 
38
 
39
- $allow_params = in_array( $condition->param, [
40
  'user-role',
41
  'user-mobile',
42
  'user-cookie-name',
43
  'current-url',
 
44
  'location-page',
45
  'regular-expression',
46
  'location-some-page',
47
  'location-post-type',
48
  'location-taxonomy'
49
- ] );
50
 
51
- $allow_operators = in_array( $condition->operator, [
52
  'equals',
53
  'notequal',
54
  'less',
@@ -58,43 +61,44 @@ class WGZ_Check_Conditions {
58
  'contains',
59
  'notcontain',
60
  'between'
61
- ] );
62
 
63
- $allow_types = in_array( $condition->type, [ 'select', 'text', 'default', 'regexp' ] );
64
 
65
  return $isset_attrs && $allow_params && $allow_operators && $allow_types;
66
  }
67
 
68
  /**
69
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
70
- * @since 2.0.0
71
  * @return bool
 
 
72
  */
73
- public function validate() {
74
- if ( empty( $this->condition ) && ! is_array( $this->condition ) ) {
 
75
  return false;
76
  }
77
 
78
  $or = null;
79
- foreach ( $this->condition as $group_OR ) {
80
- if ( ! empty( $group_OR->conditions ) && is_array( $group_OR->conditions ) ) {
81
  $and = null;
82
- foreach ( $group_OR->conditions as $condition ) {
83
- if ( $this->validate_condition_schema( $condition ) ) {
84
- $method_name = str_replace( '-', '_', $condition->param );
85
- if ( is_null( $and ) ) {
86
- $and = $this->call_method( $method_name, $condition->operator, $condition->value );
87
  } else {
88
- $and = $and && $this->call_method( $method_name, $condition->operator, $condition->value );
89
  }
90
  }
91
  }
92
 
93
- $or = is_null( $or ) ? $and : $or || $and;
94
  }
95
  }
96
 
97
- return is_null( $or ) ? false : $or;
98
  }
99
 
100
  /**
@@ -106,24 +110,26 @@ class WGZ_Check_Conditions {
106
  *
107
  * @return bool
108
  */
109
- protected function call_method( $method_name, $operator, $value ) {
110
- if ( method_exists( $this, $method_name ) ) {
111
- return $this->$method_name( $operator, $value );
 
112
  } else {
113
- return apply_filters( 'wam/conditions/call_method', false, $method_name, $operator, $value );
114
  }
115
  }
116
 
117
  /**
118
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
119
- * @since 2.0.0
120
- *
121
  * @param string $path
122
  *
123
  * @return string
 
 
 
124
  */
125
- protected function get_admin_url_path( $path ) {
126
- return str_replace( site_url(), '', admin_url( $path ) );
 
127
  }
128
 
129
  /**
@@ -131,14 +137,15 @@ class WGZ_Check_Conditions {
131
  *
132
  * @return string
133
  */
134
- protected function get_referer_url() {
 
135
  $out = "";
136
- $url = explode( '?', str_replace( site_url(), '', $_SERVER['HTTP_REFERER'] ), 2 );
137
- if ( isset( $url[0] ) ) {
138
- $out = trim( $url[0], '/' );
139
  }
140
 
141
- return $out ? urldecode( $out ) : '/';
142
  }
143
 
144
  /**
@@ -146,23 +153,24 @@ class WGZ_Check_Conditions {
146
  *
147
  * @return string
148
  */
149
- protected function get_current_url_path( $clear_query = false ) {
150
- if ( ! is_admin() && ! $clear_query ) {
151
- $url = explode( '?', $_SERVER['REQUEST_URI'], 2 );
152
- if ( strlen( $url[0] ) > 1 ) {
153
- $out = rtrim( $url[0], '/' );
 
154
  } else {
155
  $out = $url[0];
156
  }
157
 
158
- return "/" === $out ? "/" : untrailingslashit( $out );
159
  }
160
 
161
- $removeble_args = array_merge( [ 'wbcr_assets_manager' ], wp_removable_query_args() );
162
 
163
- $url = remove_query_arg( $removeble_args, $_SERVER['REQUEST_URI'] );
164
 
165
- return untrailingslashit( $url );
166
  }
167
 
168
  /**
@@ -175,8 +183,9 @@ class WGZ_Check_Conditions {
175
  *
176
  * @return bool
177
  */
178
- public function apply_operator( $operator, $first, $second, $third = false ) {
179
- switch ( $operator ) {
 
180
  case 'equals':
181
  return $first === $second;
182
  case 'notequal':
@@ -188,9 +197,9 @@ class WGZ_Check_Conditions {
188
  case 'younger':
189
  return $first < $second;
190
  case 'contains':
191
- return strpos( $first, $second ) !== false;
192
  case 'notcontain':
193
- return strpos( $first, $second ) === false;
194
  case 'between':
195
  return $first < $second && $second < $third;
196
 
@@ -207,8 +216,9 @@ class WGZ_Check_Conditions {
207
  *
208
  * @return integer
209
  */
210
- protected function get_timestamp( $units, $count ) {
211
- switch ( $units ) {
 
212
  case 'seconds':
213
  return $count;
214
  case 'minutes':
@@ -236,9 +246,10 @@ class WGZ_Check_Conditions {
236
  *
237
  * @return integer
238
  */
239
- public function get_date_timestamp( $value ) {
240
- if ( is_object( $value ) ) {
241
- return ( current_time( 'timestamp' ) - $this->get_timestamp( $value->units, $value->unitsCount ) ) * 1000;
 
242
  } else {
243
  return $value;
244
  }
@@ -252,12 +263,13 @@ class WGZ_Check_Conditions {
252
  *
253
  * @return boolean
254
  */
255
- protected function location_some_page( $operator, $value ) {
256
- if ( ! is_admin() ) {
 
257
  // For frontend area
258
- switch ( $value ) {
259
  case 'base_web': // Basic - Entire Website
260
- $result = ! is_admin();
261
  break;
262
  case 'base_sing': // Basic - All Singulars
263
  $result = is_singular();
@@ -285,35 +297,35 @@ class WGZ_Check_Conditions {
285
  break;
286
  case 'post_all': // Posts - All Posts
287
  case 'page_all': // Pages - All Pages
288
- $result = false;
289
- $post_id = ( ! is_404() && ! is_search() && ! is_archive() && ! is_home() ) ? get_the_ID() : false;
290
 
291
- if ( false !== $post_id ) {
292
  $post_type = 'post_all' == $value ? 'post' : 'page';
293
- $result = $post_type == get_post_type( $post_id );
294
  }
295
  break;
296
  case 'post_arch': // Posts - All Posts Archive
297
  case 'page_arch': // Pages - All Pages Archive
298
  $result = false;
299
- if ( is_archive() ) {
300
  $post_type = 'post_arch' == $value ? 'post' : 'page';
301
- $result = $post_type == get_post_type();
302
  }
303
  break;
304
  case 'post_cat': // Posts - All Categories Archive
305
  case 'post_tag': // Posts - All Tags Archive
306
  $result = false;
307
- if ( is_archive() && 'post' == get_post_type() ) {
308
  $taxonomy = 'post_tag' == $value ? 'post_tag' : 'category';
309
- $obj = get_queried_object();
310
 
311
  $current_taxonomy = '';
312
- if ( '' !== $obj && null !== $obj ) {
313
  $current_taxonomy = $obj->taxonomy;
314
  }
315
 
316
- if ( $current_taxonomy == $taxonomy ) {
317
  $result = true;
318
  }
319
  }
@@ -324,106 +336,106 @@ class WGZ_Check_Conditions {
324
  }
325
  } else {
326
  // For admin area
327
- switch ( $value ) {
328
  case 'all_admin_area':
329
  $result = is_admin();
330
  break;
331
  case 'dashboard_home':
332
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'index.php' );
333
  break;
334
  case 'dashboard_wordpress_updates':
335
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'update-core.php' );
336
  break;
337
  case 'posts_all':
338
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'edit.php' );
339
  break;
340
  case 'posts_add_new':
341
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'post-new.php' );
342
  break;
343
  case 'posts_taxonomies':
344
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'edit-tags.php' );
345
  break;
346
  case 'media_library':
347
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'upload.php' );
348
  break;
349
  case 'media_library_add_new':
350
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'media-new.php' );
351
  break;
352
  case 'appearance_themes':
353
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'themes.php' );
354
  break;
355
  case 'appearance_customize':
356
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'customize.php' );
357
  break;
358
  case 'appearance_widgets':
359
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'widgets.php' );
360
  break;
361
  case 'appearance_menus':
362
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'nav-menus.php' );
363
  break;
364
  case 'appearance_theme_editor':
365
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'theme-editor.php' );
366
  break;
367
  case 'plugins_installed':
368
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'plugins.php' );
369
  break;
370
  case 'plugins_add_new':
371
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'plugin-install.php' );
372
  break;
373
  case 'plugins_editor':
374
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'plugin-editor.php' );
375
  break;
376
  case 'users_all':
377
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'users.php' );
378
  break;
379
  case 'users_add_new':
380
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'user-new.php' );
381
  break;
382
  case 'users_your_profile':
383
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'profile.php' );
384
  break;
385
  case 'tools_available':
386
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'tools.php' );
387
  break;
388
  case 'tools_import':
389
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'import.php' );
390
  break;
391
  case 'tools_export':
392
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'export.php' );
393
  break;
394
  case 'tools_site_health':
395
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'site-health.php' );
396
  break;
397
  case 'tools_export_personal_data':
398
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'tools.php' );
399
  break;
400
  case 'tools_erase_personal_data':
401
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'tools.php' );
402
  break;
403
  case 'settings_general':
404
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'options-general.php' );
405
  break;
406
  case 'settings_writing':
407
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'options-writing.php' );
408
  break;
409
  case 'settings_reading':
410
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'options-reading.php' );
411
  break;
412
  case 'settings_media':
413
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'options-media.php' );
414
  break;
415
  case 'settings_permalinks':
416
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'options-permalink.php' );
417
  break;
418
  case 'settings_privacy':
419
- $result = $this->get_current_url_path( true ) === $this->get_admin_url_path( 'privacy.php' );
420
  break;
421
  default:
422
  $result = true;
423
  }
424
  }
425
 
426
- return $this->apply_operator( $operator, $result, true );
427
  }
428
 
429
  /**
@@ -432,17 +444,18 @@ class WGZ_Check_Conditions {
432
  * Если url в условии и url текущей страницы совпадают,
433
  * условие будет выполнено успешно.
434
  *
 
 
435
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
436
  * @since 2.0.0
437
  *
438
- * @param string $operator
439
- * @param string $value
440
  */
441
- protected function current_url( $operator, $value ) {
442
- $value = ( "/" === $value ) ? "/" : untrailingslashit( $value );
 
443
  $current_url = $this->get_current_url_path();
444
 
445
- return $this->apply_operator( $operator, $value, $current_url );
446
  }
447
 
448
  /**
@@ -453,9 +466,10 @@ class WGZ_Check_Conditions {
453
  *
454
  * @return boolean
455
  */
456
- protected function location_post_type( $operator, $value ) {
457
- if ( is_singular() ) {
458
- return $this->apply_operator( $operator, $value, get_post_type() );
 
459
  }
460
 
461
  return false;
@@ -464,23 +478,44 @@ class WGZ_Check_Conditions {
464
  /**
465
  * A taxonomy of the current page
466
  *
467
- * @since 2.2.8 The bug is fixed, the condition was not checked
468
- * for tachonomies, only posts.
469
- *
470
  * @param $operator
471
  * @param $value
472
  *
473
  * @return boolean
 
 
 
474
  */
475
- protected function location_taxonomy( $operator, $value ) {
 
476
  $taxonomy = null;
477
 
478
- if ( is_tax() || is_tag() || is_category() ) {
479
  $taxonomy = get_queried_object()->taxonomy;
480
  }
481
 
482
- return $this->apply_operator( $operator, $taxonomy, $value );
483
  }
484
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
 
 
 
486
  }
1
  <?php
2
  // Exit if accessed directly
3
+ if( !defined('ABSPATH') ) {
4
  exit;
5
  }
6
 
15
 
16
  protected $condition;
17
 
18
+ public function __construct($condition)
19
+ {
20
+ if( empty($condition) ) {
21
  $this->condition = [];
22
  } else {
23
+ $condition = @json_decode(stripslashes($condition));
24
  $this->condition = $condition;
25
  }
26
  }
28
  /**
29
  * Проверяем в правильном ли формате нам передано условие
30
  *
 
 
31
  * @param \stdClass $condition
32
  *
33
  * @return bool
34
+ * @since 2.2.0
35
+ *
36
  */
37
+ protected function validate_condition_schema($condition)
38
+ {
39
+ $isset_attrs = !empty($condition->param) && !empty($condition->operator) && !empty($condition->type) && isset($condition->value);
40
 
41
+ $allow_params = in_array($condition->param, [
42
  'user-role',
43
  'user-mobile',
44
  'user-cookie-name',
45
  'current-url',
46
+ 'query-string',
47
  'location-page',
48
  'regular-expression',
49
  'location-some-page',
50
  'location-post-type',
51
  'location-taxonomy'
52
+ ]);
53
 
54
+ $allow_operators = in_array($condition->operator, [
55
  'equals',
56
  'notequal',
57
  'less',
61
  'contains',
62
  'notcontain',
63
  'between'
64
+ ]);
65
 
66
+ $allow_types = in_array($condition->type, ['select', 'text', 'default', 'regexp', 'equals']);
67
 
68
  return $isset_attrs && $allow_params && $allow_operators && $allow_types;
69
  }
70
 
71
  /**
 
 
72
  * @return bool
73
+ * @since 2.0.0
74
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
75
  */
76
+ public function validate()
77
+ {
78
+ if( empty($this->condition) && !is_array($this->condition) ) {
79
  return false;
80
  }
81
 
82
  $or = null;
83
+ foreach($this->condition as $group_OR) {
84
+ if( !empty($group_OR->conditions) && is_array($group_OR->conditions) ) {
85
  $and = null;
86
+ foreach($group_OR->conditions as $condition) {
87
+ if( $this->validate_condition_schema($condition) ) {
88
+ $method_name = str_replace('-', '_', $condition->param);
89
+ if( is_null($and) ) {
90
+ $and = $this->call_method($method_name, $condition->operator, $condition->value);
91
  } else {
92
+ $and = $and && $this->call_method($method_name, $condition->operator, $condition->value);
93
  }
94
  }
95
  }
96
 
97
+ $or = is_null($or) ? $and : $or || $and;
98
  }
99
  }
100
 
101
+ return is_null($or) ? false : $or;
102
  }
103
 
104
  /**
110
  *
111
  * @return bool
112
  */
113
+ protected function call_method($method_name, $operator, $value)
114
+ {
115
+ if( method_exists($this, $method_name) ) {
116
+ return $this->$method_name($operator, $value);
117
  } else {
118
+ return apply_filters('wam/conditions/call_method', false, $method_name, $operator, $value);
119
  }
120
  }
121
 
122
  /**
 
 
 
123
  * @param string $path
124
  *
125
  * @return string
126
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
127
+ * @since 2.0.0
128
+ *
129
  */
130
+ protected function get_admin_url_path($path)
131
+ {
132
+ return str_replace(site_url(), '', admin_url($path));
133
  }
134
 
135
  /**
137
  *
138
  * @return string
139
  */
140
+ protected function get_referer_url()
141
+ {
142
  $out = "";
143
+ $url = explode('?', str_replace(site_url(), '', $_SERVER['HTTP_REFERER']), 2);
144
+ if( isset($url[0]) ) {
145
+ $out = trim($url[0], '/');
146
  }
147
 
148
+ return $out ? urldecode($out) : '/';
149
  }
150
 
151
  /**
153
  *
154
  * @return string
155
  */
156
+ protected function get_current_url_path($clear_query = false)
157
+ {
158
+ if( !is_admin() && !$clear_query ) {
159
+ $url = explode('?', $_SERVER['REQUEST_URI'], 2);
160
+ if( strlen($url[0]) > 1 ) {
161
+ $out = rtrim($url[0], '/');
162
  } else {
163
  $out = $url[0];
164
  }
165
 
166
+ return "/" === $out ? "/" : untrailingslashit($out);
167
  }
168
 
169
+ $removeble_args = array_merge(['wbcr_assets_manager'], wp_removable_query_args());
170
 
171
+ $url = remove_query_arg($removeble_args, $_SERVER['REQUEST_URI']);
172
 
173
+ return untrailingslashit($url);
174
  }
175
 
176
  /**
183
  *
184
  * @return bool
185
  */
186
+ public function apply_operator($operator, $first, $second, $third = false)
187
+ {
188
+ switch( $operator ) {
189
  case 'equals':
190
  return $first === $second;
191
  case 'notequal':
197
  case 'younger':
198
  return $first < $second;
199
  case 'contains':
200
+ return strpos($first, $second) !== false;
201
  case 'notcontain':
202
+ return strpos($first, $second) === false;
203
  case 'between':
204
  return $first < $second && $second < $third;
205
 
216
  *
217
  * @return integer
218
  */
219
+ protected function get_timestamp($units, $count)
220
+ {
221
+ switch( $units ) {
222
  case 'seconds':
223
  return $count;
224
  case 'minutes':
246
  *
247
  * @return integer
248
  */
249
+ public function get_date_timestamp($value)
250
+ {
251
+ if( is_object($value) ) {
252
+ return (current_time('timestamp') - $this->get_timestamp($value->units, $value->unitsCount)) * 1000;
253
  } else {
254
  return $value;
255
  }
263
  *
264
  * @return boolean
265
  */
266
+ protected function location_some_page($operator, $value)
267
+ {
268
+ if( !is_admin() ) {
269
  // For frontend area
270
+ switch( $value ) {
271
  case 'base_web': // Basic - Entire Website
272
+ $result = !is_admin();
273
  break;
274
  case 'base_sing': // Basic - All Singulars
275
  $result = is_singular();
297
  break;
298
  case 'post_all': // Posts - All Posts
299
  case 'page_all': // Pages - All Pages
300
+ $result = false;
301
+ $post_id = (!is_404() && !is_search() && !is_archive() && !is_home()) ? get_the_ID() : false;
302
 
303
+ if( false !== $post_id ) {
304
  $post_type = 'post_all' == $value ? 'post' : 'page';
305
+ $result = $post_type == get_post_type($post_id);
306
  }
307
  break;
308
  case 'post_arch': // Posts - All Posts Archive
309
  case 'page_arch': // Pages - All Pages Archive
310
  $result = false;
311
+ if( is_archive() ) {
312
  $post_type = 'post_arch' == $value ? 'post' : 'page';
313
+ $result = $post_type == get_post_type();
314
  }
315
  break;
316
  case 'post_cat': // Posts - All Categories Archive
317
  case 'post_tag': // Posts - All Tags Archive
318
  $result = false;
319
+ if( is_archive() && 'post' == get_post_type() ) {
320
  $taxonomy = 'post_tag' == $value ? 'post_tag' : 'category';
321
+ $obj = get_queried_object();
322
 
323
  $current_taxonomy = '';
324
+ if( '' !== $obj && null !== $obj ) {
325
  $current_taxonomy = $obj->taxonomy;
326
  }
327
 
328
+ if( $current_taxonomy == $taxonomy ) {
329
  $result = true;
330
  }
331
  }
336
  }
337
  } else {
338
  // For admin area
339
+ switch( $value ) {
340
  case 'all_admin_area':
341
  $result = is_admin();
342
  break;
343
  case 'dashboard_home':
344
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('index.php');
345
  break;
346
  case 'dashboard_wordpress_updates':
347
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('update-core.php');
348
  break;
349
  case 'posts_all':
350
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('edit.php');
351
  break;
352
  case 'posts_add_new':
353
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('post-new.php');
354
  break;
355
  case 'posts_taxonomies':
356
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('edit-tags.php');
357
  break;
358
  case 'media_library':
359
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('upload.php');
360
  break;
361
  case 'media_library_add_new':
362
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('media-new.php');
363
  break;
364
  case 'appearance_themes':
365
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('themes.php');
366
  break;
367
  case 'appearance_customize':
368
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('customize.php');
369
  break;
370
  case 'appearance_widgets':
371
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('widgets.php');
372
  break;
373
  case 'appearance_menus':
374
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('nav-menus.php');
375
  break;
376
  case 'appearance_theme_editor':
377
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('theme-editor.php');
378
  break;
379
  case 'plugins_installed':
380
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('plugins.php');
381
  break;
382
  case 'plugins_add_new':
383
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('plugin-install.php');
384
  break;
385
  case 'plugins_editor':
386
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('plugin-editor.php');
387
  break;
388
  case 'users_all':
389
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('users.php');
390
  break;
391
  case 'users_add_new':
392
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('user-new.php');
393
  break;
394
  case 'users_your_profile':
395
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('profile.php');
396
  break;
397
  case 'tools_available':
398
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('tools.php');
399
  break;
400
  case 'tools_import':
401
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('import.php');
402
  break;
403
  case 'tools_export':
404
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('export.php');
405
  break;
406
  case 'tools_site_health':
407
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('site-health.php');
408
  break;
409
  case 'tools_export_personal_data':
410
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('tools.php');
411
  break;
412
  case 'tools_erase_personal_data':
413
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('tools.php');
414
  break;
415
  case 'settings_general':
416
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-general.php');
417
  break;
418
  case 'settings_writing':
419
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-writing.php');
420
  break;
421
  case 'settings_reading':
422
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-reading.php');
423
  break;
424
  case 'settings_media':
425
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-media.php');
426
  break;
427
  case 'settings_permalinks':
428
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-permalink.php');
429
  break;
430
  case 'settings_privacy':
431
+ $result = $this->get_current_url_path(true) === $this->get_admin_url_path('privacy.php');
432
  break;
433
  default:
434
  $result = true;
435
  }
436
  }
437
 
438
+ return $this->apply_operator($operator, $result, true);
439
  }
440
 
441
  /**
444
  * Если url в условии и url текущей страницы совпадают,
445
  * условие будет выполнено успешно.
446
  *
447
+ * @param string $operator
448
+ * @param string $value
449
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
450
  * @since 2.0.0
451
  *
 
 
452
  */
453
+ protected function current_url($operator, $value)
454
+ {
455
+ $value = ("/" === $value) ? "/" : untrailingslashit($value);
456
  $current_url = $this->get_current_url_path();
457
 
458
+ return $this->apply_operator($operator, $value, $current_url);
459
  }
460
 
461
  /**
466
  *
467
  * @return boolean
468
  */
469
+ protected function location_post_type($operator, $value)
470
+ {
471
+ if( is_singular() ) {
472
+ return $this->apply_operator($operator, $value, get_post_type());
473
  }
474
 
475
  return false;
478
  /**
479
  * A taxonomy of the current page
480
  *
 
 
 
481
  * @param $operator
482
  * @param $value
483
  *
484
  * @return boolean
485
+ * @since 2.2.8 The bug is fixed, the condition was not checked
486
+ * for tachonomies, only posts.
487
+ *
488
  */
489
+ protected function location_taxonomy($operator, $value)
490
+ {
491
  $taxonomy = null;
492
 
493
+ if( is_tax() || is_tag() || is_category() ) {
494
  $taxonomy = get_queried_object()->taxonomy;
495
  }
496
 
497
+ return $this->apply_operator($operator, $taxonomy, $value);
498
  }
499
 
500
+ /**
501
+ * Checking for the existence of a variable in a query string
502
+ *
503
+ * @param $operator
504
+ * @param $value
505
+ *
506
+ * @return boolean
507
+ * @since 2.2.8 The bug is fixed, the condition was not checked
508
+ * for tachonomies, only posts.
509
+ *
510
+ */
511
+ protected function query_string($operator, $value)
512
+ {
513
+ if( is_object($value) ) {
514
+ if( !empty($value->var_name) && isset($_GET[$value->var_name]) ) {
515
+ return $this->apply_operator($operator, $_GET[$value->var_name], $value->var_value);
516
+ }
517
+ }
518
 
519
+ return false;
520
+ }
521
  }
components/assets-manager/includes/classes/class-views.php CHANGED
@@ -63,11 +63,11 @@ class WGZ_Views {
63
  *
64
  * @param string $template The template name.
65
  * @param mixed $data Some data to pass to the template.
66
- * @param Wbcr_FactoryClearfy236_PageBase $page
67
  *
68
  * @return bool|string The page contents. False if the template doesn't exist.
69
  */
70
- public function get_template( $template, $data = [], Wbcr_FactoryClearfy236_PageBase $page = null ) {
71
  $template = str_replace( '_', '-', $template );
72
  $path = $this->plugin_dir . '/views/' . $template . '.php';
73
 
@@ -92,9 +92,9 @@ class WGZ_Views {
92
  *
93
  * @param string $template The template name.
94
  * @param mixed $data Some data to pass to the template.
95
- * @param Wbcr_FactoryClearfy236_PageBase $page
96
  */
97
- public function print_template( $template, $data = [], Wbcr_FactoryClearfy236_PageBase $page = null ) {
98
  echo $this->get_template( $template, $data, $page );
99
  }
100
  }
63
  *
64
  * @param string $template The template name.
65
  * @param mixed $data Some data to pass to the template.
66
+ * @param Wbcr_FactoryClearfy237_PageBase $page
67
  *
68
  * @return bool|string The page contents. False if the template doesn't exist.
69
  */
70
+ public function get_template( $template, $data = [], Wbcr_FactoryClearfy237_PageBase $page = null ) {
71
  $template = str_replace( '_', '-', $template );
72
  $path = $this->plugin_dir . '/views/' . $template . '.php';
73
 
92
  *
93
  * @param string $template The template name.
94
  * @param mixed $data Some data to pass to the template.
95
+ * @param Wbcr_FactoryClearfy237_PageBase $page
96
  */
97
+ public function print_template( $template, $data = [], Wbcr_FactoryClearfy237_PageBase $page = null ) {
98
  echo $this->get_template( $template, $data, $page );
99
  }
100
  }
components/assets-manager/migrations/010100.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WGZUpdate010100 extends Wbcr_Factory445_Update {
8
 
9
  public function install()
10
  {
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WGZUpdate010100 extends Wbcr_Factory446_Update {
8
 
9
  public function install()
10
  {
components/assets-manager/migrations/010108.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WGZUpdate010108 extends Wbcr_Factory445_Update {
8
 
9
  /**
10
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WGZUpdate010108 extends Wbcr_Factory446_Update {
8
 
9
  /**
10
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
components/assets-manager/migrations/020005.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WGZUpdate020005 extends Wbcr_Factory445_Update {
8
 
9
  public function install() {
10
  $settings = get_option( $this->plugin->getPrefix() . 'assets_states', [] );
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WGZUpdate020005 extends Wbcr_Factory446_Update {
8
 
9
  public function install() {
10
  $settings = get_option( $this->plugin->getPrefix() . 'assets_states', [] );
components/assets-manager/mu-plugins/assets-manager.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Webcraftic AM plugin load filter
4
  * Dynamically activated only plugins that you have selected in each page. [Note] Webcraftic AM has been automatically installed/deleted by Activate/Deactivate of "load filter plugin".
5
- * Version: 1.0.9
6
- * Framework Version: FACTORY_445_VERSION
7
  */
8
 
9
  // todo: проверить, как работает кеширование
@@ -11,6 +11,58 @@
11
 
12
  defined('ABSPATH') || exit;
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  if( defined('WP_SETUP_CONFIG') || defined('WP_INSTALLING') || isset($_GET['wbcr_assets_manager']) ) {
15
  return;
16
  }
2
  /**
3
  * Webcraftic AM plugin load filter
4
  * Dynamically activated only plugins that you have selected in each page. [Note] Webcraftic AM has been automatically installed/deleted by Activate/Deactivate of "load filter plugin".
5
+ * Version: 1.1.2
6
+ * Framework Version: FACTORY_446_VERSION
7
  */
8
 
9
  // todo: проверить, как работает кеширование
11
 
12
  defined('ABSPATH') || exit;
13
 
14
+ /**
15
+ * Stop optimizing scripts and caching the asset manager page.
16
+ *
17
+ * For some types of pages it is imperative to not be cached. Think of an e-commerce scenario:
18
+ * when a customer enters checkout, they wouldn’t want to see a cached page with some previous
19
+ * customer’s payment data.
20
+ *
21
+ * Elaborate plugins like WooCommerce (and many others) use the DONOTCACHEPAGE constant to let
22
+ * caching plugins know about certain pages or endpoints that should not be cached in any case.
23
+ * Accordingly, all popular caching plugins, including WP Rocket, support the constant and would
24
+ * not cache a request for which DONOTCACHEPAGE is defined as true.
25
+ */
26
+ if( isset($_GET['wbcr_assets_manager']) ) {
27
+ // Disable Query monitor plugin on the assets manager pages to avoid conflicts.
28
+ if( !defined('QM_DISABLED') ) {
29
+ define('QM_DISABLED', true);
30
+ }
31
+
32
+ // Disable Cache Plugins
33
+ if( !defined('DONOTCACHEPAGE') ) {
34
+ define('DONOTCACHEPAGE', true);
35
+ }
36
+
37
+ if( !defined('DONOTCACHCEOBJECT') ) {
38
+ define('DONOTCACHCEOBJECT', true);
39
+ }
40
+
41
+ if( !defined('DONOTMINIFY') ) {
42
+ define('DONOTMINIFY', true);
43
+ }
44
+
45
+ if( !defined('DONOTROCKETOPTIMIZE') ) {
46
+ define('DONOTROCKETOPTIMIZE', true);
47
+ }
48
+
49
+ if( !defined('DONOTMINIFYJS') ) {
50
+ define('DONOTMINIFYJS', true);
51
+ }
52
+
53
+ if( !defined('DONOTASYNCCSS') ) {
54
+ define('DONOTASYNCCSS', true);
55
+ }
56
+
57
+ if( !defined('DONOTMINIFYCSS') ) {
58
+ define('DONOTMINIFYCSS', true);
59
+ }
60
+
61
+ if( !defined('WHM_DO_NOT_HIDE_WP') ) {
62
+ define('WHM_DO_NOT_HIDE_WP', true);
63
+ }
64
+ }
65
+
66
  if( defined('WP_SETUP_CONFIG') || defined('WP_INSTALLING') || isset($_GET['wbcr_assets_manager']) ) {
67
  return;
68
  }
components/assets-manager/views/conditions-logic-editor-template.php CHANGED
@@ -1,77 +1,78 @@
1
  <?php
2
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
3
 
4
  /**
5
- * @var array $data
6
  * @var WGZ_Views $this
7
  */
8
  ?>
9
  <div class="wam-cleditor__empty wam-cleditor">
10
- <div class="wam-cleditor__wrap">
11
- <div class="wam-cleditor__when-empty">
12
- <?php _e( 'No filters specified.', 'gonzales' ) ?>
13
- <a href="#" class="js-wam-cleditor__add-group"><?php _e( 'Click here', 'gonzales' ) ?></a> <?php _e( 'to add one.', 'gonzales' ) ?>
14
- </div>
15
- <div class="wam-cleditor__groups"></div>
16
- </div>
17
- <div class="wam-cleditor__group">
18
- <div class="wam-cleditor__point"></div>
19
- <div class="wam-cleditor__head">
20
- <div class="wam-cleditor__head-left">
21
  <span class="wam-cleditor__first-group-title">
22
- <?php _e( 'Disable If', 'gonzales' ) ?>
23
  </span>
24
- <span class="wam-cleditor__group-type"><?php _e( 'OR', 'gonzales' ) ?></span>
25
- </div>
26
- <div class="wam-cleditor__head-right">
27
- <button type="button" class="wam-button wam-button--small wam-button--danger js-wam-cleditor__remove-group">
28
- <?php _e( 'Delete', 'gonzales' ); ?>
29
- </button>
30
- </div>
31
- </div>
32
- <div class="wam-cleditor__box">
33
- <div class="wam-cleditor__when-empty">
34
- <?php _e( 'No filters specified.', 'gonzales' ) ?>
35
- <a href="#" class="js-wam-cleditor__add-condition"><?php _e( 'Click here', 'gonzales' ) ?></a> <?php _e( 'to add one.', 'gonzales' ) ?>
36
- </div>
37
- <div class="wam-cleditor__conditions"></div>
38
- </div>
39
- </div>
40
- <div class="wam-cleditor__condition">
41
- <div class="wam-cleditor__operator-and"><span><?php _e( 'and', 'gonzales' ) ?></span></div>
42
- <span class="wam-cleditor__params">
43
  <select class="wam-cleditor__param-select">
44
- <?php if ( ! empty( $data['conditions_logic_params'] ) ): ?>
45
- <?php foreach ( (array) $data['conditions_logic_params'] as $filter_param ) { ?>
46
- <optgroup label="<?php echo $filter_param['title'] ?>">
47
- <?php foreach ( (array) $filter_param['items'] as $param ) { ?>
48
  <?php
49
- $option_attrs = [];
50
- $option_attrs[] = 'data-type="' . esc_attr( $param['type'] ) . '"';
51
 
52
- if ( isset( $param['default_value'] ) ) {
53
- $option_attrs[] = 'data-default-value="' . esc_attr( $param['default_value'] ) . '"';
54
  }
55
 
56
- if ( isset( $param['placeholder'] ) ) {
57
- $option_attrs[] = 'data-placeholder="' . esc_attr( $param['placeholder'] ) . '"';
 
58
  }
59
 
60
- if ( isset( $param['params'] ) ) {
61
- $option_attrs[] = 'data-params="' . esc_attr( @json_encode( $param['params'], JSON_UNESCAPED_UNICODE, JSON_HEX_QUOT ) ) . '"';
62
  }
63
 
64
- if ( isset( $param['only_equals'] ) ) {
65
- $option_attrs[] = 'data-only-equals="' . intval( $param['only_equals'] ) . '"';
66
  }
67
- if ( isset( $param['description'] ) ) {
68
- $option_attrs[] = 'data-hint="' . esc_attr( $param['description'] ) . '"';
69
  }
70
 
71
- $option_disabled = isset( $param['disabled'] ) ? $param['disabled'] : false;
72
 
73
  ?>
74
- <option<?php echo ' ' . implode( ' ', $option_attrs ) ?> value="<?php echo esc_attr( $param['id'] ) ?>"<?php disabled( $option_disabled ) ?>>
75
  <?php echo $param['title'] ?>
76
  </option>
77
  <?php } ?>
@@ -84,28 +85,28 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
84
  <span class="wam-cleditor__hint-content"></span>
85
  </i>
86
  </span>
87
- <span class="wam-cleditor__condition-operators">
88
  <select class="wam-cleditor__operator-select">
89
- <option value="equals"><?php _e( 'Equals', 'gonzales' ) ?></option>
90
- <option value="notequal"><?php _e( 'Doesn\'t Equal', 'gonzales' ) ?></option>
91
- <option value="greater"><?php _e( 'Greater Than', 'gonzales' ) ?></option>
92
- <option value="less"><?php _e( 'Less Than', 'gonzales' ) ?></option>
93
- <option value="older"><?php _e( 'Older Than', 'gonzales' ) ?></option>
94
- <option value="younger"><?php _e( 'Younger Than', 'gonzales' ) ?></option>
95
- <option value="contains"><?php _e( 'Contains', 'gonzales' ) ?></option>
96
- <option value="notcontain"><?php _e( 'Doesn\'t Сontain', 'gonzales' ) ?></option>
97
- <option value="between"><?php _e( 'Between', 'gonzales' ) ?></option>
98
  </select>
99
  </span>
100
- <span class="wam-cleditor__condition-value"></span>
101
- <span class="wam-cleditor__condition-actions">
102
- <a href="#" class="wam-button wam-button--danger button-sm js-wam-cleditor__condition-remove"><?php _e( 'X', 'gonzales' ) ?></a>
103
- <a href="#" class="wam-button wam-button--yellow button-sm js-wam-cleditor__condition-add-and"><?php _e( 'AND', 'gonzales' ) ?></a>
104
  </span>
105
- </div>
106
- <div class="wam-cleditor__buttons-group">
107
- <button type="button" class="wam-button wam-button--default wam-cleditor__button-left js-wam-cleditor__add-group">
108
- <?php _e( 'Add new group', 'gonzales' ) ?>
109
- </button>
110
- </div>
111
  </div>
1
  <?php
2
+ defined('ABSPATH') || die('Cheatin’ uh?');
3
 
4
  /**
5
+ * @var array $data
6
  * @var WGZ_Views $this
7
  */
8
  ?>
9
  <div class="wam-cleditor__empty wam-cleditor">
10
+ <div class="wam-cleditor__wrap">
11
+ <div class="wam-cleditor__when-empty">
12
+ <?php _e('No filters specified.', 'gonzales') ?>
13
+ <a href="#" class="js-wam-cleditor__add-group"><?php _e('Click here', 'gonzales') ?></a> <?php _e('to add one.', 'gonzales') ?>
14
+ </div>
15
+ <div class="wam-cleditor__groups"></div>
16
+ </div>
17
+ <div class="wam-cleditor__group">
18
+ <div class="wam-cleditor__point"></div>
19
+ <div class="wam-cleditor__head">
20
+ <div class="wam-cleditor__head-left">
21
  <span class="wam-cleditor__first-group-title">
22
+ <?php _e('Disable If', 'gonzales') ?>
23
  </span>
24
+ <span class="wam-cleditor__group-type"><?php _e('OR', 'gonzales') ?></span>
25
+ </div>
26
+ <div class="wam-cleditor__head-right">
27
+ <button type="button" class="wam-button wam-button--small wam-button--danger js-wam-cleditor__remove-group">
28
+ <?php _e('Delete', 'gonzales'); ?>
29
+ </button>
30
+ </div>
31
+ </div>
32
+ <div class="wam-cleditor__box">
33
+ <div class="wam-cleditor__when-empty">
34
+ <?php _e('No filters specified.', 'gonzales') ?>
35
+ <a href="#" class="js-wam-cleditor__add-condition"><?php _e('Click here', 'gonzales') ?></a> <?php _e('to add one.', 'gonzales') ?>
36
+ </div>
37
+ <div class="wam-cleditor__conditions"></div>
38
+ </div>
39
+ </div>
40
+ <div class="wam-cleditor__condition">
41
+ <div class="wam-cleditor__operator-and"><span><?php _e('and', 'gonzales') ?></span></div>
42
+ <span class="wam-cleditor__params">
43
  <select class="wam-cleditor__param-select">
44
+ <?php if( !empty($data['conditions_logic_params']) ): ?>
45
+ <?php foreach((array)$data['conditions_logic_params'] as $filter_param) { ?>
46
+ <optgroup label="<?php echo $filter_param['title'] ?>">
47
+ <?php foreach((array)$filter_param['items'] as $param) { ?>
48
  <?php
49
+ $option_attrs = [];
50
+ $option_attrs[] = 'data-type="' . esc_attr($param['type']) . '"';
51
 
52
+ if( isset($param['default_value']) ) {
53
+ $option_attrs[] = 'data-default-value="' . esc_attr($param['default_value']) . '"';
54
  }
55
 
56
+ if( isset($param['placeholder']) ) {
57
+ $placeholder = is_array($param['placeholder']) ? @json_encode($param['placeholder'], JSON_UNESCAPED_UNICODE, JSON_HEX_QUOT) : $param['placeholder'];
58
+ $option_attrs[] = 'data-placeholder="' . esc_attr($placeholder) . '"';
59
  }
60
 
61
+ if( isset($param['params']) ) {
62
+ $option_attrs[] = 'data-params="' . esc_attr(@json_encode($param['params'], JSON_UNESCAPED_UNICODE, JSON_HEX_QUOT)) . '"';
63
  }
64
 
65
+ if( isset($param['only_equals']) ) {
66
+ $option_attrs[] = 'data-only-equals="' . intval($param['only_equals']) . '"';
67
  }
68
+ if( isset($param['description']) ) {
69
+ $option_attrs[] = 'data-hint="' . esc_attr($param['description']) . '"';
70
  }
71
 
72
+ $option_disabled = isset($param['disabled']) ? $param['disabled'] : false;
73
 
74
  ?>
75
+ <option<?php echo ' ' . implode(' ', $option_attrs) ?> value="<?php echo esc_attr($param['id']) ?>"<?php disabled($option_disabled) ?>>
76
  <?php echo $param['title'] ?>
77
  </option>
78
  <?php } ?>
85
  <span class="wam-cleditor__hint-content"></span>
86
  </i>
87
  </span>
88
+ <span class="wam-cleditor__condition-operators">
89
  <select class="wam-cleditor__operator-select">
90
+ <option value="equals"><?php _e('Equals', 'gonzales') ?></option>
91
+ <option value="notequal"><?php _e('Doesn\'t Equal', 'gonzales') ?></option>
92
+ <option value="greater"><?php _e('Greater Than', 'gonzales') ?></option>
93
+ <option value="less"><?php _e('Less Than', 'gonzales') ?></option>
94
+ <option value="older"><?php _e('Older Than', 'gonzales') ?></option>
95
+ <option value="younger"><?php _e('Younger Than', 'gonzales') ?></option>
96
+ <option value="contains"><?php _e('Contains', 'gonzales') ?></option>
97
+ <option value="notcontain"><?php _e('Doesn\'t Сontain', 'gonzales') ?></option>
98
+ <option value="between"><?php _e('Between', 'gonzales') ?></option>
99
  </select>
100
  </span>
101
+ <span class="wam-cleditor__condition-value"></span>
102
+ <span class="wam-cleditor__condition-actions">
103
+ <a href="#" class="wam-button wam-button--danger button-sm js-wam-cleditor__condition-remove"><?php _e('X', 'gonzales') ?></a>
104
+ <a href="#" class="wam-button wam-button--yellow button-sm js-wam-cleditor__condition-add-and"><?php _e('AND', 'gonzales') ?></a>
105
  </span>
106
+ </div>
107
+ <div class="wam-cleditor__buttons-group">
108
+ <button type="button" class="wam-button wam-button--default wam-cleditor__button-left js-wam-cleditor__add-group">
109
+ <?php _e('Add new group', 'gonzales') ?>
110
+ </button>
111
+ </div>
112
  </div>
components/comments-plus/admin/boot.php CHANGED
@@ -101,7 +101,7 @@ if ( ! defined( 'LOADING_COMMENTS_PLUS_AS_ADDON' ) ) {
101
  return $page_url;
102
  }
103
 
104
- add_filter( 'wbcr_factory_pages_444_imppage_rating_widget_url', 'wbcr_cmp_rating_widget_url', 10, 2 );
105
 
106
  /**
107
  * Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
101
  return $page_url;
102
  }
103
 
104
+ add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_cmp_rating_widget_url', 10, 2 );
105
 
106
  /**
107
  * Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
components/comments-plus/admin/pages/class-page-comments.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
- class WbcrCmp_CommentsPage extends Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -52,9 +52,9 @@ class WbcrCmp_CommentsPage extends Wbcr_FactoryClearfy236_PageBase {
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
- * @param \Wbcr_Factory445_Plugin $plugin
56
  */
57
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
58
  $this->menu_title = __( 'Disable comments', 'comments-plus' );
59
  $this->page_menu_short_description = __( 'Manage site comments', 'comments-plus' );
60
 
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WbcrCmp_CommentsPage extends Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
+ * @param \Wbcr_Factory446_Plugin $plugin
56
  */
57
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
58
  $this->menu_title = __( 'Disable comments', 'comments-plus' );
59
  $this->page_menu_short_description = __( 'Manage site comments', 'comments-plus' );
60
 
components/comments-plus/admin/pages/class-page-delete-comments.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
- class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -66,9 +66,9 @@ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy236_PageBase {
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
- * @param \Wbcr_Factory445_Plugin $plugin
70
  */
71
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
72
  $this->menu_title = __( 'Comments cleaner', 'comments-plus' );
73
 
74
  parent::__construct( $plugin );
@@ -78,10 +78,10 @@ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy236_PageBase {
78
  * {@inheritDoc}
79
  *
80
  * @param $notices
81
- * @param Wbcr_Factory445_Plugin $plugin
82
  *
83
  * @return array
84
- * @see libs\factory\pages\themplates\FactoryPages444_ImpressiveThemplate
85
  */
86
  public function getActionNotices( $notices ) {
87
 
@@ -200,7 +200,7 @@ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy236_PageBase {
200
  /**
201
  * Prints the content of the page
202
  *
203
- * @see libs\factory\pages\themplates\FactoryPages444_ImpressiveThemplate
204
  */
205
  public function showPageContent() {
206
  $stats = $this->getStats();
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
+ * @param \Wbcr_Factory446_Plugin $plugin
70
  */
71
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
72
  $this->menu_title = __( 'Comments cleaner', 'comments-plus' );
73
 
74
  parent::__construct( $plugin );
78
  * {@inheritDoc}
79
  *
80
  * @param $notices
81
+ * @param Wbcr_Factory446_Plugin $plugin
82
  *
83
  * @return array
84
+ * @see libs\factory\pages\themplates\FactoryPages445_ImpressiveThemplate
85
  */
86
  public function getActionNotices( $notices ) {
87
 
200
  /**
201
  * Prints the content of the page
202
  *
203
+ * @see libs\factory\pages\themplates\FactoryPages445_ImpressiveThemplate
204
  */
205
  public function showPageContent() {
206
  $stats = $this->getStats();
components/comments-plus/admin/pages/class-page-more-features.php CHANGED
@@ -19,6 +19,6 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  *
20
  * @copyright (c) 2018 Webraftic Ltd
21
  */
22
- class WbcrCmp_MoreFeaturesPage extends Wbcr_FactoryClearfy236_MoreFeaturesPage {
23
 
24
  }
19
  *
20
  * @copyright (c) 2018 Webraftic Ltd
21
  */
22
+ class WbcrCmp_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
23
 
24
  }
components/comments-plus/comments-plus.php CHANGED
@@ -8,7 +8,7 @@
8
  * Text Domain: comments-plus
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  // Exit if accessed directly
@@ -68,15 +68,15 @@ $wcm_plugin_info = array(
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
- array('libs/factory/bootstrap', 'factory_bootstrap_445', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_442', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_444', 'admin'),
74
- array('libs/factory/clearfy', 'factory_clearfy_236', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_123', 'admin')
76
  )
77
  );
78
 
79
- $wcm_compatibility = new Wbcr_Factory445_Requirements(__FILE__, array_merge($wcm_plugin_info, array(
80
  'plugin_already_activate' => defined('WCM_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
8
  * Text Domain: comments-plus
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_443', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_445', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_124', 'admin')
76
  )
77
  );
78
 
79
+ $wcm_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wcm_plugin_info, array(
80
  'plugin_already_activate' => defined('WCM_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
components/comments-plus/includes/class-plugin.php CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
- class WCM_Plugin extends Wbcr_Factory445_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory445_Plugin
18
  */
19
  private static $app;
20
 
@@ -59,7 +59,7 @@ class WCM_Plugin extends Wbcr_Factory445_Plugin {
59
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
60
  * классам.
61
  *
62
- * @return \Wbcr_Factory445_Plugin|\WCM_Plugin
63
  */
64
  public static function app() {
65
  return self::$app;
10
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
+ class WCM_Plugin extends Wbcr_Factory446_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory446_Plugin
18
  */
19
  private static $app;
20
 
59
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
60
  * классам.
61
  *
62
+ * @return \Wbcr_Factory446_Plugin|\WCM_Plugin
63
  */
64
  public static function app() {
65
  return self::$app;
components/comments-plus/includes/classes/class-configurate-comments.php CHANGED
@@ -12,14 +12,14 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  *
13
  * @copyright (c) 2017 Webraftic Ltd
14
  */
15
- class WbcrCmp_ConfigComments extends Wbcr_FactoryClearfy236_Configurate {
16
 
17
  private $modified_types = [];
18
 
19
  /**
20
- * @param Wbcr_Factory445_Plugin $plugin
21
  */
22
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
23
  parent::__construct( $plugin );
24
  $this->plugin = $plugin;
25
  }
12
  *
13
  * @copyright (c) 2017 Webraftic Ltd
14
  */
15
+ class WbcrCmp_ConfigComments extends Wbcr_FactoryClearfy237_Configurate {
16
 
17
  private $modified_types = [];
18
 
19
  /**
20
+ * @param Wbcr_Factory446_Plugin $plugin
21
  */
22
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
23
  parent::__construct( $plugin );
24
  $this->plugin = $plugin;
25
  }
components/cyrlitera/admin/activation.php CHANGED
@@ -5,7 +5,7 @@
5
  *
6
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.03.2018, Webcraftic
8
- * @see Wbcr_Factory445_Activator
9
  * @version 1.0
10
  */
11
 
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WCTR_Activation extends Wbcr_Factory445_Activator {
18
 
19
  /**
20
  * Runs activation actions.
5
  *
6
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.03.2018, Webcraftic
8
+ * @see Wbcr_Factory446_Activator
9
  * @version 1.0
10
  */
11
 
14
  exit;
15
  }
16
 
17
+ class WCTR_Activation extends Wbcr_Factory446_Activator {
18
 
19
  /**
20
  * Runs activation actions.
components/cyrlitera/admin/boot.php CHANGED
@@ -135,7 +135,7 @@ if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
135
  return $page_url;
136
  }
137
 
138
- add_filter( 'wbcr_factory_pages_444_imppage_rating_widget_url', 'wbcr_cyrlitera_rating_widget_url', 10, 2 );
139
 
140
  /**
141
  * Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
135
  return $page_url;
136
  }
137
 
138
+ add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_cyrlitera_rating_widget_url', 10, 2 );
139
 
140
  /**
141
  * Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
components/cyrlitera/admin/pages/class-page-cyrlitera.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  * @copyright (c) 2018 Webraftic Ltd
17
  * @version 1.0
18
  */
19
- class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -59,9 +59,9 @@ class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy236_PageBase {
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
- * @param \Wbcr_Factory445_Plugin $plugin
63
  */
64
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
65
  $this->menu_title = __( 'Cyrlitera', 'cyrlitera' );
66
 
67
  if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
@@ -203,7 +203,7 @@ class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy236_PageBase {
203
  }
204
 
205
  /**
206
- * @param $html_builder Wbcr_FactoryForms442_Html
207
  */
208
  public function rollbackButton( $html_builder ) {
209
  $form_name = $html_builder->getFormName();
16
  * @copyright (c) 2018 Webraftic Ltd
17
  * @version 1.0
18
  */
19
+ class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
+ * @param \Wbcr_Factory446_Plugin $plugin
63
  */
64
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
65
  $this->menu_title = __( 'Cyrlitera', 'cyrlitera' );
66
 
67
  if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
203
  }
204
 
205
  /**
206
+ * @param $html_builder Wbcr_FactoryForms443_Html
207
  */
208
  public function rollbackButton( $html_builder ) {
209
  $form_name = $html_builder->getFormName();
components/cyrlitera/admin/pages/class-page-more-features.php CHANGED
@@ -18,6 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
19
  * @copyright (c) 2018 Webraftic Ltd
20
  */
21
- class WCTR_MoreFeaturesPage extends Wbcr_FactoryClearfy236_MoreFeaturesPage {
22
 
23
  }
18
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
19
  * @copyright (c) 2018 Webraftic Ltd
20
  */
21
+ class WCTR_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
22
 
23
  }
components/cyrlitera/cyrlitera.php CHANGED
@@ -8,7 +8,7 @@
8
  * Text Domain: cyrlitera
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  // Exit if accessed directly
@@ -68,15 +68,15 @@ $wctr_plugin_info = array(
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
- array('libs/factory/bootstrap', 'factory_bootstrap_445', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_442', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_444', 'admin'),
74
- array('libs/factory/clearfy', 'factory_clearfy_236', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_123', 'admin')
76
  )
77
  );
78
 
79
- $wctr_compatibility = new Wbcr_Factory445_Requirements(__FILE__, array_merge($wctr_plugin_info, array(
80
  'plugin_already_activate' => defined('WCTR_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
8
  * Text Domain: cyrlitera
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_443', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_445', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_124', 'admin')
76
  )
77
  );
78
 
79
+ $wctr_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wctr_plugin_info, array(
80
  'plugin_already_activate' => defined('WCTR_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
components/cyrlitera/includes/class-plugin.php CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
- class WCTR_Plugin extends Wbcr_Factory445_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory445_Plugin
18
  */
19
  private static $app;
20
 
@@ -57,7 +57,7 @@ class WCTR_Plugin extends Wbcr_Factory445_Plugin {
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
- * @return \Wbcr_Factory445_Plugin|\WCTR_Plugin
61
  */
62
  public static function app() {
63
  return self::$app;
10
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
+ class WCTR_Plugin extends Wbcr_Factory446_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory446_Plugin
18
  */
19
  private static $app;
20
 
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
+ * @return \Wbcr_Factory446_Plugin|\WCTR_Plugin
61
  */
62
  public static function app() {
63
  return self::$app;
components/cyrlitera/includes/classes/class-configurate-cyrlitera.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  exit;
13
  }
14
 
15
- class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy236_Configurate {
16
 
17
  public function registerActionsAndFilters() {
18
 
@@ -235,7 +235,7 @@ class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy236_Configurate {
235
  * Перенаправление со старых url, которые были уже преобразованы
236
  */
237
  public function redirectFromOldUrls() {
238
- if ( ! WbcrFactoryClearfy236_Helpers::isPermalink() ) {
239
  return;
240
  }
241
  $is404 = is_404();
12
  exit;
13
  }
14
 
15
+ class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy237_Configurate {
16
 
17
  public function registerActionsAndFilters() {
18
 
235
  * Перенаправление со старых url, которые были уже преобразованы
236
  */
237
  public function redirectFromOldUrls() {
238
+ if ( ! WbcrFactoryClearfy237_Helpers::isPermalink() ) {
239
  return;
240
  }
241
  $is404 = is_404();
components/cyrlitera/migrations/010004.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WCTR_Update010004 extends Wbcr_Factory445_Update {
8
 
9
  public function install() {
10
  WCTR_Plugin::app()->deletePopulateOption( 'custom_symbols_pack' );
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WCTR_Update010004 extends Wbcr_Factory446_Update {
8
 
9
  public function install() {
10
  WCTR_Plugin::app()->deletePopulateOption( 'custom_symbols_pack' );
components/disable-admin-notices/admin/boot.php CHANGED
@@ -44,7 +44,7 @@ if ( ! defined( 'LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON' ) ) {
44
  *
45
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
46
  */
47
- add_filter( 'wbcr_factory_pages_444_imppage_rating_widget_url', function ( $page_url, $plugin_name ) {
48
  if ( $plugin_name == WDN_Plugin::app()->getPluginName() ) {
49
  return 'https://goo.gl/68ucHp';
50
  }
44
  *
45
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
46
  */
47
+ add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', function ( $page_url, $plugin_name ) {
48
  if ( $plugin_name == WDN_Plugin::app()->getPluginName() ) {
49
  return 'https://goo.gl/68ucHp';
50
  }
components/disable-admin-notices/admin/class-page-basic.php CHANGED
@@ -19,16 +19,16 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  exit;
20
  }
21
 
22
- class WDN_Page extends Wbcr_FactoryClearfy236_PageBase {
23
 
24
  /**
25
  * Requests assets (js and css) for the page.
26
  *
27
- * @param Wbcr_Factory445_ScriptList $scripts
28
- * @param Wbcr_Factory445_StyleList $styles
29
  *
30
  * @return void
31
- * @see Wbcr_FactoryPages444_AdminPage
32
  *
33
  */
34
  public function assets( $scripts, $styles ) {
19
  exit;
20
  }
21
 
22
+ class WDN_Page extends Wbcr_FactoryClearfy237_PageBase {
23
 
24
  /**
25
  * Requests assets (js and css) for the page.
26
  *
27
+ * @param Wbcr_Factory446_ScriptList $scripts
28
+ * @param Wbcr_Factory446_StyleList $styles
29
  *
30
  * @return void
31
+ * @see Wbcr_FactoryPages445_AdminPage
32
  *
33
  */
34
  public function assets( $scripts, $styles ) {
components/disable-admin-notices/admin/options.php CHANGED
@@ -176,7 +176,7 @@ function wbcr_dan_is_active_clearfy_component() {
176
  * с настройками этого плагина, потому что это ухудшает юзабилити.
177
  *
178
  * @param array $form Массив с группой настроек, страницы "Дополнительно" в плагине Clearfy
179
- * @param Wbcr_FactoryPages444_ImpressiveThemplate $page Экземпляр страницы
180
  *
181
  * @return mixed Отсортированный массив с группой опций
182
  */
@@ -203,7 +203,7 @@ add_filter( 'wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_op
203
  * Эта модикация является не стандартной, поэтому мы не можете реалировать ее
204
  * через фреймворк.
205
  *
206
- * @param @param $html_builder Wbcr_FactoryForms442_Html
207
  *
208
  * @since 1.0
209
  *
176
  * с настройками этого плагина, потому что это ухудшает юзабилити.
177
  *
178
  * @param array $form Массив с группой настроек, страницы "Дополнительно" в плагине Clearfy
179
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $page Экземпляр страницы
180
  *
181
  * @return mixed Отсортированный массив с группой опций
182
  */
203
  * Эта модикация является не стандартной, поэтому мы не можете реалировать ее
204
  * через фреймворк.
205
  *
206
+ * @param @param $html_builder Wbcr_FactoryForms443_Html
207
  *
208
  * @since 1.0
209
  *
components/disable-admin-notices/admin/pages/class-pages-edit-admin-bar.php CHANGED
@@ -63,11 +63,11 @@ class WDAN_Edit_Admin_Bar extends WDN_Page {
63
  /**
64
  * Requests assets (js and css) for the page.
65
  *
66
- * @param Wbcr_Factory445_ScriptList $scripts
67
- * @param Wbcr_Factory445_StyleList $styles
68
  *
69
  * @return void
70
- * @see Wbcr_FactoryPages444_AdminPage
71
  *
72
  */
73
  public function assets( $scripts, $styles ) {
63
  /**
64
  * Requests assets (js and css) for the page.
65
  *
66
+ * @param Wbcr_Factory446_ScriptList $scripts
67
+ * @param Wbcr_Factory446_StyleList $styles
68
  *
69
  * @return void
70
+ * @see Wbcr_FactoryPages445_AdminPage
71
  *
72
  */
73
  public function assets( $scripts, $styles ) {
components/disable-admin-notices/admin/pages/class-pages-edit-redirects.php CHANGED
@@ -61,11 +61,11 @@ class WDAN_Block_Ad_Redirects extends WDN_Page {
61
  /**
62
  * Requests assets (js and css) for the page.
63
  *
64
- * @param Wbcr_Factory445_ScriptList $scripts
65
- * @param Wbcr_Factory445_StyleList $styles
66
  *
67
  * @return void
68
- * @see Wbcr_FactoryPages444_AdminPage
69
  *
70
  */
71
  public function assets( $scripts, $styles ) {
61
  /**
62
  * Requests assets (js and css) for the page.
63
  *
64
+ * @param Wbcr_Factory446_ScriptList $scripts
65
+ * @param Wbcr_Factory446_StyleList $styles
66
  *
67
  * @return void
68
+ * @see Wbcr_FactoryPages445_AdminPage
69
  *
70
  */
71
  public function assets( $scripts, $styles ) {
components/disable-admin-notices/admin/pages/class-pages-license.php CHANGED
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  *
14
  * @copyright (c) 2018 Webraftic Ltd
15
  */
16
- class WDN_LicensePage extends Wbcr_FactoryClearfy236_LicensePage {
17
 
18
  /**
19
  * {@inheritdoc}
@@ -36,12 +36,12 @@ class WDN_LicensePage extends Wbcr_FactoryClearfy236_LicensePage {
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
- * @param \Wbcr_Factory445_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
45
  $this->menu_title = __( 'License', 'robin-image-optimizer' );
46
  $this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
47
  $this->plan_name = __( 'Disable admin notices premium', 'robin-image-optimizer' );
13
  *
14
  * @copyright (c) 2018 Webraftic Ltd
15
  */
16
+ class WDN_LicensePage extends Wbcr_FactoryClearfy237_LicensePage {
17
 
18
  /**
19
  * {@inheritdoc}
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
+ * @param \Wbcr_Factory446_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
45
  $this->menu_title = __( 'License', 'robin-image-optimizer' );
46
  $this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
47
  $this->plan_name = __( 'Disable admin notices premium', 'robin-image-optimizer' );
components/disable-admin-notices/admin/pages/class-pages-notices.php CHANGED
@@ -59,11 +59,11 @@ class WDAN_Notices extends WDN_Page {
59
  /**
60
  * Requests assets (js and css) for the page.
61
  *
62
- * @param Wbcr_Factory445_ScriptList $scripts
63
- * @param Wbcr_Factory445_StyleList $styles
64
  *
65
  * @return void
66
- * @see Wbcr_FactoryPages444_AdminPage
67
  *
68
  */
69
  public function assets( $scripts, $styles ) {
59
  /**
60
  * Requests assets (js and css) for the page.
61
  *
62
+ * @param Wbcr_Factory446_ScriptList $scripts
63
+ * @param Wbcr_Factory446_StyleList $styles
64
  *
65
  * @return void
66
+ * @see Wbcr_FactoryPages445_AdminPage
67
  *
68
  */
69
  public function assets( $scripts, $styles ) {
components/disable-admin-notices/admin/pages/class-pages-settings.php CHANGED
@@ -66,9 +66,9 @@ class WDN_Settings_Page extends WDN_Page {
66
 
67
 
68
  /**
69
- * @param Wbcr_Factory445_Plugin $plugin
70
  */
71
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
72
  $this->menu_title = __( 'Hide admin notices', 'disable-admin-notices' );
73
  $this->page_menu_short_description = __( 'General settings', 'disable-admin-notices' );
74
 
@@ -88,11 +88,11 @@ class WDN_Settings_Page extends WDN_Page {
88
  /**
89
  * Requests assets (js and css) for the page.
90
  *
91
- * @param Wbcr_Factory445_ScriptList $scripts
92
- * @param Wbcr_Factory445_StyleList $styles
93
  *
94
  * @return void
95
- * @see Wbcr_FactoryPages444_AdminPage
96
  *
97
  */
98
  public function assets( $scripts, $styles ) {
@@ -122,7 +122,7 @@ class WDN_Settings_Page extends WDN_Page {
122
  'wbcr_dan_code' => 'interal_error'
123
  ),
124
  'type' => 'danger',
125
- 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_444')
126
  );*/
127
 
128
  return $notices;
66
 
67
 
68
  /**
69
+ * @param Wbcr_Factory446_Plugin $plugin
70
  */
71
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
72
  $this->menu_title = __( 'Hide admin notices', 'disable-admin-notices' );
73
  $this->page_menu_short_description = __( 'General settings', 'disable-admin-notices' );
74
 
88
  /**
89
  * Requests assets (js and css) for the page.
90
  *
91
+ * @param Wbcr_Factory446_ScriptList $scripts
92
+ * @param Wbcr_Factory446_StyleList $styles
93
  *
94
  * @return void
95
+ * @see Wbcr_FactoryPages445_AdminPage
96
  *
97
  */
98
  public function assets( $scripts, $styles ) {
122
  'wbcr_dan_code' => 'interal_error'
123
  ),
124
  'type' => 'danger',
125
+ 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_445')
126
  );*/
127
 
128
  return $notices;
components/disable-admin-notices/disable-admin-notices.php CHANGED
@@ -8,7 +8,7 @@
8
  * Text Domain: disable-admin-notices
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  /**
@@ -85,17 +85,17 @@ $wdan_plugin_info = array(
85
 
86
  // FRAMEWORK MODULES
87
  'load_factory_modules' => array(
88
- array('libs/factory/bootstrap', 'factory_bootstrap_445', 'admin'),
89
- array('libs/factory/forms', 'factory_forms_442', 'admin'),
90
- array('libs/factory/pages', 'factory_pages_444', 'admin'),
91
- array('libs/factory/clearfy', 'factory_clearfy_236', 'all'),
92
- array('libs/factory/freemius', 'factory_freemius_133', 'all'),
93
- array('libs/factory/adverts', 'factory_adverts_123', 'admin'),
94
  //array('libs/factory/logger', 'factory_logger_000', 'all')
95
  )
96
  );
97
 
98
- $wdan_compatibility = new Wbcr_Factory445_Requirements(__FILE__, array_merge($wdan_plugin_info, array(
99
  'plugin_already_activate' => defined('WDN_PLUGIN_ACTIVE'),
100
  'required_php_version' => '5.4',
101
  'required_wp_version' => '4.2.0',
8
  * Text Domain: disable-admin-notices
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  /**
85
 
86
  // FRAMEWORK MODULES
87
  'load_factory_modules' => array(
88
+ array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
89
+ array('libs/factory/forms', 'factory_forms_443', 'admin'),
90
+ array('libs/factory/pages', 'factory_pages_445', 'admin'),
91
+ array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
92
+ array('libs/factory/freemius', 'factory_freemius_134', 'all'),
93
+ array('libs/factory/adverts', 'factory_adverts_124', 'admin'),
94
  //array('libs/factory/logger', 'factory_logger_000', 'all')
95
  )
96
  );
97
 
98
+ $wdan_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wdan_plugin_info, array(
99
  'plugin_already_activate' => defined('WDN_PLUGIN_ACTIVE'),
100
  'required_php_version' => '5.4',
101
  'required_wp_version' => '4.2.0',
components/disable-admin-notices/includes/class-plugin.php CHANGED
@@ -9,16 +9,16 @@
9
  */
10
 
11
  // Exit if accessed directly
12
- //use WBCR\Factory_Adverts_123\Base;
13
 
14
  if ( ! defined( 'ABSPATH' ) ) {
15
  exit;
16
  }
17
 
18
- class WDN_Plugin extends Wbcr_Factory445_Plugin {
19
 
20
  /**
21
- * @var Wbcr_Factory445_Plugin
22
  */
23
  private static $app;
24
  private $plugin_data;
@@ -44,7 +44,7 @@ class WDN_Plugin extends Wbcr_Factory445_Plugin {
44
  }
45
 
46
  /**
47
- * @return Wbcr_Factory445_Plugin
48
  */
49
  public static function app() {
50
  return self::$app;
9
  */
10
 
11
  // Exit if accessed directly
12
+ //use WBCR\Factory_Adverts_124\Base;
13
 
14
  if ( ! defined( 'ABSPATH' ) ) {
15
  exit;
16
  }
17
 
18
+ class WDN_Plugin extends Wbcr_Factory446_Plugin {
19
 
20
  /**
21
+ * @var Wbcr_Factory446_Plugin
22
  */
23
  private static $app;
24
  private $plugin_data;
44
  }
45
 
46
  /**
47
+ * @return Wbcr_Factory446_Plugin
48
  */
49
  public static function app() {
50
  return self::$app;
components/disable-admin-notices/includes/classes/class-configurate-notices.php CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  exit;
16
  }
17
 
18
- class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy236_Configurate {
19
 
20
  public function registerActionsAndFilters() {
21
  if ( is_admin() ) {
15
  exit;
16
  }
17
 
18
+ class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy237_Configurate {
19
 
20
  public function registerActionsAndFilters() {
21
  if ( is_admin() ) {
components/disable-admin-notices/migrations/010007.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WDNUpdate010007 extends Wbcr_Factory445_Update {
8
 
9
  public function install()
10
  {
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WDNUpdate010007 extends Wbcr_Factory446_Update {
8
 
9
  public function install()
10
  {
components/ga-cache/admin/activation.php CHANGED
@@ -5,7 +5,7 @@
5
  *
6
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.09.2017, Webcraftic
8
- * @see Factory445_Activator
9
  * @version 1.0
10
  */
11
 
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WGA_Activation extends Wbcr_Factory445_Activator {
18
 
19
  /**
20
  * Runs activation actions.
5
  *
6
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.09.2017, Webcraftic
8
+ * @see Factory446_Activator
9
  * @version 1.0
10
  */
11
 
14
  exit;
15
  }
16
 
17
+ class WGA_Activation extends Wbcr_Factory446_Activator {
18
 
19
  /**
20
  * Runs activation actions.
components/ga-cache/admin/boot.php CHANGED
@@ -21,9 +21,9 @@ if( !defined('ABSPATH') ) {
21
  * options for analytic caching are enabled or not. If enabled,
22
  * add cron task.
23
  *
24
- * @param Wbcr_FactoryPages444_ImpressiveThemplate $page
25
  *
26
- * @param Wbcr_Factory445_Plugin $plugin
27
  *
28
  * @return void
29
  * @since 3.0.1
21
  * options for analytic caching are enabled or not. If enabled,
22
  * add cron task.
23
  *
24
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $page
25
  *
26
+ * @param Wbcr_Factory446_Plugin $plugin
27
  *
28
  * @return void
29
  * @since 3.0.1
components/ga-cache/admin/options.php CHANGED
@@ -117,7 +117,7 @@ function wbcr_ga_get_plugin_options() {
117
 
118
  /**
119
  * @param $form
120
- * @param $page Wbcr_FactoryPages444_ImpressiveThemplate
121
  *
122
  * @return mixed
123
  */
117
 
118
  /**
119
  * @param $form
120
+ * @param $page Wbcr_FactoryPages445_ImpressiveThemplate
121
  *
122
  * @return mixed
123
  */
components/ga-cache/admin/pages/class-pages-general-settings.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  * @copyright (c) 2018 Webraftic Ltd
17
  * @version 1.0
18
  */
19
- class WGA_CachePage extends Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -48,9 +48,9 @@ class WGA_CachePage extends Wbcr_FactoryClearfy236_PageBase {
48
  public $show_right_sidebar_in_options = true;
49
 
50
  /**
51
- * @param Wbcr_Factory445_Plugin $plugin
52
  */
53
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
54
  $this->menu_title = __( 'Local Google Analytics', 'simple-google-analytics' );
55
 
56
  if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
16
  * @copyright (c) 2018 Webraftic Ltd
17
  * @version 1.0
18
  */
19
+ class WGA_CachePage extends Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
48
  public $show_right_sidebar_in_options = true;
49
 
50
  /**
51
+ * @param Wbcr_Factory446_Plugin $plugin
52
  */
53
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
54
  $this->menu_title = __( 'Local Google Analytics', 'simple-google-analytics' );
55
 
56
  if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
components/ga-cache/admin/pages/class-pages-more-features.php CHANGED
@@ -16,6 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
- class WGA_MoreFeaturesPage extends Wbcr_FactoryClearfy236_MoreFeaturesPage {
20
 
21
  }
16
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WGA_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
20
 
21
  }
components/ga-cache/includes/class-plugin.php CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
- class WGA_Plugin extends Wbcr_Factory445_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory445_Plugin
18
  */
19
  private static $app;
20
 
@@ -58,7 +58,7 @@ class WGA_Plugin extends Wbcr_Factory445_Plugin {
58
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
59
  * классам.
60
  *
61
- * @return \Wbcr_Factory445_Plugin|\WGA_Plugin
62
  */
63
  public static function app() {
64
  return self::$app;
10
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
+ class WGA_Plugin extends Wbcr_Factory446_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory446_Plugin
18
  */
19
  private static $app;
20
 
58
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
59
  * классам.
60
  *
61
+ * @return \Wbcr_Factory446_Plugin|\WGA_Plugin
62
  */
63
  public static function app() {
64
  return self::$app;
components/ga-cache/includes/classes/class-configurate-ga.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  exit;
13
  }
14
 
15
- class WGA_ConfigGACache extends Wbcr_FactoryClearfy236_Configurate {
16
 
17
 
18
  public function registerActionsAndFilters() {
12
  exit;
13
  }
14
 
15
+ class WGA_ConfigGACache extends Wbcr_FactoryClearfy237_Configurate {
16
 
17
 
18
  public function registerActionsAndFilters() {
components/ga-cache/migrations/030002.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WGACUpdate030002 extends Wbcr_Factory445_Update {
8
 
9
  public function install() {
10
  /**
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WGACUpdate030002 extends Wbcr_Factory446_Update {
8
 
9
  public function install() {
10
  /**
components/ga-cache/simple_google_analytics.php CHANGED
@@ -67,15 +67,15 @@ $plugin_info = array(
67
 
68
  // FRAMEWORK MODULES
69
  'load_factory_modules' => array(
70
- array('libs/factory/bootstrap', 'factory_bootstrap_445', 'admin'),
71
- array('libs/factory/forms', 'factory_forms_442', 'admin'),
72
- array('libs/factory/pages', 'factory_pages_444', 'admin'),
73
- array('libs/factory/clearfy', 'factory_clearfy_236', 'all'),
74
- array('libs/factory/adverts', 'factory_adverts_123', 'admin')
75
  )
76
  );
77
 
78
- $wga_compatibility = new Wbcr_Factory445_Requirements(__FILE__, array_merge($plugin_info, array(
79
  'plugin_already_activate' => defined('WGA_PLUGIN_ACTIVE'),
80
  'required_php_version' => '5.4',
81
  'required_wp_version' => '4.2.0',
67
 
68
  // FRAMEWORK MODULES
69
  'load_factory_modules' => array(
70
+ array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
71
+ array('libs/factory/forms', 'factory_forms_443', 'admin'),
72
+ array('libs/factory/pages', 'factory_pages_445', 'admin'),
73
+ array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
74
+ array('libs/factory/adverts', 'factory_adverts_124', 'admin')
75
  )
76
  );
77
 
78
+ $wga_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($plugin_info, array(
79
  'plugin_already_activate' => defined('WGA_PLUGIN_ACTIVE'),
80
  'required_php_version' => '5.4',
81
  'required_wp_version' => '4.2.0',
components/html-minify/admin/pages/class-pages-settings.php CHANGED
@@ -9,7 +9,7 @@ if ( ! defined( 'ABSPATH' ) ) {
9
  *
10
  * @since 1.0.0
11
  */
12
- class WHTM_SettingsPage extends Wbcr_FactoryClearfy236_PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
@@ -52,9 +52,9 @@ class WHTM_SettingsPage extends Wbcr_FactoryClearfy236_PageBase {
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
- * @param \Wbcr_Factory445_Plugin $plugin
56
  */
57
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
58
  // Заголовок страницы
59
  $this->menu_title = __( 'HTML Minify', 'html-minify' );
60
 
9
  *
10
  * @since 1.0.0
11
  */
12
+ class WHTM_SettingsPage extends Wbcr_FactoryClearfy237_PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
+ * @param \Wbcr_Factory446_Plugin $plugin
56
  */
57
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
58
  // Заголовок страницы
59
  $this->menu_title = __( 'HTML Minify', 'html-minify' );
60
 
components/html-minify/html-minify.php CHANGED
@@ -8,7 +8,7 @@
8
  * Text Domain: html-minify
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  /*
@@ -59,15 +59,15 @@ $whtml_plugin_info = array(
59
 
60
  // FRAMEWORK MODULES
61
  'load_factory_modules' => array(
62
- array( 'libs/factory/bootstrap', 'factory_bootstrap_445', 'admin' ),
63
- array( 'libs/factory/forms', 'factory_forms_442', 'admin' ),
64
- array( 'libs/factory/pages', 'factory_pages_444', 'admin' ),
65
- array( 'libs/factory/clearfy', 'factory_clearfy_236', 'all' ),
66
- array( 'libs/factory/adverts', 'factory_adverts_123', 'admin')
67
  )
68
  );
69
 
70
- $whtml_compatibility = new Wbcr_Factory445_Requirements( __FILE__, array_merge( $whtml_plugin_info, array(
71
  'plugin_already_activate' => defined( 'WHTM_PLUGIN_ACTIVE' ),
72
  'required_php_version' => '5.4',
73
  'required_wp_version' => '4.2.0',
8
  * Text Domain: html-minify
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  /*
59
 
60
  // FRAMEWORK MODULES
61
  'load_factory_modules' => array(
62
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_446', 'admin' ),
63
+ array( 'libs/factory/forms', 'factory_forms_443', 'admin' ),
64
+ array( 'libs/factory/pages', 'factory_pages_445', 'admin' ),
65
+ array( 'libs/factory/clearfy', 'factory_clearfy_237', 'all' ),
66
+ array( 'libs/factory/adverts', 'factory_adverts_124', 'admin')
67
  )
68
  );
69
 
70
+ $whtml_compatibility = new Wbcr_Factory446_Requirements( __FILE__, array_merge( $whtml_plugin_info, array(
71
  'plugin_already_activate' => defined( 'WHTM_PLUGIN_ACTIVE' ),
72
  'required_php_version' => '5.4',
73
  'required_wp_version' => '4.2.0',
components/html-minify/includes/class-plugin.php CHANGED
@@ -13,11 +13,11 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  }
14
 
15
 
16
- class WHTM_Plugin extends Wbcr_Factory445_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory445_Plugin
21
  */
22
  private static $app;
23
 
@@ -53,7 +53,7 @@ class WHTM_Plugin extends Wbcr_Factory445_Plugin {
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
- * @return \Wbcr_Factory445_Plugin|\WCM_Plugin
57
  */
58
  public static function app() {
59
  return self::$app;
13
  }
14
 
15
 
16
+ class WHTM_Plugin extends Wbcr_Factory446_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
+ * @var Wbcr_Factory446_Plugin
21
  */
22
  private static $app;
23
 
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
+ * @return \Wbcr_Factory446_Plugin|\WCM_Plugin
57
  */
58
  public static function app() {
59
  return self::$app;
components/minify-and-combine/admin/pages/class-pages-settings.php CHANGED
@@ -9,7 +9,7 @@ if( !defined('ABSPATH') ) {
9
  *
10
  * @since 1.0.0
11
  */
12
- class WMAC_MinifyAndCombineSettingsPage extends Wbcr_FactoryClearfy236_PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
@@ -50,12 +50,12 @@ class WMAC_MinifyAndCombineSettingsPage extends Wbcr_FactoryClearfy236_PageBase
50
  /**
51
  * WMAC_MinifyAndCombineSettingsPage constructor.
52
  *
53
- * @param \Wbcr_Factory445_Plugin $plugin
54
  *
55
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
56
  *
57
  */
58
- public function __construct(Wbcr_Factory445_Plugin $plugin)
59
  {
60
  $this->menu_title = __('Minify (JS/CSS)', 'minify-and-combine');
61
 
@@ -84,11 +84,11 @@ class WMAC_MinifyAndCombineSettingsPage extends Wbcr_FactoryClearfy236_PageBase
84
  /**
85
  * Requests assets (js and css) for the page.
86
  *
87
- * @param Wbcr_Factory445_ScriptList $scripts
88
- * @param Wbcr_Factory445_StyleList $styles
89
  *
90
  * @return void
91
- * @see Wbcr_FactoryPages444_AdminPage
92
  *
93
  */
94
  public function assets($scripts, $styles)
9
  *
10
  * @since 1.0.0
11
  */
12
+ class WMAC_MinifyAndCombineSettingsPage extends Wbcr_FactoryClearfy237_PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
50
  /**
51
  * WMAC_MinifyAndCombineSettingsPage constructor.
52
  *
53
+ * @param \Wbcr_Factory446_Plugin $plugin
54
  *
55
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
56
  *
57
  */
58
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
59
  {
60
  $this->menu_title = __('Minify (JS/CSS)', 'minify-and-combine');
61
 
84
  /**
85
  * Requests assets (js and css) for the page.
86
  *
87
+ * @param Wbcr_Factory446_ScriptList $scripts
88
+ * @param Wbcr_Factory446_StyleList $styles
89
  *
90
  * @return void
91
+ * @see Wbcr_FactoryPages445_AdminPage
92
  *
93
  */
94
  public function assets($scripts, $styles)
components/minify-and-combine/includes/class-plugin.php CHANGED
@@ -13,11 +13,11 @@ if( !defined('ABSPATH') ) {
13
  }
14
 
15
 
16
- class WMAC_Plugin extends Wbcr_Factory445_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory445_Plugin
21
  */
22
  private static $app;
23
 
@@ -56,7 +56,7 @@ class WMAC_Plugin extends Wbcr_Factory445_Plugin {
56
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
57
  * классам.
58
  *
59
- * @return \Wbcr_Factory445_Plugin|\WCM_Plugin
60
  */
61
  public static function app()
62
  {
13
  }
14
 
15
 
16
+ class WMAC_Plugin extends Wbcr_Factory446_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
+ * @var Wbcr_Factory446_Plugin
21
  */
22
  private static $app;
23
 
56
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
57
  * классам.
58
  *
59
+ * @return \Wbcr_Factory446_Plugin|\WCM_Plugin
60
  */
61
  public static function app()
62
  {
components/minify-and-combine/includes/classes/class-cache.php CHANGED
@@ -385,7 +385,7 @@ class WMAC_PluginCache {
385
  }
386
  }
387
  add_action( 'shutdown', 'wmac_do_cachepurged_action', 11 );
388
- add_action( 'wmac_action_cachepurged', [ 'WbcrFactoryClearfy236_Helpers', 'flushPageCache' ], 10, 0 );
389
  }
390
 
391
  // Warm cache (part of speedupper)!
385
  }
386
  }
387
  add_action( 'shutdown', 'wmac_do_cachepurged_action', 11 );
388
+ add_action( 'wmac_action_cachepurged', [ 'WbcrFactoryClearfy237_Helpers', 'flushPageCache' ], 10, 0 );
389
  }
390
 
391
  // Warm cache (part of speedupper)!
components/minify-and-combine/includes/classes/class-css-min.php CHANGED
@@ -41,7 +41,6 @@ class WMAC_PluginCSSmin {
41
  * @return string
42
  */
43
  public function run( $css ) {
44
- $this->minifier->removeImportantComments();
45
  $result = $this->minifier->run( $css );
46
 
47
  return $result;
41
  * @return string
42
  */
43
  public function run( $css ) {
 
44
  $result = $this->minifier->run( $css );
45
 
46
  return $result;
components/minify-and-combine/includes/classes/class-styles.php CHANGED
@@ -7,7 +7,7 @@
7
  * @version 1.0
8
  */
9
 
10
- if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
@@ -64,26 +64,27 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
64
  *
65
  * @return bool
66
  */
67
- public function read( $options ) {
68
- $noptimizeCSS = apply_filters( 'wmac_filter_css_noptimize', false, $this->content );
69
- if ( $noptimizeCSS ) {
 
70
  return false;
71
  }
72
 
73
- $whitelistCSS = apply_filters( 'wmac_filter_css_whitelist', '', $this->content );
74
- if ( ! empty( $whitelistCSS ) ) {
75
- $this->whitelist = array_filter( array_map( 'trim', explode( ',', $whitelistCSS ) ) );
76
  }
77
 
78
- $removableCSS = apply_filters( 'wmac_filter_css_removables', '' );
79
- if ( ! empty( $removableCSS ) ) {
80
- $this->cssremovables = array_filter( array_map( 'trim', explode( ',', $removableCSS ) ) );
81
  }
82
 
83
- $this->cssinlinesize = apply_filters( 'wmac_filter_css_inlinesize', 256 );
84
 
85
  // filter to "late inject minified CSS", default to true for now (it is faster).
86
- $this->inject_min_late = apply_filters( 'wmac_filter_css_inject_min_late', true );
87
 
88
  // Remove everything that's not the header.
89
  /*if ( apply_filters( 'wmac_filter_css_justhead', $options['justhead'] ) ) {
@@ -93,23 +94,23 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
93
  }*/
94
 
95
  // Determine whether we're doing CSS-files aggregation or not.
96
- if ( isset( $options['aggregate'] ) && ! $options['aggregate'] ) {
97
  $this->aggregate = false;
98
  }
99
  // Returning true for "dontaggregate" turns off aggregation.
100
- if ( $this->aggregate && apply_filters( 'wmac_filter_css_dontaggregate', false ) ) {
101
  $this->aggregate = false;
102
  }
103
 
104
  // include inline?
105
- if ( apply_filters( 'wmac_css_include_inline', $options['include_inline'] ) ) {
106
  $this->include_inline = true;
107
  }
108
 
109
  // List of CSS strings which are excluded from autoptimization.
110
- $excludeCSS = apply_filters( 'wmac_filter_css_exclude', $options['css_exclude'], $this->content );
111
- if ( '' !== $excludeCSS ) {
112
- $this->dontmove = array_filter( array_map( 'trim', explode( ',', $excludeCSS ) ) );
113
  } else {
114
  $this->dontmove = [];
115
  }
@@ -120,7 +121,7 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
120
  // Should we defer css?
121
  // value: true / false.
122
  $this->defer = $options['defer'];
123
- $this->defer = apply_filters( 'wmac_filter_css_defer', $this->defer, $this->content );
124
 
125
  // Should we inline while deferring?
126
  // value: inlined CSS.
@@ -129,38 +130,38 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
129
  // Should we inline?
130
  // value: true / false.
131
  $this->inline = $options['inline'];
132
- $this->inline = apply_filters( 'wmac_filter_css_inline', $this->inline, $this->content );
133
 
134
  // Store data: URIs setting for later use.
135
  $this->datauris = $options['datauris'];
136
 
137
  // noptimize me.
138
- $this->content = $this->hideNoptimize( $this->content );
139
 
140
  // Exclude (no)script, as those may contain CSS which should be left as is.
141
- $this->content = $this->replaceContentsWithMarkerIfExists( 'SCRIPT', '<script', '#<(?:no)?script.*?<\/(?:no)?script>#is', $this->content );
142
 
143
  // Save IE hacks.
144
- $this->content = $this->hideIehacks( $this->content );
145
 
146
  // Hide HTML comments.
147
- $this->content = $this->hideComments( $this->content );
148
 
149
  // Get <style> and <link>.
150
- if ( preg_match_all( '#(<style[^>]*>.*</style>)|(<link[^>]*stylesheet[^>]*>)#Usmi', $this->content, $matches ) ) {
151
 
152
- foreach ( $matches[0] as $tag ) {
153
- if ( $this->isremovable( $tag, $this->cssremovables ) ) {
154
- $this->content = str_replace( $tag, '', $this->content );
155
- } else if ( $this->isMovable( $tag ) ) {
156
  // Get the media.
157
- if ( false !== strpos( $tag, 'media=' ) ) {
158
- preg_match( '#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $medias );
159
- $medias = explode( ',', $medias[1] );
160
- $media = [];
161
- foreach ( $medias as $elem ) {
162
  /* $media[] = current(explode(' ',trim($elem),2)); */
163
- if ( empty( $elem ) ) {
164
  $elem = 'all';
165
  }
166
 
@@ -168,75 +169,75 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
168
  }
169
  } else {
170
  // No media specified - applies to all.
171
- $media = [ 'all' ];
172
  }
173
 
174
- $media = apply_filters( 'wmac_filter_css_tagmedia', $media, $tag );
175
 
176
- if ( preg_match( '#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source ) ) {
177
  // <link>.
178
- $url = current( explode( '?', $source[2], 2 ) );
179
- $path = $this->getpath( $url );
180
 
181
- if ( false !== $path && preg_match( '#\.css$#', $path ) ) {
182
  // Good link.
183
- $this->css[] = [ $media, $path ];
184
  } else {
185
  // Link is dynamic (.php etc).
186
  $tag = '';
187
  }
188
  } else {
189
  // Inline css in style tags can be wrapped in comment tags, so restore comments.
190
- $tag = $this->restoreComments( $tag );
191
- preg_match( '#<style.*>(.*)</style>#Usmi', $tag, $code );
192
 
193
  // And re-hide them to be able to to the removal based on tag.
194
- $tag = $this->hideComments( $tag );
195
 
196
- if ( $this->include_inline ) {
197
- $code = preg_replace( '#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm', '$1', $code[1] );
198
- $this->css[] = [ $media, 'INLINE;' . $code ];
199
  } else {
200
  $tag = '';
201
  }
202
  }
203
 
204
  // Remove the original style tag.
205
- $this->content = str_replace( $tag, '', $this->content );
206
  } else {
207
  // Excluded CSS, minify if getpath and filter says so...
208
- if ( preg_match( '#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source ) ) {
209
- $exploded_url = explode( '?', $source[2], 2 );
210
- $url = $exploded_url[0];
211
- $path = $this->getpath( $url );
212
-
213
- if ( $path && apply_filters( 'wmac_filter_css_minify_excluded', true, $url ) ) {
214
- $minified_url = $this->minifySingle( $path );
215
- if ( ! empty( $minified_url ) ) {
216
  // Replace orig URL with cached minified URL.
217
- $new_tag = str_replace( $url, $minified_url, $tag );
218
  } else {
219
  $new_tag = $tag;
220
  }
221
 
222
  // Removes querystring from URL.
223
- if ( ! empty( $exploded_url[1] ) ) {
224
- $new_tag = str_replace( '?' . $exploded_url[1], '', $new_tag );
225
  }
226
 
227
  // Defer single CSS if "inline & defer" is on.
228
- if ( $this->defer ) {
229
  // Get/ set (via filter) the JS to be triggers onload of the preloaded CSS.
230
- $_preload_onload = apply_filters( 'wmac_filter_css_preload_onload', "this.onload=null;this.rel='stylesheet'", $url );
231
  // Adapt original <link> element for CSS to be preloaded and add <noscript>-version for fallback.
232
- $new_tag = '<noscript>' . $new_tag . '</noscript>' . str_replace( [
233
  "rel='stylesheet'",
234
  'rel="stylesheet"',
235
- ], "rel='preload' as='style' onload=\"" . $_preload_onload . "\"", $new_tag );
236
  }
237
 
238
  // And replace!
239
- $this->content = str_replace( $tag, $new_tag, $this->content );
240
  }
241
  }
242
  }
@@ -257,20 +258,21 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
257
  *
258
  * @return boolean
259
  */
260
- private function isDatauriCandidate( $path ) {
 
261
  // Call only once since it's called from a loop.
262
  static $max_size = null;
263
- if ( null === $max_size ) {
264
  $max_size = $this->getDatauriMaxsize();
265
  }
266
 
267
- if ( $path && preg_match( '#\.(jpe?g|png|gif|webp|bmp)$#i', $path ) && file_exists( $path ) && is_readable( $path ) && filesize( $path ) <= $max_size ) {
268
 
269
  // Seems we have a candidate.
270
  $is_candidate = true;
271
  } else {
272
  // Filter allows overriding default decision (which checks for local file existence).
273
- $is_candidate = apply_filters( 'wmac_filter_css_is_datauri_candidate', false, $path );
274
  }
275
 
276
  return $is_candidate;
@@ -283,7 +285,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
283
  *
284
  * @return mixed
285
  */
286
- private function getDatauriMaxsize() {
 
287
  static $max_size = null;
288
 
289
  /**
@@ -294,8 +297,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
294
  * of thing you're probably better of building assets completely
295
  * outside of WordPress anyway.
296
  */
297
- if ( null === $max_size ) {
298
- $max_size = (int) apply_filters( 'wmac_filter_css_datauri_maxsize', 4096 );
299
  }
300
 
301
  return $max_size;
@@ -306,21 +309,22 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
306
  *
307
  * @return bool
308
  */
309
- private function checkDatauriExcludeList( $url ) {
 
310
  static $exclude_list = null;
311
  $no_datauris = [];
312
 
313
  // Again, skip doing certain stuff repeatedly when loop-called.
314
- if ( null === $exclude_list ) {
315
- $exclude_list = apply_filters( 'wmac_filter_css_datauri_exclude', '' );
316
- $no_datauris = array_filter( array_map( 'trim', explode( ',', $exclude_list ) ) );
317
  }
318
 
319
  $matched = false;
320
 
321
- if ( ! empty( $exclude_list ) ) {
322
- foreach ( $no_datauris as $no_datauri ) {
323
- if ( false !== strpos( $url, $no_datauri ) ) {
324
  $matched = true;
325
  break;
326
  }
@@ -335,7 +339,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
335
  *
336
  * @return array
337
  */
338
- private function buildOrGetDatauriImage( $path ) {
 
339
  /**
340
  * TODO/FIXME: document the required return array format, or better yet,
341
  * use a string, since we don't really need an array for this. That would, however,
@@ -343,27 +348,27 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
343
  */
344
 
345
  // Allows short-circuiting datauri generation for an image.
346
- $result = apply_filters( 'wmac_filter_css_datauri_image', [], $path );
347
- if ( ! empty( $result ) ) {
348
- if ( is_array( $result ) && isset( $result['full'] ) && isset( $result['base64data'] ) ) {
349
  return $result;
350
  }
351
  }
352
 
353
- $hash = md5( $path );
354
- $check = new WMAC_PluginCache( $hash, 'img' );
355
- if ( $check->check() ) {
356
  // we have the base64 image in cache.
357
  $headAndData = $check->retrieve();
358
- $_base64data = explode( ';base64,', $headAndData );
359
- $base64data = $_base64data[1];
360
- unset( $_base64data );
361
  } else {
362
  // It's an image and we don't have it in cache, get the type by extension.
363
- $exploded_path = explode( '.', $path );
364
- $type = end( $exploded_path );
365
 
366
- switch ( $type ) {
367
  case 'jpg':
368
  case 'jpeg':
369
  $dataurihead = 'data:image/jpeg;base64,';
@@ -385,15 +390,15 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
385
  }
386
 
387
  // Encode the data.
388
- $base64data = base64_encode( file_get_contents( $path ) );
389
  $headAndData = $dataurihead . $base64data;
390
 
391
  // Save in cache.
392
- $check->cache( $headAndData, 'text/plain' );
393
  }
394
- unset( $check );
395
 
396
- return [ 'full' => $headAndData, 'base64data' => $base64data ];
397
  }
398
 
399
  /**
@@ -405,12 +410,13 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
405
  *
406
  * @return string
407
  */
408
- protected static function replaceLongestMatchesFirst( $string, $replacements = [] ) {
409
- if ( ! empty( $replacements ) ) {
 
410
  // Sort the replacements array by key length in desc order (so that the longest strings are replaced first).
411
- $keys = array_map( 'strlen', array_keys( $replacements ) );
412
- array_multisort( $keys, SORT_DESC, $replacements );
413
- $string = str_replace( array_keys( $replacements ), array_values( $replacements ), $string );
414
  }
415
 
416
  return $string;
@@ -424,21 +430,22 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
424
  *
425
  * @return string
426
  */
427
- public function replaceUrls( $code = '' ) {
 
428
  $replacements = [];
429
 
430
- preg_match_all( self::ASSETS_REGEX, $code, $url_src_matches );
431
- if ( is_array( $url_src_matches ) && ! empty( $url_src_matches ) ) {
432
- foreach ( $url_src_matches[1] as $count => $original_url ) {
433
  // Removes quotes and other cruft.
434
- $url = trim( $original_url, " \t\n\r\0\x0B\"'" );
435
 
436
  // Prepare replacements array.
437
- $replacements[ $url_src_matches[1][ $count ] ] = str_replace( $original_url, $url, $url_src_matches[1][ $count ] );
438
  }
439
  }
440
 
441
- $code = self::replaceLongestMatchesFirst( $code, $replacements );
442
 
443
  return $code;
444
  }
@@ -450,18 +457,19 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
450
  *
451
  * @return string
452
  */
453
- public function hideFontface( $code ) {
 
454
  // Proceed only if @font-face declarations exist within $code.
455
- preg_match_all( self::FONT_FACE_REGEX, $code, $fontfaces );
456
- if ( isset( $fontfaces[0] ) ) {
457
 
458
- foreach ( $fontfaces[0] as $full_match ) {
459
  // Keep original match so we can search/replace it.
460
  $match_search = $full_match;
461
 
462
  // Replace declaration with its base64 encoded string.
463
- $replacement = self::buildMarker( 'FONTFACE', $full_match );
464
- $code = str_replace( $match_search, $replacement, $code );
465
  }
466
  }
467
 
@@ -476,8 +484,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
476
  *
477
  * @return string
478
  */
479
- public function restoreFontface( $code ) {
480
- return $this->restoreMarkedContent( 'FONTFACE', $code );
 
481
  }
482
 
483
  /**
@@ -487,9 +496,10 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
487
  *
488
  * @return string
489
  */
490
- public function rewriteAssets( $code ) {
 
491
  // Handle @font-face rules by hiding and processing them separately.
492
- $code = $this->hideFontface( $code );
493
 
494
  /**
495
  * TODO/FIXME:
@@ -503,43 +513,43 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
503
 
504
  // Re-write (and/or inline) URLs
505
  $url_src_matches = [];
506
- $imgreplace = [];
507
  // Matches and captures anything specified within the literal `url()` and excludes those containing data: URIs.
508
- preg_match_all( self::ASSETS_REGEX, $code, $url_src_matches );
509
- if ( is_array( $url_src_matches ) && ! empty( $url_src_matches ) ) {
510
- foreach ( $url_src_matches[1] as $count => $original_url ) {
511
  // Removes quotes and other cruft.
512
- $url = trim( $original_url, " \t\n\r\0\x0B\"'" );
513
 
514
  // If datauri inlining is turned on, do it.
515
- if ( $this->datauris ) {
516
  $iurl = $url;
517
- if ( false !== strpos( $iurl, '?' ) ) {
518
- $iurl = strtok( $iurl, '?' );
519
  }
520
 
521
- $ipath = $this->getpath( $iurl );
522
 
523
- $excluded = $this->checkDatauriExcludeList( $ipath );
524
- if ( ! $excluded ) {
525
- $is_datauri_candidate = $this->isDatauriCandidate( $ipath );
526
- if ( $is_datauri_candidate ) {
527
- $datauri = $this->buildOrGetDatauriImage( $ipath );
528
  //$base64data = $datauri['base64data'];
529
  // Add it to the list for replacement.
530
- $imgreplace[ $url_src_matches[1][ $count ] ] = str_replace( $original_url, $datauri['full'], $url_src_matches[1][ $count ] );
531
  }
532
  }
533
  }
534
 
535
- $imgreplace[ $url_src_matches[1][ $count ] ] = str_replace( $original_url, $url, $url_src_matches[1][ $count ] );
536
  }
537
  }
538
 
539
- $code = self::replaceLongestMatchesFirst( $code, $imgreplace );
540
 
541
  // Replace back font-face markers with actual font-face declarations.
542
- $code = $this->restoreFontface( $code );
543
 
544
  return $code;
545
  }
@@ -549,30 +559,31 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
549
  *
550
  * @return bool
551
  */
552
- public function minify() {
553
- foreach ( $this->css as $group ) {
554
- list( $media, $css ) = $group;
555
- if ( preg_match( '#^INLINE;#', $css ) ) {
 
556
  // <style>.
557
- $css = preg_replace( '#^INLINE;#', '', $css );
558
- $css = self::fixUrls( ABSPATH . 'index.php', $css ); // ABSPATH already contains a trailing slash.
559
- $tmpstyle = apply_filters( 'wmac_css_individual_style', $css, '' );
560
- if ( has_filter( 'wmac_css_individual_style' ) && ! empty( $tmpstyle ) ) {
561
- $css = $tmpstyle;
562
  $this->alreadyminified = true;
563
  }
564
  } else {
565
  // <link>
566
- if ( false !== $css && file_exists( $css ) && is_readable( $css ) ) {
567
- $cssPath = $css;
568
- $css = self::fixUrls( $cssPath, file_get_contents( $cssPath ) );
569
- $css = preg_replace( '/\x{EF}\x{BB}\x{BF}/', '', $css );
570
- $tmpstyle = apply_filters( 'wmac_css_individual_style', $css, $cssPath );
571
- if ( has_filter( 'wmac_css_individual_style' ) && ! empty( $tmpstyle ) ) {
572
- $css = $tmpstyle;
573
  $this->alreadyminified = true;
574
- } else if ( $this->canInjectLate( $cssPath, $css ) ) {
575
- $css = self::buildInjectlaterMarker( $cssPath, md5( $css ) );
576
  }
577
  } else {
578
  // Couldn't read CSS. Maybe getpath isn't working?
@@ -580,131 +591,131 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
580
  }
581
  }
582
 
583
- foreach ( $media as $elem ) {
584
- if ( ! empty( $css ) ) {
585
- if ( ! isset( $this->csscode[ $elem ] ) ) {
586
- $this->csscode[ $elem ] = '';
587
  }
588
- $this->csscode[ $elem ] .= "\n/*FILESTART*/" . $css;
589
  }
590
  }
591
  }
592
 
593
  // Check for duplicate code.
594
  $md5list = [];
595
- $tmpcss = $this->csscode;
596
- foreach ( $tmpcss as $media => $code ) {
597
- $md5sum = md5( $code );
598
  $medianame = $media;
599
- foreach ( $md5list as $med => $sum ) {
600
  // If same code.
601
- if ( $sum === $md5sum ) {
602
  // Add the merged code.
603
- $medianame = $med . ', ' . $media;
604
- $this->csscode[ $medianame ] = $code;
605
- $md5list[ $medianame ] = $md5list[ $med ];
606
- unset( $this->csscode[ $med ], $this->csscode[ $media ], $md5list[ $med ] );
607
  }
608
  }
609
- $md5list[ $medianame ] = $md5sum;
610
  }
611
- unset( $tmpcss );
612
 
613
  // Manage @imports, while is for recursive import management.
614
- foreach ( $this->csscode as &$thiscss ) {
615
  // Flag to trigger import reconstitution and var to hold external imports.
616
- $fiximports = false;
617
  $external_imports = '';
618
 
619
  // remove comments to avoid importing commented-out imports.
620
- $thiscss_nocomments = preg_replace( '#/\*.*\*/#Us', '', $thiscss );
621
- while ( preg_match_all( '#@import +(?:url)?(?:(?:\((["\']?)(?:[^"\')]+)\1\)|(["\'])(?:[^"\']+)\2)(?:[^,;"\']+(?:,[^,;"\']+)*)?)(?:;)#mi', $thiscss_nocomments, $matches ) ) {
622
- foreach ( $matches[0] as $import ) {
623
- if ( $this->isremovable( $import, $this->cssremovables ) ) {
624
- $thiscss = str_replace( $import, '', $thiscss );
625
  $import_ok = true;
626
  } else {
627
- $url = trim( preg_replace( '#^.*((?:https?:|ftp:)?//.*\.css).*$#', '$1', trim( $import ) ), " \t\n\r\0\x0B\"'" );
628
- $path = $this->getpath( $url );
629
  $import_ok = false;
630
- if ( file_exists( $path ) && is_readable( $path ) ) {
631
- $code = addcslashes( self::fixUrls( $path, file_get_contents( $path ) ), "\\" );
632
- $code = preg_replace( '/\x{EF}\x{BB}\x{BF}/', '', $code );
633
- $tmpstyle = apply_filters( 'wmac_css_individual_style', $code, '' );
634
- if ( has_filter( 'wmac_css_individual_style' ) && ! empty( $tmpstyle ) ) {
635
- $code = $tmpstyle;
636
  $this->alreadyminified = true;
637
- } else if ( $this->canInjectLate( $path, $code ) ) {
638
- $code = self::buildInjectlaterMarker( $path, md5( $code ) );
639
  }
640
 
641
- if ( ! empty( $code ) ) {
642
- $tmp_thiscss = preg_replace( '#(/\*FILESTART\*/.*)' . preg_quote( $import, '#' ) . '#Us', '/*FILESTART2*/' . $code . '$1', $thiscss );
643
- if ( ! empty( $tmp_thiscss ) ) {
644
- $thiscss = $tmp_thiscss;
645
  $import_ok = true;
646
- unset( $tmp_thiscss );
647
  }
648
  }
649
- unset( $code );
650
  }
651
  }
652
- if ( ! $import_ok ) {
653
  // External imports and general fall-back.
654
  $external_imports .= $import;
655
 
656
- $thiscss = str_replace( $import, '', $thiscss );
657
  $fiximports = true;
658
  }
659
  }
660
- $thiscss = preg_replace( '#/\*FILESTART\*/#', '', $thiscss );
661
- $thiscss = preg_replace( '#/\*FILESTART2\*/#', '/*FILESTART*/', $thiscss );
662
 
663
  // and update $thiscss_nocomments before going into next iteration in while loop.
664
- $thiscss_nocomments = preg_replace( '#/\*.*\*/#Us', '', $thiscss );
665
  }
666
- unset( $thiscss_nocomments );
667
 
668
  // Add external imports to top of aggregated CSS.
669
- if ( $fiximports ) {
670
  $thiscss = $external_imports . $thiscss;
671
  }
672
  }
673
- unset( $thiscss );
674
 
675
  // $this->csscode has all the uncompressed code now.
676
- foreach ( $this->csscode as &$code ) {
677
  // Check for already-minified code.
678
- $hash = md5( $code );
679
- do_action( 'wmac_action_css_hash', $hash );
680
- $ccheck = new WMAC_PluginCache( $hash, 'css' );
681
- if ( $ccheck->check() ) {
682
- $code = $ccheck->retrieve();
683
- $this->hashmap[ md5( $code ) ] = $hash;
684
  continue;
685
  }
686
- unset( $ccheck );
687
 
688
  // Rewrite and/or inline referenced assets.
689
- $code = $this->rewriteAssets( $code );
690
 
691
  // Minify.
692
- $code = $this->runMinifierOn( $code );
693
 
694
  // Bring back INJECTLATER stuff.
695
- $code = $this->injectMinified( $code );
696
 
697
  // Filter results.
698
- $tmp_code = apply_filters( 'wmac_css_after_minify', $code );
699
- if ( ! empty( $tmp_code ) ) {
700
  $code = $tmp_code;
701
- unset( $tmp_code );
702
  }
703
 
704
- $this->hashmap[ md5( $code ) ] = $hash;
705
  }
706
 
707
- unset( $code );
708
 
709
  return true;
710
  }
@@ -714,17 +725,18 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
714
  *
715
  * @return string
716
  */
717
- public function runMinifierOn( $code ) {
718
- if ( ! $this->alreadyminified ) {
719
- $do_minify = apply_filters( 'wmac_css_do_minify', true );
 
720
 
721
- if ( $do_minify ) {
722
- $cssmin = new WMAC_PluginCSSmin();
723
- $tmp_code = trim( $cssmin->run( $code ) );
724
 
725
- if ( ! empty( $tmp_code ) ) {
726
  $code = $tmp_code;
727
- unset( $tmp_code );
728
  }
729
  }
730
  }
@@ -735,16 +747,17 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
735
  /**
736
  * Caches the CSS in uncompressed, deflated and gzipped form.
737
  */
738
- public function cache() {
 
739
  // CSS cache.
740
- foreach ( $this->csscode as $media => $code ) {
741
- $md5 = $this->hashmap[ md5( $code ) ];
742
- $cache = new WMAC_PluginCache( $md5, 'css' );
743
- if ( ! $cache->check() ) {
744
  // Cache our code.
745
- $cache->cache( $code, 'text/css' );
746
  }
747
- $this->url[ $media ] = WMAC_PluginCache::getCacheUrl() . $cache->getname();
748
  }
749
  }
750
 
@@ -753,73 +766,74 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
753
  *
754
  * @return string
755
  */
756
- public function getContent() {
 
757
  // restore IE hacks.
758
- $this->content = $this->restoreIehacks( $this->content );
759
 
760
  // restore comments.
761
- $this->content = $this->restoreComments( $this->content );
762
 
763
  // restore (no)script.
764
- $this->content = $this->restoreMarkedContent( 'SCRIPT', $this->content );
765
 
766
  // Restore noptimize.
767
- $this->content = $this->restoreNoptimize( $this->content );
768
 
769
- $preloadCssBlock = '';
770
  $noScriptCssBlock = '';
771
 
772
  // Restore the full content.
773
- if ( ! empty( $this->restofcontent ) ) {
774
- $this->content .= $this->restofcontent;
775
  $this->restofcontent = '';
776
  }
777
 
778
  // Inject the new stylesheets.
779
- $replaceTag = [ '<title', 'before' ];
780
- $replaceTag = apply_filters( 'wmac_filter_css_replacetag', $replaceTag, $this->content );
781
 
782
- if ( $this->inline ) {
783
- foreach ( $this->csscode as $media => $code ) {
784
- $this->injectInHtml( '<style type="text/css" media="' . $media . '">' . $code . '</style>', $replaceTag );
785
  }
786
  } else {
787
- if ( $this->defer ) {
788
- $preloadCssBlock = '';
789
  $noScriptCssBlock = "<noscript id=\"aonoscrcss\">";
790
  }
791
 
792
- foreach ( $this->url as $media => $url ) {
793
  // Add the stylesheet either deferred (import at bottom) or normal links in head.
794
- if ( $this->defer ) {
795
  $preloadOnLoad = $this->getAoCssPreloadOnload();
796
 
797
- $preloadCssBlock .= '<link rel="preload" as="style" media="' . $media . '" href="' . $url . '" onload="' . $preloadOnLoad . '" />';
798
  $noScriptCssBlock .= '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
799
  } else {
800
- if ( strlen( $this->csscode[ $media ] ) > $this->cssinlinesize ) {
801
- $this->injectInHtml( '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />', $replaceTag );
802
- } else if ( strlen( $this->csscode[ $media ] ) > 0 ) {
803
- $this->injectInHtml( '<style type="text/css" media="' . $media . '">' . $this->csscode[ $media ] . '</style>', $replaceTag );
804
  }
805
  }
806
  }
807
 
808
- if ( $this->defer ) {
809
  $preload_polyfill = $this->getAoCssPreloadPolyfill();
810
  $noScriptCssBlock .= '</noscript>';
811
- $this->injectInHtml( $preloadCssBlock . $noScriptCssBlock, $replaceTag );
812
 
813
  // Adds preload polyfill at end of body tag.
814
- $this->injectInHtml( apply_filters( 'wmac_css_preload_polyfill', $preload_polyfill ), [
815
  '</body>',
816
  'before'
817
- ] );
818
  }
819
  }
820
 
821
- if ( ! empty( $this->css_critical_style ) ) {
822
- $this->injectInHtml( "<style type='text/css'>{$this->css_critical_style}</style>", $replaceTag );
823
  }
824
 
825
  // Return the modified stylesheet.
@@ -832,44 +846,45 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
832
  *
833
  * @return mixed|string
834
  */
835
- static function fixUrls( $file, $code ) {
 
836
  // Switch all imports to the url() syntax.
837
- $code = preg_replace( '#@import ("|\')(.+?)\.css.*?("|\')#', '@import url("${2}.css")', $code );
838
 
839
- if ( preg_match_all( self::ASSETS_REGEX, $code, $matches ) ) {
840
- $file = str_replace( WMAC_ROOT_DIR, '/', $file );
841
  /**
842
  * rollback as per https://github.com/futtta/autoptimize/issues/94
843
  * $file = str_replace( WMAC_WP_CONTENT_NAME, '', $file );
844
  */
845
- $dir = dirname( $file ); // Like /themes/expound/css.
846
 
847
  /**
848
  * $dir should not contain backslashes, since it's used to replace
849
  * urls, but it can contain them when running on Windows because
850
  * fixUrls() is sometimes called with `ABSPATH . 'index.php'`
851
  */
852
- $dir = str_replace( '\\', '/', $dir );
853
- unset( $file ); // not used below at all.
854
 
855
  $replace = [];
856
- foreach ( $matches[1] as $k => $url ) {
857
  // Remove quotes.
858
- $url = trim( $url, " \t\n\r\0\x0B\"'" );
859
- $noQurl = trim( $url, "\"'" );
860
- if ( $url !== $noQurl ) {
861
  $removedQuotes = true;
862
  } else {
863
  $removedQuotes = false;
864
  }
865
 
866
- if ( '' === $noQurl ) {
867
  continue;
868
  }
869
 
870
  $url = $noQurl;
871
 
872
- if ( '/' === $url[0] || preg_match( '#^(https?://|ftp://|data:)#i', $url ) ) {
873
  // URL is protocol-relative, host-relative or something we don't touch.
874
  continue;
875
  } else {
@@ -878,26 +893,26 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
878
  * rollback as per https://github.com/futtta/autoptimize/issues/94
879
  * $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_PluginMain::getContentUrl() . str_replace( '//', '/', $dir . '/' . $url ) ) );
880
  */
881
- $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_WP_ROOT_URL . str_replace( '//', '/', $dir . '/' . $url ) ) );
882
- $newurl = apply_filters( 'wbcr/mac/css_fixurl_newurl', $newurl );
883
 
884
  /**
885
  * Hash the url + whatever was behind potentially for replacement
886
  * We must do this, or different css classes referencing the same bg image (but
887
  * different parts of it, say, in sprites and such) loose their stuff...
888
  */
889
- $hash = md5( $url . $matches[2][ $k ] );
890
- $code = str_replace( $matches[0][ $k ], $hash, $code );
891
 
892
- if ( $removedQuotes ) {
893
- $replace[ $hash ] = "url('" . $newurl . "')" . $matches[2][ $k ];
894
  } else {
895
- $replace[ $hash ] = 'url(' . $newurl . ')' . $matches[2][ $k ];
896
  }
897
  }
898
  }
899
 
900
- $code = self::replaceLongestMatchesFirst( $code, $replace );
901
  }
902
 
903
  return $code;
@@ -908,14 +923,15 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
908
  *
909
  * @return bool
910
  */
911
- private function isMovable( $tag ) {
912
- if ( ! $this->aggregate ) {
 
913
  return false;
914
  }
915
 
916
- if ( ! empty( $this->whitelist ) ) {
917
- foreach ( $this->whitelist as $match ) {
918
- if ( false !== strpos( $tag, $match ) ) {
919
  return true;
920
  }
921
  }
@@ -923,9 +939,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
923
  // no match with whitelist.
924
  return false;
925
  } else {
926
- if ( is_array( $this->dontmove ) && ! empty( $this->dontmove ) ) {
927
- foreach ( $this->dontmove as $match ) {
928
- if ( false !== strpos( $tag, $match ) ) {
929
  // Matched something.
930
  return false;
931
  }
@@ -943,21 +959,19 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
943
  *
944
  * @return bool
945
  */
946
- private
947
- function canInjectLate(
948
- $cssPath, $css
949
- ) {
950
- $consider_minified_array = apply_filters( 'wmac_filter_css_consider_minified', false, $cssPath );
951
- if ( true !== $this->inject_min_late ) {
952
  // late-inject turned off.
953
  return false;
954
- } else if ( ( false === strpos( $cssPath, 'min.css' ) ) && ( str_replace( $consider_minified_array, '', $cssPath ) === $cssPath ) ) {
955
  // file not minified based on filename & filter.
956
  return false;
957
- } else if ( false !== strpos( $css, '@import' ) ) {
958
  // can't late-inject files with imports as those need to be aggregated.
959
  return false;
960
- } else if ( ( $this->datauris == true ) && preg_match( '#background[^;}]*url\(#Ui', $css ) ) {
961
  // don't late-inject CSS with images if image inlining is on.
962
  return false;
963
  } else {
@@ -975,34 +989,32 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
975
  *
976
  * @return bool|string Url pointing to the minified css file or false.
977
  */
978
- public
979
- function minifySingle(
980
- $filepath, $cache_miss = false
981
- ) {
982
- $contents = $this->prepareMinifySingle( $filepath );
983
 
984
- if ( empty( $contents ) ) {
985
  return false;
986
  }
987
 
988
  // Check cache.
989
- $hash = 'single_' . md5( $contents );
990
- $cache = new WMAC_PluginCache( $hash, 'css' );
991
 
992
  // If not in cache already, minify...
993
- if ( ! $cache->check() || $cache_miss ) {
994
  // Fixurls...
995
- $contents = self::fixUrls( $filepath, $contents );
996
  // replace any referenced assets if needed...
997
- $contents = $this->replaceUrls( $contents );
998
  // Now minify...
999
- $cssmin = new WMAC_PluginCSSmin();
1000
- $contents = trim( $cssmin->run( $contents ) );
1001
  // Store in cache.
1002
- $cache->cache( $contents, 'text/css' );
1003
  }
1004
 
1005
- $url = $this->buildMinifySingleUrl( $cache );
1006
 
1007
  return $url;
1008
  }
@@ -1012,9 +1024,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
1012
  *
1013
  * @return string
1014
  */
1015
- public
1016
- function getAoCssPreloadOnload() {
1017
- $preload_onload = apply_filters( 'wmac_filter_css_preload_onload', "this.onload=null;this.rel='stylesheet'" );
1018
 
1019
  return $preload_onload;
1020
  }
@@ -1024,9 +1036,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
1024
  *
1025
  * @return string
1026
  */
1027
- public
1028
- function getAoCssPreloadPolyfill() {
1029
- $preload_poly = apply_filters( 'wmac_filter_css_preload_polyfill', '<script data-cfasync=\'false\'>!function(t){"use strict";t.loadCSS||(t.loadCSS=function(){});var e=loadCSS.relpreload={};if(e.support=function(){var e;try{e=t.document.createElement("link").relList.supports("preload")}catch(t){e=!1}return function(){return e}}(),e.bindMediaToggle=function(t){function e(){t.media=a}var a=t.media||"all";t.addEventListener?t.addEventListener("load",e):t.attachEvent&&t.attachEvent("onload",e),setTimeout(function(){t.rel="stylesheet",t.media="only x"}),setTimeout(e,3e3)},e.poly=function(){if(!e.support())for(var a=t.document.getElementsByTagName("link"),n=0;n<a.length;n++){var o=a[n];"preload"!==o.rel||"style"!==o.getAttribute("as")||o.getAttribute("data-loadcss")||(o.setAttribute("data-loadcss",!0),e.bindMediaToggle(o))}},!e.support()){e.poly();var a=t.setInterval(e.poly,500);t.addEventListener?t.addEventListener("load",function(){e.poly(),t.clearInterval(a)}):t.attachEvent&&t.attachEvent("onload",function(){e.poly(),t.clearInterval(a)})}"undefined"!=typeof exports?exports.loadCSS=loadCSS:t.loadCSS=loadCSS}("undefined"!=typeof global?global:this);</script>' );
1030
 
1031
  return $preload_poly;
1032
  }
@@ -1036,26 +1048,24 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
1036
  *
1037
  * @return bool
1038
  */
1039
- public
1040
- function aggregating() {
1041
  return $this->aggregate;
1042
  }
1043
 
1044
  /**
1045
  * @return array
1046
  */
1047
- public
1048
- function getOptions() {
1049
  return $this->options;
1050
  }
1051
 
1052
  /**
1053
  * @param $options
1054
  */
1055
- public
1056
- function replaceOptions(
1057
- $options
1058
- ) {
1059
  $this->options = $options;
1060
  }
1061
 
@@ -1063,12 +1073,10 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
1063
  * @param $name
1064
  * @param $value
1065
  */
1066
- public
1067
- function setOption(
1068
- $name, $value
1069
- ) {
1070
- $this->options[ $name ] = $value;
1071
- $this->$name = $value;
1072
  }
1073
 
1074
  /**
@@ -1076,10 +1084,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
1076
  *
1077
  * @return mixed
1078
  */
1079
- public
1080
- function getOption(
1081
- $name
1082
- ) {
1083
- return $this->options[ $name ];
1084
  }
1085
  }
7
  * @version 1.0
8
  */
9
 
10
+ if( !defined('ABSPATH') ) {
11
  exit;
12
  }
13
 
64
  *
65
  * @return bool
66
  */
67
+ public function read($options)
68
+ {
69
+ $noptimizeCSS = apply_filters('wmac_filter_css_noptimize', false, $this->content);
70
+ if( $noptimizeCSS ) {
71
  return false;
72
  }
73
 
74
+ $whitelistCSS = apply_filters('wmac_filter_css_whitelist', '', $this->content);
75
+ if( !empty($whitelistCSS) ) {
76
+ $this->whitelist = array_filter(array_map('trim', explode(',', $whitelistCSS)));
77
  }
78
 
79
+ $removableCSS = apply_filters('wmac_filter_css_removables', '');
80
+ if( !empty($removableCSS) ) {
81
+ $this->cssremovables = array_filter(array_map('trim', explode(',', $removableCSS)));
82
  }
83
 
84
+ $this->cssinlinesize = apply_filters('wmac_filter_css_inlinesize', 256);
85
 
86
  // filter to "late inject minified CSS", default to true for now (it is faster).
87
+ $this->inject_min_late = apply_filters('wmac_filter_css_inject_min_late', true);
88
 
89
  // Remove everything that's not the header.
90
  /*if ( apply_filters( 'wmac_filter_css_justhead', $options['justhead'] ) ) {
94
  }*/
95
 
96
  // Determine whether we're doing CSS-files aggregation or not.
97
+ if( isset($options['aggregate']) && !$options['aggregate'] ) {
98
  $this->aggregate = false;
99
  }
100
  // Returning true for "dontaggregate" turns off aggregation.
101
+ if( $this->aggregate && apply_filters('wmac_filter_css_dontaggregate', false) ) {
102
  $this->aggregate = false;
103
  }
104
 
105
  // include inline?
106
+ if( apply_filters('wmac_css_include_inline', $options['include_inline']) ) {
107
  $this->include_inline = true;
108
  }
109
 
110
  // List of CSS strings which are excluded from autoptimization.
111
+ $excludeCSS = apply_filters('wmac_filter_css_exclude', $options['css_exclude'], $this->content);
112
+ if( '' !== $excludeCSS ) {
113
+ $this->dontmove = array_filter(array_map('trim', explode(',', $excludeCSS)));
114
  } else {
115
  $this->dontmove = [];
116
  }
121
  // Should we defer css?
122
  // value: true / false.
123
  $this->defer = $options['defer'];
124
+ $this->defer = apply_filters('wmac_filter_css_defer', $this->defer, $this->content);
125
 
126
  // Should we inline while deferring?
127
  // value: inlined CSS.
130
  // Should we inline?
131
  // value: true / false.
132
  $this->inline = $options['inline'];
133
+ $this->inline = apply_filters('wmac_filter_css_inline', $this->inline, $this->content);
134
 
135
  // Store data: URIs setting for later use.
136
  $this->datauris = $options['datauris'];
137
 
138
  // noptimize me.
139
+ $this->content = $this->hideNoptimize($this->content);
140
 
141
  // Exclude (no)script, as those may contain CSS which should be left as is.
142
+ $this->content = $this->replaceContentsWithMarkerIfExists('SCRIPT', '<script', '#<(?:no)?script.*?<\/(?:no)?script>#is', $this->content);
143
 
144
  // Save IE hacks.
145
+ $this->content = $this->hideIehacks($this->content);
146
 
147
  // Hide HTML comments.
148
+ $this->content = $this->hideComments($this->content);
149
 
150
  // Get <style> and <link>.
151
+ if( preg_match_all('#(<style[^>]*>.*</style>)|(<link[^>]*stylesheet[^>]*>)#Usmi', $this->content, $matches) ) {
152
 
153
+ foreach($matches[0] as $tag) {
154
+ if( $this->isremovable($tag, $this->cssremovables) ) {
155
+ $this->content = str_replace($tag, '', $this->content);
156
+ } else if( $this->isMovable($tag) ) {
157
  // Get the media.
158
+ if( false !== strpos($tag, 'media=') ) {
159
+ preg_match('#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $medias);
160
+ $medias = explode(',', $medias[1]);
161
+ $media = [];
162
+ foreach($medias as $elem) {
163
  /* $media[] = current(explode(' ',trim($elem),2)); */
164
+ if( empty($elem) ) {
165
  $elem = 'all';
166
  }
167
 
169
  }
170
  } else {
171
  // No media specified - applies to all.
172
+ $media = ['all'];
173
  }
174
 
175
+ $media = apply_filters('wmac_filter_css_tagmedia', $media, $tag);
176
 
177
+ if( preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source) ) {
178
  // <link>.
179
+ $url = current(explode('?', $source[2], 2));
180
+ $path = $this->getpath($url);
181
 
182
+ if( false !== $path && preg_match('#\.css$#', $path) ) {
183
  // Good link.
184
+ $this->css[] = [$media, $path];
185
  } else {
186
  // Link is dynamic (.php etc).
187
  $tag = '';
188
  }
189
  } else {
190
  // Inline css in style tags can be wrapped in comment tags, so restore comments.
191
+ $tag = $this->restoreComments($tag);
192
+ preg_match('#<style.*>(.*)</style>#Usmi', $tag, $code);
193
 
194
  // And re-hide them to be able to to the removal based on tag.
195
+ $tag = $this->hideComments($tag);
196
 
197
+ if( $this->include_inline ) {
198
+ $code = preg_replace('#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm', '$1', $code[1]);
199
+ $this->css[] = [$media, 'INLINE;' . $code];
200
  } else {
201
  $tag = '';
202
  }
203
  }
204
 
205
  // Remove the original style tag.
206
+ $this->content = str_replace($tag, '', $this->content);
207
  } else {
208
  // Excluded CSS, minify if getpath and filter says so...
209
+ if( preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source) ) {
210
+ $exploded_url = explode('?', $source[2], 2);
211
+ $url = $exploded_url[0];
212
+ $path = $this->getpath($url);
213
+
214
+ if( $path && apply_filters('wmac_filter_css_minify_excluded', true, $url) ) {
215
+ $minified_url = $this->minifySingle($path);
216
+ if( !empty($minified_url) ) {
217
  // Replace orig URL with cached minified URL.
218
+ $new_tag = str_replace($url, $minified_url, $tag);
219
  } else {
220
  $new_tag = $tag;
221
  }
222
 
223
  // Removes querystring from URL.
224
+ if( !empty($exploded_url[1]) ) {
225
+ $new_tag = str_replace('?' . $exploded_url[1], '', $new_tag);
226
  }
227
 
228
  // Defer single CSS if "inline & defer" is on.
229
+ if( $this->defer ) {
230
  // Get/ set (via filter) the JS to be triggers onload of the preloaded CSS.
231
+ $_preload_onload = apply_filters('wmac_filter_css_preload_onload', "this.onload=null;this.rel='stylesheet'", $url);
232
  // Adapt original <link> element for CSS to be preloaded and add <noscript>-version for fallback.
233
+ $new_tag = '<noscript>' . $new_tag . '</noscript>' . str_replace([
234
  "rel='stylesheet'",
235
  'rel="stylesheet"',
236
+ ], "rel='preload' as='style' onload=\"" . $_preload_onload . "\"", $new_tag);
237
  }
238
 
239
  // And replace!
240
+ $this->content = str_replace($tag, $new_tag, $this->content);
241
  }
242
  }
243
  }
258
  *
259
  * @return boolean
260
  */
261
+ private function isDatauriCandidate($path)
262
+ {
263
  // Call only once since it's called from a loop.
264
  static $max_size = null;
265
+ if( null === $max_size ) {
266
  $max_size = $this->getDatauriMaxsize();
267
  }
268
 
269
+ if( $path && preg_match('#\.(jpe?g|png|gif|webp|bmp)$#i', $path) && file_exists($path) && is_readable($path) && filesize($path) <= $max_size ) {
270
 
271
  // Seems we have a candidate.
272
  $is_candidate = true;
273
  } else {
274
  // Filter allows overriding default decision (which checks for local file existence).
275
+ $is_candidate = apply_filters('wmac_filter_css_is_datauri_candidate', false, $path);
276
  }
277
 
278
  return $is_candidate;
285
  *
286
  * @return mixed
287
  */
288
+ private function getDatauriMaxsize()
289
+ {
290
  static $max_size = null;
291
 
292
  /**
297
  * of thing you're probably better of building assets completely
298
  * outside of WordPress anyway.
299
  */
300
+ if( null === $max_size ) {
301
+ $max_size = (int)apply_filters('wmac_filter_css_datauri_maxsize', 4096);
302
  }
303
 
304
  return $max_size;
309
  *
310
  * @return bool
311
  */
312
+ private function checkDatauriExcludeList($url)
313
+ {
314
  static $exclude_list = null;
315
  $no_datauris = [];
316
 
317
  // Again, skip doing certain stuff repeatedly when loop-called.
318
+ if( null === $exclude_list ) {
319
+ $exclude_list = apply_filters('wmac_filter_css_datauri_exclude', '');
320
+ $no_datauris = array_filter(array_map('trim', explode(',', $exclude_list)));
321
  }
322
 
323
  $matched = false;
324
 
325
+ if( !empty($exclude_list) ) {
326
+ foreach($no_datauris as $no_datauri) {
327
+ if( false !== strpos($url, $no_datauri) ) {
328
  $matched = true;
329
  break;
330
  }
339
  *
340
  * @return array
341
  */
342
+ private function buildOrGetDatauriImage($path)
343
+ {
344
  /**
345
  * TODO/FIXME: document the required return array format, or better yet,
346
  * use a string, since we don't really need an array for this. That would, however,
348
  */
349
 
350
  // Allows short-circuiting datauri generation for an image.
351
+ $result = apply_filters('wmac_filter_css_datauri_image', [], $path);
352
+ if( !empty($result) ) {
353
+ if( is_array($result) && isset($result['full']) && isset($result['base64data']) ) {
354
  return $result;
355
  }
356
  }
357
 
358
+ $hash = md5($path);
359
+ $check = new WMAC_PluginCache($hash, 'img');
360
+ if( $check->check() ) {
361
  // we have the base64 image in cache.
362
  $headAndData = $check->retrieve();
363
+ $_base64data = explode(';base64,', $headAndData);
364
+ $base64data = $_base64data[1];
365
+ unset($_base64data);
366
  } else {
367
  // It's an image and we don't have it in cache, get the type by extension.
368
+ $exploded_path = explode('.', $path);
369
+ $type = end($exploded_path);
370
 
371
+ switch( $type ) {
372
  case 'jpg':
373
  case 'jpeg':
374
  $dataurihead = 'data:image/jpeg;base64,';
390
  }
391
 
392
  // Encode the data.
393
+ $base64data = base64_encode(file_get_contents($path));
394
  $headAndData = $dataurihead . $base64data;
395
 
396
  // Save in cache.
397
+ $check->cache($headAndData, 'text/plain');
398
  }
399
+ unset($check);
400
 
401
+ return ['full' => $headAndData, 'base64data' => $base64data];
402
  }
403
 
404
  /**
410
  *
411
  * @return string
412
  */
413
+ protected static function replaceLongestMatchesFirst($string, $replacements = [])
414
+ {
415
+ if( !empty($replacements) ) {
416
  // Sort the replacements array by key length in desc order (so that the longest strings are replaced first).
417
+ $keys = array_map('strlen', array_keys($replacements));
418
+ array_multisort($keys, SORT_DESC, $replacements);
419
+ $string = str_replace(array_keys($replacements), array_values($replacements), $string);
420
  }
421
 
422
  return $string;
430
  *
431
  * @return string
432
  */
433
+ public function replaceUrls($code = '')
434
+ {
435
  $replacements = [];
436
 
437
+ preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
438
+ if( is_array($url_src_matches) && !empty($url_src_matches) ) {
439
+ foreach($url_src_matches[1] as $count => $original_url) {
440
  // Removes quotes and other cruft.
441
+ $url = trim($original_url, " \t\n\r\0\x0B\"'");
442
 
443
  // Prepare replacements array.
444
+ $replacements[$url_src_matches[1][$count]] = str_replace($original_url, $url, $url_src_matches[1][$count]);
445
  }
446
  }
447
 
448
+ $code = self::replaceLongestMatchesFirst($code, $replacements);
449
 
450
  return $code;
451
  }
457
  *
458
  * @return string
459
  */
460
+ public function hideFontface($code)
461
+ {
462
  // Proceed only if @font-face declarations exist within $code.
463
+ preg_match_all(self::FONT_FACE_REGEX, $code, $fontfaces);
464
+ if( isset($fontfaces[0]) ) {
465
 
466
+ foreach($fontfaces[0] as $full_match) {
467
  // Keep original match so we can search/replace it.
468
  $match_search = $full_match;
469
 
470
  // Replace declaration with its base64 encoded string.
471
+ $replacement = self::buildMarker('FONTFACE', $full_match);
472
+ $code = str_replace($match_search, $replacement, $code);
473
  }
474
  }
475
 
484
  *
485
  * @return string
486
  */
487
+ public function restoreFontface($code)
488
+ {
489
+ return $this->restoreMarkedContent('FONTFACE', $code);
490
  }
491
 
492
  /**
496
  *
497
  * @return string
498
  */
499
+ public function rewriteAssets($code)
500
+ {
501
  // Handle @font-face rules by hiding and processing them separately.
502
+ $code = $this->hideFontface($code);
503
 
504
  /**
505
  * TODO/FIXME:
513
 
514
  // Re-write (and/or inline) URLs
515
  $url_src_matches = [];
516
+ $imgreplace = [];
517
  // Matches and captures anything specified within the literal `url()` and excludes those containing data: URIs.
518
+ preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
519
+ if( is_array($url_src_matches) && !empty($url_src_matches) ) {
520
+ foreach($url_src_matches[1] as $count => $original_url) {
521
  // Removes quotes and other cruft.
522
+ $url = trim($original_url, " \t\n\r\0\x0B\"'");
523
 
524
  // If datauri inlining is turned on, do it.
525
+ if( $this->datauris ) {
526
  $iurl = $url;
527
+ if( false !== strpos($iurl, '?') ) {
528
+ $iurl = strtok($iurl, '?');
529
  }
530
 
531
+ $ipath = $this->getpath($iurl);
532
 
533
+ $excluded = $this->checkDatauriExcludeList($ipath);
534
+ if( !$excluded ) {
535
+ $is_datauri_candidate = $this->isDatauriCandidate($ipath);
536
+ if( $is_datauri_candidate ) {
537
+ $datauri = $this->buildOrGetDatauriImage($ipath);
538
  //$base64data = $datauri['base64data'];
539
  // Add it to the list for replacement.
540
+ $imgreplace[$url_src_matches[1][$count]] = str_replace($original_url, $datauri['full'], $url_src_matches[1][$count]);
541
  }
542
  }
543
  }
544
 
545
+ $imgreplace[$url_src_matches[1][$count]] = str_replace($original_url, $url, $url_src_matches[1][$count]);
546
  }
547
  }
548
 
549
+ $code = self::replaceLongestMatchesFirst($code, $imgreplace);
550
 
551
  // Replace back font-face markers with actual font-face declarations.
552
+ $code = $this->restoreFontface($code);
553
 
554
  return $code;
555
  }
559
  *
560
  * @return bool
561
  */
562
+ public function minify()
563
+ {
564
+ foreach($this->css as $group) {
565
+ list($media, $css) = $group;
566
+ if( preg_match('#^INLINE;#', $css) ) {
567
  // <style>.
568
+ $css = preg_replace('#^INLINE;#', '', $css);
569
+ $css = self::fixUrls(ABSPATH . 'index.php', $css); // ABSPATH already contains a trailing slash.
570
+ $tmpstyle = apply_filters('wmac_css_individual_style', $css, '');
571
+ if( has_filter('wmac_css_individual_style') && !empty($tmpstyle) ) {
572
+ $css = $tmpstyle;
573
  $this->alreadyminified = true;
574
  }
575
  } else {
576
  // <link>
577
+ if( false !== $css && file_exists($css) && is_readable($css) ) {
578
+ $cssPath = $css;
579
+ $css = self::fixUrls($cssPath, file_get_contents($cssPath));
580
+ $css = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $css);
581
+ $tmpstyle = apply_filters('wmac_css_individual_style', $css, $cssPath);
582
+ if( has_filter('wmac_css_individual_style') && !empty($tmpstyle) ) {
583
+ $css = $tmpstyle;
584
  $this->alreadyminified = true;
585
+ } else if( $this->canInjectLate($cssPath, $css) ) {
586
+ $css = self::buildInjectlaterMarker($cssPath, md5($css));
587
  }
588
  } else {
589
  // Couldn't read CSS. Maybe getpath isn't working?
591
  }
592
  }
593
 
594
+ foreach($media as $elem) {
595
+ if( !empty($css) ) {
596
+ if( !isset($this->csscode[$elem]) ) {
597
+ $this->csscode[$elem] = '';
598
  }
599
+ $this->csscode[$elem] .= "\n/*FILESTART*/" . $css;
600
  }
601
  }
602
  }
603
 
604
  // Check for duplicate code.
605
  $md5list = [];
606
+ $tmpcss = $this->csscode;
607
+ foreach($tmpcss as $media => $code) {
608
+ $md5sum = md5($code);
609
  $medianame = $media;
610
+ foreach($md5list as $med => $sum) {
611
  // If same code.
612
+ if( $sum === $md5sum ) {
613
  // Add the merged code.
614
+ $medianame = $med . ', ' . $media;
615
+ $this->csscode[$medianame] = $code;
616
+ $md5list[$medianame] = $md5list[$med];
617
+ unset($this->csscode[$med], $this->csscode[$media], $md5list[$med]);
618
  }
619
  }
620
+ $md5list[$medianame] = $md5sum;
621
  }
622
+ unset($tmpcss);
623
 
624
  // Manage @imports, while is for recursive import management.
625
+ foreach($this->csscode as &$thiscss) {
626
  // Flag to trigger import reconstitution and var to hold external imports.
627
+ $fiximports = false;
628
  $external_imports = '';
629
 
630
  // remove comments to avoid importing commented-out imports.
631
+ $thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
632
+ while( preg_match_all('#@import +(?:url)?(?:(?:\((["\']?)(?:[^"\')]+)\1\)|(["\'])(?:[^"\']+)\2)(?:[^,;"\']+(?:,[^,;"\']+)*)?)(?:;)#mi', $thiscss_nocomments, $matches) ) {
633
+ foreach($matches[0] as $import) {
634
+ if( $this->isremovable($import, $this->cssremovables) ) {
635
+ $thiscss = str_replace($import, '', $thiscss);
636
  $import_ok = true;
637
  } else {
638
+ $url = trim(preg_replace('#^.*((?:https?:|ftp:)?//.*\.css).*$#', '$1', trim($import)), " \t\n\r\0\x0B\"'");
639
+ $path = $this->getpath($url);
640
  $import_ok = false;
641
+ if( file_exists($path) && is_readable($path) ) {
642
+ $code = addcslashes(self::fixUrls($path, file_get_contents($path)), "\\");
643
+ $code = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $code);
644
+ $tmpstyle = apply_filters('wmac_css_individual_style', $code, '');
645
+ if( has_filter('wmac_css_individual_style') && !empty($tmpstyle) ) {
646
+ $code = $tmpstyle;
647
  $this->alreadyminified = true;
648
+ } else if( $this->canInjectLate($path, $code) ) {
649
+ $code = self::buildInjectlaterMarker($path, md5($code));
650
  }
651
 
652
+ if( !empty($code) ) {
653
+ $tmp_thiscss = preg_replace('#(/\*FILESTART\*/.*)' . preg_quote($import, '#') . '#Us', '/*FILESTART2*/' . $code . '$1', $thiscss);
654
+ if( !empty($tmp_thiscss) ) {
655
+ $thiscss = $tmp_thiscss;
656
  $import_ok = true;
657
+ unset($tmp_thiscss);
658
  }
659
  }
660
+ unset($code);
661
  }
662
  }
663
+ if( !$import_ok ) {
664
  // External imports and general fall-back.
665
  $external_imports .= $import;
666
 
667
+ $thiscss = str_replace($import, '', $thiscss);
668
  $fiximports = true;
669
  }
670
  }
671
+ $thiscss = preg_replace('#/\*FILESTART\*/#', '', $thiscss);
672
+ $thiscss = preg_replace('#/\*FILESTART2\*/#', '/*FILESTART*/', $thiscss);
673
 
674
  // and update $thiscss_nocomments before going into next iteration in while loop.
675
+ $thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
676
  }
677
+ unset($thiscss_nocomments);
678
 
679
  // Add external imports to top of aggregated CSS.
680
+ if( $fiximports ) {
681
  $thiscss = $external_imports . $thiscss;
682
  }
683
  }
684
+ unset($thiscss);
685
 
686
  // $this->csscode has all the uncompressed code now.
687
+ foreach($this->csscode as &$code) {
688
  // Check for already-minified code.
689
+ $hash = md5($code);
690
+ do_action('wmac_action_css_hash', $hash);
691
+ $ccheck = new WMAC_PluginCache($hash, 'css');
692
+ if( $ccheck->check() ) {
693
+ $code = $ccheck->retrieve();
694
+ $this->hashmap[md5($code)] = $hash;
695
  continue;
696
  }
697
+ unset($ccheck);
698
 
699
  // Rewrite and/or inline referenced assets.
700
+ $code = $this->rewriteAssets($code);
701
 
702
  // Minify.
703
+ $code = $this->runMinifierOn($code);
704
 
705
  // Bring back INJECTLATER stuff.
706
+ $code = $this->injectMinified($code);
707
 
708
  // Filter results.
709
+ $tmp_code = apply_filters('wmac_css_after_minify', $code);
710
+ if( !empty($tmp_code) ) {
711
  $code = $tmp_code;
712
+ unset($tmp_code);
713
  }
714
 
715
+ $this->hashmap[md5($code)] = $hash;
716
  }
717
 
718
+ unset($code);
719
 
720
  return true;
721
  }
725
  *
726
  * @return string
727
  */
728
+ public function runMinifierOn($code)
729
+ {
730
+ if( !$this->alreadyminified ) {
731
+ $do_minify = apply_filters('wmac_css_do_minify', true);
732
 
733
+ if( $do_minify ) {
734
+ $cssmin = new WMAC_PluginCSSmin();
735
+ $tmp_code = trim($cssmin->run($code));
736
 
737
+ if( !empty($tmp_code) ) {
738
  $code = $tmp_code;
739
+ unset($tmp_code);
740
  }
741
  }
742
  }
747
  /**
748
  * Caches the CSS in uncompressed, deflated and gzipped form.
749
  */
750
+ public function cache()
751
+ {
752
  // CSS cache.
753
+ foreach($this->csscode as $media => $code) {
754
+ $md5 = $this->hashmap[md5($code)];
755
+ $cache = new WMAC_PluginCache($md5, 'css');
756
+ if( !$cache->check() ) {
757
  // Cache our code.
758
+ $cache->cache($code, 'text/css');
759
  }
760
+ $this->url[$media] = WMAC_PluginCache::getCacheUrl() . $cache->getname();
761
  }
762
  }
763
 
766
  *
767
  * @return string
768
  */
769
+ public function getContent()
770
+ {
771
  // restore IE hacks.
772
+ $this->content = $this->restoreIehacks($this->content);
773
 
774
  // restore comments.
775
+ $this->content = $this->restoreComments($this->content);
776
 
777
  // restore (no)script.
778
+ $this->content = $this->restoreMarkedContent('SCRIPT', $this->content);
779
 
780
  // Restore noptimize.
781
+ $this->content = $this->restoreNoptimize($this->content);
782
 
783
+ $preloadCssBlock = '';
784
  $noScriptCssBlock = '';
785
 
786
  // Restore the full content.
787
+ if( !empty($this->restofcontent) ) {
788
+ $this->content .= $this->restofcontent;
789
  $this->restofcontent = '';
790
  }
791
 
792
  // Inject the new stylesheets.
793
+ $replaceTag = ['<title', 'before'];
794
+ $replaceTag = apply_filters('wmac_filter_css_replacetag', $replaceTag, $this->content);
795
 
796
+ if( $this->inline ) {
797
+ foreach($this->csscode as $media => $code) {
798
+ $this->injectInHtml('<style type="text/css" media="' . $media . '">' . $code . '</style>', $replaceTag);
799
  }
800
  } else {
801
+ if( $this->defer ) {
802
+ $preloadCssBlock = '';
803
  $noScriptCssBlock = "<noscript id=\"aonoscrcss\">";
804
  }
805
 
806
+ foreach($this->url as $media => $url) {
807
  // Add the stylesheet either deferred (import at bottom) or normal links in head.
808
+ if( $this->defer ) {
809
  $preloadOnLoad = $this->getAoCssPreloadOnload();
810
 
811
+ $preloadCssBlock .= '<link rel="preload" as="style" media="' . $media . '" href="' . $url . '" onload="' . $preloadOnLoad . '" />';
812
  $noScriptCssBlock .= '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
813
  } else {
814
+ if( strlen($this->csscode[$media]) > $this->cssinlinesize ) {
815
+ $this->injectInHtml('<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />', $replaceTag);
816
+ } else if( strlen($this->csscode[$media]) > 0 ) {
817
+ $this->injectInHtml('<style type="text/css" media="' . $media . '">' . $this->csscode[$media] . '</style>', $replaceTag);
818
  }
819
  }
820
  }
821
 
822
+ if( $this->defer ) {
823
  $preload_polyfill = $this->getAoCssPreloadPolyfill();
824
  $noScriptCssBlock .= '</noscript>';
825
+ $this->injectInHtml($preloadCssBlock . $noScriptCssBlock, $replaceTag);
826
 
827
  // Adds preload polyfill at end of body tag.
828
+ $this->injectInHtml(apply_filters('wmac_css_preload_polyfill', $preload_polyfill), [
829
  '</body>',
830
  'before'
831
+ ]);
832
  }
833
  }
834
 
835
+ if( !empty($this->css_critical_style) ) {
836
+ $this->injectInHtml("<style type='text/css'>{$this->css_critical_style}</style>", $replaceTag);
837
  }
838
 
839
  // Return the modified stylesheet.
846
  *
847
  * @return mixed|string
848
  */
849
+ static function fixUrls($file, $code)
850
+ {
851
  // Switch all imports to the url() syntax.
852
+ $code = preg_replace('#@import ("|\')(.+?)\.css.*?("|\')#', '@import url("${2}.css")', $code);
853
 
854
+ if( preg_match_all(self::ASSETS_REGEX, $code, $matches) ) {
855
+ $file = str_replace(WMAC_ROOT_DIR, '/', $file);
856
  /**
857
  * rollback as per https://github.com/futtta/autoptimize/issues/94
858
  * $file = str_replace( WMAC_WP_CONTENT_NAME, '', $file );
859
  */
860
+ $dir = dirname($file); // Like /themes/expound/css.
861
 
862
  /**
863
  * $dir should not contain backslashes, since it's used to replace
864
  * urls, but it can contain them when running on Windows because
865
  * fixUrls() is sometimes called with `ABSPATH . 'index.php'`
866
  */
867
+ $dir = str_replace('\\', '/', $dir);
868
+ unset($file); // not used below at all.
869
 
870
  $replace = [];
871
+ foreach($matches[1] as $k => $url) {
872
  // Remove quotes.
873
+ $url = trim($url, " \t\n\r\0\x0B\"'");
874
+ $noQurl = trim($url, "\"'");
875
+ if( $url !== $noQurl ) {
876
  $removedQuotes = true;
877
  } else {
878
  $removedQuotes = false;
879
  }
880
 
881
+ if( '' === $noQurl ) {
882
  continue;
883
  }
884
 
885
  $url = $noQurl;
886
 
887
+ if( '/' === $url[0] || preg_match('#^(https?://|ftp://|data:)#i', $url) ) {
888
  // URL is protocol-relative, host-relative or something we don't touch.
889
  continue;
890
  } else {
893
  * rollback as per https://github.com/futtta/autoptimize/issues/94
894
  * $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_PluginMain::getContentUrl() . str_replace( '//', '/', $dir . '/' . $url ) ) );
895
  */
896
+ $newurl = preg_replace('/https?:/', '', str_replace(' ', '%20', WMAC_WP_ROOT_URL . str_replace('//', '/', $dir . '/' . $url)));
897
+ $newurl = apply_filters('wbcr/mac/css_fixurl_newurl', $newurl);
898
 
899
  /**
900
  * Hash the url + whatever was behind potentially for replacement
901
  * We must do this, or different css classes referencing the same bg image (but
902
  * different parts of it, say, in sprites and such) loose their stuff...
903
  */
904
+ $hash = md5($url . $matches[2][$k]);
905
+ $code = str_replace($matches[0][$k], $hash, $code);
906
 
907
+ if( $removedQuotes ) {
908
+ $replace[$hash] = "url('" . $newurl . "')" . $matches[2][$k];
909
  } else {
910
+ $replace[$hash] = 'url(' . $newurl . ')' . $matches[2][$k];
911
  }
912
  }
913
  }
914
 
915
+ $code = self::replaceLongestMatchesFirst($code, $replace);
916
  }
917
 
918
  return $code;
923
  *
924
  * @return bool
925
  */
926
+ private function isMovable($tag)
927
+ {
928
+ if( !$this->aggregate ) {
929
  return false;
930
  }
931
 
932
+ if( !empty($this->whitelist) ) {
933
+ foreach($this->whitelist as $match) {
934
+ if( false !== strpos($tag, $match) ) {
935
  return true;
936
  }
937
  }
939
  // no match with whitelist.
940
  return false;
941
  } else {
942
+ if( is_array($this->dontmove) && !empty($this->dontmove) ) {
943
+ foreach($this->dontmove as $match) {
944
+ if( false !== strpos($tag, $match) ) {
945
  // Matched something.
946
  return false;
947
  }
959
  *
960
  * @return bool
961
  */
962
+ private function canInjectLate($cssPath, $css)
963
+ {
964
+ $consider_minified_array = apply_filters('wmac_filter_css_consider_minified', false, $cssPath);
965
+ if( true !== $this->inject_min_late ) {
 
 
966
  // late-inject turned off.
967
  return false;
968
+ } else if( (false === strpos($cssPath, 'min.css')) && (str_replace($consider_minified_array, '', $cssPath) === $cssPath) ) {
969
  // file not minified based on filename & filter.
970
  return false;
971
+ } else if( false !== strpos($css, '@import') ) {
972
  // can't late-inject files with imports as those need to be aggregated.
973
  return false;
974
+ } else if( ($this->datauris == true) && preg_match('#background[^;}]*url\(#Ui', $css) ) {
975
  // don't late-inject CSS with images if image inlining is on.
976
  return false;
977
  } else {
989
  *
990
  * @return bool|string Url pointing to the minified css file or false.
991
  */
992
+ public function minifySingle($filepath, $cache_miss = false)
993
+ {
994
+ $contents = $this->prepareMinifySingle($filepath);
 
 
995
 
996
+ if( empty($contents) ) {
997
  return false;
998
  }
999
 
1000
  // Check cache.
1001
+ $hash = 'single_' . md5($contents);
1002
+ $cache = new WMAC_PluginCache($hash, 'css');
1003
 
1004
  // If not in cache already, minify...
1005
+ if( !$cache->check() || $cache_miss ) {
1006
  // Fixurls...
1007
+ $contents = self::fixUrls($filepath, $contents);
1008
  // replace any referenced assets if needed...
1009
+ $contents = $this->replaceUrls($contents);
1010
  // Now minify...
1011
+ $cssmin = new WMAC_PluginCSSmin();
1012
+ $contents = trim($cssmin->run($contents));
1013
  // Store in cache.
1014
+ $cache->cache($contents, 'text/css');
1015
  }
1016
 
1017
+ $url = $this->buildMinifySingleUrl($cache);
1018
 
1019
  return $url;
1020
  }
1024
  *
1025
  * @return string
1026
  */
1027
+ public function getAoCssPreloadOnload()
1028
+ {
1029
+ $preload_onload = apply_filters('wmac_filter_css_preload_onload', "this.onload=null;this.rel='stylesheet'");
1030
 
1031
  return $preload_onload;
1032
  }
1036
  *
1037
  * @return string
1038
  */
1039
+ public function getAoCssPreloadPolyfill()
1040
+ {
1041
+ $preload_poly = apply_filters('wmac_filter_css_preload_polyfill', '<script data-cfasync=\'false\'>!function(t){"use strict";t.loadCSS||(t.loadCSS=function(){});var e=loadCSS.relpreload={};if(e.support=function(){var e;try{e=t.document.createElement("link").relList.supports("preload")}catch(t){e=!1}return function(){return e}}(),e.bindMediaToggle=function(t){function e(){t.media=a}var a=t.media||"all";t.addEventListener?t.addEventListener("load",e):t.attachEvent&&t.attachEvent("onload",e),setTimeout(function(){t.rel="stylesheet",t.media="only x"}),setTimeout(e,3e3)},e.poly=function(){if(!e.support())for(var a=t.document.getElementsByTagName("link"),n=0;n<a.length;n++){var o=a[n];"preload"!==o.rel||"style"!==o.getAttribute("as")||o.getAttribute("data-loadcss")||(o.setAttribute("data-loadcss",!0),e.bindMediaToggle(o))}},!e.support()){e.poly();var a=t.setInterval(e.poly,500);t.addEventListener?t.addEventListener("load",function(){e.poly(),t.clearInterval(a)}):t.attachEvent&&t.attachEvent("onload",function(){e.poly(),t.clearInterval(a)})}"undefined"!=typeof exports?exports.loadCSS=loadCSS:t.loadCSS=loadCSS}("undefined"!=typeof global?global:this);</script>');
1042
 
1043
  return $preload_poly;
1044
  }
1048
  *
1049
  * @return bool
1050
  */
1051
+ public function aggregating()
1052
+ {
1053
  return $this->aggregate;
1054
  }
1055
 
1056
  /**
1057
  * @return array
1058
  */
1059
+ public function getOptions()
1060
+ {
1061
  return $this->options;
1062
  }
1063
 
1064
  /**
1065
  * @param $options
1066
  */
1067
+ public function replaceOptions($options)
1068
+ {
 
 
1069
  $this->options = $options;
1070
  }
1071
 
1073
  * @param $name
1074
  * @param $value
1075
  */
1076
+ public function setOption($name, $value)
1077
+ {
1078
+ $this->options[$name] = $value;
1079
+ $this->$name = $value;
 
 
1080
  }
1081
 
1082
  /**
1084
  *
1085
  * @return mixed
1086
  */
1087
+ public function getOption($name)
1088
+ {
1089
+ return $this->options[$name];
 
 
1090
  }
1091
  }
components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Colors.php CHANGED
@@ -1,159 +1,159 @@
1
  <?php
2
 
3
- namespace WMAC\tubalmartin\CssMin;
4
 
5
- if( !defined('ABSPATH') ) {
6
- exit;
7
- }
8
 
9
- class Colors {
10
 
11
- public static function getHexToNamedMap()
12
- {
13
- // Hex colors longer than named counterpart
14
- return array(
15
- '#f0ffff' => 'azure',
16
- '#f5f5dc' => 'beige',
17
- '#ffe4c4' => 'bisque',
18
- '#a52a2a' => 'brown',
19
- '#ff7f50' => 'coral',
20
- '#ffd700' => 'gold',
21
- '#808080' => 'gray',
22
- '#008000' => 'green',
23
- '#4b0082' => 'indigo',
24
- '#fffff0' => 'ivory',
25
- '#f0e68c' => 'khaki',
26
- '#faf0e6' => 'linen',
27
- '#800000' => 'maroon',
28
- '#000080' => 'navy',
29
- '#fdf5e6' => 'oldlace',
30
- '#808000' => 'olive',
31
- '#ffa500' => 'orange',
32
- '#da70d6' => 'orchid',
33
- '#cd853f' => 'peru',
34
- '#ffc0cb' => 'pink',
35
- '#dda0dd' => 'plum',
36
- '#800080' => 'purple',
37
- '#f00' => 'red',
38
- '#fa8072' => 'salmon',
39
- '#a0522d' => 'sienna',
40
- '#c0c0c0' => 'silver',
41
- '#fffafa' => 'snow',
42
- '#d2b48c' => 'tan',
43
- '#008080' => 'teal',
44
- '#ff6347' => 'tomato',
45
- '#ee82ee' => 'violet',
46
- '#f5deb3' => 'wheat'
47
- );
48
- }
49
 
50
- public static function getNamedToHexMap()
51
- {
52
- // Named colors longer than hex counterpart
53
- return array(
54
- 'aliceblue' => '#f0f8ff',
55
- 'antiquewhite' => '#faebd7',
56
- 'aquamarine' => '#7fffd4',
57
- 'black' => '#000',
58
- 'blanchedalmond' => '#ffebcd',
59
- 'blueviolet' => '#8a2be2',
60
- 'burlywood' => '#deb887',
61
- 'cadetblue' => '#5f9ea0',
62
- 'chartreuse' => '#7fff00',
63
- 'chocolate' => '#d2691e',
64
- 'cornflowerblue' => '#6495ed',
65
- 'cornsilk' => '#fff8dc',
66
- 'darkblue' => '#00008b',
67
- 'darkcyan' => '#008b8b',
68
- 'darkgoldenrod' => '#b8860b',
69
- 'darkgray' => '#a9a9a9',
70
- 'darkgreen' => '#006400',
71
- 'darkgrey' => '#a9a9a9',
72
- 'darkkhaki' => '#bdb76b',
73
- 'darkmagenta' => '#8b008b',
74
- 'darkolivegreen' => '#556b2f',
75
- 'darkorange' => '#ff8c00',
76
- 'darkorchid' => '#9932cc',
77
- 'darksalmon' => '#e9967a',
78
- 'darkseagreen' => '#8fbc8f',
79
- 'darkslateblue' => '#483d8b',
80
- 'darkslategray' => '#2f4f4f',
81
- 'darkslategrey' => '#2f4f4f',
82
- 'darkturquoise' => '#00ced1',
83
- 'darkviolet' => '#9400d3',
84
- 'deeppink' => '#ff1493',
85
- 'deepskyblue' => '#00bfff',
86
- 'dodgerblue' => '#1e90ff',
87
- 'firebrick' => '#b22222',
88
- 'floralwhite' => '#fffaf0',
89
- 'forestgreen' => '#228b22',
90
- 'fuchsia' => '#f0f',
91
- 'gainsboro' => '#dcdcdc',
92
- 'ghostwhite' => '#f8f8ff',
93
- 'goldenrod' => '#daa520',
94
- 'greenyellow' => '#adff2f',
95
- 'honeydew' => '#f0fff0',
96
- 'indianred' => '#cd5c5c',
97
- 'lavender' => '#e6e6fa',
98
- 'lavenderblush' => '#fff0f5',
99
- 'lawngreen' => '#7cfc00',
100
- 'lemonchiffon' => '#fffacd',
101
- 'lightblue' => '#add8e6',
102
- 'lightcoral' => '#f08080',
103
- 'lightcyan' => '#e0ffff',
104
- 'lightgoldenrodyellow' => '#fafad2',
105
- 'lightgray' => '#d3d3d3',
106
- 'lightgreen' => '#90ee90',
107
- 'lightgrey' => '#d3d3d3',
108
- 'lightpink' => '#ffb6c1',
109
- 'lightsalmon' => '#ffa07a',
110
- 'lightseagreen' => '#20b2aa',
111
- 'lightskyblue' => '#87cefa',
112
- 'lightslategray' => '#778899',
113
- 'lightslategrey' => '#778899',
114
- 'lightsteelblue' => '#b0c4de',
115
- 'lightyellow' => '#ffffe0',
116
- 'limegreen' => '#32cd32',
117
- 'mediumaquamarine' => '#66cdaa',
118
- 'mediumblue' => '#0000cd',
119
- 'mediumorchid' => '#ba55d3',
120
- 'mediumpurple' => '#9370db',
121
- 'mediumseagreen' => '#3cb371',
122
- 'mediumslateblue' => '#7b68ee',
123
- 'mediumspringgreen' => '#00fa9a',
124
- 'mediumturquoise' => '#48d1cc',
125
- 'mediumvioletred' => '#c71585',
126
- 'midnightblue' => '#191970',
127
- 'mintcream' => '#f5fffa',
128
- 'mistyrose' => '#ffe4e1',
129
- 'moccasin' => '#ffe4b5',
130
- 'navajowhite' => '#ffdead',
131
- 'olivedrab' => '#6b8e23',
132
- 'orangered' => '#ff4500',
133
- 'palegoldenrod' => '#eee8aa',
134
- 'palegreen' => '#98fb98',
135
- 'paleturquoise' => '#afeeee',
136
- 'palevioletred' => '#db7093',
137
- 'papayawhip' => '#ffefd5',
138
- 'peachpuff' => '#ffdab9',
139
- 'powderblue' => '#b0e0e6',
140
- 'rebeccapurple' => '#663399',
141
- 'rosybrown' => '#bc8f8f',
142
- 'royalblue' => '#4169e1',
143
- 'saddlebrown' => '#8b4513',
144
- 'sandybrown' => '#f4a460',
145
- 'seagreen' => '#2e8b57',
146
- 'seashell' => '#fff5ee',
147
- 'slateblue' => '#6a5acd',
148
- 'slategray' => '#708090',
149
- 'slategrey' => '#708090',
150
- 'springgreen' => '#00ff7f',
151
- 'steelblue' => '#4682b4',
152
- 'turquoise' => '#40e0d0',
153
- 'white' => '#fff',
154
- 'whitesmoke' => '#f5f5f5',
155
- 'yellow' => '#ff0',
156
- 'yellowgreen' => '#9acd32'
157
- );
158
- }
159
  }
 
1
  <?php
2
 
3
+ namespace WMAC\tubalmartin\CssMin;
4
 
5
+ if( !defined('ABSPATH') ) {
6
+ exit;
7
+ }
8
 
9
+ class Colors {
10
 
11
+ public static function getHexToNamedMap()
12
+ {
13
+ // Hex colors longer than named counterpart
14
+ return array(
15
+ '#f0ffff' => 'azure',
16
+ '#f5f5dc' => 'beige',
17
+ '#ffe4c4' => 'bisque',
18
+ '#a52a2a' => 'brown',
19
+ '#ff7f50' => 'coral',
20
+ '#ffd700' => 'gold',
21
+ '#808080' => 'gray',
22
+ '#008000' => 'green',
23
+ '#4b0082' => 'indigo',
24
+ '#fffff0' => 'ivory',
25
+ '#f0e68c' => 'khaki',
26
+ '#faf0e6' => 'linen',
27
+ '#800000' => 'maroon',
28
+ '#000080' => 'navy',
29
+ '#fdf5e6' => 'oldlace',
30
+ '#808000' => 'olive',
31
+ '#ffa500' => 'orange',
32
+ '#da70d6' => 'orchid',
33
+ '#cd853f' => 'peru',
34
+ '#ffc0cb' => 'pink',
35
+ '#dda0dd' => 'plum',
36
+ '#800080' => 'purple',
37
+ '#f00' => 'red',
38
+ '#fa8072' => 'salmon',
39
+ '#a0522d' => 'sienna',
40
+ '#c0c0c0' => 'silver',
41
+ '#fffafa' => 'snow',
42
+ '#d2b48c' => 'tan',
43
+ '#008080' => 'teal',
44
+ '#ff6347' => 'tomato',
45
+ '#ee82ee' => 'violet',
46
+ '#f5deb3' => 'wheat'
47
+ );
48
+ }
49
 
50
+ public static function getNamedToHexMap()
51
+ {
52
+ // Named colors longer than hex counterpart
53
+ return array(
54
+ 'aliceblue' => '#f0f8ff',
55
+ 'antiquewhite' => '#faebd7',
56
+ 'aquamarine' => '#7fffd4',
57
+ 'black' => '#000',
58
+ 'blanchedalmond' => '#ffebcd',
59
+ 'blueviolet' => '#8a2be2',
60
+ 'burlywood' => '#deb887',
61
+ 'cadetblue' => '#5f9ea0',
62
+ 'chartreuse' => '#7fff00',
63
+ 'chocolate' => '#d2691e',
64
+ 'cornflowerblue' => '#6495ed',
65
+ 'cornsilk' => '#fff8dc',
66
+ 'darkblue' => '#00008b',
67
+ 'darkcyan' => '#008b8b',
68
+ 'darkgoldenrod' => '#b8860b',
69
+ 'darkgray' => '#a9a9a9',
70
+ 'darkgreen' => '#006400',
71
+ 'darkgrey' => '#a9a9a9',
72
+ 'darkkhaki' => '#bdb76b',
73
+ 'darkmagenta' => '#8b008b',
74
+ 'darkolivegreen' => '#556b2f',
75
+ 'darkorange' => '#ff8c00',
76
+ 'darkorchid' => '#9932cc',
77
+ 'darksalmon' => '#e9967a',
78
+ 'darkseagreen' => '#8fbc8f',
79
+ 'darkslateblue' => '#483d8b',
80
+ 'darkslategray' => '#2f4f4f',
81
+ 'darkslategrey' => '#2f4f4f',
82
+ 'darkturquoise' => '#00ced1',
83
+ 'darkviolet' => '#9400d3',
84
+ 'deeppink' => '#ff1493',
85
+ 'deepskyblue' => '#00bfff',
86
+ 'dodgerblue' => '#1e90ff',
87
+ 'firebrick' => '#b22222',
88
+ 'floralwhite' => '#fffaf0',
89
+ 'forestgreen' => '#228b22',
90
+ 'fuchsia' => '#f0f',
91
+ 'gainsboro' => '#dcdcdc',
92
+ 'ghostwhite' => '#f8f8ff',
93
+ 'goldenrod' => '#daa520',
94
+ 'greenyellow' => '#adff2f',
95
+ 'honeydew' => '#f0fff0',
96
+ 'indianred' => '#cd5c5c',
97
+ 'lavender' => '#e6e6fa',
98
+ 'lavenderblush' => '#fff0f5',
99
+ 'lawngreen' => '#7cfc00',
100
+ 'lemonchiffon' => '#fffacd',
101
+ 'lightblue' => '#add8e6',
102
+ 'lightcoral' => '#f08080',
103
+ 'lightcyan' => '#e0ffff',
104
+ 'lightgoldenrodyellow' => '#fafad2',
105
+ 'lightgray' => '#d3d3d3',
106
+ 'lightgreen' => '#90ee90',
107
+ 'lightgrey' => '#d3d3d3',
108
+ 'lightpink' => '#ffb6c1',
109
+ 'lightsalmon' => '#ffa07a',
110
+ 'lightseagreen' => '#20b2aa',
111
+ 'lightskyblue' => '#87cefa',
112
+ 'lightslategray' => '#778899',
113
+ 'lightslategrey' => '#778899',
114
+ 'lightsteelblue' => '#b0c4de',
115
+ 'lightyellow' => '#ffffe0',
116
+ 'limegreen' => '#32cd32',
117
+ 'mediumaquamarine' => '#66cdaa',
118
+ 'mediumblue' => '#0000cd',
119
+ 'mediumorchid' => '#ba55d3',
120
+ 'mediumpurple' => '#9370db',
121
+ 'mediumseagreen' => '#3cb371',
122
+ 'mediumslateblue' => '#7b68ee',
123
+ 'mediumspringgreen' => '#00fa9a',
124
+ 'mediumturquoise' => '#48d1cc',
125
+ 'mediumvioletred' => '#c71585',
126
+ 'midnightblue' => '#191970',
127
+ 'mintcream' => '#f5fffa',
128
+ 'mistyrose' => '#ffe4e1',
129
+ 'moccasin' => '#ffe4b5',
130
+ 'navajowhite' => '#ffdead',
131
+ 'olivedrab' => '#6b8e23',
132
+ 'orangered' => '#ff4500',
133
+ 'palegoldenrod' => '#eee8aa',
134
+ 'palegreen' => '#98fb98',
135
+ 'paleturquoise' => '#afeeee',
136
+ 'palevioletred' => '#db7093',
137
+ 'papayawhip' => '#ffefd5',
138
+ 'peachpuff' => '#ffdab9',
139
+ 'powderblue' => '#b0e0e6',
140
+ 'rebeccapurple' => '#663399',
141
+ 'rosybrown' => '#bc8f8f',
142
+ 'royalblue' => '#4169e1',
143
+ 'saddlebrown' => '#8b4513',
144
+ 'sandybrown' => '#f4a460',
145
+ 'seagreen' => '#2e8b57',
146
+ 'seashell' => '#fff5ee',
147
+ 'slateblue' => '#6a5acd',
148
+ 'slategray' => '#708090',
149
+ 'slategrey' => '#708090',
150
+ 'springgreen' => '#00ff7f',
151
+ 'steelblue' => '#4682b4',
152
+ 'turquoise' => '#40e0d0',
153
+ 'white' => '#fff',
154
+ 'whitesmoke' => '#f5f5f5',
155
+ 'yellow' => '#ff0',
156
+ 'yellowgreen' => '#9acd32'
157
+ );
 
158
  }
159
+ }
components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Minifier.php CHANGED
@@ -22,914 +22,876 @@
22
 
23
  namespace WMAC\tubalmartin\CssMin;
24
 
25
- class Minifier
26
- {
27
- const QUERY_FRACTION = '_CSSMIN_QF_';
28
- const COMMENT_TOKEN = '_CSSMIN_CMT_%d_';
29
- const COMMENT_TOKEN_START = '_CSSMIN_CMT_';
30
- const RULE_BODY_TOKEN = '_CSSMIN_RBT_%d_';
31
- const PRESERVED_TOKEN = '_CSSMIN_PTK_%d_';
32
- const UNQUOTED_FONT_TOKEN = '_CSSMIN_UFT_%d_';
33
-
34
- // Token lists
35
- private $comments = array();
36
- private $ruleBodies = array();
37
- private $preservedTokens = array();
38
- private $unquotedFontTokens = array();
39
-
40
- // Output options
41
- private $keepImportantComments = true;
42
- private $keepSourceMapComment = false;
43
- private $linebreakPosition = 0;
44
-
45
- // PHP ini limits
46
- private $raisePhpLimits;
47
- private $memoryLimit;
48
- private $maxExecutionTime = 60; // 1 min
49
- private $pcreBacktrackLimit;
50
- private $pcreRecursionLimit;
51
-
52
- // Color maps
53
- private $hexToNamedColorsMap;
54
- private $namedToHexColorsMap;
55
-
56
- // Regexes
57
- private $numRegex;
58
- private $charsetRegex = '/@charset [^;]+;/Si';
59
- private $importRegex = '/@import [^;]+;/Si';
60
- private $namespaceRegex = '/@namespace [^;]+;/Si';
61
- private $namedToHexColorsRegex;
62
- private $shortenOneZeroesRegex;
63
- private $shortenTwoZeroesRegex;
64
- private $shortenThreeZeroesRegex;
65
- private $shortenFourZeroesRegex;
66
- private $unitsGroupRegex = '(?:ch|cm|em|ex|gd|in|mm|px|pt|pc|q|rem|vh|vmax|vmin|vw|%)';
67
- private $unquotedFontsRegex = '/(font-family:|font:)([^\'"]+?)[^};]*/Si';
68
-
69
- /**
70
- * @param bool|int $raisePhpLimits If true, PHP settings will be raised if needed
71
- */
72
- public function __construct($raisePhpLimits = true)
73
- {
74
- $this->raisePhpLimits = (bool) $raisePhpLimits;
75
- $this->memoryLimit = 128 * 1048576; // 128MB in bytes
76
- $this->pcreBacktrackLimit = 1000 * 1000;
77
- $this->pcreRecursionLimit = 500 * 1000;
78
- $this->hexToNamedColorsMap = Colors::getHexToNamedMap();
79
- $this->namedToHexColorsMap = Colors::getNamedToHexMap();
80
- $this->namedToHexColorsRegex = sprintf(
81
- '/([:,( ])(%s)( |,|\)|;|$)/Si',
82
- implode('|', array_keys($this->namedToHexColorsMap))
83
- );
84
- $this->numRegex = sprintf('-?\d*\.?\d+%s?', $this->unitsGroupRegex);
85
- $this->setShortenZeroValuesRegexes();
86
- }
87
-
88
- /**
89
- * Parses & minifies the given input CSS string
90
- * @param string $css
91
- * @return string
92
- */
93
- public function run($css = '')
94
- {
95
- if (empty($css) || !is_string($css)) {
96
- return '';
97
- }
98
-
99
- $this->resetRunProperties();
100
-
101
- if ($this->raisePhpLimits) {
102
- $this->doRaisePhpLimits();
103
- }
104
-
105
- return $this->minify($css);
106
- }
107
-
108
- /**
109
- * Sets whether to keep or remove sourcemap special comment.
110
- * Sourcemap comments are removed by default.
111
- * @param bool $keepSourceMapComment
112
- */
113
- public function keepSourceMapComment($keepSourceMapComment = true)
114
- {
115
- $this->keepSourceMapComment = (bool) $keepSourceMapComment;
116
- }
117
-
118
- /**
119
- * Sets whether to keep or remove important comments.
120
- * Important comments outside of a declaration block are kept by default.
121
- * @param bool $removeImportantComments
122
- */
123
- public function removeImportantComments($removeImportantComments = true)
124
- {
125
- $this->keepImportantComments = !(bool) $removeImportantComments;
126
- }
127
-
128
- /**
129
- * Sets the approximate column after which long lines will be splitted in the output
130
- * with a linebreak.
131
- * @param int $position
132
- */
133
- public function setLineBreakPosition($position)
134
- {
135
- $this->linebreakPosition = (int) $position;
136
- }
137
-
138
- /**
139
- * Sets the memory limit for this script
140
- * @param int|string $limit
141
- */
142
- public function setMemoryLimit($limit)
143
- {
144
- $this->memoryLimit = Utils::normalizeInt($limit);
145
- }
146
-
147
- /**
148
- * Sets the maximum execution time for this script
149
- * @param int|string $seconds
150
- */
151
- public function setMaxExecutionTime($seconds)
152
- {
153
- $this->maxExecutionTime = (int) $seconds;
154
- }
155
-
156
- /**
157
- * Sets the PCRE backtrack limit for this script
158
- * @param int $limit
159
- */
160
- public function setPcreBacktrackLimit($limit)
161
- {
162
- $this->pcreBacktrackLimit = (int) $limit;
163
- }
164
-
165
- /**
166
- * Sets the PCRE recursion limit for this script
167
- * @param int $limit
168
- */
169
- public function setPcreRecursionLimit($limit)
170
- {
171
- $this->pcreRecursionLimit = (int) $limit;
172
- }
173
-
174
- /**
175
- * Builds regular expressions needed for shortening zero values
176
- */
177
- private function setShortenZeroValuesRegexes()
178
- {
179
- $zeroRegex = '0'. $this->unitsGroupRegex;
180
- $numOrPosRegex = '('. $this->numRegex .'|top|left|bottom|right|center) ';
181
- $oneZeroSafeProperties = array(
182
- '(?:line-)?height',
183
- '(?:(?:min|max)-)?width',
184
- 'top',
185
- 'left',
186
- 'background-position',
187
- 'bottom',
188
- 'right',
189
- 'border(?:-(?:top|left|bottom|right))?(?:-width)?',
190
- 'border-(?:(?:top|bottom)-(?:left|right)-)?radius',
191
- 'column-(?:gap|width)',
192
- 'margin(?:-(?:top|left|bottom|right))?',
193
- 'outline-width',
194
- 'padding(?:-(?:top|left|bottom|right))?'
195
- );
196
-
197
- // First zero regex
198
- $regex = '/(^|;)('. implode('|', $oneZeroSafeProperties) .'):%s/Si';
199
- $this->shortenOneZeroesRegex = sprintf($regex, $zeroRegex);
200
-
201
- // Multiple zeroes regexes
202
- $regex = '/(^|;)(margin|padding|border-(?:width|radius)|background-position):%s/Si';
203
- $this->shortenTwoZeroesRegex = sprintf($regex, $numOrPosRegex . $zeroRegex);
204
- $this->shortenThreeZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $zeroRegex);
205
- $this->shortenFourZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $numOrPosRegex . $zeroRegex);
206
- }
207
-
208
- /**
209
- * Resets properties whose value may change between runs
210
- */
211
- private function resetRunProperties()
212
- {
213
- $this->comments = array();
214
- $this->ruleBodies = array();
215
- $this->preservedTokens = array();
216
- }
217
-
218
- /**
219
- * Tries to configure PHP to use at least the suggested minimum settings
220
- * @return void
221
- */
222
- private function doRaisePhpLimits()
223
- {
224
- $phpLimits = array(
225
- 'memory_limit' => $this->memoryLimit,
226
- 'max_execution_time' => $this->maxExecutionTime,
227
- 'pcre.backtrack_limit' => $this->pcreBacktrackLimit,
228
- 'pcre.recursion_limit' => $this->pcreRecursionLimit
229
- );
230
-
231
- // If current settings are higher respect them.
232
- foreach ($phpLimits as $name => $suggested) {
233
- $current = Utils::normalizeInt(ini_get($name));
234
-
235
- if ($current >= $suggested) {
236
- continue;
237
- }
238
-
239
- // memoryLimit exception: allow -1 for "no memory limit".
240
- if ($name === 'memory_limit' && $current === -1) {
241
- continue;
242
- }
243
-
244
- // maxExecutionTime exception: allow 0 for "no memory limit".
245
- if ($name === 'max_execution_time' && $current === 0) {
246
- continue;
247
- }
248
-
249
- ini_set($name, $suggested);
250
- }
251
- }
252
-
253
- /**
254
- * Registers a preserved token
255
- * @param string $token
256
- * @return string The token ID string
257
- */
258
- private function registerPreservedToken($token)
259
- {
260
- $tokenId = sprintf(self::PRESERVED_TOKEN, count($this->preservedTokens));
261
- $this->preservedTokens[$tokenId] = $token;
262
- return $tokenId;
263
- }
264
-
265
- /**
266
- * Registers a candidate comment token
267
- * @param string $comment
268
- * @return string The comment token ID string
269
- */
270
- private function registerCommentToken($comment)
271
- {
272
- $tokenId = sprintf(self::COMMENT_TOKEN, count($this->comments));
273
- $this->comments[$tokenId] = $comment;
274
- return $tokenId;
275
- }
276
-
277
- /**
278
- * Registers a rule body token
279
- * @param string $body the minified rule body
280
- * @return string The rule body token ID string
281
- */
282
- private function registerRuleBodyToken($body)
283
- {
284
- if (empty($body)) {
285
- return '';
286
- }
287
-
288
- $tokenId = sprintf(self::RULE_BODY_TOKEN, count($this->ruleBodies));
289
- $this->ruleBodies[$tokenId] = $body;
290
- return $tokenId;
291
- }
292
-
293
- private function registerUnquotedFontToken($body)
294
- {
295
- if (empty($body)) {
296
- return '';
297
- }
298
-
299
- $tokenId = sprintf(self::UNQUOTED_FONT_TOKEN, count($this->unquotedFontTokens));
300
- $this->unquotedFontTokens[$tokenId] = $body;
301
- return $tokenId;
302
- }
303
-
304
- /**
305
- * Parses & minifies the given input CSS string
306
- * @param string $css
307
- * @return string
308
- */
309
- private function minify($css)
310
- {
311
- // Process data urls
312
- $css = $this->processDataUrls($css);
313
-
314
- // Process comments
315
- $css = preg_replace_callback(
316
- '/(?<!\\\\)\/\*(.*?)\*(?<!\\\\)\//Ss',
317
- array($this, 'processCommentsCallback'),
318
- $css
319
- );
320
-
321
- // IE7: Process Microsoft matrix filters (whitespaces between Matrix parameters). Can contain strings inside.
322
- $css = preg_replace_callback(
323
- '/filter:\s*progid:DXImageTransform\.Microsoft\.Matrix\(([^)]+)\)/Ss',
324
- array($this, 'processOldIeSpecificMatrixDefinitionCallback'),
325
- $css
326
- );
327
-
328
- // Process quoted unquotable attribute selectors to unquote them. Covers most common cases.
329
- // Likelyhood of a quoted attribute selector being a substring in a string: Very very low.
330
- $css = preg_replace(
331
- '/\[\s*([a-z][a-z-]+)\s*([\*\|\^\$~]?=)\s*[\'"](-?[a-z_][a-z0-9-_]+)[\'"]\s*\]/Ssi',
332
- '[$1$2$3]',
333
- $css
334
- );
335
-
336
- // Process strings so their content doesn't get accidentally minified
337
- $css = preg_replace_callback(
338
- '/(?:"(?:[^\\\\"]|\\\\.|\\\\)*")|'."(?:'(?:[^\\\\']|\\\\.|\\\\)*')/S",
339
- array($this, 'processStringsCallback'),
340
- $css
341
- );
342
-
343
- // Normalize all whitespace strings to single spaces. Easier to work with that way.
344
- $css = preg_replace('/\s+/S', ' ', $css);
345
-
346
- // Process import At-rules with unquoted URLs so URI reserved characters such as a semicolon may be used safely.
347
- $css = preg_replace_callback(
348
- '/@import url\(([^\'"]+?)\)( |;)/Si',
349
- array($this, 'processImportUnquotedUrlAtRulesCallback'),
350
- $css
351
- );
352
-
353
- // Process comments
354
- $css = $this->processComments($css);
355
-
356
- // Process rule bodies
357
- $css = $this->processRuleBodies($css);
358
-
359
- // Process at-rules and selectors
360
- $css = $this->processAtRulesAndSelectors($css);
361
-
362
- // Restore preserved rule bodies before splitting
363
- $css = strtr($css, $this->ruleBodies);
364
-
365
- // Split long lines in output if required
366
- $css = $this->processLongLineSplitting($css);
367
-
368
- // Restore preserved comments and strings
369
- $css = strtr($css, $this->preservedTokens);
370
-
371
- return trim($css);
372
- }
373
-
374
- /**
375
- * Searches & replaces all data urls with tokens before we start compressing,
376
- * to avoid performance issues running some of the subsequent regexes against large string chunks.
377
- * @param string $css
378
- * @return string
379
- */
380
- private function processDataUrls($css)
381
- {
382
- $ret = '';
383
- $searchOffset = $substrOffset = 0;
384
-
385
- // Since we need to account for non-base64 data urls, we need to handle
386
- // ' and ) being part of the data string.
387
- while (preg_match('/url\(\s*(["\']?)data:/Si', $css, $m, PREG_OFFSET_CAPTURE, $searchOffset)) {
388
- $matchStartIndex = $m[0][1];
389
- $dataStartIndex = $matchStartIndex + 4; // url( length
390
- $searchOffset = $matchStartIndex + strlen($m[0][0]);
391
- $terminator = $m[1][0]; // ', " or empty (not quoted)
392
- $terminatorRegex = '/(?<!\\\\)'. (strlen($terminator) === 0 ? '' : $terminator.'\s*') .'(\))/S';
393
-
394
- $ret .= substr($css, $substrOffset, $matchStartIndex - $substrOffset);
395
-
396
- // Terminator found
397
- if (preg_match($terminatorRegex, $css, $matches, PREG_OFFSET_CAPTURE, $searchOffset)) {
398
- $matchEndIndex = $matches[1][1];
399
- $searchOffset = $matchEndIndex + 1;
400
- $token = substr($css, $dataStartIndex, $matchEndIndex - $dataStartIndex);
401
-
402
- // Remove all spaces only for base64 encoded URLs.
403
- if (stripos($token, 'base64,') !== false) {
404
- $token = preg_replace('/\s+/S', '', $token);
405
- }
406
-
407
- $ret .= 'url('. $this->registerPreservedToken(trim($token)) .')';
408
- // No end terminator found, re-add the whole match. Should we throw/warn here?
409
- } else {
410
- $ret .= substr($css, $matchStartIndex, $searchOffset - $matchStartIndex);
411
- }
412
-
413
- $substrOffset = $searchOffset;
414
- }
415
-
416
- $ret .= substr($css, $substrOffset);
417
-
418
- return $ret;
419
- }
420
-
421
- /**
422
- * Registers all comments found as candidates to be preserved.
423
- * @param array $matches
424
- * @return string
425
- */
426
- private function processCommentsCallback($matches)
427
- {
428
- return '/*'. $this->registerCommentToken($matches[1]) .'*/';
429
- }
430
-
431
- /**
432
- * Preserves old IE Matrix string definition
433
- * @param array $matches
434
- * @return string
435
- */
436
- private function processOldIeSpecificMatrixDefinitionCallback($matches)
437
- {
438
- return 'filter:progid:DXImageTransform.Microsoft.Matrix('. $this->registerPreservedToken($matches[1]) .')';
439
- }
440
-
441
- /**
442
- * Preserves strings found
443
- * @param array $matches
444
- * @return string
445
- */
446
- private function processStringsCallback($matches)
447
- {
448
- $match = $matches[0];
449
- $quote = substr($match, 0, 1);
450
- $match = substr($match, 1, -1);
451
-
452
- // maybe the string contains a comment-like substring?
453
- // one, maybe more? put'em back then
454
- if (strpos($match, self::COMMENT_TOKEN_START) !== false) {
455
- $match = strtr($match, $this->comments);
456
- }
457
-
458
- // minify alpha opacity in filter strings
459
- $match = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $match);
460
-
461
- return $quote . $this->registerPreservedToken($match) . $quote;
462
- }
463
-
464
- /**
465
- * Searches & replaces all import at-rule unquoted urls with tokens so URI reserved characters such as a semicolon
466
- * may be used safely in a URL.
467
- * @param array $matches
468
- * @return string
469
- */
470
- private function processImportUnquotedUrlAtRulesCallback($matches)
471
- {
472
- return '@import url('. $this->registerPreservedToken($matches[1]) .')'. $matches[2];
473
- }
474
-
475
- /**
476
- * Preserves or removes comments found.
477
- * @param string $css
478
- * @return string
479
- */
480
- private function processComments($css)
481
- {
482
- foreach ($this->comments as $commentId => $comment) {
483
- $commentIdString = '/*'. $commentId .'*/';
484
-
485
- // ! in the first position of the comment means preserve
486
- // so push to the preserved tokens keeping the !
487
- if ($this->keepImportantComments && strpos($comment, '!') === 0) {
488
- $preservedTokenId = $this->registerPreservedToken($comment);
489
- // Put new lines before and after /*! important comments
490
- $css = str_replace($commentIdString, "\n/*$preservedTokenId*/\n", $css);
491
- continue;
492
- }
493
-
494
- // # sourceMappingURL= in the first position of the comment means sourcemap
495
- // so push to the preserved tokens if {$this->keepSourceMapComment} is truthy.
496
- if ($this->keepSourceMapComment && strpos($comment, '# sourceMappingURL=') === 0) {
497
- $preservedTokenId = $this->registerPreservedToken($comment);
498
- // Add new line before the sourcemap comment
499
- $css = str_replace($commentIdString, "\n/*$preservedTokenId*/", $css);
500
- continue;
501
- }
502
-
503
- // Keep empty comments after child selectors (IE7 hack)
504
- // e.g. html >/**/ body
505
- if (strlen($comment) === 0 && strpos($css, '>/*'.$commentId) !== false) {
506
- $css = str_replace($commentId, $this->registerPreservedToken(''), $css);
507
- continue;
508
- }
509
-
510
- // in all other cases kill the comment
511
- $css = str_replace($commentIdString, '', $css);
512
- }
513
-
514
- // Normalize whitespace again
515
- $css = preg_replace('/ +/S', ' ', $css);
516
-
517
- return $css;
518
- }
519
-
520
- /**
521
- * Finds, minifies & preserves all rule bodies.
522
- * @param string $css the whole stylesheet.
523
- * @return string
524
- */
525
- private function processRuleBodies($css)
526
- {
527
- $ret = '';
528
- $searchOffset = $substrOffset = 0;
529
-
530
- while (($blockStartPos = strpos($css, '{', $searchOffset)) !== false) {
531
- $blockEndPos = strpos($css, '}', $blockStartPos);
532
- // When ending curly brace is missing, let's
533
- // behave like there was one at the end of the block...
534
- if ( false === $blockEndPos ) {
535
- $blockEndPos = strlen($css) - 1;
536
- }
537
- $nextBlockStartPos = strpos($css, '{', $blockStartPos + 1);
538
- $ret .= substr($css, $substrOffset, $blockStartPos - $substrOffset);
539
-
540
- if ($nextBlockStartPos !== false && $nextBlockStartPos < $blockEndPos) {
541
- $ret .= substr($css, $blockStartPos, $nextBlockStartPos - $blockStartPos);
542
- $searchOffset = $nextBlockStartPos;
543
- } else {
544
- $ruleBody = substr($css, $blockStartPos + 1, $blockEndPos - $blockStartPos - 1);
545
- $ruleBodyToken = $this->registerRuleBodyToken($this->processRuleBody($ruleBody));
546
- $ret .= '{'. $ruleBodyToken .'}';
547
- $searchOffset = $blockEndPos + 1;
548
- }
549
-
550
- $substrOffset = $searchOffset;
551
- }
552
-
553
- $ret .= substr($css, $substrOffset);
554
-
555
- return $ret;
556
- }
557
-
558
- /**
559
- * Compresses non-group rule bodies.
560
- * @param string $body The rule body without curly braces
561
- * @return string
562
- */
563
- private function processRuleBody($body)
564
- {
565
- $body = trim($body);
566
-
567
- // Remove spaces before the things that should not have spaces before them.
568
- $body = preg_replace('/ ([:=,)*\/;\n])/S', '$1', $body);
569
-
570
- // Remove the spaces after the things that should not have spaces after them.
571
- $body = preg_replace('/([:=,(*\/!;\n]) /S', '$1', $body);
572
-
573
- // Replace multiple semi-colons in a row by a single one
574
- $body = preg_replace('/;;+/S', ';', $body);
575
-
576
- // Remove semicolon before closing brace except when:
577
- // - The last property is prefixed with a `*` (lte IE7 hack) to avoid issues on Symbian S60 3.x browsers.
578
- if (!preg_match('/\*[a-z0-9-]+:[^;]+;$/Si', $body)) {
579
- $body = rtrim($body, ';');
580
- }
581
-
582
- // Remove important comments inside a rule body (because they make no sense here).
583
- if (strpos($body, '/*') !== false) {
584
- $body = preg_replace('/\n?\/\*[A-Z0-9_]+\*\/\n?/S', '', $body);
585
- }
586
-
587
- // Empty rule body? Exit :)
588
- if (empty($body)) {
589
- return '';
590
- }
591
-
592
- // Shorten font-weight values
593
- $body = preg_replace(
594
- array('/(font-weight:)bold\b/Si', '/(font-weight:)normal\b/Si'),
595
- array('${1}700', '${1}400'),
596
- $body
597
- );
598
-
599
- // Shorten background property
600
- $body = preg_replace('/(background:)(?:none|transparent)( !|;|$)/Si', '${1}0 0$2', $body);
601
-
602
- // Shorten opacity IE filter
603
- $body = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $body);
604
-
605
- // Shorten colors from rgb(51,102,153) to #336699, rgb(100%,0%,0%) to #ff0000 (sRGB color space)
606
- // Shorten colors from hsl(0, 100%, 50%) to #ff0000 (sRGB color space)
607
- // This makes it more likely that it'll get further compressed in the next step.
608
- $body = preg_replace_callback(
609
- '/(rgb|hsl)\(([0-9,.% -]+)\)(.|$)/Si',
610
- array($this, 'shortenHslAndRgbToHexCallback'),
611
- $body
612
- );
613
-
614
- // Shorten colors from #AABBCC to #ABC or shorter color name:
615
- // - Look for hex colors which don't have a "=" in front of them (to avoid MSIE filters)
616
- $body = preg_replace_callback(
617
- '/(?<!=)#([0-9a-f]{3,6})( |,|\)|;|$)/Si',
618
- array($this, 'shortenHexColorsCallback'),
619
- $body
620
- );
621
-
622
- // Tokenize unquoted font names in order to hide them from
623
- // color name replacements.
624
- $body = preg_replace_callback(
625
- $this->unquotedFontsRegex,
626
- array($this, 'preserveUnquotedFontTokens'),
627
- $body
628
- );
629
-
630
- // Shorten long named colors with a shorter HEX counterpart: white -> #fff.
631
- // Run at least 2 times to cover most cases
632
- $body = preg_replace_callback(
633
- array($this->namedToHexColorsRegex, $this->namedToHexColorsRegex),
634
- array($this, 'shortenNamedColorsCallback'),
635
- $body
636
- );
637
-
638
- // Restore unquoted font tokens now after colors have been changed.
639
- $body = $this->restoreUnquotedFontTokens($body);
640
-
641
- // Replace positive sign from numbers before the leading space is removed.
642
- // +1.2em to 1.2em, +.8px to .8px, +2% to 2%
643
- $body = preg_replace('/([ :,(])\+(\.?\d+)/S', '$1$2', $body);
644
-
645
- // shorten ms to s
646
- $body = preg_replace_callback('/([ :,(])(-?)(\d{3,})ms/Si', function ($matches) {
647
- return $matches[1] . $matches[2] . ((int) $matches[3] / 1000) .'s';
648
- }, $body);
649
-
650
- // Remove leading zeros from integer and float numbers.
651
- // 000.6 to .6, -0.8 to -.8, 0050 to 50, -01.05 to -1.05
652
- $body = preg_replace('/([ :,(])(-?)0+([1-9]?\.?\d+)/S', '$1$2$3', $body);
653
-
654
- // Remove trailing zeros from float numbers.
655
- // -6.0100em to -6.01em, .0100 to .01, 1.200px to 1.2px
656
- $body = preg_replace('/([ :,(])(-?\d?\.\d+?)0+([^\d])/S', '$1$2$3', $body);
657
-
658
- // Remove trailing .0 -> -9.0 to -9
659
- $body = preg_replace('/([ :,(])(-?\d+)\.0([^\d])/S', '$1$2$3', $body);
660
-
661
- // Replace 0 length numbers with 0
662
- $body = preg_replace('/([ :,(])-?\.?0+([^\d])/S', '${1}0$2', $body);
663
-
664
- // Shorten zero values for safe properties only
665
- $body = preg_replace(
666
- array(
667
- $this->shortenOneZeroesRegex,
668
- $this->shortenTwoZeroesRegex,
669
- $this->shortenThreeZeroesRegex,
670
- $this->shortenFourZeroesRegex
671
- ),
672
- array(
673
- '$1$2:0',
674
- '$1$2:$3 0',
675
- '$1$2:$3 $4 0',
676
- '$1$2:$3 $4 $5 0'
677
- ),
678
- $body
679
- );
680
-
681
- // Replace 0 0 0; or 0 0 0 0; with 0 0 for background-position property.
682
- $body = preg_replace('/(background-position):0(?: 0){2,3}( !|;|$)/Si', '$1:0 0$2', $body);
683
-
684
- // Shorten suitable shorthand properties with repeated values
685
- $body = preg_replace(
686
- array(
687
- '/(margin|padding|border-(?:width|radius)):('.$this->numRegex.')(?: \2)+( !|;|$)/Si',
688
- '/(border-(?:style|color)):([#a-z0-9]+)(?: \2)+( !|;|$)/Si'
689
- ),
690
- '$1:$2$3',
691
- $body
692
- );
693
- $body = preg_replace(
694
- array(
695
- '/(margin|padding|border-(?:width|radius)):'.
696
- '('.$this->numRegex.') ('.$this->numRegex.') \2 \3( !|;|$)/Si',
697
- '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) \2 \3( !|;|$)/Si'
698
- ),
699
- '$1:$2 $3$4',
700
- $body
701
- );
702
- $body = preg_replace(
703
- array(
704
- '/(margin|padding|border-(?:width|radius)):'.
705
- '('.$this->numRegex.') ('.$this->numRegex.') ('.$this->numRegex.') \3( !|;|$)/Si',
706
- '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) ([#a-z0-9]+) \3( !|;|$)/Si'
707
- ),
708
- '$1:$2 $3 $4$5',
709
- $body
710
- );
711
-
712
- // Lowercase some common functions that can be values
713
- $body = preg_replace_callback(
714
- '/(?:attr|blur|brightness|circle|contrast|cubic-bezier|drop-shadow|ellipse|from|grayscale|'.
715
- 'hsla?|hue-rotate|inset|invert|local|minmax|opacity|perspective|polygon|rgba?|rect|repeat|saturate|sepia|'.
716
- 'steps|to|url|var|-webkit-gradient|'.
717
- '(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?(?:calc|(?:repeating-)?(?:linear|radial)-gradient))\(/Si',
718
- array($this, 'strtolowerCallback'),
719
- $body
720
- );
721
-
722
- // Lowercase all uppercase properties
723
- $body = preg_replace_callback('/(?:^|;)[A-Z-]+:/S', array($this, 'strtolowerCallback'), $body);
724
-
725
- return $body;
726
- }
727
-
728
- private function preserveUnquotedFontTokens($matches)
729
- {
730
- return $this->registerUnquotedFontToken($matches[0]);
731
- }
732
-
733
- private function restoreUnquotedFontTokens($body)
734
- {
735
- return strtr($body, $this->unquotedFontTokens);
736
- }
737
-
738
- /**
739
- * Compresses At-rules and selectors.
740
- * @param string $css the whole stylesheet with rule bodies tokenized.
741
- * @return string
742
- */
743
- private function processAtRulesAndSelectors($css)
744
- {
745
- $charset = '';
746
- $imports = '';
747
- $namespaces = '';
748
-
749
- // Remove spaces before the things that should not have spaces before them.
750
- $css = preg_replace('/ ([@{};>+)\]~=,\/\n])/S', '$1', $css);
751
-
752
- // Remove the spaces after the things that should not have spaces after them.
753
- $css = preg_replace('/([{}:;>+(\[~=,\/\n]) /S', '$1', $css);
754
-
755
- // Shorten shortable double colon (CSS3) pseudo-elements to single colon (CSS2)
756
- $css = preg_replace('/::(before|after|first-(?:line|letter))(\{|,)/Si', ':$1$2', $css);
757
-
758
- // Retain space for special IE6 cases
759
- $css = preg_replace_callback('/:first-(line|letter)(\{|,)/Si', function ($matches) {
760
- return ':first-'. strtolower($matches[1]) .' '. $matches[2];
761
- }, $css);
762
-
763
- // Find a fraction that may used in some @media queries such as: (min-aspect-ratio: 1/1)
764
- // Add token to add the "/" back in later
765
- $css = preg_replace('/\(([a-z-]+):([0-9]+)\/([0-9]+)\)/Si', '($1:$2'. self::QUERY_FRACTION .'$3)', $css);
766
-
767
- // Remove empty rule blocks up to 2 levels deep.
768
- $css = preg_replace(array_fill(0, 2, '/(\{)[^{};\/\n]+\{\}/S'), '$1', $css);
769
- $css = preg_replace('/[^{};\/\n]+\{\}/S', '', $css);
770
-
771
- // Two important comments next to each other? Remove extra newline.
772
- if ($this->keepImportantComments) {
773
- $css = str_replace("\n\n", "\n", $css);
774
- }
775
-
776
- // Restore fraction
777
- $css = str_replace(self::QUERY_FRACTION, '/', $css);
778
-
779
- // Lowercase some popular @directives
780
- $css = preg_replace_callback(
781
- '/(?<!\\\\)@(?:charset|document|font-face|import|(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?keyframes|media|'.
782
- 'namespace|page|supports|viewport)/Si',
783
- array($this, 'strtolowerCallback'),
784
- $css
785
- );
786
-
787
- // Lowercase some popular media types
788
- $css = preg_replace_callback(
789
- '/[ ,](?:all|aural|braille|handheld|print|projection|screen|tty|tv|embossed|speech)[ ,;{]/Si',
790
- array($this, 'strtolowerCallback'),
791
- $css
792
- );
793
-
794
- // Lowercase some common pseudo-classes & pseudo-elements
795
- $css = preg_replace_callback(
796
- '/(?<!\\\\):(?:active|after|before|checked|default|disabled|empty|enabled|first-(?:child|of-type)|'.
797
- 'focus(?:-within)?|hover|indeterminate|in-range|invalid|lang\(|last-(?:child|of-type)|left|link|not\(|'.
798
- 'nth-(?:child|of-type)\(|nth-last-(?:child|of-type)\(|only-(?:child|of-type)|optional|out-of-range|'.
799
- 'read-(?:only|write)|required|right|root|:selection|target|valid|visited)/Si',
800
- array($this, 'strtolowerCallback'),
801
- $css
802
- );
803
-
804
- // @charset handling
805
- if (preg_match($this->charsetRegex, $css, $matches)) {
806
- // Keep the first @charset at-rule found
807
- $charset = $matches[0];
808
- // Delete all @charset at-rules
809
- $css = preg_replace($this->charsetRegex, '', $css);
810
- }
811
-
812
- // @import handling
813
- $css = preg_replace_callback($this->importRegex, function ($matches) use (&$imports) {
814
- // Keep all @import at-rules found for later
815
- $imports .= $matches[0];
816
- // Delete all @import at-rules
817
- return '';
818
- }, $css);
819
-
820
- // @namespace handling
821
- $css = preg_replace_callback($this->namespaceRegex, function ($matches) use (&$namespaces) {
822
- // Keep all @namespace at-rules found for later
823
- $namespaces .= $matches[0];
824
- // Delete all @namespace at-rules
825
- return '';
826
- }, $css);
827
-
828
- // Order critical at-rules:
829
- // 1. @charset first
830
- // 2. @imports below @charset
831
- // 3. @namespaces below @imports
832
- $css = $charset . $imports . $namespaces . $css;
833
-
834
- return $css;
835
- }
836
-
837
- /**
838
- * Splits long lines after a specific column.
839
- *
840
- * Some source control tools don't like it when files containing lines longer
841
- * than, say 8000 characters, are checked in. The linebreak option is used in
842
- * that case to split long lines after a specific column.
843
- *
844
- * @param string $css the whole stylesheet.
845
- * @return string
846
- */
847
- private function processLongLineSplitting($css)
848
- {
849
- if ($this->linebreakPosition > 0) {
850
- $l = strlen($css);
851
- $offset = $this->linebreakPosition;
852
- while (preg_match('/(?<!\\\\)\}(?!\n)/S', $css, $matches, PREG_OFFSET_CAPTURE, $offset)) {
853
- $matchIndex = $matches[0][1];
854
- $css = substr_replace($css, "\n", $matchIndex + 1, 0);
855
- $offset = $matchIndex + 2 + $this->linebreakPosition;
856
- $l += 1;
857
- if ($offset > $l) {
858
- break;
859
- }
860
- }
861
- }
862
-
863
- return $css;
864
- }
865
-
866
- /**
867
- * Converts hsl() & rgb() colors to HEX format.
868
- * @param $matches
869
- * @return string
870
- */
871
- private function shortenHslAndRgbToHexCallback($matches)
872
- {
873
- $type = $matches[1];
874
- $values = explode(',', $matches[2]);
875
- $terminator = $matches[3];
876
-
877
- if ($type === 'hsl') {
878
- $values = Utils::hslToRgb($values);
879
- }
880
-
881
- $hexColors = Utils::rgbToHex($values);
882
-
883
- // Restore space after rgb() or hsl() function in some cases such as:
884
- // background-image: linear-gradient(to bottom, rgb(210,180,140) 10%, rgb(255,0,0) 90%);
885
- if (!empty($terminator) && !preg_match('/[ ,);]/S', $terminator)) {
886
- $terminator = ' '. $terminator;
887
- }
888
-
889
- return '#'. implode('', $hexColors) . $terminator;
890
- }
891
-
892
- /**
893
- * Compresses HEX color values of the form #AABBCC to #ABC or short color name.
894
- * @param $matches
895
- * @return string
896
- */
897
- private function shortenHexColorsCallback($matches)
898
- {
899
- $hex = $matches[1];
900
-
901
- // Shorten suitable 6 chars HEX colors
902
- if (strlen($hex) === 6 && preg_match('/^([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/Si', $hex, $m)) {
903
- $hex = $m[1] . $m[2] . $m[3];
904
- }
905
-
906
- // Lowercase
907
- $hex = '#'. strtolower($hex);
908
-
909
- // Replace Hex colors with shorter color names
910
- $color = array_key_exists($hex, $this->hexToNamedColorsMap) ? $this->hexToNamedColorsMap[$hex] : $hex;
911
-
912
- return $color . $matches[2];
913
- }
914
-
915
- /**
916
- * Shortens all named colors with a shorter HEX counterpart for a set of safe properties
917
- * e.g. white -> #fff
918
- * @param array $matches
919
- * @return string
920
- */
921
- private function shortenNamedColorsCallback($matches)
922
- {
923
- return $matches[1] . $this->namedToHexColorsMap[strtolower($matches[2])] . $matches[3];
924
- }
925
-
926
- /**
927
- * Makes a string lowercase
928
- * @param array $matches
929
- * @return string
930
- */
931
- private function strtolowerCallback($matches)
932
- {
933
- return strtolower($matches[0]);
934
- }
935
  }
22
 
23
  namespace WMAC\tubalmartin\CssMin;
24
 
25
+ if( !defined('ABSPATH') ) {
26
+ exit;
27
+ }
28
+
29
+ class Minifier {
30
+
31
+ const QUERY_FRACTION = '_CSSMIN_QF_';
32
+ const COMMENT_TOKEN = '_CSSMIN_CMT_%d_';
33
+ const COMMENT_TOKEN_START = '_CSSMIN_CMT_';
34
+ const RULE_BODY_TOKEN = '_CSSMIN_RBT_%d_';
35
+ const PRESERVED_TOKEN = '_CSSMIN_PTK_%d_';
36
+ const UNQUOTED_FONT_TOKEN = '_CSSMIN_UFT_%d_';
37
+
38
+ // Token lists
39
+ private $comments = array();
40
+ private $ruleBodies = array();
41
+ private $preservedTokens = array();
42
+ private $unquotedFontTokens = array();
43
+
44
+ // Output options
45
+ private $keepImportantComments = true;
46
+ private $keepSourceMapComment = false;
47
+ private $linebreakPosition = 0;
48
+
49
+ // PHP ini limits
50
+ private $raisePhpLimits;
51
+ private $memoryLimit;
52
+ private $maxExecutionTime = 60; // 1 min
53
+ private $pcreBacktrackLimit;
54
+ private $pcreRecursionLimit;
55
+
56
+ // Color maps
57
+ private $hexToNamedColorsMap;
58
+ private $namedToHexColorsMap;
59
+
60
+ // Regexes
61
+ private $numRegex;
62
+ private $charsetRegex = '/@charset [^;]+;/Si';
63
+ private $importRegex = '/@import [^;]+;/Si';
64
+ private $namespaceRegex = '/@namespace [^;]+;/Si';
65
+ private $namedToHexColorsRegex;
66
+ private $shortenOneZeroesRegex;
67
+ private $shortenTwoZeroesRegex;
68
+ private $shortenThreeZeroesRegex;
69
+ private $shortenFourZeroesRegex;
70
+ private $unitsGroupRegex = '(?:ch|cm|em|ex|gd|in|mm|px|pt|pc|q|rem|vh|vmax|vmin|vw|%)';
71
+ private $unquotedFontsRegex = '/(font-family:|font:)([^\'"]+?)[^};]*/Si';
72
+
73
+ /**
74
+ * @param bool|int $raisePhpLimits If true, PHP settings will be raised if needed
75
+ */
76
+ public function __construct($raisePhpLimits = true)
77
+ {
78
+ $this->raisePhpLimits = (bool)$raisePhpLimits;
79
+ $this->memoryLimit = 128 * 1048576; // 128MB in bytes
80
+ $this->pcreBacktrackLimit = 1000 * 1000;
81
+ $this->pcreRecursionLimit = 500 * 1000;
82
+ $this->hexToNamedColorsMap = Colors::getHexToNamedMap();
83
+ $this->namedToHexColorsMap = Colors::getNamedToHexMap();
84
+ $this->namedToHexColorsRegex = sprintf('/([:,( ])(%s)( |,|\)|;|$)/Si', implode('|', array_keys($this->namedToHexColorsMap)));
85
+ $this->numRegex = sprintf('-?\d*\.?\d+%s?', $this->unitsGroupRegex);
86
+ $this->setShortenZeroValuesRegexes();
87
+ }
88
+
89
+ /**
90
+ * Parses & minifies the given input CSS string
91
+ * @param string $css
92
+ * @return string
93
+ */
94
+ public function run($css = '')
95
+ {
96
+ if( empty($css) || !is_string($css) ) {
97
+ return '';
98
+ }
99
+
100
+ $this->resetRunProperties();
101
+
102
+ if( $this->raisePhpLimits ) {
103
+ $this->doRaisePhpLimits();
104
+ }
105
+
106
+ return $this->minify($css);
107
+ }
108
+
109
+ /**
110
+ * Sets whether to keep or remove sourcemap special comment.
111
+ * Sourcemap comments are removed by default.
112
+ * @param bool $keepSourceMapComment
113
+ */
114
+ public function keepSourceMapComment($keepSourceMapComment = true)
115
+ {
116
+ $this->keepSourceMapComment = (bool)$keepSourceMapComment;
117
+ }
118
+
119
+ /**
120
+ * Sets whether to keep or remove important comments.
121
+ * Important comments outside of a declaration block are kept by default.
122
+ * @param bool $removeImportantComments
123
+ */
124
+ public function removeImportantComments($removeImportantComments = true)
125
+ {
126
+ $this->keepImportantComments = !(bool)$removeImportantComments;
127
+ }
128
+
129
+ /**
130
+ * Sets the approximate column after which long lines will be splitted in the output
131
+ * with a linebreak.
132
+ * @param int $position
133
+ */
134
+ public function setLineBreakPosition($position)
135
+ {
136
+ $this->linebreakPosition = (int)$position;
137
+ }
138
+
139
+ /**
140
+ * Sets the memory limit for this script
141
+ * @param int|string $limit
142
+ */
143
+ public function setMemoryLimit($limit)
144
+ {
145
+ $this->memoryLimit = Utils::normalizeInt($limit);
146
+ }
147
+
148
+ /**
149
+ * Sets the maximum execution time for this script
150
+ * @param int|string $seconds
151
+ */
152
+ public function setMaxExecutionTime($seconds)
153
+ {
154
+ $this->maxExecutionTime = (int)$seconds;
155
+ }
156
+
157
+ /**
158
+ * Sets the PCRE backtrack limit for this script
159
+ * @param int $limit
160
+ */
161
+ public function setPcreBacktrackLimit($limit)
162
+ {
163
+ $this->pcreBacktrackLimit = (int)$limit;
164
+ }
165
+
166
+ /**
167
+ * Sets the PCRE recursion limit for this script
168
+ * @param int $limit
169
+ */
170
+ public function setPcreRecursionLimit($limit)
171
+ {
172
+ $this->pcreRecursionLimit = (int)$limit;
173
+ }
174
+
175
+ /**
176
+ * Builds regular expressions needed for shortening zero values
177
+ */
178
+ private function setShortenZeroValuesRegexes()
179
+ {
180
+ $zeroRegex = '0' . $this->unitsGroupRegex;
181
+ $numOrPosRegex = '(' . $this->numRegex . '|top|left|bottom|right|center) ';
182
+ $oneZeroSafeProperties = array(
183
+ '(?:line-)?height',
184
+ '(?:(?:min|max)-)?width',
185
+ 'top',
186
+ 'left',
187
+ 'background-position',
188
+ 'bottom',
189
+ 'right',
190
+ 'border(?:-(?:top|left|bottom|right))?(?:-width)?',
191
+ 'border-(?:(?:top|bottom)-(?:left|right)-)?radius',
192
+ 'column-(?:gap|width)',
193
+ 'margin(?:-(?:top|left|bottom|right))?',
194
+ 'outline-width',
195
+ 'padding(?:-(?:top|left|bottom|right))?'
196
+ );
197
+
198
+ // First zero regex
199
+ $regex = '/(^|;)(' . implode('|', $oneZeroSafeProperties) . '):%s/Si';
200
+ $this->shortenOneZeroesRegex = sprintf($regex, $zeroRegex);
201
+
202
+ // Multiple zeroes regexes
203
+ $regex = '/(^|;)(margin|padding|border-(?:width|radius)|background-position):%s/Si';
204
+ $this->shortenTwoZeroesRegex = sprintf($regex, $numOrPosRegex . $zeroRegex);
205
+ $this->shortenThreeZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $zeroRegex);
206
+ $this->shortenFourZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $numOrPosRegex . $zeroRegex);
207
+ }
208
+
209
+ /**
210
+ * Resets properties whose value may change between runs
211
+ */
212
+ private function resetRunProperties()
213
+ {
214
+ $this->comments = array();
215
+ $this->ruleBodies = array();
216
+ $this->preservedTokens = array();
217
+ }
218
+
219
+ /**
220
+ * Tries to configure PHP to use at least the suggested minimum settings
221
+ * @return void
222
+ */
223
+ private function doRaisePhpLimits()
224
+ {
225
+ $phpLimits = array(
226
+ 'memory_limit' => $this->memoryLimit,
227
+ 'max_execution_time' => $this->maxExecutionTime,
228
+ 'pcre.backtrack_limit' => $this->pcreBacktrackLimit,
229
+ 'pcre.recursion_limit' => $this->pcreRecursionLimit
230
+ );
231
+
232
+ // If current settings are higher respect them.
233
+ foreach($phpLimits as $name => $suggested) {
234
+ $current = Utils::normalizeInt(ini_get($name));
235
+
236
+ if( $current >= $suggested ) {
237
+ continue;
238
+ }
239
+
240
+ // memoryLimit exception: allow -1 for "no memory limit".
241
+ if( $name === 'memory_limit' && $current === -1 ) {
242
+ continue;
243
+ }
244
+
245
+ // maxExecutionTime exception: allow 0 for "no memory limit".
246
+ if( $name === 'max_execution_time' && $current === 0 ) {
247
+ continue;
248
+ }
249
+
250
+ ini_set($name, $suggested);
251
+ }
252
+ }
253
+
254
+ /**
255
+ * Registers a preserved token
256
+ * @param string $token
257
+ * @return string The token ID string
258
+ */
259
+ private function registerPreservedToken($token)
260
+ {
261
+ $tokenId = sprintf(self::PRESERVED_TOKEN, count($this->preservedTokens));
262
+ $this->preservedTokens[$tokenId] = $token;
263
+
264
+ return $tokenId;
265
+ }
266
+
267
+ /**
268
+ * Registers a candidate comment token
269
+ * @param string $comment
270
+ * @return string The comment token ID string
271
+ */
272
+ private function registerCommentToken($comment)
273
+ {
274
+ $tokenId = sprintf(self::COMMENT_TOKEN, count($this->comments));
275
+ $this->comments[$tokenId] = $comment;
276
+
277
+ return $tokenId;
278
+ }
279
+
280
+ /**
281
+ * Registers a rule body token
282
+ * @param string $body the minified rule body
283
+ * @return string The rule body token ID string
284
+ */
285
+ private function registerRuleBodyToken($body)
286
+ {
287
+ if( empty($body) ) {
288
+ return '';
289
+ }
290
+
291
+ $tokenId = sprintf(self::RULE_BODY_TOKEN, count($this->ruleBodies));
292
+ $this->ruleBodies[$tokenId] = $body;
293
+
294
+ return $tokenId;
295
+ }
296
+
297
+ private function registerUnquotedFontToken($body)
298
+ {
299
+ if( empty($body) ) {
300
+ return '';
301
+ }
302
+
303
+ $tokenId = sprintf(self::UNQUOTED_FONT_TOKEN, count($this->unquotedFontTokens));
304
+ $this->unquotedFontTokens[$tokenId] = $body;
305
+
306
+ return $tokenId;
307
+ }
308
+
309
+ /**
310
+ * Parses & minifies the given input CSS string
311
+ * @param string $css
312
+ * @return string
313
+ */
314
+ private function minify($css)
315
+ {
316
+ // Process data urls
317
+ $css = $this->processDataUrls($css);
318
+
319
+ // Process comments
320
+ $css = preg_replace_callback('/(?<!\\\\)\/\*(.*?)\*(?<!\\\\)\//Ss', array(
321
+ $this,
322
+ 'processCommentsCallback'
323
+ ), $css);
324
+
325
+ // IE7: Process Microsoft matrix filters (whitespaces between Matrix parameters). Can contain strings inside.
326
+ $css = preg_replace_callback('/filter:\s*progid:DXImageTransform\.Microsoft\.Matrix\(([^)]+)\)/Ss', array(
327
+ $this,
328
+ 'processOldIeSpecificMatrixDefinitionCallback'
329
+ ), $css);
330
+
331
+ // Process quoted unquotable attribute selectors to unquote them. Covers most common cases.
332
+ // Likelyhood of a quoted attribute selector being a substring in a string: Very very low.
333
+ $css = preg_replace('/\[\s*([a-z][a-z-]+)\s*([\*\|\^\$~]?=)\s*[\'"](-?[a-z_][a-z0-9-_]+)[\'"]\s*\]/Ssi', '[$1$2$3]', $css);
334
+
335
+ // Process strings so their content doesn't get accidentally minified
336
+ $css = preg_replace_callback('/(?:"(?:[^\\\\"]|\\\\.|\\\\)*")|' . "(?:'(?:[^\\\\']|\\\\.|\\\\)*')/S", array(
337
+ $this,
338
+ 'processStringsCallback'
339
+ ), $css);
340
+
341
+ // Normalize all whitespace strings to single spaces. Easier to work with that way.
342
+ $css = preg_replace('/\s+/S', ' ', $css);
343
+
344
+ // Process import At-rules with unquoted URLs so URI reserved characters such as a semicolon may be used safely.
345
+ $css = preg_replace_callback('/@import url\(([^\'"]+?)\)( |;)/Si', array(
346
+ $this,
347
+ 'processImportUnquotedUrlAtRulesCallback'
348
+ ), $css);
349
+
350
+ // Process comments
351
+ $css = $this->processComments($css);
352
+
353
+ // Process rule bodies
354
+ $css = $this->processRuleBodies($css);
355
+
356
+ // Process at-rules and selectors
357
+ $css = $this->processAtRulesAndSelectors($css);
358
+
359
+ // Restore preserved rule bodies before splitting
360
+ $css = strtr($css, $this->ruleBodies);
361
+
362
+ // Split long lines in output if required
363
+ $css = $this->processLongLineSplitting($css);
364
+
365
+ // Restore preserved comments and strings
366
+ $css = strtr($css, $this->preservedTokens);
367
+
368
+ return trim($css);
369
+ }
370
+
371
+ /**
372
+ * Searches & replaces all data urls with tokens before we start compressing,
373
+ * to avoid performance issues running some of the subsequent regexes against large string chunks.
374
+ * @param string $css
375
+ * @return string
376
+ */
377
+ private function processDataUrls($css)
378
+ {
379
+ $ret = '';
380
+ $searchOffset = $substrOffset = 0;
381
+
382
+ // Since we need to account for non-base64 data urls, we need to handle
383
+ // ' and ) being part of the data string.
384
+ while( preg_match('/url\(\s*(["\']?)data:/Si', $css, $m, PREG_OFFSET_CAPTURE, $searchOffset) ) {
385
+ $matchStartIndex = $m[0][1];
386
+ $dataStartIndex = $matchStartIndex + 4; // url( length
387
+ $searchOffset = $matchStartIndex + strlen($m[0][0]);
388
+ $terminator = $m[1][0]; // ', " or empty (not quoted)
389
+ $terminatorRegex = '/(?<!\\\\)' . (strlen($terminator) === 0 ? '' : $terminator . '\s*') . '(\))/S';
390
+
391
+ $ret .= substr($css, $substrOffset, $matchStartIndex - $substrOffset);
392
+
393
+ // Terminator found
394
+ if( preg_match($terminatorRegex, $css, $matches, PREG_OFFSET_CAPTURE, $searchOffset) ) {
395
+ $matchEndIndex = $matches[1][1];
396
+ $searchOffset = $matchEndIndex + 1;
397
+ $token = substr($css, $dataStartIndex, $matchEndIndex - $dataStartIndex);
398
+
399
+ // Remove all spaces only for base64 encoded URLs.
400
+ if( stripos($token, 'base64,') !== false ) {
401
+ $token = preg_replace('/\s+/S', '', $token);
402
+ }
403
+
404
+ $ret .= 'url(' . $this->registerPreservedToken(trim($token)) . ')';
405
+ // No end terminator found, re-add the whole match. Should we throw/warn here?
406
+ } else {
407
+ $ret .= substr($css, $matchStartIndex, $searchOffset - $matchStartIndex);
408
+ }
409
+
410
+ $substrOffset = $searchOffset;
411
+ }
412
+
413
+ $ret .= substr($css, $substrOffset);
414
+
415
+ return $ret;
416
+ }
417
+
418
+ /**
419
+ * Registers all comments found as candidates to be preserved.
420
+ * @param array $matches
421
+ * @return string
422
+ */
423
+ private function processCommentsCallback($matches)
424
+ {
425
+ return '/*' . $this->registerCommentToken($matches[1]) . '*/';
426
+ }
427
+
428
+ /**
429
+ * Preserves old IE Matrix string definition
430
+ * @param array $matches
431
+ * @return string
432
+ */
433
+ private function processOldIeSpecificMatrixDefinitionCallback($matches)
434
+ {
435
+ return 'filter:progid:DXImageTransform.Microsoft.Matrix(' . $this->registerPreservedToken($matches[1]) . ')';
436
+ }
437
+
438
+ /**
439
+ * Preserves strings found
440
+ * @param array $matches
441
+ * @return string
442
+ */
443
+ private function processStringsCallback($matches)
444
+ {
445
+ $match = $matches[0];
446
+ $quote = substr($match, 0, 1);
447
+ $match = substr($match, 1, -1);
448
+
449
+ // maybe the string contains a comment-like substring?
450
+ // one, maybe more? put'em back then
451
+ if( strpos($match, self::COMMENT_TOKEN_START) !== false ) {
452
+ $match = strtr($match, $this->comments);
453
+ }
454
+
455
+ // minify alpha opacity in filter strings
456
+ $match = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $match);
457
+
458
+ return $quote . $this->registerPreservedToken($match) . $quote;
459
+ }
460
+
461
+ /**
462
+ * Searches & replaces all import at-rule unquoted urls with tokens so URI reserved characters such as a semicolon
463
+ * may be used safely in a URL.
464
+ * @param array $matches
465
+ * @return string
466
+ */
467
+ private function processImportUnquotedUrlAtRulesCallback($matches)
468
+ {
469
+ return '@import url(' . $this->registerPreservedToken($matches[1]) . ')' . $matches[2];
470
+ }
471
+
472
+ /**
473
+ * Preserves or removes comments found.
474
+ * @param string $css
475
+ * @return string
476
+ */
477
+ private function processComments($css)
478
+ {
479
+ foreach($this->comments as $commentId => $comment) {
480
+ $commentIdString = '/*' . $commentId . '*/';
481
+
482
+ // ! in the first position of the comment means preserve
483
+ // so push to the preserved tokens keeping the !
484
+ if( $this->keepImportantComments && strpos($comment, '!') === 0 ) {
485
+ $preservedTokenId = $this->registerPreservedToken($comment);
486
+ // Put new lines before and after /*! important comments
487
+ $css = str_replace($commentIdString, "\n/*$preservedTokenId*/\n", $css);
488
+ continue;
489
+ }
490
+
491
+ // # sourceMappingURL= in the first position of the comment means sourcemap
492
+ // so push to the preserved tokens if {$this->keepSourceMapComment} is truthy.
493
+ if( $this->keepSourceMapComment && strpos($comment, '# sourceMappingURL=') === 0 ) {
494
+ $preservedTokenId = $this->registerPreservedToken($comment);
495
+ // Add new line before the sourcemap comment
496
+ $css = str_replace($commentIdString, "\n/*$preservedTokenId*/", $css);
497
+ continue;
498
+ }
499
+
500
+ // Keep empty comments after child selectors (IE7 hack)
501
+ // e.g. html >/**/ body
502
+ if( strlen($comment) === 0 && strpos($css, '>/*' . $commentId) !== false ) {
503
+ $css = str_replace($commentId, $this->registerPreservedToken(''), $css);
504
+ continue;
505
+ }
506
+
507
+ // in all other cases kill the comment
508
+ $css = str_replace($commentIdString, '', $css);
509
+ }
510
+
511
+ // Normalize whitespace again
512
+ $css = preg_replace('/ +/S', ' ', $css);
513
+
514
+ return $css;
515
+ }
516
+
517
+ /**
518
+ * Finds, minifies & preserves all rule bodies.
519
+ * @param string $css the whole stylesheet.
520
+ * @return string
521
+ */
522
+ private function processRuleBodies($css)
523
+ {
524
+ $ret = '';
525
+ $searchOffset = $substrOffset = 0;
526
+
527
+ while( ($blockStartPos = strpos($css, '{', $searchOffset)) !== false ) {
528
+ $blockEndPos = strpos($css, '}', $blockStartPos);
529
+ // When ending curly brace is missing, let's
530
+ // behave like there was one at the end of the block...
531
+ if( false === $blockEndPos ) {
532
+ $blockEndPos = strlen($css) - 1;
533
+ }
534
+ $nextBlockStartPos = strpos($css, '{', $blockStartPos + 1);
535
+ $ret .= substr($css, $substrOffset, $blockStartPos - $substrOffset);
536
+
537
+ if( $nextBlockStartPos !== false && $nextBlockStartPos < $blockEndPos ) {
538
+ $ret .= substr($css, $blockStartPos, $nextBlockStartPos - $blockStartPos);
539
+ $searchOffset = $nextBlockStartPos;
540
+ } else {
541
+ $ruleBody = substr($css, $blockStartPos + 1, $blockEndPos - $blockStartPos - 1);
542
+ $ruleBodyToken = $this->registerRuleBodyToken($this->processRuleBody($ruleBody));
543
+ $ret .= '{' . $ruleBodyToken . '}';
544
+ $searchOffset = $blockEndPos + 1;
545
+ }
546
+
547
+ $substrOffset = $searchOffset;
548
+ }
549
+
550
+ $ret .= substr($css, $substrOffset);
551
+
552
+ return $ret;
553
+ }
554
+
555
+ /**
556
+ * Compresses non-group rule bodies.
557
+ * @param string $body The rule body without curly braces
558
+ * @return string
559
+ */
560
+ private function processRuleBody($body)
561
+ {
562
+ $body = trim($body);
563
+
564
+ // Remove spaces before the things that should not have spaces before them.
565
+ $body = preg_replace('/ ([:=,)*\/;\n])/S', '$1', $body);
566
+
567
+ // Remove the spaces after the things that should not have spaces after them.
568
+ $body = preg_replace('/([:=,(*\/!;\n]) /S', '$1', $body);
569
+
570
+ // Replace multiple semi-colons in a row by a single one
571
+ $body = preg_replace('/;;+/S', ';', $body);
572
+
573
+ // Remove semicolon before closing brace except when:
574
+ // - The last property is prefixed with a `*` (lte IE7 hack) to avoid issues on Symbian S60 3.x browsers.
575
+ if( !preg_match('/\*[a-z0-9-]+:[^;]+;$/Si', $body) ) {
576
+ $body = rtrim($body, ';');
577
+ }
578
+
579
+ // Remove important comments inside a rule body (because they make no sense here).
580
+ if( strpos($body, '/*') !== false ) {
581
+ $body = preg_replace('/\n?\/\*[A-Z0-9_]+\*\/\n?/S', '', $body);
582
+ }
583
+
584
+ // Empty rule body? Exit :)
585
+ if( empty($body) ) {
586
+ return '';
587
+ }
588
+
589
+ // Shorten font-weight values
590
+ $body = preg_replace(array('/(font-weight:)bold\b/Si', '/(font-weight:)normal\b/Si'), array(
591
+ '${1}700',
592
+ '${1}400'
593
+ ), $body);
594
+
595
+ // Shorten background property
596
+ $body = preg_replace('/(background:)(?:none|transparent)( !|;|$)/Si', '${1}0 0$2', $body);
597
+
598
+ // Shorten opacity IE filter
599
+ $body = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $body);
600
+
601
+ // Shorten colors from rgb(51,102,153) to #336699, rgb(100%,0%,0%) to #ff0000 (sRGB color space)
602
+ // Shorten colors from hsl(0, 100%, 50%) to #ff0000 (sRGB color space)
603
+ // This makes it more likely that it'll get further compressed in the next step.
604
+ $body = preg_replace_callback('/(rgb|hsl)\(([0-9,.% -]+)\)(.|$)/Si', array(
605
+ $this,
606
+ 'shortenHslAndRgbToHexCallback'
607
+ ), $body);
608
+
609
+ // Shorten colors from #AABBCC to #ABC or shorter color name:
610
+ // - Look for hex colors which don't have a "=" in front of them (to avoid MSIE filters)
611
+ $body = preg_replace_callback('/(?<!=)#([0-9a-f]{3,6})( |,|\)|;|$)/Si', array(
612
+ $this,
613
+ 'shortenHexColorsCallback'
614
+ ), $body);
615
+
616
+ // Tokenize unquoted font names in order to hide them from
617
+ // color name replacements.
618
+ $body = preg_replace_callback($this->unquotedFontsRegex, array($this, 'preserveUnquotedFontTokens'), $body);
619
+
620
+ // Shorten long named colors with a shorter HEX counterpart: white -> #fff.
621
+ // Run at least 2 times to cover most cases
622
+ $body = preg_replace_callback(array($this->namedToHexColorsRegex, $this->namedToHexColorsRegex), array(
623
+ $this,
624
+ 'shortenNamedColorsCallback'
625
+ ), $body);
626
+
627
+ // Restore unquoted font tokens now after colors have been changed.
628
+ $body = $this->restoreUnquotedFontTokens($body);
629
+
630
+ // Replace positive sign from numbers before the leading space is removed.
631
+ // +1.2em to 1.2em, +.8px to .8px, +2% to 2%
632
+ $body = preg_replace('/([ :,(])\+(\.?\d+)/S', '$1$2', $body);
633
+
634
+ // shorten ms to s
635
+ $body = preg_replace_callback('/([ :,(])(-?)(\d{3,})ms/Si', function ($matches) {
636
+ return $matches[1] . $matches[2] . ((int)$matches[3] / 1000) . 's';
637
+ }, $body);
638
+
639
+ // Remove leading zeros from integer and float numbers.
640
+ // 000.6 to .6, -0.8 to -.8, 0050 to 50, -01.05 to -1.05
641
+ $body = preg_replace('/([ :,(])(-?)0+([1-9]?\.?\d+)/S', '$1$2$3', $body);
642
+
643
+ // Remove trailing zeros from float numbers.
644
+ // -6.0100em to -6.01em, .0100 to .01, 1.200px to 1.2px
645
+ $body = preg_replace('/([ :,(])(-?\d?\.\d+?)0+([^\d])/S', '$1$2$3', $body);
646
+
647
+ // Remove trailing .0 -> -9.0 to -9
648
+ $body = preg_replace('/([ :,(])(-?\d+)\.0([^\d])/S', '$1$2$3', $body);
649
+
650
+ // Replace 0 length numbers with 0
651
+ $body = preg_replace('/([ :,(])-?\.?0+([^\d])/S', '${1}0$2', $body);
652
+
653
+ // Shorten zero values for safe properties only
654
+ $body = preg_replace(array(
655
+ $this->shortenOneZeroesRegex,
656
+ $this->shortenTwoZeroesRegex,
657
+ $this->shortenThreeZeroesRegex,
658
+ $this->shortenFourZeroesRegex
659
+ ), array(
660
+ '$1$2:0',
661
+ '$1$2:$3 0',
662
+ '$1$2:$3 $4 0',
663
+ '$1$2:$3 $4 $5 0'
664
+ ), $body);
665
+
666
+ // Replace 0 0 0; or 0 0 0 0; with 0 0 for background-position property.
667
+ $body = preg_replace('/(background-position):0(?: 0){2,3}( !|;|$)/Si', '$1:0 0$2', $body);
668
+
669
+ // Shorten suitable shorthand properties with repeated values
670
+ $body = preg_replace(array(
671
+ '/(margin|padding|border-(?:width|radius)):(' . $this->numRegex . ')(?: \2)+( !|;|$)/Si',
672
+ '/(border-(?:style|color)):([#a-z0-9]+)(?: \2)+( !|;|$)/Si'
673
+ ), '$1:$2$3', $body);
674
+ $body = preg_replace(array(
675
+ '/(margin|padding|border-(?:width|radius)):' . '(' . $this->numRegex . ') (' . $this->numRegex . ') \2 \3( !|;|$)/Si',
676
+ '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) \2 \3( !|;|$)/Si'
677
+ ), '$1:$2 $3$4', $body);
678
+ $body = preg_replace(array(
679
+ '/(margin|padding|border-(?:width|radius)):' . '(' . $this->numRegex . ') (' . $this->numRegex . ') (' . $this->numRegex . ') \3( !|;|$)/Si',
680
+ '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) ([#a-z0-9]+) \3( !|;|$)/Si'
681
+ ), '$1:$2 $3 $4$5', $body);
682
+
683
+ // Lowercase some common functions that can be values
684
+ $body = preg_replace_callback('/(?:attr|blur|brightness|circle|contrast|cubic-bezier|drop-shadow|ellipse|from|grayscale|' . 'hsla?|hue-rotate|inset|invert|local|minmax|opacity|perspective|polygon|rgba?|rect|repeat|saturate|sepia|' . 'steps|to|url|var|-webkit-gradient|' . '(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?(?:calc|(?:repeating-)?(?:linear|radial)-gradient))\(/Si', array(
685
+ $this,
686
+ 'strtolowerCallback'
687
+ ), $body);
688
+
689
+ // Lowercase all uppercase properties
690
+ $body = preg_replace_callback('/(?:^|;)[A-Z-]+:/S', array($this, 'strtolowerCallback'), $body);
691
+
692
+ return $body;
693
+ }
694
+
695
+ private function preserveUnquotedFontTokens($matches)
696
+ {
697
+ return $this->registerUnquotedFontToken($matches[0]);
698
+ }
699
+
700
+ private function restoreUnquotedFontTokens($body)
701
+ {
702
+ return strtr($body, $this->unquotedFontTokens);
703
+ }
704
+
705
+ /**
706
+ * Compresses At-rules and selectors.
707
+ * @param string $css the whole stylesheet with rule bodies tokenized.
708
+ * @return string
709
+ */
710
+ private function processAtRulesAndSelectors($css)
711
+ {
712
+ $charset = '';
713
+ $imports = '';
714
+ $namespaces = '';
715
+
716
+ // Remove spaces before the things that should not have spaces before them.
717
+ $css = preg_replace('/ ([@{};>+)\]~=,\/\n])/S', '$1', $css);
718
+
719
+ // Remove the spaces after the things that should not have spaces after them.
720
+ $css = preg_replace('/([{}:;>+(\[~=,\/\n]) /S', '$1', $css);
721
+
722
+ // Shorten shortable double colon (CSS3) pseudo-elements to single colon (CSS2)
723
+ $css = preg_replace('/::(before|after|first-(?:line|letter))(\{|,)/Si', ':$1$2', $css);
724
+
725
+ // Retain space for special IE6 cases
726
+ $css = preg_replace_callback('/:first-(line|letter)(\{|,)/Si', function ($matches) {
727
+ return ':first-' . strtolower($matches[1]) . ' ' . $matches[2];
728
+ }, $css);
729
+
730
+ // Find a fraction that may used in some @media queries such as: (min-aspect-ratio: 1/1)
731
+ // Add token to add the "/" back in later
732
+ $css = preg_replace('/\(([a-z-]+):([0-9]+)\/([0-9]+)\)/Si', '($1:$2' . self::QUERY_FRACTION . '$3)', $css);
733
+
734
+ // Remove empty rule blocks up to 2 levels deep.
735
+ $css = preg_replace(array_fill(0, 2, '/(\{)[^{};\/\n]+\{\}/S'), '$1', $css);
736
+ $css = preg_replace('/[^{};\/\n]+\{\}/S', '', $css);
737
+
738
+ // Two important comments next to each other? Remove extra newline.
739
+ if( $this->keepImportantComments ) {
740
+ $css = str_replace("\n\n", "\n", $css);
741
+ }
742
+
743
+ // Restore fraction
744
+ $css = str_replace(self::QUERY_FRACTION, '/', $css);
745
+
746
+ // Lowercase some popular @directives
747
+ $css = preg_replace_callback('/(?<!\\\\)@(?:charset|document|font-face|import|(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?keyframes|media|' . 'namespace|page|supports|viewport)/Si', array(
748
+ $this,
749
+ 'strtolowerCallback'
750
+ ), $css);
751
+
752
+ // Lowercase some popular media types
753
+ $css = preg_replace_callback('/[ ,](?:all|aural|braille|handheld|print|projection|screen|tty|tv|embossed|speech)[ ,;{]/Si', array(
754
+ $this,
755
+ 'strtolowerCallback'
756
+ ), $css);
757
+
758
+ // Lowercase some common pseudo-classes & pseudo-elements
759
+ $css = preg_replace_callback('/(?<!\\\\):(?:active|after|before|checked|default|disabled|empty|enabled|first-(?:child|of-type)|' . 'focus(?:-within)?|hover|indeterminate|in-range|invalid|lang\(|last-(?:child|of-type)|left|link|not\(|' . 'nth-(?:child|of-type)\(|nth-last-(?:child|of-type)\(|only-(?:child|of-type)|optional|out-of-range|' . 'read-(?:only|write)|required|right|root|:selection|target|valid|visited)/Si', array(
760
+ $this,
761
+ 'strtolowerCallback'
762
+ ), $css);
763
+
764
+ // @charset handling
765
+ if( preg_match($this->charsetRegex, $css, $matches) ) {
766
+ // Keep the first @charset at-rule found
767
+ $charset = $matches[0];
768
+ // Delete all @charset at-rules
769
+ $css = preg_replace($this->charsetRegex, '', $css);
770
+ }
771
+
772
+ // @import handling
773
+ $css = preg_replace_callback($this->importRegex, function ($matches) use (&$imports) {
774
+ // Keep all @import at-rules found for later
775
+ $imports .= $matches[0];
776
+
777
+ // Delete all @import at-rules
778
+ return '';
779
+ }, $css);
780
+
781
+ // @namespace handling
782
+ $css = preg_replace_callback($this->namespaceRegex, function ($matches) use (&$namespaces) {
783
+ // Keep all @namespace at-rules found for later
784
+ $namespaces .= $matches[0];
785
+
786
+ // Delete all @namespace at-rules
787
+ return '';
788
+ }, $css);
789
+
790
+ // Order critical at-rules:
791
+ // 1. @charset first
792
+ // 2. @imports below @charset
793
+ // 3. @namespaces below @imports
794
+ $css = $charset . $imports . $namespaces . $css;
795
+
796
+ return $css;
797
+ }
798
+
799
+ /**
800
+ * Splits long lines after a specific column.
801
+ *
802
+ * Some source control tools don't like it when files containing lines longer
803
+ * than, say 8000 characters, are checked in. The linebreak option is used in
804
+ * that case to split long lines after a specific column.
805
+ *
806
+ * @param string $css the whole stylesheet.
807
+ * @return string
808
+ */
809
+ private function processLongLineSplitting($css)
810
+ {
811
+ if( $this->linebreakPosition > 0 ) {
812
+ $l = strlen($css);
813
+ $offset = $this->linebreakPosition;
814
+ while( preg_match('/(?<!\\\\)\}(?!\n)/S', $css, $matches, PREG_OFFSET_CAPTURE, $offset) ) {
815
+ $matchIndex = $matches[0][1];
816
+ $css = substr_replace($css, "\n", $matchIndex + 1, 0);
817
+ $offset = $matchIndex + 2 + $this->linebreakPosition;
818
+ $l += 1;
819
+ if( $offset > $l ) {
820
+ break;
821
+ }
822
+ }
823
+ }
824
+
825
+ return $css;
826
+ }
827
+
828
+ /**
829
+ * Converts hsl() & rgb() colors to HEX format.
830
+ * @param $matches
831
+ * @return string
832
+ */
833
+ private function shortenHslAndRgbToHexCallback($matches)
834
+ {
835
+ $type = $matches[1];
836
+ $values = explode(',', $matches[2]);
837
+ $terminator = $matches[3];
838
+
839
+ if( $type === 'hsl' ) {
840
+ $values = Utils::hslToRgb($values);
841
+ }
842
+
843
+ $hexColors = Utils::rgbToHex($values);
844
+
845
+ // Restore space after rgb() or hsl() function in some cases such as:
846
+ // background-image: linear-gradient(to bottom, rgb(210,180,140) 10%, rgb(255,0,0) 90%);
847
+ if( !empty($terminator) && !preg_match('/[ ,);]/S', $terminator) ) {
848
+ $terminator = ' ' . $terminator;
849
+ }
850
+
851
+ return '#' . implode('', $hexColors) . $terminator;
852
+ }
853
+
854
+ /**
855
+ * Compresses HEX color values of the form #AABBCC to #ABC or short color name.
856
+ * @param $matches
857
+ * @return string
858
+ */
859
+ private function shortenHexColorsCallback($matches)
860
+ {
861
+ $hex = $matches[1];
862
+
863
+ // Shorten suitable 6 chars HEX colors
864
+ if( strlen($hex) === 6 && preg_match('/^([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/Si', $hex, $m) ) {
865
+ $hex = $m[1] . $m[2] . $m[3];
866
+ }
867
+
868
+ // Lowercase
869
+ $hex = '#' . strtolower($hex);
870
+
871
+ // Replace Hex colors with shorter color names
872
+ $color = array_key_exists($hex, $this->hexToNamedColorsMap) ? $this->hexToNamedColorsMap[$hex] : $hex;
873
+
874
+ return $color . $matches[2];
875
+ }
876
+
877
+ /**
878
+ * Shortens all named colors with a shorter HEX counterpart for a set of safe properties
879
+ * e.g. white -> #fff
880
+ * @param array $matches
881
+ * @return string
882
+ */
883
+ private function shortenNamedColorsCallback($matches)
884
+ {
885
+ return $matches[1] . $this->namedToHexColorsMap[strtolower($matches[2])] . $matches[3];
886
+ }
887
+
888
+ /**
889
+ * Makes a string lowercase
890
+ * @param array $matches
891
+ * @return string
892
+ */
893
+ private function strtolowerCallback($matches)
894
+ {
895
+ return strtolower($matches[0]);
896
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
897
  }
components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Utils.php CHANGED
@@ -1,159 +1,154 @@
1
  <?php
2
- namespace WMAC\tubalmartin\CssMin;
3
 
4
- if( !defined('ABSPATH') ) {
5
- exit;
6
- }
7
 
8
- class Utils {
9
-
10
- /**
11
- * Clamps a number between a minimum and a maximum value.
12
- * @param int|float $n the number to clamp
13
- * @param int|float $min the lower end number allowed
14
- * @param int|float $max the higher end number allowed
15
- * @return int|float
16
- */
17
- public static function clampNumber($n, $min, $max)
18
- {
19
- return min(max($n, $min), $max);
20
- }
21
 
22
- /**
23
- * Clamps a RGB color number outside the sRGB color space
24
- * @param int|float $n the number to clamp
25
- * @return int|float
26
- */
27
- public static function clampNumberSrgb($n)
28
- {
29
- return self::clampNumber($n, 0, 255);
30
- }
31
 
32
- /**
33
- * Converts a HSL color into a RGB color
34
- * @param array $hslValues
35
- * @return array
36
- */
37
- public static function hslToRgb($hslValues)
38
- {
39
- $h = floatval($hslValues[0]);
40
- $s = floatval(str_replace('%', '', $hslValues[1]));
41
- $l = floatval(str_replace('%', '', $hslValues[2]));
42
-
43
- // Wrap and clamp, then fraction!
44
- $h = ((($h % 360) + 360) % 360) / 360;
45
- $s = self::clampNumber($s, 0, 100) / 100;
46
- $l = self::clampNumber($l, 0, 100) / 100;
47
-
48
- if( $s == 0 ) {
49
- $r = $g = $b = self::roundNumber(255 * $l);
50
- } else {
51
- $v2 = $l < 0.5
52
- ? $l * (1 + $s)
53
- : ($l + $s) - ($s * $l);
54
- $v1 = (2 * $l) - $v2;
55
- $r = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h + (1 / 3)));
56
- $g = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h));
57
- $b = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h - (1 / 3)));
58
- }
59
 
60
- return array($r, $g, $b);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  }
62
 
63
- /**
64
- * Tests and selects the correct formula for each RGB color channel
65
- * @param $v1
66
- * @param $v2
67
- * @param $vh
68
- * @return mixed
69
- */
70
- public static function hueToRgb($v1, $v2, $vh)
71
- {
72
- $vh = $vh < 0
73
- ? $vh + 1
74
- : ($vh > 1
75
- ? $vh - 1
76
- : $vh);
77
-
78
- if( $vh * 6 < 1 ) {
79
- return $v1 + ($v2 - $v1) * 6 * $vh;
80
- }
81
 
82
- if( $vh * 2 < 1 ) {
83
- return $v2;
84
- }
 
 
 
 
 
 
 
 
 
 
 
85
 
86
- if( $vh * 3 < 2 ) {
87
- return $v1 + ($v2 - $v1) * ((2 / 3) - $vh) * 6;
88
- }
89
 
90
- return $v1;
 
91
  }
92
 
93
- /**
94
- * Convert strings like "64M" or "30" to int values
95
- * @param mixed $size
96
- * @return int
97
- */
98
- public static function normalizeInt($size)
99
- {
100
- if( is_string($size) ) {
101
- $letter = substr($size, -1);
102
- $size = intval($size);
103
- switch( $letter ) {
104
- case 'M':
105
- case 'm':
106
- return (int)$size * 1048576;
107
- case 'K':
108
- case 'k':
109
- return (int)$size * 1024;
110
- case 'G':
111
- case 'g':
112
- return (int)$size * 1073741824;
113
- }
114
- }
115
 
116
- return (int)$size;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
 
119
- /**
120
- * Converts a string containing and RGB percentage value into a RGB integer value i.e. '90%' -> 229.5
121
- * @param $rgbPercentage
122
- * @return int
123
- */
124
- public static function rgbPercentageToRgbInteger($rgbPercentage)
125
- {
126
- if( strpos($rgbPercentage, '%') !== false ) {
127
- $rgbPercentage = self::roundNumber(floatval(str_replace('%', '', $rgbPercentage)) * 2.55);
128
- }
129
 
130
- return intval($rgbPercentage, 10);
 
 
 
 
 
 
 
 
131
  }
132
 
133
- /**
134
- * Converts a RGB color into a HEX color
135
- * @param array $rgbColors
136
- * @return array
137
- */
138
- public static function rgbToHex($rgbColors)
139
- {
140
- $hexColors = array();
141
-
142
- // Values outside the sRGB color space should be clipped (0-255)
143
- for($i = 0, $l = count($rgbColors); $i < $l; $i++) {
144
- $hexColors[$i] = sprintf("%02x", self::clampNumberSrgb(self::rgbPercentageToRgbInteger($rgbColors[$i])));
145
- }
146
 
147
- return $hexColors;
 
 
 
 
 
 
 
 
 
 
 
148
  }
149
 
150
- /**
151
- * Rounds a number to its closest integer
152
- * @param $n
153
- * @return int
154
- */
155
- public static function roundNumber($n)
156
- {
157
- return intval(round(floatval($n)), 10);
158
- }
 
 
159
  }
 
1
  <?php
 
2
 
3
+ namespace WMAC\tubalmartin\CssMin;
 
 
4
 
5
+ if( !defined('ABSPATH') ) {
6
+ exit;
7
+ }
 
 
 
 
 
 
 
 
 
 
8
 
9
+ class Utils {
 
 
 
 
 
 
 
 
10
 
11
+ /**
12
+ * Clamps a number between a minimum and a maximum value.
13
+ * @param int|float $n the number to clamp
14
+ * @param int|float $min the lower end number allowed
15
+ * @param int|float $max the higher end number allowed
16
+ * @return int|float
17
+ */
18
+ public static function clampNumber($n, $min, $max)
19
+ {
20
+ return min(max($n, $min), $max);
21
+ }
22
+
23
+ /**
24
+ * Clamps a RGB color number outside the sRGB color space
25
+ * @param int|float $n the number to clamp
26
+ * @return int|float
27
+ */
28
+ public static function clampNumberSrgb($n)
29
+ {
30
+ return self::clampNumber($n, 0, 255);
31
+ }
 
 
 
 
 
 
32
 
33
+ /**
34
+ * Converts a HSL color into a RGB color
35
+ * @param array $hslValues
36
+ * @return array
37
+ */
38
+ public static function hslToRgb($hslValues)
39
+ {
40
+ $h = floatval($hslValues[0]);
41
+ $s = floatval(str_replace('%', '', $hslValues[1]));
42
+ $l = floatval(str_replace('%', '', $hslValues[2]));
43
+
44
+ // Wrap and clamp, then fraction!
45
+ $h = ((($h % 360) + 360) % 360) / 360;
46
+ $s = self::clampNumber($s, 0, 100) / 100;
47
+ $l = self::clampNumber($l, 0, 100) / 100;
48
+
49
+ if( $s == 0 ) {
50
+ $r = $g = $b = self::roundNumber(255 * $l);
51
+ } else {
52
+ $v2 = $l < 0.5 ? $l * (1 + $s) : ($l + $s) - ($s * $l);
53
+ $v1 = (2 * $l) - $v2;
54
+ $r = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h + (1 / 3)));
55
+ $g = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h));
56
+ $b = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h - (1 / 3)));
57
  }
58
 
59
+ return array($r, $g, $b);
60
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
+ /**
63
+ * Tests and selects the correct formula for each RGB color channel
64
+ * @param $v1
65
+ * @param $v2
66
+ * @param $vh
67
+ * @return mixed
68
+ */
69
+ public static function hueToRgb($v1, $v2, $vh)
70
+ {
71
+ $vh = $vh < 0 ? $vh + 1 : ($vh > 1 ? $vh - 1 : $vh);
72
+
73
+ if( $vh * 6 < 1 ) {
74
+ return $v1 + ($v2 - $v1) * 6 * $vh;
75
+ }
76
 
77
+ if( $vh * 2 < 1 ) {
78
+ return $v2;
79
+ }
80
 
81
+ if( $vh * 3 < 2 ) {
82
+ return $v1 + ($v2 - $v1) * ((2 / 3) - $vh) * 6;
83
  }
84
 
85
+ return $v1;
86
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
+ /**
89
+ * Convert strings like "64M" or "30" to int values
90
+ * @param mixed $size
91
+ * @return int
92
+ */
93
+ public static function normalizeInt($size)
94
+ {
95
+ if( is_string($size) ) {
96
+ $letter = substr($size, -1);
97
+ $size = intval($size);
98
+ switch( $letter ) {
99
+ case 'M':
100
+ case 'm':
101
+ return (int)$size * 1048576;
102
+ case 'K':
103
+ case 'k':
104
+ return (int)$size * 1024;
105
+ case 'G':
106
+ case 'g':
107
+ return (int)$size * 1073741824;
108
+ }
109
  }
110
 
111
+ return (int)$size;
112
+ }
 
 
 
 
 
 
 
 
113
 
114
+ /**
115
+ * Converts a string containing and RGB percentage value into a RGB integer value i.e. '90%' -> 229.5
116
+ * @param $rgbPercentage
117
+ * @return int
118
+ */
119
+ public static function rgbPercentageToRgbInteger($rgbPercentage)
120
+ {
121
+ if( strpos($rgbPercentage, '%') !== false ) {
122
+ $rgbPercentage = self::roundNumber(floatval(str_replace('%', '', $rgbPercentage)) * 2.55);
123
  }
124
 
125
+ return intval($rgbPercentage, 10);
126
+ }
 
 
 
 
 
 
 
 
 
 
 
127
 
128
+ /**
129
+ * Converts a RGB color into a HEX color
130
+ * @param array $rgbColors
131
+ * @return array
132
+ */
133
+ public static function rgbToHex($rgbColors)
134
+ {
135
+ $hexColors = array();
136
+
137
+ // Values outside the sRGB color space should be clipped (0-255)
138
+ for($i = 0, $l = count($rgbColors); $i < $l; $i++) {
139
+ $hexColors[$i] = sprintf("%02x", self::clampNumberSrgb(self::rgbPercentageToRgbInteger($rgbColors[$i])));
140
  }
141
 
142
+ return $hexColors;
143
+ }
144
+
145
+ /**
146
+ * Rounds a number to its closest integer
147
+ * @param $n
148
+ * @return int
149
+ */
150
+ public static function roundNumber($n)
151
+ {
152
+ return intval(round(floatval($n)), 10);
153
  }
154
+ }
components/minify-and-combine/minify-and-combine.php CHANGED
@@ -8,7 +8,7 @@
8
  * Text Domain: minify-and-combine
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  /*
@@ -59,15 +59,15 @@ $wmac_plugin_info = array(
59
 
60
  // FRAMEWORK MODULES
61
  'load_factory_modules' => array(
62
- array( 'libs/factory/bootstrap', 'factory_bootstrap_445', 'admin' ),
63
- array( 'libs/factory/forms', 'factory_forms_442', 'admin' ),
64
- array( 'libs/factory/pages', 'factory_pages_444', 'admin' ),
65
- array( 'libs/factory/clearfy', 'factory_clearfy_236', 'all' ),
66
- array( 'libs/factory/adverts', 'factory_adverts_123', 'admin')
67
  )
68
  );
69
 
70
- $wmac_compatibility = new Wbcr_Factory445_Requirements( __FILE__, array_merge( $wmac_plugin_info, array(
71
  'plugin_already_activate' => defined( 'WMAC_PLUGIN_ACTIVE' ),
72
  'required_php_version' => '5.4',
73
  'required_wp_version' => '4.2.0',
8
  * Text Domain: minify-and-combine
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  /*
59
 
60
  // FRAMEWORK MODULES
61
  'load_factory_modules' => array(
62
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_446', 'admin' ),
63
+ array( 'libs/factory/forms', 'factory_forms_443', 'admin' ),
64
+ array( 'libs/factory/pages', 'factory_pages_445', 'admin' ),
65
+ array( 'libs/factory/clearfy', 'factory_clearfy_237', 'all' ),
66
+ array( 'libs/factory/adverts', 'factory_adverts_124', 'admin')
67
  )
68
  );
69
 
70
+ $wmac_compatibility = new Wbcr_Factory446_Requirements( __FILE__, array_merge( $wmac_plugin_info, array(
71
  'plugin_already_activate' => defined( 'WMAC_PLUGIN_ACTIVE' ),
72
  'required_php_version' => '5.4',
73
  'required_wp_version' => '4.2.0',
components/updates-manager/admin/activation.php CHANGED
@@ -5,7 +5,7 @@
5
  *
6
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.09.2017, Webcraftic
8
- * @see Factory445_Activator
9
  */
10
 
11
  // Exit if accessed directly
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
15
 
16
- class WUPM_Activation extends Wbcr_Factory445_Activator {
17
 
18
  /**
19
  * Runs activation actions.
5
  *
6
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
  * @copyright (c) 09.09.2017, Webcraftic
8
+ * @see Factory446_Activator
9
  */
10
 
11
  // Exit if accessed directly
13
  exit;
14
  }
15
 
16
+ class WUPM_Activation extends Wbcr_Factory446_Activator {
17
 
18
  /**
19
  * Runs activation actions.
components/updates-manager/admin/assets/js/ajax-components.js CHANGED
@@ -59,15 +59,15 @@ jQuery(function($) {
59
 
60
  if( !response || !response.success ) {
61
  if( response.data.error_message ) {
62
- $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
63
  }
64
  return false;
65
  }
66
 
67
- /*var noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Settings successfully updated', 'success');
68
 
69
  setTimeout(function() {
70
- $.wbcr_factory_clearfy_236.app.hideNotice(noticeId);
71
  }, 5000);*/
72
  },
73
  error: function(xhr, ajaxOptions, thrownError) {
@@ -75,7 +75,7 @@ jQuery(function($) {
75
  console.log(xhr.responseText);
76
  console.log(thrownError);
77
 
78
- $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
79
  }
80
  });
81
  });
59
 
60
  if( !response || !response.success ) {
61
  if( response.data.error_message ) {
62
+ $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
63
  }
64
  return false;
65
  }
66
 
67
+ /*var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Settings successfully updated', 'success');
68
 
69
  setTimeout(function() {
70
+ $.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
71
  }, 5000);*/
72
  },
73
  error: function(xhr, ajaxOptions, thrownError) {
75
  console.log(xhr.responseText);
76
  console.log(thrownError);
77
 
78
+ $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
79
  }
80
  });
81
  });
components/updates-manager/admin/boot.php CHANGED
@@ -48,7 +48,7 @@ if ( ! defined( 'LOADING_UPDATES_MANAGER_AS_ADDON' ) ) {
48
  return $page_url;
49
  }
50
 
51
- add_filter( 'wbcr_factory_pages_444_imppage_rating_widget_url', 'wbcr_upm_rating_widget_url', 10, 2 );
52
 
53
  /**
54
  * Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
48
  return $page_url;
49
  }
50
 
51
+ add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_upm_rating_widget_url', 10, 2 );
52
 
53
  /**
54
  * Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
components/updates-manager/admin/includes/class-abstract-filters.php CHANGED
@@ -14,7 +14,7 @@ abstract class WUPM_AbstractFilters {
14
  protected $is_disable_translation_updates;
15
 
16
 
17
- function __construct( Wbcr_Factory445_Plugin $plugin ) {
18
  $this->plugin = $plugin;
19
  $this->load();
20
  }
14
  protected $is_disable_translation_updates;
15
 
16
 
17
+ function __construct( Wbcr_Factory446_Plugin $plugin ) {
18
  $this->plugin = $plugin;
19
  $this->load();
20
  }
components/updates-manager/admin/pages/class-page-advanced.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
- class WUPM_AdvancedPage extends Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -66,9 +66,9 @@ class WUPM_AdvancedPage extends Wbcr_FactoryClearfy236_PageBase {
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
- * @param \Wbcr_Factory445_Plugin $plugin
70
  */
71
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
72
  $this->menu_title = __( 'Advanced', 'webcraftic-updates-manager' );
73
 
74
  parent::__construct( $plugin );
@@ -79,8 +79,8 @@ class WUPM_AdvancedPage extends Wbcr_FactoryClearfy236_PageBase {
79
  *
80
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
81
  *
82
- * @param \Wbcr_Factory445_ScriptList $scripts
83
- * @param \Wbcr_Factory445_StyleList $styles
84
  */
85
  public function assets( $scripts, $styles ) {
86
  parent::assets( $scripts, $styles );
16
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WUPM_AdvancedPage extends Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
+ * @param \Wbcr_Factory446_Plugin $plugin
70
  */
71
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
72
  $this->menu_title = __( 'Advanced', 'webcraftic-updates-manager' );
73
 
74
  parent::__construct( $plugin );
79
  *
80
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
81
  *
82
+ * @param \Wbcr_Factory446_ScriptList $scripts
83
+ * @param \Wbcr_Factory446_StyleList $styles
84
  */
85
  public function assets( $scripts, $styles ) {
86
  parent::assets( $scripts, $styles );
components/updates-manager/admin/pages/class-page-more-features.php CHANGED
@@ -16,6 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
- class WUPM_MoreFeaturesPage extends Wbcr_FactoryClearfy236_MoreFeaturesPage {
20
 
21
  }
16
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WUPM_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
20
 
21
  }
components/updates-manager/admin/pages/class-page-plugins.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
- class WUPM_PluginsPage extends Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  *{@inheritDoc}
@@ -83,9 +83,9 @@ class WUPM_PluginsPage extends Wbcr_FactoryClearfy236_PageBase {
83
  *
84
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
85
  *
86
- * @param \Wbcr_Factory445_Plugin $plugin
87
  */
88
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
89
  $this->menu_title = __( 'Plugins', 'webcraftic-updates-manager' );
90
 
91
  parent::__construct( $plugin );
@@ -121,8 +121,8 @@ class WUPM_PluginsPage extends Wbcr_FactoryClearfy236_PageBase {
121
  *
122
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
123
  *
124
- * @param \Wbcr_Factory445_ScriptList $scripts
125
- * @param \Wbcr_Factory445_StyleList $styles
126
  */
127
  public function assets( $scripts, $styles ) {
128
  parent::assets( $scripts, $styles );
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WUPM_PluginsPage extends Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  *{@inheritDoc}
83
  *
84
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
85
  *
86
+ * @param \Wbcr_Factory446_Plugin $plugin
87
  */
88
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
89
  $this->menu_title = __( 'Plugins', 'webcraftic-updates-manager' );
90
 
91
  parent::__construct( $plugin );
121
  *
122
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
123
  *
124
+ * @param \Wbcr_Factory446_ScriptList $scripts
125
+ * @param \Wbcr_Factory446_StyleList $styles
126
  */
127
  public function assets( $scripts, $styles ) {
128
  parent::assets( $scripts, $styles );
components/updates-manager/admin/pages/class-page-themes.php CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
16
  * @copyright (c) 2018 Webraftic Ltd
17
  */
18
- class WUPM_ThemesPage extends Wbcr_FactoryClearfy236_PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
@@ -85,9 +85,9 @@ class WUPM_ThemesPage extends Wbcr_FactoryClearfy236_PageBase {
85
  private $themes_update_filters = [];
86
 
87
  /**
88
- * @param Wbcr_Factory445_Plugin $plugin
89
  */
90
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
91
  $this->menu_title = __( 'Themes', 'webcraftic-updates-manager' );
92
 
93
  parent::__construct( $plugin );
@@ -123,7 +123,7 @@ class WUPM_ThemesPage extends Wbcr_FactoryClearfy236_PageBase {
123
  *
124
  * @since 1.0.0
125
  * @return void
126
- * @see FactoryPages444_AdminPage
127
  *
128
  */
129
  public function assets( $scripts, $styles ) {
15
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
16
  * @copyright (c) 2018 Webraftic Ltd
17
  */
18
+ class WUPM_ThemesPage extends Wbcr_FactoryClearfy237_PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
85
  private $themes_update_filters = [];
86
 
87
  /**
88
+ * @param Wbcr_Factory446_Plugin $plugin
89
  */
90
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
91
  $this->menu_title = __( 'Themes', 'webcraftic-updates-manager' );
92
 
93
  parent::__construct( $plugin );
123
  *
124
  * @since 1.0.0
125
  * @return void
126
+ * @see FactoryPages445_AdminPage
127
  *
128
  */
129
  public function assets( $scripts, $styles ) {
components/updates-manager/admin/pages/class-page-updates.php CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
16
  * @copyright (c) 2018 Webraftic Ltd
17
  */
18
- class WUPM_UpdatesPage extends Wbcr_FactoryClearfy236_PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
@@ -51,9 +51,9 @@ class WUPM_UpdatesPage extends Wbcr_FactoryClearfy236_PageBase {
51
  *
52
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
53
  *
54
- * @param \Wbcr_Factory445_Plugin $plugin
55
  */
56
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
57
  $this->menu_title = __( 'Updates manager', 'webcraftic-updates-manager' );
58
  $this->page_menu_short_description = __( 'Manage all site updates', 'webcraftic-updates-manager' );
59
 
@@ -86,8 +86,8 @@ class WUPM_UpdatesPage extends Wbcr_FactoryClearfy236_PageBase {
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com> *
88
  *
89
- * @param \Wbcr_Factory445_ScriptList $scripts
90
- * @param \Wbcr_Factory445_StyleList $styles
91
  */
92
  public function assets( $scripts, $styles ) {
93
  parent::assets( $scripts, $styles );
15
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
16
  * @copyright (c) 2018 Webraftic Ltd
17
  */
18
+ class WUPM_UpdatesPage extends Wbcr_FactoryClearfy237_PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
51
  *
52
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
53
  *
54
+ * @param \Wbcr_Factory446_Plugin $plugin
55
  */
56
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
57
  $this->menu_title = __( 'Updates manager', 'webcraftic-updates-manager' );
58
  $this->page_menu_short_description = __( 'Manage all site updates', 'webcraftic-updates-manager' );
59
 
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com> *
88
  *
89
+ * @param \Wbcr_Factory446_ScriptList $scripts
90
+ * @param \Wbcr_Factory446_StyleList $styles
91
  */
92
  public function assets( $scripts, $styles ) {
93
  parent::assets( $scripts, $styles );
components/updates-manager/includes/class-plugin.php CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
- class WUPM_Plugin extends Wbcr_Factory445_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory445_Plugin
18
  */
19
  private static $app;
20
 
@@ -57,7 +57,7 @@ class WUPM_Plugin extends Wbcr_Factory445_Plugin {
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
- * @return \Wbcr_Factory445_Plugin|\WUPM_Plugin
61
  */
62
  public static function app() {
63
  return self::$app;
10
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
  * @copyright (c) 19.02.2018, Webcraftic
12
  */
13
+ class WUPM_Plugin extends Wbcr_Factory446_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory446_Plugin
18
  */
19
  private static $app;
20
 
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
+ * @return \Wbcr_Factory446_Plugin|\WUPM_Plugin
61
  */
62
  public static function app() {
63
  return self::$app;
components/updates-manager/includes/classes/class-configurate-updates.php CHANGED
@@ -12,7 +12,7 @@ require_once WUPM_PLUGIN_DIR . '/admin/includes/class-plugin-filters.php';
12
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
13
  * @copyright (c) 2017 Webraftic Ltd
14
  */
15
- class WUPM_ConfigUpdates extends Wbcr_FactoryClearfy236_Configurate {
16
 
17
  public function registerActionsAndFilters() {
18
  /**
12
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
13
  * @copyright (c) 2017 Webraftic Ltd
14
  */
15
+ class WUPM_ConfigUpdates extends Wbcr_FactoryClearfy237_Configurate {
16
 
17
  public function registerActionsAndFilters() {
18
  /**
components/updates-manager/migrations/010008.php CHANGED
@@ -4,7 +4,7 @@
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
- class WUPMUpdate010008 extends Wbcr_Factory445_Update {
8
 
9
  public function install()
10
  {
4
  * Updates for altering the table used to store statistics data.
5
  * Adds new columns and renames existing ones in order to add support for the new social buttons.
6
  */
7
+ class WUPMUpdate010008 extends Wbcr_Factory446_Update {
8
 
9
  public function install()
10
  {
components/updates-manager/webcraftic-updates-manager.php CHANGED
@@ -8,7 +8,7 @@
8
  * Text Domain: webcraftic-updates-manager
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
- * Framework Version: FACTORY_445_VERSION
12
  */
13
 
14
  // Exit if accessed directly
@@ -68,15 +68,15 @@ $wupm_plugin_info = array(
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
- array('libs/factory/bootstrap', 'factory_bootstrap_445', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_442', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_444', 'admin'),
74
- array('libs/factory/clearfy', 'factory_clearfy_236', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_123', 'admin')
76
  )
77
  );
78
 
79
- $wupm_compatibility = new Wbcr_Factory445_Requirements(__FILE__, array_merge($wupm_plugin_info, array(
80
  'plugin_already_activate' => defined('WUPM_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
8
  * Text Domain: webcraftic-updates-manager
9
  * Domain Path: /languages/
10
  * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_446_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_443', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_445', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_124', 'admin')
76
  )
77
  );
78
 
79
+ $wupm_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wupm_plugin_info, array(
80
  'plugin_already_activate' => defined('WUPM_PLUGIN_ACTIVE'),
81
  'required_php_version' => '5.4',
82
  'required_wp_version' => '4.2.0',
includes/boot.php CHANGED
@@ -56,7 +56,7 @@ function wbcr_clr_admin_bar_menu($wp_admin_bar)
56
  * @since 1.1.3 - добавлен
57
  * @since 1.1.4 - является устаревшим
58
  */
59
- $menu_items = wbcr_factory_445_apply_filters_deprecated('wbcr_clearfy_admin_bar_menu_items', [$menu_items], '1.4.0', 'wbcr/clearfy/adminbar_menu_items');
60
 
61
  /**
62
  * @since 1.1.3 - добавлен
56
  * @since 1.1.3 - добавлен
57
  * @since 1.1.4 - является устаревшим
58
  */
59
+ $menu_items = wbcr_factory_446_apply_filters_deprecated('wbcr_clearfy_admin_bar_menu_items', [$menu_items], '1.4.0', 'wbcr/clearfy/adminbar_menu_items');
60
 
61
  /**
62
  * @since 1.1.3 - добавлен
includes/class.plugin.php CHANGED
@@ -12,11 +12,11 @@ if( !defined('ABSPATH') ) {
12
  exit;
13
  }
14
 
15
- class WCL_Plugin extends Wbcr_Factory445_Plugin {
16
 
17
  /**
18
  * @see self::app()
19
- * @var Wbcr_Factory445_Plugin
20
  */
21
  private static $app;
22
 
@@ -74,7 +74,7 @@ class WCL_Plugin extends Wbcr_Factory445_Plugin {
74
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
75
  * классам.
76
  *
77
- * @return \Wbcr_Factory445_Plugin|\WCL_Plugin
78
  */
79
  public static function app()
80
  {
@@ -312,7 +312,7 @@ class WCL_Plugin extends Wbcr_Factory445_Plugin {
312
  * @param $slug
313
  * param $premium
314
  *
315
- * @return \WBCR\Factory_445\Components\Install_Button
316
  */
317
  public function getInstallComponentsButton($component_type, $slug)
318
  {
@@ -325,7 +325,7 @@ class WCL_Plugin extends Wbcr_Factory445_Plugin {
325
  * @param $component_type
326
  * @param $slug
327
  *
328
- * @return \WBCR\Factory_445\Components\Delete_Button
329
  */
330
  public function getDeleteComponentsButton($component_type, $slug)
331
  {
12
  exit;
13
  }
14
 
15
+ class WCL_Plugin extends Wbcr_Factory446_Plugin {
16
 
17
  /**
18
  * @see self::app()
19
+ * @var Wbcr_Factory446_Plugin
20
  */
21
  private static $app;
22
 
74
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
75
  * классам.
76
  *
77
+ * @return \Wbcr_Factory446_Plugin|\WCL_Plugin
78
  */
79
  public static function app()
80
  {
312
  * @param $slug
313
  * param $premium
314
  *
315
+ * @return \WBCR\Factory_446\Components\Install_Button
316
  */
317
  public function getInstallComponentsButton($component_type, $slug)
318
  {
325
  * @param $component_type
326
  * @param $slug
327
  *
328
+ * @return \WBCR\Factory_446\Components\Delete_Button
329
  */
330
  public function getDeleteComponentsButton($component_type, $slug)
331
  {
includes/classes/3rd-party/boot.php CHANGED
@@ -7,7 +7,7 @@
7
  * @version 1.0
8
  */
9
 
10
- add_filter('wbcr_factory_445_form_items', function ($forms_groups, $name) {
11
 
12
  require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/class-base.php');
13
  require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/plugins/class-wp-rocket.php');
7
  * @version 1.0
8
  */
9
 
10
+ add_filter('wbcr_factory_446_form_items', function ($forms_groups, $name) {
11
 
12
  require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/class-base.php');
13
  require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/plugins/class-wp-rocket.php');
includes/classes/3rd-party/class-form-entity.php CHANGED
@@ -57,7 +57,7 @@ class Form_Entity {
57
 
58
  protected static function is_control(array $item)
59
  {
60
- return isset($item['type']) && isset(\Wbcr_FactoryForms442_Manager::$registered_controls[$item['type']]);
61
  }
62
 
63
  /**
@@ -69,7 +69,7 @@ class Form_Entity {
69
  */
70
  protected static function is_control_holder(array $item)
71
  {
72
- return isset($item['type']) && isset(\Wbcr_FactoryForms442_Manager::$registered_holders[$item['type']]);
73
  }
74
 
75
  /**
@@ -81,7 +81,7 @@ class Form_Entity {
81
  */
82
  protected static function is_custom_element(array $item)
83
  {
84
- return isset($item['type']) && isset(\Wbcr_FactoryForms442_Manager::$registered_custom_elements[$item['type']]);
85
  }
86
 
87
  public function make_control_disabled()
57
 
58
  protected static function is_control(array $item)
59
  {
60
+ return isset($item['type']) && isset(\Wbcr_FactoryForms443_Manager::$registered_controls[$item['type']]);
61
  }
62
 
63
  /**
69
  */
70
  protected static function is_control_holder(array $item)
71
  {
72
+ return isset($item['type']) && isset(\Wbcr_FactoryForms443_Manager::$registered_holders[$item['type']]);
73
  }
74
 
75
  /**
81
  */
82
  protected static function is_custom_element(array $item)
83
  {
84
+ return isset($item['type']) && isset(\Wbcr_FactoryForms443_Manager::$registered_custom_elements[$item['type']]);
85
  }
86
 
87
  public function make_control_disabled()
includes/classes/class.configurate-advanced.php CHANGED
@@ -11,7 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
14
- class WCL_ConfigAdvanced extends Wbcr_FactoryClearfy236_Configurate {
15
 
16
  /**
17
  * @param WCL_Plugin $plugin
11
  exit;
12
  }
13
 
14
+ class WCL_ConfigAdvanced extends Wbcr_FactoryClearfy237_Configurate {
15
 
16
  /**
17
  * @param WCL_Plugin $plugin
includes/classes/class.configurate-google-performance.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  exit;
13
  }
14
 
15
- class WCL_ConfigGooglePerformance extends Wbcr_FactoryClearfy236_Configurate {
16
 
17
  /**
18
  * @param WCL_Plugin $plugin
12
  exit;
13
  }
14
 
15
+ class WCL_ConfigGooglePerformance extends Wbcr_FactoryClearfy237_Configurate {
16
 
17
  /**
18
  * @param WCL_Plugin $plugin
includes/classes/class.configurate-performance.php CHANGED
@@ -12,7 +12,7 @@ if( !defined('ABSPATH') ) {
12
  exit;
13
  }
14
 
15
- class WCL_ConfigPerformance extends Wbcr_FactoryClearfy236_Configurate {
16
 
17
  /**
18
  * @param WCL_Plugin $plugin
12
  exit;
13
  }
14
 
15
+ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy237_Configurate {
16
 
17
  /**
18
  * @param WCL_Plugin $plugin
includes/classes/class.configurate-privacy.php CHANGED
@@ -9,45 +9,47 @@
9
  */
10
 
11
  // Exit if accessed directly
12
- if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
15
 
16
- class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy236_Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
20
  */
21
- public function __construct( WCL_Plugin $plugin ) {
22
- parent::__construct( $plugin );
 
23
 
24
  $this->plugin = $plugin;
25
  }
26
 
27
- public function registerActionsAndFilters() {
28
- if ( ! is_admin() ) {
29
- if ( $this->getPopulateOption( 'remove_meta_generator' ) ) {
 
30
  // Clean meta generator for Woocommerce
31
- if ( class_exists( 'WooCommerce' ) ) {
32
- remove_action( 'wp_head', 'woo_version' );
33
  }
34
 
35
  // Clean meta generator for SitePress
36
- if ( class_exists( 'SitePress' ) ) {
37
  global $sitepress;
38
- remove_action( 'wp_head', [ $sitepress, 'meta_generator_tag' ] );
39
  }
40
 
41
  // Clean meta generator for Wordpress core
42
- remove_action( 'wp_head', 'wp_generator' );
43
- add_filter( 'the_generator', '__return_empty_string' );
44
 
45
  // Clean all meta generators
46
- add_action( 'wp_head', [ $this, 'clean_meta_generators' ], 100 );
47
  }
48
 
49
- if ( $this->getPopulateOption( 'remove_html_comments' ) ) {
50
- add_action( 'wp_loaded', [ $this, 'clean_html_comments' ] );
51
  }
52
  }
53
  }
@@ -56,38 +58,43 @@ class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy236_Configurate {
56
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
57
  * @since 1.5.3
58
  */
59
- public function clean_meta_generators() {
60
- ob_start( [ $this, 'replace_meta_generators' ] );
 
61
  }
62
 
63
  /**
64
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
65
  * @since 1.0.0
66
  */
67
- public function clean_html_comments() {
68
- ob_start( [ $this, 'replace_html_comments' ] );
 
 
 
69
  }
70
 
71
  /**
72
  * Replace <meta .* name="generator"> like tags
73
  * which may contain versioning of
74
  *
75
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
76
- * @since 1.5.3
77
- *
78
  * @param $html
79
  *
80
  * @return string|string[]|null
 
 
 
81
  */
82
- public function replace_meta_generators( $html ) {
 
83
  $raw_html = $html;
84
 
85
  $pattern = '/<meta[^>]+name=["\']generator["\'][^>]+>/i';
86
- $html = preg_replace( $pattern, '', $html );
87
 
88
  // If replacement is completed with an error, user will receive a white screen.
89
  // We have to prevent it.
90
- if ( empty( $html ) ) {
91
  return $raw_html;
92
  }
93
 
@@ -101,15 +108,16 @@ class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy236_Configurate {
101
  *
102
  * @return mixed
103
  */
104
- public function replace_html_comments( $html ) {
 
105
  $raw_html = $html;
106
 
107
  //CLRF-166 issue fix bug with noindex (\s?\/?noindex)
108
- $html = preg_replace( '#<!--(?!<!|\s?ngg_resource|\s?\/?noindex)[^\[>].*?-->#s', '', $html );
109
 
110
  // If replacement is completed with an error, user will receive a white screen.
111
  // We have to prevent it.
112
- if ( empty( $html ) ) {
113
  return $raw_html;
114
  }
115
 
9
  */
10
 
11
  // Exit if accessed directly
12
+ if( !defined('ABSPATH') ) {
13
  exit;
14
  }
15
 
16
+ class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy237_Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
20
  */
21
+ public function __construct(WCL_Plugin $plugin)
22
+ {
23
+ parent::__construct($plugin);
24
 
25
  $this->plugin = $plugin;
26
  }
27
 
28
+ public function registerActionsAndFilters()
29
+ {
30
+ if( !is_admin() ) {
31
+ if( $this->getPopulateOption('remove_meta_generator') ) {
32
  // Clean meta generator for Woocommerce
33
+ if( class_exists('WooCommerce') ) {
34
+ remove_action('wp_head', 'woo_version');
35
  }
36
 
37
  // Clean meta generator for SitePress
38
+ if( class_exists('SitePress') ) {
39
  global $sitepress;
40
+ remove_action('wp_head', [$sitepress, 'meta_generator_tag']);
41
  }
42
 
43
  // Clean meta generator for Wordpress core
44
+ remove_action('wp_head', 'wp_generator');
45
+ add_filter('the_generator', '__return_empty_string');
46
 
47
  // Clean all meta generators
48
+ add_action('wp_head', [$this, 'clean_meta_generators'], 100);
49
  }
50
 
51
+ if( $this->getPopulateOption('remove_html_comments') ) {
52
+ add_action('wp_loaded', [$this, 'clean_html_comments']);
53
  }
54
  }
55
  }
58
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
59
  * @since 1.5.3
60
  */
61
+ public function clean_meta_generators()
62
+ {
63
+ ob_start([$this, 'replace_meta_generators']);
64
  }
65
 
66
  /**
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  * @since 1.0.0
69
  */
70
+ public function clean_html_comments()
71
+ {
72
+ if( !WCL_Helper::doing_rest_api() ) {
73
+ ob_start([$this, 'replace_html_comments']);
74
+ }
75
  }
76
 
77
  /**
78
  * Replace <meta .* name="generator"> like tags
79
  * which may contain versioning of
80
  *
 
 
 
81
  * @param $html
82
  *
83
  * @return string|string[]|null
84
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
85
+ * @since 1.5.3
86
+ *
87
  */
88
+ public function replace_meta_generators($html)
89
+ {
90
  $raw_html = $html;
91
 
92
  $pattern = '/<meta[^>]+name=["\']generator["\'][^>]+>/i';
93
+ $html = preg_replace($pattern, '', $html);
94
 
95
  // If replacement is completed with an error, user will receive a white screen.
96
  // We have to prevent it.
97
+ if( empty($html) ) {
98
  return $raw_html;
99
  }
100
 
108
  *
109
  * @return mixed
110
  */
111
+ public function replace_html_comments($html)
112
+ {
113
  $raw_html = $html;
114
 
115
  //CLRF-166 issue fix bug with noindex (\s?\/?noindex)
116
+ $html = preg_replace('#<!--(?!<!|\s?ngg_resource|\s?\/?noindex|\s?\/?wp:)[^\[>].*?-->#s', '', $html);
117
 
118
  // If replacement is completed with an error, user will receive a white screen.
119
  // We have to prevent it.
120
+ if( empty($html) ) {
121
  return $raw_html;
122
  }
123
 
includes/classes/class.configurate-security.php CHANGED
@@ -11,7 +11,7 @@
11
  exit;
12
  }
13
 
14
- class WCL_ConfigSecurity extends Wbcr_FactoryClearfy236_Configurate {
15
 
16
  /**
17
  * @param WCL_Plugin $plugin
11
  exit;
12
  }
13
 
14
+ class WCL_ConfigSecurity extends Wbcr_FactoryClearfy237_Configurate {
15
 
16
  /**
17
  * @param WCL_Plugin $plugin
includes/classes/class.configurate-seo.php CHANGED
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
15
 
16
- class WCL_ConfigSeo extends Wbcr_FactoryClearfy236_Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
13
  exit;
14
  }
15
 
16
+ class WCL_ConfigSeo extends Wbcr_FactoryClearfy237_Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
includes/helpers.php CHANGED
@@ -14,6 +14,20 @@ if( !defined('ABSPATH') ) {
14
 
15
  class WCL_Helper {
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  /**
18
  * Should show a page about the plugin or not.
19
  *
14
 
15
  class WCL_Helper {
16
 
17
+ public static function array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
18
+ {
19
+ return WbcrFactoryClearfy237_Helpers::arrayMergeInsert($arr, $inserted, $position, $key);
20
+ }
21
+
22
+ /**
23
+ * Flushes as many page cache plugin's caches as possible.
24
+ */
25
+ public static function flush_cache()
26
+ {
27
+ // Flush cache for all cache plugins
28
+ WbcrFactoryClearfy237_Helpers::flushPageCache();
29
+ }
30
+
31
  /**
32
  * Should show a page about the plugin or not.
33
  *
libs/factory/adverts/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Adverts_123\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -12,7 +12,7 @@ use WBCR\Factory_Adverts_123\Base;
12
  * @package factory-ad-inserter
13
  * @copyright (c) 2019, Webcraftic Ltd
14
  *
15
- * @version 1.2.3
16
  */
17
 
18
  // Exit if accessed directly
@@ -20,31 +20,31 @@ if( !defined('ABSPATH') ) {
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
  });
1
  <?php
2
 
3
+ use WBCR\Factory_Adverts_124\Base;
4
 
5
  /**
6
  * Factory Adverts
12
  * @package factory-ad-inserter
13
  * @copyright (c) 2019, Webcraftic Ltd
14
  *
15
+ * @version 1.2.4
16
  */
17
 
18
  // Exit if accessed directly
20
  exit;
21
  }
22
 
23
+ if( defined('FACTORY_ADVERTS_124_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
+ define('FACTORY_ADVERTS_124_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
+ define( 'FACTORY_ADVERTS_124_VERSION', '1.2.4' );
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
+ load_plugin_textdomain('wbcr_factory_adverts_124', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
+ define('FACTORY_ADVERTS_124_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
+ define('FACTORY_ADVERTS_124_URL', plugins_url(null, __FILE__));
41
 
42
+ require_once(FACTORY_ADVERTS_124_DIR . '/includes/class-rest-request.php');
43
+ require_once(FACTORY_ADVERTS_124_DIR . '/includes/class-base.php');
44
 
45
  /**
46
+ * @param Wbcr_Factory446_Plugin $plugin
47
  */
48
+ add_action('wbcr_factory_adverts_124_plugin_created', function ($plugin) {
49
+ $plugin->set_adverts_manager("WBCR\Factory_Adverts_124\Base");
50
  });
libs/factory/adverts/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_123;
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_Factory445_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_123\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_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,7 +257,7 @@ class Base {
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
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_124;
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_Factory446_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_124\Creative_Motion_API
57
  */
58
  private $api;
59
 
82
  *
83
  * @since 1.0.0 Added
84
  *
85
+ * @param \Wbcr_Factory446_Plugin $plugin
86
  */
87
+ public function __construct( \Wbcr_Factory446_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_124_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_123;
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_Factory445_Plugin
39
  */
40
  private $plugin;
41
 
@@ -46,10 +46,10 @@ class Dashboard_Widget {
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;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_124;
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_Factory446_Plugin
39
  */
40
  private $plugin;
41
 
46
  *
47
  * @since 1.0.0 Added
48
  *
49
+ * @param \Wbcr_Factory446_Plugin $plugin
50
  * @param string $content
51
  */
52
+ public function __construct( \Wbcr_Factory446_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_123;
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_Factory445_Plugin
69
  */
70
  private $plugin;
71
 
@@ -75,11 +75,11 @@ class Creative_Motion_API {
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
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_124;
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_Factory446_Plugin
69
  */
70
  private $plugin;
71
 
75
  *
76
  * Variable initialization.
77
  *
78
+ * @param \Wbcr_Factory446_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
81
  */
82
+ public function __construct(\Wbcr_Factory446_Plugin $plugin)
83
  {
84
  $this->plugin = $plugin;
85
  }
libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.mo → wbcr_factory_adverts_124-ru_RU.mo} RENAMED
File without changes
libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.po → wbcr_factory_adverts_124-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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-446 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-446 .factory-accordion-item{display:none}.factory-bootstrap-446 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .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-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-446 .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-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .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-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-446 .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-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .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-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,4 +22,4 @@
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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 article,.factory-bootstrap-446 aside,.factory-bootstrap-446 details,.factory-bootstrap-446 figcaption,.factory-bootstrap-446 figure,.factory-bootstrap-446 footer,.factory-bootstrap-446 header,.factory-bootstrap-446 hgroup,.factory-bootstrap-446 main,.factory-bootstrap-446 nav,.factory-bootstrap-446 section,.factory-bootstrap-446 summary{display:block}.factory-bootstrap-446 audio,.factory-bootstrap-446 canvas,.factory-bootstrap-446 video{display:inline-block}.factory-bootstrap-446 audio:not([controls]){display:none;height:0}.factory-bootstrap-446 [hidden],.factory-bootstrap-446 template{display:none}.factory-bootstrap-446 body{margin:0}.factory-bootstrap-446 a{background:0 0}.factory-bootstrap-446 a:focus{outline:thin dotted}.factory-bootstrap-446 a:active,.factory-bootstrap-446 a:hover{outline:0}.factory-bootstrap-446 h1{margin:.67em 0}.factory-bootstrap-446 b,.factory-bootstrap-446 strong{font-weight:700}.factory-bootstrap-446 dfn{font-style:italic}.factory-bootstrap-446 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-446 mark{color:#000;background:#ff0}.factory-bootstrap-446 code,.factory-bootstrap-446 kbd,.factory-bootstrap-446 pre,.factory-bootstrap-446 samp{font-size:1em}.factory-bootstrap-446 pre{white-space:pre-wrap}.factory-bootstrap-446 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-446 sub,.factory-bootstrap-446 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-446 sup{top:-.5em}.factory-bootstrap-446 sub{bottom:-.25em}.factory-bootstrap-446 img{border:0}.factory-bootstrap-446 svg:not(:root){overflow:hidden}.factory-bootstrap-446 figure{margin:0}.factory-bootstrap-446 button,.factory-bootstrap-446 input,.factory-bootstrap-446 select,.factory-bootstrap-446 textarea{margin:0}.factory-bootstrap-446 button,.factory-bootstrap-446 select{text-transform:none}.factory-bootstrap-446 select{padding-right:4px!important}.factory-bootstrap-446 button,.factory-bootstrap-446 input[type=reset],.factory-bootstrap-446 input[type=submit],html .factory-bootstrap-446 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-446 button[disabled],html .factory-bootstrap-446 input[disabled]{cursor:default}.factory-bootstrap-446 input[type=checkbox],.factory-bootstrap-446 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-446 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-446 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-446 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-446 button::-moz-focus-inner,.factory-bootstrap-446 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-446 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-446 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-446 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-446 a,.factory-bootstrap-446 a:visited{text-decoration:underline}.factory-bootstrap-446 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-446 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-446 a[href^="javascript:"]:after,.factory-bootstrap-446 a[href^="#"]:after{content:""}.factory-bootstrap-446 blockquote,.factory-bootstrap-446 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-446 thead{display:table-header-group}.factory-bootstrap-446 img,.factory-bootstrap-446 tr{page-break-inside:avoid}.factory-bootstrap-446 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-446 h2,.factory-bootstrap-446 h3,.factory-bootstrap-446 p{orphans:3;widows:3}.factory-bootstrap-446 h2,.factory-bootstrap-446 h3{page-break-after:avoid}.factory-bootstrap-446 select{background:#fff!important}.factory-bootstrap-446 .navbar{display:none}.factory-bootstrap-446 .table td,.factory-bootstrap-446 .table th{background-color:#fff!important}.factory-bootstrap-446 .btn>.caret,.factory-bootstrap-446 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-446 .label{border:1px solid #000}.factory-bootstrap-446 .table{border-collapse:collapse!important}.factory-bootstrap-446 .table-bordered td,.factory-bootstrap-446 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-446 *,.factory-bootstrap-446 :after,.factory-bootstrap-446 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-446{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-446 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-446 button,.factory-bootstrap-446 input,.factory-bootstrap-446 select,.factory-bootstrap-446 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-446 img{vertical-align:middle}.factory-bootstrap-446 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-446 .img-rounded{border-radius:6px}.factory-bootstrap-446 .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-446 .img-circle{border-radius:50%}.factory-bootstrap-446 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-446 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-446 .h1,.factory-bootstrap-446 .h2,.factory-bootstrap-446 .h3,.factory-bootstrap-446 .h4,.factory-bootstrap-446 .h5,.factory-bootstrap-446 .h6,.factory-bootstrap-446 h1,.factory-bootstrap-446 h2,.factory-bootstrap-446 h3,.factory-bootstrap-446 h4,.factory-bootstrap-446 h5,.factory-bootstrap-446 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-446 .h1 .small,.factory-bootstrap-446 .h1 small,.factory-bootstrap-446 .h2 .small,.factory-bootstrap-446 .h2 small,.factory-bootstrap-446 .h3 .small,.factory-bootstrap-446 .h3 small,.factory-bootstrap-446 .h4 .small,.factory-bootstrap-446 .h4 small,.factory-bootstrap-446 .h5 .small,.factory-bootstrap-446 .h5 small,.factory-bootstrap-446 .h6 .small,.factory-bootstrap-446 .h6 small,.factory-bootstrap-446 h1 .small,.factory-bootstrap-446 h1 small,.factory-bootstrap-446 h2 .small,.factory-bootstrap-446 h2 small,.factory-bootstrap-446 h3 .small,.factory-bootstrap-446 h3 small,.factory-bootstrap-446 h4 .small,.factory-bootstrap-446 h4 small,.factory-bootstrap-446 h5 .small,.factory-bootstrap-446 h5 small,.factory-bootstrap-446 h6 .small,.factory-bootstrap-446 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-446 h1,.factory-bootstrap-446 h2,.factory-bootstrap-446 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-446 h1 .small,.factory-bootstrap-446 h1 small,.factory-bootstrap-446 h2 .small,.factory-bootstrap-446 h2 small,.factory-bootstrap-446 h3 .small,.factory-bootstrap-446 h3 small{font-size:65%}.factory-bootstrap-446 h4,.factory-bootstrap-446 h5,.factory-bootstrap-446 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-446 h4 .small,.factory-bootstrap-446 h4 small,.factory-bootstrap-446 h5 .small,.factory-bootstrap-446 h5 small,.factory-bootstrap-446 h6 .small,.factory-bootstrap-446 h6 small{font-size:75%}.factory-bootstrap-446 .h1,.factory-bootstrap-446 h1{font-size:36px}.factory-bootstrap-446 .h2,.factory-bootstrap-446 h2{font-size:30px}.factory-bootstrap-446 .h3,.factory-bootstrap-446 h3{font-size:24px}.factory-bootstrap-446 .h4,.factory-bootstrap-446 h4{font-size:18px}.factory-bootstrap-446 .h5,.factory-bootstrap-446 h5{font-size:14px}.factory-bootstrap-446 .h6,.factory-bootstrap-446 h6{font-size:12px}.factory-bootstrap-446 p{margin:0 0 10px}.factory-bootstrap-446 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-446 .small,.factory-bootstrap-446 small{font-size:85%}.factory-bootstrap-446 cite{font-style:normal}.factory-bootstrap-446 .text-muted{color:#999}.factory-bootstrap-446 .text-primary{color:#428bca}.factory-bootstrap-446 .text-primary:hover{color:#3071a9}.factory-bootstrap-446 .text-warning{color:#8a6d3b}.factory-bootstrap-446 .text-warning:hover{color:#66512c}.factory-bootstrap-446 .text-danger{color:#a94442}.factory-bootstrap-446 .text-danger:hover{color:#843534}.factory-bootstrap-446 .text-success{color:#3c763d}.factory-bootstrap-446 .text-success:hover{color:#2b542c}.factory-bootstrap-446 .text-info{color:#31708f}.factory-bootstrap-446 .text-info:hover{color:#245269}.factory-bootstrap-446 .text-left{text-align:left}.factory-bootstrap-446 .text-right{text-align:right}.factory-bootstrap-446 .text-center{text-align:center}.factory-bootstrap-446 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-446 ol,.factory-bootstrap-446 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-446 ol ol,.factory-bootstrap-446 ol ul,.factory-bootstrap-446 ul ol,.factory-bootstrap-446 ul ul{margin-bottom:0}.factory-bootstrap-446 .list-inline,.factory-bootstrap-446 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-446 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-446 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-446 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-446 dd,.factory-bootstrap-446 dt{line-height:1.428571429}.factory-bootstrap-446 dt{font-weight:700}.factory-bootstrap-446 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-446 abbr[data-original-title],.factory-bootstrap-446 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-446 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-446 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-446 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-446 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-446 blockquote .small,.factory-bootstrap-446 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-446 blockquote .small:before,.factory-bootstrap-446 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-446 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-446 blockquote.pull-right .small,.factory-bootstrap-446 blockquote.pull-right p,.factory-bootstrap-446 blockquote.pull-right small{text-align:right}.factory-bootstrap-446 blockquote.pull-right .small:before,.factory-bootstrap-446 blockquote.pull-right small:before{content:''}.factory-bootstrap-446 blockquote.pull-right .small:after,.factory-bootstrap-446 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-446 blockquote:after,.factory-bootstrap-446 blockquote:before{content:""}.factory-bootstrap-446 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-446 code,.factory-bootstrap-446 kbd,.factory-bootstrap-446 pre,.factory-bootstrap-446 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-446 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-446 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-446 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-446 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-446 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-446 .container:after,.factory-bootstrap-446 .container:before{display:table;content:" "}.factory-bootstrap-446 .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-446 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-446 .row:after,.factory-bootstrap-446 .row:before{display:table;content:" "}.factory-bootstrap-446 .row:after{clear:both}.factory-bootstrap-446 .col-lg-1,.factory-bootstrap-446 .col-lg-10,.factory-bootstrap-446 .col-lg-11,.factory-bootstrap-446 .col-lg-12,.factory-bootstrap-446 .col-lg-2,.factory-bootstrap-446 .col-lg-3,.factory-bootstrap-446 .col-lg-4,.factory-bootstrap-446 .col-lg-5,.factory-bootstrap-446 .col-lg-6,.factory-bootstrap-446 .col-lg-7,.factory-bootstrap-446 .col-lg-8,.factory-bootstrap-446 .col-lg-9,.factory-bootstrap-446 .col-md-1,.factory-bootstrap-446 .col-md-10,.factory-bootstrap-446 .col-md-11,.factory-bootstrap-446 .col-md-12,.factory-bootstrap-446 .col-md-2,.factory-bootstrap-446 .col-md-3,.factory-bootstrap-446 .col-md-4,.factory-bootstrap-446 .col-md-5,.factory-bootstrap-446 .col-md-6,.factory-bootstrap-446 .col-md-7,.factory-bootstrap-446 .col-md-8,.factory-bootstrap-446 .col-md-9,.factory-bootstrap-446 .col-sm-1,.factory-bootstrap-446 .col-sm-10,.factory-bootstrap-446 .col-sm-11,.factory-bootstrap-446 .col-sm-12,.factory-bootstrap-446 .col-sm-2,.factory-bootstrap-446 .col-sm-3,.factory-bootstrap-446 .col-sm-4,.factory-bootstrap-446 .col-sm-5,.factory-bootstrap-446 .col-sm-6,.factory-bootstrap-446 .col-sm-7,.factory-bootstrap-446 .col-sm-8,.factory-bootstrap-446 .col-sm-9,.factory-bootstrap-446 .col-xs-1,.factory-bootstrap-446 .col-xs-10,.factory-bootstrap-446 .col-xs-11,.factory-bootstrap-446 .col-xs-12,.factory-bootstrap-446 .col-xs-2,.factory-bootstrap-446 .col-xs-3,.factory-bootstrap-446 .col-xs-4,.factory-bootstrap-446 .col-xs-5,.factory-bootstrap-446 .col-xs-6,.factory-bootstrap-446 .col-xs-7,.factory-bootstrap-446 .col-xs-8,.factory-bootstrap-446 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-446 .col-xs-1,.factory-bootstrap-446 .col-xs-10,.factory-bootstrap-446 .col-xs-11,.factory-bootstrap-446 .col-xs-12,.factory-bootstrap-446 .col-xs-2,.factory-bootstrap-446 .col-xs-3,.factory-bootstrap-446 .col-xs-4,.factory-bootstrap-446 .col-xs-5,.factory-bootstrap-446 .col-xs-6,.factory-bootstrap-446 .col-xs-7,.factory-bootstrap-446 .col-xs-8,.factory-bootstrap-446 .col-xs-9{float:left}.factory-bootstrap-446 .col-xs-12{width:100%}.factory-bootstrap-446 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-446 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-446 .col-xs-9{width:75%}.factory-bootstrap-446 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-446 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-446 .col-xs-6{width:50%}.factory-bootstrap-446 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-446 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-446 .col-xs-3{width:25%}.factory-bootstrap-446 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-446 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-446 .col-xs-pull-12{right:100%}.factory-bootstrap-446 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-446 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-446 .col-xs-pull-9{right:75%}.factory-bootstrap-446 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-446 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-446 .col-xs-pull-6{right:50%}.factory-bootstrap-446 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-446 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-446 .col-xs-pull-3{right:25%}.factory-bootstrap-446 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-446 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-446 .col-xs-pull-0{right:0}.factory-bootstrap-446 .col-xs-push-12{left:100%}.factory-bootstrap-446 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-446 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-446 .col-xs-push-9{left:75%}.factory-bootstrap-446 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-446 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-446 .col-xs-push-6{left:50%}.factory-bootstrap-446 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-446 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-446 .col-xs-push-3{left:25%}.factory-bootstrap-446 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-446 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-446 .col-xs-push-0{left:0}.factory-bootstrap-446 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-446 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-446 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-446 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-446 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-446 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-446 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-446 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-446 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-446 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-446 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-446 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-446 .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-446 table{max-width:100%;background-color:transparent}.factory-bootstrap-446 th{text-align:left}.factory-bootstrap-446 .table{width:100%;margin-bottom:20px}.factory-bootstrap-446 .table>tbody>tr>td,.factory-bootstrap-446 .table>tbody>tr>th,.factory-bootstrap-446 .table>tfoot>tr>td,.factory-bootstrap-446 .table>tfoot>tr>th,.factory-bootstrap-446 .table>thead>tr>td,.factory-bootstrap-446 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-446 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-446 .table>caption+thead>tr:first-child>td,.factory-bootstrap-446 .table>caption+thead>tr:first-child>th,.factory-bootstrap-446 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-446 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-446 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-446 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-446 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-446 .table .table{background-color:#fff}.factory-bootstrap-446 .table-condensed>tbody>tr>td,.factory-bootstrap-446 .table-condensed>tbody>tr>th,.factory-bootstrap-446 .table-condensed>tfoot>tr>td,.factory-bootstrap-446 .table-condensed>tfoot>tr>th,.factory-bootstrap-446 .table-condensed>thead>tr>td,.factory-bootstrap-446 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-446 .table-bordered,.factory-bootstrap-446 .table-bordered>tbody>tr>td,.factory-bootstrap-446 .table-bordered>tbody>tr>th,.factory-bootstrap-446 .table-bordered>tfoot>tr>td,.factory-bootstrap-446 .table-bordered>tfoot>tr>th,.factory-bootstrap-446 .table-bordered>thead>tr>td,.factory-bootstrap-446 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-446 .table-bordered>thead>tr>td,.factory-bootstrap-446 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-446 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-446 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-446 .table-hover>tbody>tr:hover>td,.factory-bootstrap-446 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-446 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-446 table td[class*=col-],.factory-bootstrap-446 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-446 .table>tbody>.active>td,.factory-bootstrap-446 .table>tbody>.active>th,.factory-bootstrap-446 .table>tbody>tr>.active,.factory-bootstrap-446 .table>tfoot>.active>td,.factory-bootstrap-446 .table>tfoot>.active>th,.factory-bootstrap-446 .table>tfoot>tr>.active,.factory-bootstrap-446 .table>thead>.active>td,.factory-bootstrap-446 .table>thead>.active>th,.factory-bootstrap-446 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-446 .table-hover>tbody>.active:hover>td,.factory-bootstrap-446 .table-hover>tbody>.active:hover>th,.factory-bootstrap-446 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-446 .table>tbody>.success>td,.factory-bootstrap-446 .table>tbody>.success>th,.factory-bootstrap-446 .table>tbody>tr>.success,.factory-bootstrap-446 .table>tfoot>.success>td,.factory-bootstrap-446 .table>tfoot>.success>th,.factory-bootstrap-446 .table>tfoot>tr>.success,.factory-bootstrap-446 .table>thead>.success>td,.factory-bootstrap-446 .table>thead>.success>th,.factory-bootstrap-446 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-446 .table-hover>tbody>.success:hover>td,.factory-bootstrap-446 .table-hover>tbody>.success:hover>th,.factory-bootstrap-446 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-446 .table>tbody>.danger>td,.factory-bootstrap-446 .table>tbody>.danger>th,.factory-bootstrap-446 .table>tbody>tr>.danger,.factory-bootstrap-446 .table>tfoot>.danger>td,.factory-bootstrap-446 .table>tfoot>.danger>th,.factory-bootstrap-446 .table>tfoot>tr>.danger,.factory-bootstrap-446 .table>thead>.danger>td,.factory-bootstrap-446 .table>thead>.danger>th,.factory-bootstrap-446 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-446 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-446 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-446 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-446 .table>tbody>.warning>td,.factory-bootstrap-446 .table>tbody>.warning>th,.factory-bootstrap-446 .table>tbody>tr>.warning,.factory-bootstrap-446 .table>tfoot>.warning>td,.factory-bootstrap-446 .table>tfoot>.warning>th,.factory-bootstrap-446 .table>tfoot>tr>.warning,.factory-bootstrap-446 .table>thead>.warning>td,.factory-bootstrap-446 .table>thead>.warning>th,.factory-bootstrap-446 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-446 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-446 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-446 .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-446 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-446 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-446 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-446 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-446 input[type=checkbox],.factory-bootstrap-446 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-446 input[type=file]{display:block}.factory-bootstrap-446 select[multiple],.factory-bootstrap-446 select[size]{height:auto}.factory-bootstrap-446 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-446 input[type=checkbox]:focus,.factory-bootstrap-446 input[type=file]:focus,.factory-bootstrap-446 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-446 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-446 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-446 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-446 .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-446 .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-446 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-446 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-446 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-446 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-446 .form-control[disabled],.factory-bootstrap-446 .form-control[readonly],.factory-bootstrap-446 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-446 textarea.form-control{height:auto}.factory-bootstrap-446 .form-group{margin-bottom:15px}.factory-bootstrap-446 .checkbox,.factory-bootstrap-446 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-446 .checkbox label,.factory-bootstrap-446 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-446 .checkbox input[type=checkbox],.factory-bootstrap-446 .checkbox-inline input[type=checkbox],.factory-bootstrap-446 .radio input[type=radio],.factory-bootstrap-446 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-446 .checkbox+.checkbox,.factory-bootstrap-446 .radio+.radio{margin-top:-5px}.factory-bootstrap-446 .checkbox-inline,.factory-bootstrap-446 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-446 .checkbox-inline+.checkbox-inline,.factory-bootstrap-446 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-446 .checkbox-inline[disabled],.factory-bootstrap-446 .checkbox[disabled],.factory-bootstrap-446 .radio-inline[disabled],.factory-bootstrap-446 .radio[disabled],.factory-bootstrap-446 fieldset[disabled] .checkbox,.factory-bootstrap-446 fieldset[disabled] .checkbox-inline,.factory-bootstrap-446 fieldset[disabled] .radio,.factory-bootstrap-446 fieldset[disabled] .radio-inline,.factory-bootstrap-446 fieldset[disabled] input[type=checkbox],.factory-bootstrap-446 fieldset[disabled] input[type=radio],.factory-bootstrap-446 input[type=checkbox][disabled],.factory-bootstrap-446 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-446 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-446 textarea.input-sm{height:auto}.factory-bootstrap-446 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-446 textarea.input-lg{height:auto}.factory-bootstrap-446 .has-warning .checkbox,.factory-bootstrap-446 .has-warning .checkbox-inline,.factory-bootstrap-446 .has-warning .control-label,.factory-bootstrap-446 .has-warning .help-block,.factory-bootstrap-446 .has-warning .radio,.factory-bootstrap-446 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-446 .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-446 .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-446 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-446 .has-error .checkbox,.factory-bootstrap-446 .has-error .checkbox-inline,.factory-bootstrap-446 .has-error .control-label,.factory-bootstrap-446 .has-error .help-block,.factory-bootstrap-446 .has-error .radio,.factory-bootstrap-446 .has-error .radio-inline{color:#a94442}.factory-bootstrap-446 .controls{display:block}.factory-bootstrap-446 .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-446 .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-446 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-446 .has-success .checkbox,.factory-bootstrap-446 .has-success .checkbox-inline,.factory-bootstrap-446 .has-success .control-label,.factory-bootstrap-446 .has-success .help-block,.factory-bootstrap-446 .has-success .radio,.factory-bootstrap-446 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-446 .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-446 .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-446 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-446 .form-control-static{margin-bottom:0}.factory-bootstrap-446 .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-446 .form-horizontal .checkbox,.factory-bootstrap-446 .form-horizontal .checkbox-inline,.factory-bootstrap-446 .form-horizontal .control-label,.factory-bootstrap-446 .form-horizontal .radio,.factory-bootstrap-446 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-446 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-446 .form-horizontal .checkbox,.factory-bootstrap-446 .form-horizontal .radio{min-height:27px}.factory-bootstrap-446 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-446 .form-horizontal .form-group:after,.factory-bootstrap-446 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-446 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-446 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-446 .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-446 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-446 .btn{text-decoration:none}.factory-bootstrap-446 .btn:focus,.factory-bootstrap-446 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-446 .btn.disabled,.factory-bootstrap-446 .btn[disabled],.factory-bootstrap-446 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active,.factory-bootstrap-446 .btn-default:focus,.factory-bootstrap-446 .btn-default:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-446 .btn-default.disabled,.factory-bootstrap-446 .btn-default.disabled.active,.factory-bootstrap-446 .btn-default.disabled:active,.factory-bootstrap-446 .btn-default.disabled:focus,.factory-bootstrap-446 .btn-default.disabled:hover,.factory-bootstrap-446 .btn-default[disabled],.factory-bootstrap-446 .btn-default[disabled].active,.factory-bootstrap-446 .btn-default[disabled]:active,.factory-bootstrap-446 .btn-default[disabled]:focus,.factory-bootstrap-446 .btn-default[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-default,.factory-bootstrap-446 fieldset[disabled] .btn-default.active,.factory-bootstrap-446 fieldset[disabled] .btn-default:active,.factory-bootstrap-446 fieldset[disabled] .btn-default:focus,.factory-bootstrap-446 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-446 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active,.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-446 .btn-primary.disabled,.factory-bootstrap-446 .btn-primary.disabled.active,.factory-bootstrap-446 .btn-primary.disabled:active,.factory-bootstrap-446 .btn-primary.disabled:focus,.factory-bootstrap-446 .btn-primary.disabled:hover,.factory-bootstrap-446 .btn-primary[disabled],.factory-bootstrap-446 .btn-primary[disabled].active,.factory-bootstrap-446 .btn-primary[disabled]:active,.factory-bootstrap-446 .btn-primary[disabled]:focus,.factory-bootstrap-446 .btn-primary[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-primary,.factory-bootstrap-446 fieldset[disabled] .btn-primary.active,.factory-bootstrap-446 fieldset[disabled] .btn-primary:active,.factory-bootstrap-446 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-446 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-446 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-446 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .btn-warning:active,.factory-bootstrap-446 .btn-warning:focus,.factory-bootstrap-446 .btn-warning:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .btn-warning:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-446 .btn-warning.disabled,.factory-bootstrap-446 .btn-warning.disabled.active,.factory-bootstrap-446 .btn-warning.disabled:active,.factory-bootstrap-446 .btn-warning.disabled:focus,.factory-bootstrap-446 .btn-warning.disabled:hover,.factory-bootstrap-446 .btn-warning[disabled],.factory-bootstrap-446 .btn-warning[disabled].active,.factory-bootstrap-446 .btn-warning[disabled]:active,.factory-bootstrap-446 .btn-warning[disabled]:focus,.factory-bootstrap-446 .btn-warning[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-warning,.factory-bootstrap-446 fieldset[disabled] .btn-warning.active,.factory-bootstrap-446 fieldset[disabled] .btn-warning:active,.factory-bootstrap-446 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-446 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-446 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-446 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active,.factory-bootstrap-446 .btn-success:focus,.factory-bootstrap-446 .btn-success:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-446 .btn-success.disabled,.factory-bootstrap-446 .btn-success.disabled.active,.factory-bootstrap-446 .btn-success.disabled:active,.factory-bootstrap-446 .btn-success.disabled:focus,.factory-bootstrap-446 .btn-success.disabled:hover,.factory-bootstrap-446 .btn-success[disabled],.factory-bootstrap-446 .btn-success[disabled].active,.factory-bootstrap-446 .btn-success[disabled]:active,.factory-bootstrap-446 .btn-success[disabled]:focus,.factory-bootstrap-446 .btn-success[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-success,.factory-bootstrap-446 fieldset[disabled] .btn-success.active,.factory-bootstrap-446 fieldset[disabled] .btn-success:active,.factory-bootstrap-446 fieldset[disabled] .btn-success:focus,.factory-bootstrap-446 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-446 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-446 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active,.factory-bootstrap-446 .btn-info:focus,.factory-bootstrap-446 .btn-info:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-446 .btn-info.disabled,.factory-bootstrap-446 .btn-info.disabled.active,.factory-bootstrap-446 .btn-info.disabled:active,.factory-bootstrap-446 .btn-info.disabled:focus,.factory-bootstrap-446 .btn-info.disabled:hover,.factory-bootstrap-446 .btn-info[disabled],.factory-bootstrap-446 .btn-info[disabled].active,.factory-bootstrap-446 .btn-info[disabled]:active,.factory-bootstrap-446 .btn-info[disabled]:focus,.factory-bootstrap-446 .btn-info[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-info,.factory-bootstrap-446 fieldset[disabled] .btn-info.active,.factory-bootstrap-446 fieldset[disabled] .btn-info:active,.factory-bootstrap-446 fieldset[disabled] .btn-info:focus,.factory-bootstrap-446 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-446 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-446 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-446 .btn-link,.factory-bootstrap-446 .btn-link:active,.factory-bootstrap-446 .btn-link[disabled],.factory-bootstrap-446 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-446 .btn-link,.factory-bootstrap-446 .btn-link:active,.factory-bootstrap-446 .btn-link:focus,.factory-bootstrap-446 .btn-link:hover{border-color:transparent}.factory-bootstrap-446 .btn-link:focus,.factory-bootstrap-446 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-446 .btn-link[disabled]:focus,.factory-bootstrap-446 .btn-link[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-link:focus,.factory-bootstrap-446 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-446 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-446 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-446 input[type=button].btn-block,.factory-bootstrap-446 input[type=reset].btn-block,.factory-bootstrap-446 input[type=submit].btn-block{width:100%}.factory-bootstrap-446 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-446 .fade.in{opacity:1}.factory-bootstrap-446 .collapse{display:none}.factory-bootstrap-446 .collapse.in{display:block}.factory-bootstrap-446 .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-446 .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-446 .glyphicon:empty{width:1em}.factory-bootstrap-446 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-446 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-446 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-446 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-446 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-446 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-446 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-446 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-446 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-446 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-446 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-446 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-446 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-446 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-446 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-446 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-446 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-446 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-446 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-446 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-446 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-446 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-446 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-446 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-446 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-446 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-446 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-446 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-446 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-446 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-446 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-446 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-446 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-446 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-446 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-446 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-446 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-446 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-446 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-446 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-446 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-446 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-446 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-446 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-446 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-446 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-446 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-446 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-446 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-446 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-446 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-446 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-446 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-446 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-446 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-446 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-446 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-446 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-446 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-446 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-446 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-446 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-446 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-446 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-446 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-446 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-446 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-446 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-446 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-446 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-446 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-446 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-446 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-446 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-446 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-446 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-446 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-446 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-446 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-446 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-446 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-446 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-446 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-446 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-446 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-446 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-446 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-446 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-446 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-446 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-446 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-446 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-446 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-446 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-446 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-446 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-446 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-446 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-446 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-446 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-446 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-446 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-446 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-446 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-446 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-446 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-446 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-446 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-446 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-446 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-446 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-446 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-446 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-446 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-446 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-446 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-446 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-446 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-446 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-446 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-446 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-446 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-446 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-446 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-446 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-446 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-446 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-446 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-446 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-446 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-446 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-446 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-446 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-446 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-446 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-446 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-446 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-446 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-446 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-446 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-446 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-446 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-446 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-446 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-446 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-446 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-446 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-446 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-446 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-446 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-446 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-446 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-446 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-446 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-446 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-446 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-446 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-446 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-446 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-446 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-446 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-446 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-446 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-446 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-446 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-446 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-446 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-446 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-446 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-446 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-446 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-446 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-446 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-446 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-446 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-446 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-446 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-446 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-446 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-446 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-446 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-446 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-446 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-446 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-446 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-446 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-446 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-446 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-446 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-446 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-446 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-446 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-446 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-446 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-446 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-446 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-446 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-446 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-446 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-446 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-446 .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-446 .dropdown{position:relative}.factory-bootstrap-446 .dropdown-toggle:focus{outline:0}.factory-bootstrap-446 .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-446 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-446 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-446 .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-446 .dropdown-menu>li>a:focus,.factory-bootstrap-446 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-446 .dropdown-menu>.active>a,.factory-bootstrap-446 .dropdown-menu>.active>a:focus,.factory-bootstrap-446 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-446 .dropdown-menu>.disabled>a,.factory-bootstrap-446 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-446 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-446 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-446 .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-446 .open>.dropdown-menu{display:block}.factory-bootstrap-446 .open>a{outline:0}.factory-bootstrap-446 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-446 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-446 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-446 .dropup .caret,.factory-bootstrap-446 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-446 .dropup .dropdown-menu,.factory-bootstrap-446 .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-446 .btn-group,.factory-bootstrap-446 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-446 .btn-group-vertical>.btn,.factory-bootstrap-446 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-446 .btn-group-vertical>.btn.active,.factory-bootstrap-446 .btn-group-vertical>.btn:active,.factory-bootstrap-446 .btn-group-vertical>.btn:focus,.factory-bootstrap-446 .btn-group-vertical>.btn:hover,.factory-bootstrap-446 .btn-group>.btn.active,.factory-bootstrap-446 .btn-group>.btn:active,.factory-bootstrap-446 .btn-group>.btn:focus,.factory-bootstrap-446 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-446 .btn-group-vertical>.btn:focus,.factory-bootstrap-446 .btn-group>.btn:focus{outline:0}.factory-bootstrap-446 .btn-group .btn+.btn,.factory-bootstrap-446 .btn-group .btn+.btn-group,.factory-bootstrap-446 .btn-group .btn-group+.btn,.factory-bootstrap-446 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-446 .btn-toolbar:after,.factory-bootstrap-446 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-446 .btn-toolbar:after{clear:both}.factory-bootstrap-446 .btn-toolbar .btn-group{float:left}.factory-bootstrap-446 .btn-toolbar>.btn+.btn,.factory-bootstrap-446 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-446 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-446 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-446 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-446 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-446 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-446 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-446 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .btn-group>.btn-group{float:left}.factory-bootstrap-446 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-446 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-446 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-446 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .btn-group .dropdown-toggle:active,.factory-bootstrap-446 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-446 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-446 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-446 .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-446 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-446 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-446 .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-446 .btn .caret{margin-left:0}.factory-bootstrap-446 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-446 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-446 .btn-group-vertical>.btn,.factory-bootstrap-446 .btn-group-vertical>.btn-group,.factory-bootstrap-446 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-446 .btn-group-vertical>.btn-group:after,.factory-bootstrap-446 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-446 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-446 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-446 .btn-group-vertical>.btn+.btn,.factory-bootstrap-446 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-446 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-446 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-446 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-446 .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-446 .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-446 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-446 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-446 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-446 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-446 .btn-group-justified>.btn,.factory-bootstrap-446 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-446 .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-446 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-446 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-446 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-446 .input-group-lg>.form-control,.factory-bootstrap-446 .input-group-lg>.input-group-addon,.factory-bootstrap-446 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 select.input-group-lg>.form-control,.factory-bootstrap-446 select.input-group-lg>.input-group-addon,.factory-bootstrap-446 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-446 textarea.input-group-lg>.form-control,.factory-bootstrap-446 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-446 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-446 .input-group-sm>.form-control,.factory-bootstrap-446 .input-group-sm>.input-group-addon,.factory-bootstrap-446 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 select.input-group-sm>.form-control,.factory-bootstrap-446 select.input-group-sm>.input-group-addon,.factory-bootstrap-446 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-446 textarea.input-group-sm>.form-control,.factory-bootstrap-446 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-446 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-446 .input-group .form-control,.factory-bootstrap-446 .input-group-addon,.factory-bootstrap-446 .input-group-btn{display:table-cell}.factory-bootstrap-446 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-446 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-446 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-446 .input-group-addon,.factory-bootstrap-446 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-446 .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-446 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-446 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-446 .input-group-addon input[type=checkbox],.factory-bootstrap-446 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-446 .input-group .form-control:first-child,.factory-bootstrap-446 .input-group-addon:first-child,.factory-bootstrap-446 .input-group-btn:first-child>.btn,.factory-bootstrap-446 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-446 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-446 .input-group-addon:first-child{border-right:0}.factory-bootstrap-446 .input-group .form-control:last-child,.factory-bootstrap-446 .input-group-addon:last-child,.factory-bootstrap-446 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-446 .input-group-btn:last-child>.btn,.factory-bootstrap-446 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .input-group-addon:last-child{border-left:0}.factory-bootstrap-446 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-446 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-446 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-446 .input-group-btn>.btn{position:relative}.factory-bootstrap-446 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-446 .input-group-btn>.btn:active,.factory-bootstrap-446 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-446 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-446 .nav:after,.factory-bootstrap-446 .nav:before{display:table;content:" "}.factory-bootstrap-446 .nav:after{clear:both}.factory-bootstrap-446 .nav>li{position:relative;display:block}.factory-bootstrap-446 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-446 .nav>li>a:focus,.factory-bootstrap-446 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-446 .nav>li.disabled>a{color:#999}.factory-bootstrap-446 .nav>li.disabled>a:focus,.factory-bootstrap-446 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-446 .nav .open>a,.factory-bootstrap-446 .nav .open>a:focus,.factory-bootstrap-446 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-446 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-446 .nav>li>a>img{max-width:none}.factory-bootstrap-446 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-446 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-446 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-446 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-446 .nav-tabs>li.active>a,.factory-bootstrap-446 .nav-tabs>li.active>a:focus,.factory-bootstrap-446 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-446 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-446 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-446 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-446 .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-446 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-446 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-446 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-446 .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-446 .nav-pills>li{float:left}.factory-bootstrap-446 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-446 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-446 .nav-pills>li.active>a,.factory-bootstrap-446 .nav-pills>li.active>a:focus,.factory-bootstrap-446 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-446 .nav-stacked>li{float:none}.factory-bootstrap-446 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-446 .nav-justified{width:100%}.factory-bootstrap-446 .nav-justified>li{float:none}.factory-bootstrap-446 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-446 .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-446 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-446 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-446 .nav-tabs-justified>.active>a,.factory-bootstrap-446 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-446 .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-446 .tab-content>.tab-pane{display:none}.factory-bootstrap-446 .tab-content>.active{display:block}.factory-bootstrap-446 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-446 .navbar:after,.factory-bootstrap-446 .navbar:before{display:table;content:" "}.factory-bootstrap-446 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-446 .navbar-header:after,.factory-bootstrap-446 .navbar-header:before{display:table;content:" "}.factory-bootstrap-446 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-446 .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-446 .navbar-collapse:after,.factory-bootstrap-446 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-446 .navbar-collapse:after{clear:both}.factory-bootstrap-446 .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-446 .container>.navbar-collapse,.factory-bootstrap-446 .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-446 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-446 .navbar-fixed-bottom,.factory-bootstrap-446 .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-446 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-446 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-446 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-446 .navbar-brand:focus,.factory-bootstrap-446 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-446 .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-446 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-446 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-446 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-446 .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-446 .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-446 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-446 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-446 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-446 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-446 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-446 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-446 .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-446 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-446 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-446 .navbar-default .navbar-brand:focus,.factory-bootstrap-446 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-446 .navbar-default .navbar-nav>li>a,.factory-bootstrap-446 .navbar-default .navbar-text{color:#777}.factory-bootstrap-446 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-446 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-446 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-446 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-446 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-446 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-446 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-446 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-446 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-446 .navbar-default .navbar-toggle:focus,.factory-bootstrap-446 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-446 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-446 .navbar-default .navbar-collapse,.factory-bootstrap-446 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-446 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-446 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-446 .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-446 .navbar-default .navbar-link{color:#777}.factory-bootstrap-446 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-446 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-446 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-446 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-446 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-446 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-446 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-446 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-446 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-446 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-446 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-446 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-446 .navbar-inverse .navbar-collapse,.factory-bootstrap-446 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-446 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-446 .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-446 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-446 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-446 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-446 .breadcrumb>li{display:inline-block}.factory-bootstrap-446 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-446 .breadcrumb>.active{color:#999}.factory-bootstrap-446 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-446 .pagination>li{display:inline}.factory-bootstrap-446 .pagination>li>a,.factory-bootstrap-446 .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-446 .pagination>li:first-child>a,.factory-bootstrap-446 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-446 .pagination>li:last-child>a,.factory-bootstrap-446 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-446 .pagination>li>a:focus,.factory-bootstrap-446 .pagination>li>a:hover,.factory-bootstrap-446 .pagination>li>span:focus,.factory-bootstrap-446 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-446 .pagination>.disabled>a,.factory-bootstrap-446 .pagination>.disabled>a:focus,.factory-bootstrap-446 .pagination>.disabled>a:hover,.factory-bootstrap-446 .pagination>.disabled>span,.factory-bootstrap-446 .pagination>.disabled>span:focus,.factory-bootstrap-446 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-446 .pagination-lg>li>a,.factory-bootstrap-446 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-446 .pagination-lg>li:first-child>a,.factory-bootstrap-446 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-446 .pagination-lg>li:last-child>a,.factory-bootstrap-446 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-446 .pagination-sm>li>a,.factory-bootstrap-446 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-446 .pagination-sm>li:first-child>a,.factory-bootstrap-446 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-446 .pagination-sm>li:last-child>a,.factory-bootstrap-446 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-446 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-446 .pager:after,.factory-bootstrap-446 .pager:before{display:table;content:" "}.factory-bootstrap-446 .pager:after{clear:both}.factory-bootstrap-446 .pager li{display:inline}.factory-bootstrap-446 .pager li>a,.factory-bootstrap-446 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-446 .pager li>a:focus,.factory-bootstrap-446 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-446 .pager .next>a,.factory-bootstrap-446 .pager .next>span{float:right}.factory-bootstrap-446 .pager .previous>a,.factory-bootstrap-446 .pager .previous>span{float:left}.factory-bootstrap-446 .pager .disabled>a,.factory-bootstrap-446 .pager .disabled>a:focus,.factory-bootstrap-446 .pager .disabled>a:hover,.factory-bootstrap-446 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-446 .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-446 .label[href]:focus,.factory-bootstrap-446 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-446 .label:empty{display:none}.factory-bootstrap-446 .btn .label{position:relative;top:-1px}.factory-bootstrap-446 .label-default{background-color:#999}.factory-bootstrap-446 .label-default[href]:focus,.factory-bootstrap-446 .label-default[href]:hover{background-color:gray}.factory-bootstrap-446 .label-primary{background-color:#428bca}.factory-bootstrap-446 .label-primary[href]:focus,.factory-bootstrap-446 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-446 .label-success{background-color:#5cb85c}.factory-bootstrap-446 .label-success[href]:focus,.factory-bootstrap-446 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-446 .label-info{background-color:#5bc0de}.factory-bootstrap-446 .label-info[href]:focus,.factory-bootstrap-446 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-446 .label-warning{background-color:#f0ad4e}.factory-bootstrap-446 .label-warning[href]:focus,.factory-bootstrap-446 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-446 .label-danger{background-color:#d9534f}.factory-bootstrap-446 .label-danger[href]:focus,.factory-bootstrap-446 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-446 .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-446 .badge:empty{display:none}.factory-bootstrap-446 .btn .badge{position:relative;top:-1px}.factory-bootstrap-446 a.badge:focus,.factory-bootstrap-446 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-446 .nav-pills>.active>a>.badge,.factory-bootstrap-446 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-446 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-446 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-446 .jumbotron .h1,.factory-bootstrap-446 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-446 .jumbotron p{line-height:1.4}.factory-bootstrap-446 .container .jumbotron{border-radius:6px}.factory-bootstrap-446 .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-446 .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-446 .thumbnail a>img,.factory-bootstrap-446 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-446 a.thumbnail.active,.factory-bootstrap-446 a.thumbnail:focus,.factory-bootstrap-446 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-446 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-446 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-446 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-446 .alert .alert-link{font-weight:700}.factory-bootstrap-446 .alert>p,.factory-bootstrap-446 .alert>ul{margin-bottom:0}.factory-bootstrap-446 .alert>p+p{margin-top:5px}.factory-bootstrap-446 .alert-dismissable{padding-right:35px}.factory-bootstrap-446 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-446 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-446 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-446 .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-446 .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-446 .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-446 .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-446 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-446 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-446 .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-446 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-446 .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-446 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-446 .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-446 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-446 .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-446 .media,.factory-bootstrap-446 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-446 .media,.factory-bootstrap-446 .media .media{margin-top:15px}.factory-bootstrap-446 .media:first-child{margin-top:0}.factory-bootstrap-446 .media-object{display:block}.factory-bootstrap-446 .media-heading{margin:0 0 5px}.factory-bootstrap-446 .media>.pull-left{margin-right:10px}.factory-bootstrap-446 .media>.pull-right{margin-left:10px}.factory-bootstrap-446 .media-list{padding-left:0;list-style:none}.factory-bootstrap-446 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-446 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-446 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-446 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-446 .list-group-item>.badge{float:right}.factory-bootstrap-446 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-446 a.list-group-item{color:#555}.factory-bootstrap-446 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-446 a.list-group-item:focus,.factory-bootstrap-446 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-446 a.list-group-item.active,.factory-bootstrap-446 a.list-group-item.active:focus,.factory-bootstrap-446 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-446 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-446 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-446 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-446 a.list-group-item.active .list-group-item-text,.factory-bootstrap-446 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-446 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-446 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-446 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-446 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-446 .panel-body{padding:15px}.factory-bootstrap-446 .panel-body:after,.factory-bootstrap-446 .panel-body:before{display:table;content:" "}.factory-bootstrap-446 .panel-body:after{clear:both}.factory-bootstrap-446 .panel>.list-group{margin-bottom:0}.factory-bootstrap-446 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-446 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-446 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-446 .panel>.table,.factory-bootstrap-446 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-446 .panel>.panel-body+.table,.factory-bootstrap-446 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-446 .panel>.table>tbody:first-child td,.factory-bootstrap-446 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-446 .panel>.table-bordered,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-446 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-446 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-446 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-446 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-446 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-446 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-446 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-446 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-446 .panel-title>a{color:inherit}.factory-bootstrap-446 .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-446 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-446 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-446 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-446 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-446 .panel-group .panel-footer{border-top:0}.factory-bootstrap-446 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-446 .panel-default{border-color:#ddd}.factory-bootstrap-446 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-446 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-446 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-446 .panel-primary{border-color:#428bca}.factory-bootstrap-446 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-446 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-446 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-446 .panel-success{border-color:#d6e9c6}.factory-bootstrap-446 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-446 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-446 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-446 .panel-warning{border-color:#faebcc}.factory-bootstrap-446 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-446 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-446 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-446 .panel-danger{border-color:#ebccd1}.factory-bootstrap-446 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-446 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-446 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-446 .panel-info{border-color:#bce8f1}.factory-bootstrap-446 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-446 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-446 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-446 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-446 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-446 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-446 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-446 .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-446 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-446 .close:focus,.factory-bootstrap-446 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-446 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-446 .modal-open{overflow:hidden}.factory-bootstrap-446 .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-446 .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-446 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-446 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-446 .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-446 .modal-backdrop,.factory-bootstrap-446-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-446 .modal-backdrop.fade,.factory-bootstrap-446-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-446 .modal-backdrop.in,.factory-bootstrap-446-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-446 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-446 .modal-header .close{margin-top:-2px}.factory-bootstrap-446 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-446 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-446 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-446 .modal-footer:after,.factory-bootstrap-446 .modal-footer:before{display:table;content:" "}.factory-bootstrap-446 .modal-footer:after{clear:both}.factory-bootstrap-446 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-446 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-446 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-446 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-446 .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-446 .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-446 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-446 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-446 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-446 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-446 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-446 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-446 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-446 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-446 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-446 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-446 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-446 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-446 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-446 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-446 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-446 .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-446 .popover.top{margin-top:-10px}.factory-bootstrap-446 .popover.right{margin-left:10px}.factory-bootstrap-446 .popover.bottom{margin-top:10px}.factory-bootstrap-446 .popover.left{margin-left:-10px}.factory-bootstrap-446 .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-446 .popover-content{padding:9px 14px}.factory-bootstrap-446 .popover .arrow,.factory-bootstrap-446 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-446 .popover .arrow{border-width:11px}.factory-bootstrap-446 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-446 .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-446 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-446 .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-446 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-446 .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-446 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-446 .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-446 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-446 .carousel{position:relative}.factory-bootstrap-446 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-446 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-446 .carousel-inner>.item>a>img,.factory-bootstrap-446 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-446 .carousel-inner>.active,.factory-bootstrap-446 .carousel-inner>.next,.factory-bootstrap-446 .carousel-inner>.prev{display:block}.factory-bootstrap-446 .carousel-inner>.active{left:0}.factory-bootstrap-446 .carousel-inner>.next,.factory-bootstrap-446 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-446 .carousel-inner>.next{left:100%}.factory-bootstrap-446 .carousel-inner>.prev{left:-100%}.factory-bootstrap-446 .carousel-inner>.next.left,.factory-bootstrap-446 .carousel-inner>.prev.right{left:0}.factory-bootstrap-446 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-446 .carousel-inner>.active.right{left:100%}.factory-bootstrap-446 .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-446 .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-446 .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-446 .carousel-control:focus,.factory-bootstrap-446 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-446 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-446 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-446 .carousel-control .icon-next,.factory-bootstrap-446 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-446 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-446 .carousel-control .icon-prev{left:50%}.factory-bootstrap-446 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-446 .carousel-control .icon-next{right:50%}.factory-bootstrap-446 .carousel-control .icon-next,.factory-bootstrap-446 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-446 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-446 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-446 .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-446 .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-446 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-446 .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-446 .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-446 .clearfix:after,.factory-bootstrap-446 .clearfix:before{display:table;content:" "}.factory-bootstrap-446 .clearfix:after{clear:both}.factory-bootstrap-446 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-446 .pull-right{float:right!important}.factory-bootstrap-446 .pull-left{float:left!important}.factory-bootstrap-446 .hide{display:none!important}.factory-bootstrap-446 .show{display:block!important}.factory-bootstrap-446 .invisible{visibility:hidden}.factory-bootstrap-446 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-446 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-446 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-446 .visible-lg,.factory-bootstrap-446 .visible-md,.factory-bootstrap-446 .visible-sm,.factory-bootstrap-446 .visible-xs,.factory-bootstrap-446 td.visible-lg,.factory-bootstrap-446 td.visible-md,.factory-bootstrap-446 td.visible-sm,.factory-bootstrap-446 td.visible-xs,.factory-bootstrap-446 th.visible-lg,.factory-bootstrap-446 th.visible-md,.factory-bootstrap-446 th.visible-sm,.factory-bootstrap-446 th.visible-xs,.factory-bootstrap-446 tr.visible-lg,.factory-bootstrap-446 tr.visible-md,.factory-bootstrap-446 tr.visible-sm,.factory-bootstrap-446 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-446 .hidden-xs{display:block!important}.factory-bootstrap-446 table.hidden-xs{display:table}.factory-bootstrap-446 tr.hidden-xs{display:table-row!important}.factory-bootstrap-446 td.hidden-xs,.factory-bootstrap-446 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-446 .hidden-sm{display:block!important}.factory-bootstrap-446 table.hidden-sm{display:table}.factory-bootstrap-446 tr.hidden-sm{display:table-row!important}.factory-bootstrap-446 td.hidden-sm,.factory-bootstrap-446 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-446 .hidden-md{display:block!important}.factory-bootstrap-446 table.hidden-md{display:table}.factory-bootstrap-446 tr.hidden-md{display:table-row!important}.factory-bootstrap-446 td.hidden-md,.factory-bootstrap-446 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-446 .hidden-lg{display:block!important}.factory-bootstrap-446 table.hidden-lg{display:table}.factory-bootstrap-446 tr.hidden-lg{display:table-row!important}.factory-bootstrap-446 td.hidden-lg,.factory-bootstrap-446 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-446 .hidden-lg.hidden-xs,.factory-bootstrap-446 td.hidden-lg.hidden-xs,.factory-bootstrap-446 th.hidden-lg.hidden-xs,.factory-bootstrap-446 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-446 .hidden-lg.hidden-sm,.factory-bootstrap-446 td.hidden-lg.hidden-sm,.factory-bootstrap-446 th.hidden-lg.hidden-sm,.factory-bootstrap-446 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-446 .hidden-lg.hidden-md,.factory-bootstrap-446 td.hidden-lg.hidden-md,.factory-bootstrap-446 th.hidden-lg.hidden-md,.factory-bootstrap-446 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-446 .hidden-lg,.factory-bootstrap-446 td.hidden-lg,.factory-bootstrap-446 th.hidden-lg,.factory-bootstrap-446 tr.hidden-lg{display:none!important}}.factory-bootstrap-446 .visible-print,.factory-bootstrap-446 td.visible-print,.factory-bootstrap-446 th.visible-print,.factory-bootstrap-446 tr.visible-print{display:none!important}@media print{.factory-bootstrap-446 .visible-print{display:block!important}.factory-bootstrap-446 table.visible-print{display:table}.factory-bootstrap-446 tr.visible-print{display:table-row!important}.factory-bootstrap-446 td.visible-print,.factory-bootstrap-446 th.visible-print{display:table-cell!important}.factory-bootstrap-446 .hidden-print,.factory-bootstrap-446 td.hidden-print,.factory-bootstrap-446 th.hidden-print,.factory-bootstrap-446 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-446 .btn-danger,.factory-bootstrap-446 .btn-default,.factory-bootstrap-446 .btn-info,.factory-bootstrap-446 .btn-primary,.factory-bootstrap-446 .btn-success,.factory-bootstrap-446 .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-446 .btn-danger.active,.factory-bootstrap-446 .btn-danger:active,.factory-bootstrap-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active,.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active,.factory-bootstrap-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active,.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active,.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .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-446 .btn.active,.factory-bootstrap-446 .btn:active{background-image:none}.factory-bootstrap-446 .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-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-446 .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-446 .btn-gold:focus,.factory-bootstrap-446 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-446 .btn-gold.active,.factory-bootstrap-446 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-446 .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-446 .btn-success:focus,.factory-bootstrap-446 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-446 .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-446 .btn-warning:focus,.factory-bootstrap-446 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-446 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-446 .btn-danger.active,.factory-bootstrap-446 .btn-danger:active,.factory-bootstrap-446 .btn-danger:focus,.factory-bootstrap-446 .btn-danger:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-446 .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-446 .btn-info:focus,.factory-bootstrap-446 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-446 .img-thumbnail,.factory-bootstrap-446 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-446 .dropdown-menu>li>a:focus,.factory-bootstrap-446 .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-446 .dropdown-menu>.active>a,.factory-bootstrap-446 .dropdown-menu>.active>a:focus,.factory-bootstrap-446 .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-446 .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-446 .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-446 .navbar-brand,.factory-bootstrap-446 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-446 .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-446 .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-446 .navbar-inverse .navbar-brand,.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-446 .navbar-fixed-bottom,.factory-bootstrap-446 .navbar-fixed-top,.factory-bootstrap-446 .navbar-static-top{border-radius:0}.factory-bootstrap-446 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-446 .alert .actions{padding-top:10px}.factory-bootstrap-446 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-446 .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-446 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-446 .alert-normal,.factory-bootstrap-446 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-446 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-446 .alert-danger a:not(.btn),.factory-bootstrap-446 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-446 .list-group-item.active,.factory-bootstrap-446 .list-group-item.active:focus,.factory-bootstrap-446 .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-446 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-446 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-446 .factory-hidden{display:none}.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .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-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-446 .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-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-446 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-446 .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-446 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-446 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-446 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-446 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-446 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .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-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-446 .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-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .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-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-446 .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-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .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-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-446 .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-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .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-445 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .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-446 .btn-primary:focus,.factory-bootstrap-446 .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-446 .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-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-446 .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-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ #side-sortables .factory-bootstrap-446 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-446 .factory-checkbox-disabled button,.factory-bootstrap-446 .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-446 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-446 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-446 .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-446 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-446 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-446 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-446 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-446 .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-446 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-446 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-446 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-446 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-446 .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-446 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-446 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-446 .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-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}
8
  */
9
 
10
 
11
+ .factory-bootstrap-446 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-446 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-446 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-446 .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-446 .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.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);
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.factoryBootstrap446_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.factoryBootstrap446_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.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);
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.factoryBootstrap446_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.factoryBootstrap446_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-446 .factory-checkbox.factory-buttons-way").factoryBootstrap446_checkboxControl(),a(".factory-bootstrap-446 .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.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);
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.factoryBootstrap446_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.factoryBootstrap446_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-446 .factory-dropdown").factoryBootstrap446_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.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);
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.factoryBootstrap446_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.factoryBootstrap446_listControl.Constructor=b,a(function(){a(".factory-bootstrap-446 .factory-list").factoryBootstrap446_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.factoryBootstrap445_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-445 .factory-multiple-textbox-group").factoryBootstrap445_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.factoryBootstrap446_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-446 .factory-multiple-textbox-group").factoryBootstrap446_MultipleTextboxControl()})}(jQuery);
libs/factory/bootstrap/boot.php CHANGED
@@ -19,27 +19,27 @@ if( !is_admin() ) {
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
 
19
  return;
20
  }
21
 
22
+ if( defined('FACTORY_BOOTSTRAP_446_LOADED') ) {
23
  return;
24
  }
25
 
26
+ define( 'FACTORY_BOOTSTRAP_446_VERSION', '4.4.6' );
27
+ define( 'FACTORY_BOOTSTRAP_446_LOADED', true );
28
 
29
  if( !defined('FACTORY_FLAT_ADMIN') ) {
30
  define('FACTORY_FLAT_ADMIN', true);
31
  }
32
 
33
+ define('FACTORY_BOOTSTRAP_446_DIR', dirname(__FILE__));
34
+ define('FACTORY_BOOTSTRAP_446_URL', plugins_url(null, __FILE__));
35
 
36
+ require_once(FACTORY_BOOTSTRAP_446_DIR . '/includes/functions.php');
37
 
38
  /**
39
+ * @param Wbcr_Factory446_Plugin $plugin
40
  */
41
+ add_action('wbcr_factory_bootstrap_446_plugin_created', function ($plugin) {
42
+ $manager = new Wbcr_FactoryBootstrap446_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_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,7 +51,7 @@ class Wbcr_FactoryBootstrap445_Manager {
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,8 +111,8 @@ class Wbcr_FactoryBootstrap445_Manager {
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,8 +156,8 @@ class Wbcr_FactoryBootstrap445_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_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,7 +184,7 @@ class Wbcr_FactoryBootstrap445_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_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,9 +192,9 @@ class Wbcr_FactoryBootstrap445_Manager {
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
  }
20
  *
21
  * @since 3.2.0
22
  */
23
+ class Wbcr_FactoryBootstrap446_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
+ * @var Wbcr_Factory446_Plugin
30
  */
31
  public $plugin;
32
 
51
  *
52
  * @since 1.0.0
53
  */
54
+ public function __construct( Wbcr_Factory446_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_446_bootstrap_enqueue_scripts', $hook );
115
+ do_action( 'wbcr_factory_446_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_446_DIR . '/assets/cache/';
160
+ $cache_dir_url = FACTORY_BOOTSTRAP_446_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_446_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_446_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_446_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
198
  }
199
  $is_first = false;
200
  }
libs/factory/clearfy/assets/css/clearfy-base.css CHANGED
@@ -8,7 +8,7 @@
8
  #WBCR {
9
  /* subscribe widget */
10
  }
11
- #WBCR .wbcr-factory-pages-444-impressive-page-template .factory-checkbox.wbcr-factory-clearfy-icon-pro:after {
12
  display: inline-block;
13
  position: relative;
14
  content: 'PRO';
@@ -26,18 +26,18 @@
26
  right: auto;
27
  z-index: 11;
28
  }
29
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion {
30
  padding: 30px 80px;
31
  }
32
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion h3 {
33
  margin: 0 0 20px;
34
  }
35
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion .wbcr-factory-inner-contanier {
36
  border: 2px dashed #8bc34a;
37
  background: #fff;
38
  padding: 20px;
39
  }
40
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion .wbcr-factory-activate-premium {
41
  display: inline-block;
42
  cursor: pointer;
43
  line-height: 16px;
@@ -56,16 +56,16 @@
56
  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
57
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
58
  }
59
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion .wbcr-factory-activate-premium:active {
60
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
61
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
62
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
63
  }
64
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion .wbcr-factory-activate-premium:focus {
65
  outline: none;
66
  border: 0;
67
  }
68
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion .wbcr-factory-purchase-premium {
69
  display: inline-block;
70
  cursor: pointer;
71
  line-height: 16px;
@@ -84,22 +84,22 @@
84
  -moz-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
85
  -webkit-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
86
  }
87
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion .wbcr-factory-purchase-premium:active {
88
  box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
89
  -moz-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
90
  -webkit-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
91
  }
92
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-suggetion .wbcr-factory-purchase-premium:focus {
93
  outline: none;
94
  border: 0;
95
  }
96
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion {
97
  background: #fff;
98
  color: #353535;
99
  font-weight: 600;
100
  border: 2px dashed #8bc34a;
101
  }
102
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion h3 {
103
  margin: 0 0 20px;
104
  padding: 10px 0;
105
  text-align: center;
@@ -110,16 +110,16 @@
110
  vertical-align: middle;
111
  text-transform: uppercase;
112
  }
113
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion ul {
114
  position: relative;
115
  margin-bottom: 20px;
116
  }
117
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion ul li {
118
  font-size: 15px;
119
  padding: 7px;
120
  padding-left: 20px;
121
  }
122
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion ul li:before {
123
  content: " ";
124
  display: inline-block;
125
  width: 0.4em;
@@ -133,7 +133,7 @@
133
  -o-transform: rotate(45deg);
134
  transform: rotate(45deg);
135
  }
136
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion .wbcr-factory-purchase-premium {
137
  display: block;
138
  cursor: pointer;
139
  line-height: 16px;
@@ -152,12 +152,12 @@
152
  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
153
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
154
  }
155
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion .wbcr-factory-purchase-premium:active {
156
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
157
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
158
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
159
  }
160
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion .wbcr-factory-purchase-premium:focus {
161
  outline: none;
162
  border: 0;
163
  }
@@ -220,34 +220,34 @@
220
  font-size: 12px;
221
  }
222
  @media screen and (max-width: 1550px) {
223
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-clearfy-236-multisite-pro-suggetion {
224
  padding: 10px 80px;
225
  }
226
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion {
227
  padding: 10px;
228
  }
229
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion h3 {
230
  margin: 0 0 20px;
231
  padding: 10px 0;
232
  font-size: 13px;
233
  font-weight: 600;
234
  }
235
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion ul {
236
  margin-bottom: 20px;
237
  }
238
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion ul li {
239
  font-size: 13px;
240
  padding: 2px;
241
  padding-left: 10px;
242
  }
243
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion ul li:before {
244
  width: 0.4em;
245
  height: 0.7em;
246
  border-width: 0 0.2em 0.2em 0;
247
  left: 0;
248
  margin-right: 10px;
249
  }
250
- #WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-236-pro-suggettion .wbcr-factory-purchase-premium {
251
  font-weight: 700;
252
  line-height: 16px;
253
  font-size: 12px;
8
  #WBCR {
9
  /* subscribe widget */
10
  }
11
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .factory-checkbox.wbcr-factory-clearfy-icon-pro:after {
12
  display: inline-block;
13
  position: relative;
14
  content: 'PRO';
26
  right: auto;
27
  z-index: 11;
28
  }
29
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion {
30
  padding: 30px 80px;
31
  }
32
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion h3 {
33
  margin: 0 0 20px;
34
  }
35
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-inner-contanier {
36
  border: 2px dashed #8bc34a;
37
  background: #fff;
38
  padding: 20px;
39
  }
40
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-activate-premium {
41
  display: inline-block;
42
  cursor: pointer;
43
  line-height: 16px;
56
  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
57
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
58
  }
59
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-activate-premium:active {
60
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
61
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
62
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
63
  }
64
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-activate-premium:focus {
65
  outline: none;
66
  border: 0;
67
  }
68
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-purchase-premium {
69
  display: inline-block;
70
  cursor: pointer;
71
  line-height: 16px;
84
  -moz-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
85
  -webkit-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
86
  }
87
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-purchase-premium:active {
88
  box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
89
  -moz-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
90
  -webkit-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
91
  }
92
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-purchase-premium:focus {
93
  outline: none;
94
  border: 0;
95
  }
96
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion {
97
  background: #fff;
98
  color: #353535;
99
  font-weight: 600;
100
  border: 2px dashed #8bc34a;
101
  }
102
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion h3 {
103
  margin: 0 0 20px;
104
  padding: 10px 0;
105
  text-align: center;
110
  vertical-align: middle;
111
  text-transform: uppercase;
112
  }
113
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul {
114
  position: relative;
115
  margin-bottom: 20px;
116
  }
117
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li {
118
  font-size: 15px;
119
  padding: 7px;
120
  padding-left: 20px;
121
  }
122
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li:before {
123
  content: " ";
124
  display: inline-block;
125
  width: 0.4em;
133
  -o-transform: rotate(45deg);
134
  transform: rotate(45deg);
135
  }
136
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium {
137
  display: block;
138
  cursor: pointer;
139
  line-height: 16px;
152
  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
153
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
154
  }
155
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium:active {
156
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
157
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
158
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
159
  }
160
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium:focus {
161
  outline: none;
162
  border: 0;
163
  }
220
  font-size: 12px;
221
  }
222
  @media screen and (max-width: 1550px) {
223
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-pro-suggetion {
224
  padding: 10px 80px;
225
  }
226
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion {
227
  padding: 10px;
228
  }
229
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion h3 {
230
  margin: 0 0 20px;
231
  padding: 10px 0;
232
  font-size: 13px;
233
  font-weight: 600;
234
  }
235
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul {
236
  margin-bottom: 20px;
237
  }
238
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li {
239
  font-size: 13px;
240
  padding: 2px;
241
  padding-left: 10px;
242
  }
243
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li:before {
244
  width: 0.4em;
245
  height: 0.7em;
246
  border-width: 0 0.2em 0.2em 0;
247
  left: 0;
248
  margin-right: 10px;
249
  }
250
+ #WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium {
251
  font-weight: 700;
252
  line-height: 16px;
253
  font-size: 12px;
libs/factory/clearfy/assets/css/components.css CHANGED
@@ -3,11 +3,11 @@
3
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
  * @copyright Alex Kovalev 30.09.2017
5
  */
6
- #WBCR .wbc-factory-clearfy-236-components {
7
  padding: 0 20px 20px;
8
  text-align: center;
9
  }
10
- #WBCR .wbc-factory-clearfy-236-components .plugin-card {
11
  position: relative;
12
  display: inline-block;
13
  width: 32.7%;
@@ -18,46 +18,46 @@
18
  float: none;
19
  vertical-align: top;
20
  }
21
- #WBCR .wbc-factory-clearfy-236-components .plugin-card:first-child {
22
  margin-left: 0;
23
  }
24
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .plugin-card-bottom {
25
  position: absolute;
26
  bottom: 0;
27
  right: 0;
28
  left: 0;
29
  }
30
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .plugin-card-top {
31
  min-height: 163px;
32
  }
33
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .desc,
34
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .name {
35
  margin-right: 0 !important;
36
  }
37
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .name h3 {
38
  font-size: 17px;
39
  margin-top: 0 !important;
40
  }
41
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .install-now {
42
  float: right;
43
  }
44
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .delete-now {
45
  float: right;
46
  margin-left: 5px;
47
  }
48
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .delete-now .dashicons,
49
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .delete-now .dashicons-before:before {
50
  font-size: 16px !important;
51
  line-height: 1.5 !important;
52
  color: #62696f;
53
  }
54
- #WBCR .wbc-factory-clearfy-236-components .plugin-card a.open-plugin-details-modal {
55
  color: #5c5d5f;
56
  text-decoration: none;
57
  font-weight: 600;
58
  font-size: 15px;
59
  }
60
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .plugin-card-premium-ribbon {
61
  position: absolute;
62
  bottom: 60px;
63
  right: 0;
@@ -73,7 +73,7 @@
73
  text-transform: uppercase;
74
  z-index: 1;
75
  }
76
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .plugin-card-free-ribbon {
77
  position: absolute;
78
  bottom: 60px;
79
  right: 0;
@@ -89,7 +89,7 @@
89
  text-transform: uppercase;
90
  z-index: 1;
91
  }
92
- #WBCR .wbc-factory-clearfy-236-components .plugin-card .plugin-card-freemium-ribbon {
93
  position: absolute;
94
  bottom: 60px;
95
  right: 0;
@@ -105,35 +105,35 @@
105
  text-transform: uppercase;
106
  z-index: 1;
107
  }
108
- #WBCR .wbc-factory-clearfy-236-components .plugin-card.premium {
109
  border-color: #e8d7b2;
110
  background-color: #fff9eb;
111
  }
112
- #WBCR .wbc-factory-clearfy-236-components .plugin-card.plugin-status-deactive {
113
  background-color: #f1f1f1;
114
  }
115
- #WBCR .wbc-factory-clearfy-236-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
116
  color: #ababab;
117
  text-decoration: none;
118
  font-weight: 600;
119
  font-size: 15px;
120
  }
121
- #WBCR .wbc-factory-clearfy-236-components .plugin-card.plugin-status-deactive .plugin-icon {
122
  opacity: 0.3;
123
  }
124
- #WBCR .wbc-factory-clearfy-236-components .plugin-card.plugin-status-deactive .desc {
125
  color: #afafaf;
126
  }
127
- #WBCR .wbc-factory-clearfy-236-components .plugin-card.plugin-status-deactive.premium {
128
  background-color: #f9f2f1;
129
  }
130
  @media screen and (max-width: 1750px) {
131
- #WBCR .wbc-factory-clearfy-236-components .plugin-card {
132
  width: 49%;
133
  }
134
  }
135
  @media screen and (max-width: 1350px) {
136
- #WBCR .wbc-factory-clearfy-236-components .plugin-card {
137
  width: 100%;
138
  }
139
  }
3
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
  * @copyright Alex Kovalev 30.09.2017
5
  */
6
+ #WBCR .wbc-factory-clearfy-237-components {
7
  padding: 0 20px 20px;
8
  text-align: center;
9
  }
10
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card {
11
  position: relative;
12
  display: inline-block;
13
  width: 32.7%;
18
  float: none;
19
  vertical-align: top;
20
  }
21
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card:first-child {
22
  margin-left: 0;
23
  }
24
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-bottom {
25
  position: absolute;
26
  bottom: 0;
27
  right: 0;
28
  left: 0;
29
  }
30
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-top {
31
  min-height: 163px;
32
  }
33
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .desc,
34
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .name {
35
  margin-right: 0 !important;
36
  }
37
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .name h3 {
38
  font-size: 17px;
39
  margin-top: 0 !important;
40
  }
41
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .install-now {
42
  float: right;
43
  }
44
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .delete-now {
45
  float: right;
46
  margin-left: 5px;
47
  }
48
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .delete-now .dashicons,
49
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .delete-now .dashicons-before:before {
50
  font-size: 16px !important;
51
  line-height: 1.5 !important;
52
  color: #62696f;
53
  }
54
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card a.open-plugin-details-modal {
55
  color: #5c5d5f;
56
  text-decoration: none;
57
  font-weight: 600;
58
  font-size: 15px;
59
  }
60
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-premium-ribbon {
61
  position: absolute;
62
  bottom: 60px;
63
  right: 0;
73
  text-transform: uppercase;
74
  z-index: 1;
75
  }
76
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-free-ribbon {
77
  position: absolute;
78
  bottom: 60px;
79
  right: 0;
89
  text-transform: uppercase;
90
  z-index: 1;
91
  }
92
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-freemium-ribbon {
93
  position: absolute;
94
  bottom: 60px;
95
  right: 0;
105
  text-transform: uppercase;
106
  z-index: 1;
107
  }
108
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card.premium {
109
  border-color: #e8d7b2;
110
  background-color: #fff9eb;
111
  }
112
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive {
113
  background-color: #f1f1f1;
114
  }
115
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
116
  color: #ababab;
117
  text-decoration: none;
118
  font-weight: 600;
119
  font-size: 15px;
120
  }
121
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive .plugin-icon {
122
  opacity: 0.3;
123
  }
124
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive .desc {
125
  color: #afafaf;
126
  }
127
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive.premium {
128
  background-color: #f9f2f1;
129
  }
130
  @media screen and (max-width: 1750px) {
131
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card {
132
  width: 49%;
133
  }
134
  }
135
  @media screen and (max-width: 1350px) {
136
+ #WBCR .wbc-factory-clearfy-237-components .plugin-card {
137
  width: 100%;
138
  }
139
  }
libs/factory/clearfy/assets/css/libs/autocomplete.css CHANGED
@@ -5,39 +5,39 @@
5
  *
6
  * @since 2.2.0
7
  */
8
- #wbcr-factory-clearfy-236__search_options_form #wbcr-factory-clearfy-236__autocomplete {
9
  width: 100%;
10
  box-sizing: border-box;
11
  border-color: #d6d4d4;
12
  }
13
- #wbcr-factory-clearfy-236__search_options_form.wbcr-factory-clearfy-236__autocomplete-wrap {
14
  padding: 10px;
15
  }
16
- #wbcr-factory-clearfy-236__search_options_form .wbcr-factory-clearfy-236__autocomplete-label {
17
  display: block !important;
18
  }
19
- .wbcr-factory-clearfy-236__autocomplete-suggestions {
20
  border: 1px solid #999;
21
  background: #FFF;
22
  overflow: auto;
23
  }
24
- .wbcr-factory-clearfy-236__autocomplete-suggestion {
25
  padding: 2px 5px;
26
  white-space: nowrap;
27
  overflow: hidden;
28
  cursor: pointer;
29
  }
30
- .wbcr-factory-clearfy-236__autocomplete-selected {
31
  background: #F0F0F0;
32
  }
33
- .wbcr-factory-clearfy-236__autocomplete-suggestions strong {
34
  font-weight: normal;
35
  color: #3399FF;
36
  }
37
- .wbcr-factory-clearfy-236__autocomplete-group {
38
  padding: 2px 5px;
39
  }
40
- .wbcr-factory-clearfy-236__autocomplete-group strong {
41
  display: block;
42
  border-bottom: 1px solid #000;
43
  }
5
  *
6
  * @since 2.2.0
7
  */
8
+ #wbcr-factory-clearfy-237__search_options_form #wbcr-factory-clearfy-237__autocomplete {
9
  width: 100%;
10
  box-sizing: border-box;
11
  border-color: #d6d4d4;
12
  }
13
+ #wbcr-factory-clearfy-237__search_options_form.wbcr-factory-clearfy-237__autocomplete-wrap {
14
  padding: 10px;
15
  }
16
+ #wbcr-factory-clearfy-237__search_options_form .wbcr-factory-clearfy-237__autocomplete-label {
17
  display: block !important;
18
  }
19
+ .wbcr-factory-clearfy-237__autocomplete-suggestions {
20
  border: 1px solid #999;
21
  background: #FFF;
22
  overflow: auto;
23
  }
24
+ .wbcr-factory-clearfy-237__autocomplete-suggestion {
25
  padding: 2px 5px;
26
  white-space: nowrap;
27
  overflow: hidden;
28
  cursor: pointer;
29
  }
30
+ .wbcr-factory-clearfy-237__autocomplete-selected {
31
  background: #F0F0F0;
32
  }
33
+ .wbcr-factory-clearfy-237__autocomplete-suggestions strong {
34
  font-weight: normal;
35
  color: #3399FF;
36
  }
37
+ .wbcr-factory-clearfy-237__autocomplete-group {
38
  padding: 2px 5px;
39
  }
40
+ .wbcr-factory-clearfy-237__autocomplete-group strong {
41
  display: block;
42
  border-bottom: 1px solid #000;
43
  }
libs/factory/clearfy/assets/css/page-setup.css CHANGED
@@ -2,13 +2,13 @@
2
  margin: 0;
3
  padding: 0;
4
  }
5
- .w-factory-clearfy-236__form-buttons {
6
  text-align: right;
7
  padding: 10px;
8
  background: #f7f7f7;
9
  border-top: 1px solid #e8e8e8;
10
  }
11
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__skip-button {
12
  background-color: #e7e7e7;
13
  border-color: #e7e7e7;
14
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #e7e7e7;
@@ -16,29 +16,29 @@
16
  margin: 0;
17
  color: #8a8a8a;
18
  }
19
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__skip-button:active,
20
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__skip-button:hover,
21
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__skip-button:focus {
22
  background: #dddddd;
23
  border-color: #dddddd;
24
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #dddddd;
25
  color: #8a8a8a;
26
  }
27
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__continue-button {
28
  background-color: #f57d4f;
29
  border-color: #f77d50;
30
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
31
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
32
  margin: 0;
33
  }
34
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__continue-button:active,
35
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__continue-button:hover,
36
- .w-factory-clearfy-236__form-buttons .w-factory-clearfy-236__continue-button:focus {
37
  background: #f86b3b;
38
  border-color: #f86b3b;
39
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f86b3b;
40
  }
41
- .w-factory-clearfy-236-setup {
42
  text-align: center;
43
  max-width: 900px;
44
  margin: 65px auto 24px;
@@ -46,11 +46,11 @@
46
  background: #f1f1f1;
47
  padding: 0;
48
  }
49
- .w-factory-clearfy-236-setup__inner-wrap,
50
- .w-factory-clearfy-236__setup-form .factory-form-layout {
51
  padding: 30px;
52
  }
53
- .w-factory-clearfy-236-setup-steps {
54
  padding: 0 0 24px;
55
  margin: 0;
56
  list-style: none outside;
@@ -60,7 +60,7 @@
60
  display: -webkit-inline-box;
61
  display: inline-flex;
62
  }
63
- .w-factory-clearfy-236-setup-steps li {
64
  width: 100%;
65
  float: left;
66
  padding: 0 0 0.8em;
@@ -70,7 +70,7 @@
70
  border-bottom: 4px solid #ccc;
71
  line-height: 1.4;
72
  }
73
- .w-factory-clearfy-236-setup-steps li::before {
74
  content: "";
75
  border: 4px solid #ccc;
76
  border-radius: 100%;
@@ -83,15 +83,15 @@
83
  margin-bottom: -8px;
84
  background: #fff;
85
  }
86
- .w-factory-clearfy-236-setup-steps li.active {
87
  border-color: #ff1c40 !important;
88
  color: #222;
89
  font-weight: 700;
90
  }
91
- .w-factory-clearfy-236-setup-steps li.active::before {
92
  border-color: #ff1c40 !important;
93
  }
94
- .w-factory-clearfy-236-setup-steps li a {
95
  color: #a16696;
96
  text-decoration: none;
97
  padding: 1.5em;
@@ -99,67 +99,67 @@
99
  position: relative;
100
  z-index: 1;
101
  }
102
- .w-factory-clearfy-236-setup-steps li a:focus,
103
- .w-factory-clearfy-236-setup-steps li a:hover {
104
  color: #111;
105
  text-decoration: underline;
106
  }
107
- /*.w-factory-clearfy-236-setup-steps li.done {
108
  border-color: #f57d4f;
109
  color: #f57d4f
110
  }
111
 
112
- .w-factory-clearfy-236-setup-steps li.done::before {
113
  border-color: #f57d4f;
114
  background: #f57d4f
115
  }*/
116
- .w-factory-clearfy-236-setup .w-factory-clearfy-236-setup-actions {
117
  overflow: hidden;
118
  margin: 20px 0 0;
119
  position: relative;
120
  }
121
- .w-factory-clearfy-236-setup-content p:last-child {
122
  margin-bottom: 0;
123
  }
124
- .w-factory-clearfy-236-setup-content p.store-setup {
125
  margin-top: 0;
126
  }
127
- .w-factory-clearfy-236-setup-footer-links {
128
  font-size: 0.85em;
129
  color: #7b7b7b;
130
  margin: 1.18em auto;
131
  display: inline-block;
132
  text-align: center;
133
  }
134
- .w-factory-clearfy-236-logo {
135
  text-align: center;
136
  }
137
- .w-factory-clearfy-236-logo img {
138
  max-width: 250px;
139
  }
140
- .w-factory-clearfy-236-setup-content {
141
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.13);
142
  margin: 0 0 20px;
143
  background: #fff;
144
  zoom: 1;
145
  text-align: left;
146
  }
147
- .w-factory-clearfy-236-setup-content table {
148
  font-size: 1em;
149
  line-height: 1.75;
150
  color: #666;
151
  }
152
- .w-factory-clearfy-236-setup-content table thead {
153
  background: #f1f1f1;
154
  }
155
- .w-factory-clearfy-236-setup-content table th,
156
- .w-factory-clearfy-236-setup-content table td {
157
  padding: 10px 15px;
158
  }
159
- .w-factory-clearfy-236-setup-content h1,
160
- .w-factory-clearfy-236-setup-content h2,
161
- .w-factory-clearfy-236-setup-content h3,
162
- .w-factory-clearfy-236-setup-content table {
163
  margin: 0 0 20px;
164
  border: 0;
165
  padding: 0;
@@ -167,40 +167,40 @@
167
  clear: none;
168
  font-weight: 500;
169
  }
170
- .w-factory-clearfy-236-setup-content p {
171
  margin: 20px 0;
172
  font-size: 1.15em;
173
  line-height: 1.75;
174
  color: #666;
175
  text-align: center;
176
  }
177
- .w-factory-clearfy-236-setup-step__new_onboarding-welcome {
178
  font-size: 22px !important;
179
  }
180
- .w-factory-clearfy-236-setup-content a {
181
  color: #f57d4f;
182
  }
183
- .w-factory-clearfy-236-setup-content a:focus,
184
- .w-factory-clearfy-236-setup-content a:hover {
185
  color: #111;
186
  }
187
- .w-factory-clearfy-236-setup-content table.tax-rates {
188
  width: 100%;
189
  font-size: 0.92em;
190
  }
191
- .w-factory-clearfy-236-setup-content table.tax-rates th {
192
  padding: 0;
193
  text-align: center;
194
  width: auto;
195
  vertical-align: middle;
196
  }
197
- .w-factory-clearfy-236-setup-content table.tax-rates td {
198
  border: 1px solid #f5f5f5;
199
  padding: 6px;
200
  text-align: center;
201
  vertical-align: middle;
202
  }
203
- .w-factory-clearfy-236-setup-content table.tax-rates td input {
204
  outline: 0;
205
  border: 0;
206
  padding: 0;
@@ -208,18 +208,18 @@
208
  text-align: center;
209
  width: 100%;
210
  }
211
- .w-factory-clearfy-236-setup-content table.tax-rates td.sort {
212
  cursor: move;
213
  color: #ccc;
214
  }
215
- .w-factory-clearfy-236-setup-content table.tax-rates td.sort::before {
216
  content: "\f333";
217
  font-family: dashicons;
218
  }
219
- .w-factory-clearfy-236-setup-content table.tax-rates td.readonly {
220
  background: #f5f5f5;
221
  }
222
- .w-factory-clearfy-236-setup-content table.tax-rates .add {
223
  padding: 1em 0 0 1em;
224
  line-height: 1;
225
  font-size: 1em;
@@ -230,14 +230,14 @@
230
  position: relative;
231
  display: inline-block;
232
  }
233
- .w-factory-clearfy-236-setup-content table.tax-rates .add::before {
234
  content: "\f502";
235
  font-family: dashicons;
236
  position: absolute;
237
  left: 0;
238
  top: 0;
239
  }
240
- .w-factory-clearfy-236-setup-content table.tax-rates .remove {
241
  padding: 1em 0 0 1em;
242
  line-height: 1;
243
  font-size: 1em;
@@ -248,87 +248,87 @@
248
  position: relative;
249
  display: inline-block;
250
  }
251
- .w-factory-clearfy-236-setup-content table.tax-rates .remove::before {
252
  content: "\f182";
253
  font-family: dashicons;
254
  position: absolute;
255
  left: 0;
256
  top: 0;
257
  }
258
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages {
259
  width: 100%;
260
  border-top: 1px solid #eee;
261
  }
262
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages thead th {
263
  display: none;
264
  }
265
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages .page-name {
266
  width: 30%;
267
  font-weight: 700;
268
  }
269
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages td,
270
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages th {
271
  padding: 14px 0;
272
  border-bottom: 1px solid #eee;
273
  }
274
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages td:first-child,
275
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages th:first-child {
276
  padding-right: 9px;
277
  }
278
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages th {
279
  padding-top: 0;
280
  }
281
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages .page-options p {
282
  color: #777;
283
  margin: 6px 0 0 24px;
284
  line-height: 1.75;
285
  }
286
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages .page-options p input {
287
  vertical-align: middle;
288
  margin: 1px 0 0;
289
  height: 1.75em;
290
  width: 1.75em;
291
  line-height: 1.75;
292
  }
293
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-pages .page-options p label {
294
  line-height: 1;
295
  }
296
  @media screen and (max-width: 782px) {
297
- .w-factory-clearfy-236-setup-content .form-table tbody th {
298
  width: auto;
299
  }
300
  }
301
- .w-factory-clearfy-236-setup-content .twitter-share-button {
302
  float: right;
303
  }
304
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps {
305
  overflow: hidden;
306
  margin: 0 0 24px;
307
  padding-bottom: 2px;
308
  }
309
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps h2 {
310
  margin-bottom: 12px;
311
  }
312
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps .w-factory-clearfy-236-setup-next-steps-first {
313
  float: left;
314
  width: 50%;
315
  box-sizing: border-box;
316
  }
317
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps .w-factory-clearfy-236-setup-next-steps-last {
318
  float: right;
319
  width: 50%;
320
  box-sizing: border-box;
321
  }
322
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul {
323
  padding: 0 2em 0 0;
324
  list-style: none outside;
325
  margin: 0;
326
  }
327
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul li a {
328
  display: block;
329
  padding: 0 0 0.75em;
330
  }
331
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button {
332
  background-color: #f7f7f7;
333
  border-color: #ccc;
334
  color: #23282d;
@@ -342,28 +342,28 @@
342
  padding: 1em;
343
  text-align: center;
344
  }
345
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button:active,
346
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button:focus,
347
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button:hover {
348
  background: #f5f5f5;
349
  border-color: #aaa;
350
  }
351
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button-primary {
352
  color: #fff;
353
  background-color: #f19570;
354
  border-color: #f77d50;
355
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
356
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
357
  }
358
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button-primary:active,
359
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button-primary:focus,
360
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .setup-product a.button-primary:hover {
361
  color: #fff;
362
  background: #f77d50;
363
  border-color: #f77d50;
364
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
365
  }
366
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul li a::before {
367
  color: #82878c;
368
  font: 400 20px/1 dashicons;
369
  speak: none;
@@ -374,50 +374,50 @@
374
  text-decoration: none !important;
375
  vertical-align: top;
376
  }
377
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .learn-more a::before {
378
  content: "\f105";
379
  }
380
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .video-walkthrough a::before {
381
  content: "\f126";
382
  }
383
- .w-factory-clearfy-236-setup-content .w-factory-clearfy-236-setup-next-steps ul .newsletter a::before {
384
  content: "\f465";
385
  }
386
- .w-factory-clearfy-236-setup-content .updated,
387
- .w-factory-clearfy-236-setup-content .woocommerce-newsletter {
388
  padding: 24px 24px 0;
389
  margin: 0 0 24px;
390
  overflow: hidden;
391
  background: #f5f5f5;
392
  }
393
- .w-factory-clearfy-236-setup-content .updated p,
394
- .w-factory-clearfy-236-setup-content .woocommerce-newsletter p {
395
  padding: 0;
396
  margin: 0 0 12px;
397
  }
398
- .w-factory-clearfy-236-setup-content .updated form,
399
- .w-factory-clearfy-236-setup-content .updated p:last-child,
400
- .w-factory-clearfy-236-setup-content .woocommerce-newsletter form,
401
- .w-factory-clearfy-236-setup-content .woocommerce-newsletter p:last-child {
402
  margin: 0 0 24px;
403
  }
404
- .w-factory-clearfy-236-setup-content .checkbox input[type=checkbox] {
405
  opacity: 0;
406
  position: absolute;
407
  left: -9999px;
408
  }
409
- .w-factory-clearfy-236-setup-content .checkbox label {
410
  position: relative;
411
  display: inline-block;
412
  padding-left: 28px;
413
  }
414
- .w-factory-clearfy-236-setup-content .checkbox label::after,
415
- .w-factory-clearfy-236-setup-content .checkbox label::before {
416
  position: absolute;
417
  content: "";
418
  display: inline-block;
419
  }
420
- .w-factory-clearfy-236-setup-content .checkbox label::before {
421
  height: 16px;
422
  width: 16px;
423
  left: 0;
@@ -426,7 +426,7 @@
426
  background-color: #fff;
427
  border-radius: 3px;
428
  }
429
- .w-factory-clearfy-236-setup-content .checkbox label::after {
430
  height: 5px;
431
  width: 9px;
432
  border-left: 2px solid;
@@ -438,16 +438,16 @@
438
  top: 7px;
439
  color: #fff;
440
  }
441
- .w-factory-clearfy-236-setup-content .checkbox input[type=checkbox] + label::after {
442
  content: none;
443
  }
444
- .w-factory-clearfy-236-setup-content .checkbox input[type=checkbox]:checked + label::after {
445
  content: "";
446
  }
447
- .w-factory-clearfy-236-setup-content .checkbox input[type=checkbox]:focus + label::before {
448
  outline: #3b99fc auto 5px;
449
  }
450
- .w-factory-clearfy-236-setup-content .checkbox input[type=checkbox]:checked + label::before {
451
  background: #935687;
452
  border-color: #935687;
453
  }
2
  margin: 0;
3
  padding: 0;
4
  }
5
+ .w-factory-clearfy-237__form-buttons {
6
  text-align: right;
7
  padding: 10px;
8
  background: #f7f7f7;
9
  border-top: 1px solid #e8e8e8;
10
  }
11
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button {
12
  background-color: #e7e7e7;
13
  border-color: #e7e7e7;
14
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #e7e7e7;
16
  margin: 0;
17
  color: #8a8a8a;
18
  }
19
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button:active,
20
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button:hover,
21
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button:focus {
22
  background: #dddddd;
23
  border-color: #dddddd;
24
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #dddddd;
25
  color: #8a8a8a;
26
  }
27
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button {
28
  background-color: #f57d4f;
29
  border-color: #f77d50;
30
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
31
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
32
  margin: 0;
33
  }
34
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button:active,
35
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button:hover,
36
+ .w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button:focus {
37
  background: #f86b3b;
38
  border-color: #f86b3b;
39
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f86b3b;
40
  }
41
+ .w-factory-clearfy-237-setup {
42
  text-align: center;
43
  max-width: 900px;
44
  margin: 65px auto 24px;
46
  background: #f1f1f1;
47
  padding: 0;
48
  }
49
+ .w-factory-clearfy-237-setup__inner-wrap,
50
+ .w-factory-clearfy-237__setup-form .factory-form-layout {
51
  padding: 30px;
52
  }
53
+ .w-factory-clearfy-237-setup-steps {
54
  padding: 0 0 24px;
55
  margin: 0;
56
  list-style: none outside;
60
  display: -webkit-inline-box;
61
  display: inline-flex;
62
  }
63
+ .w-factory-clearfy-237-setup-steps li {
64
  width: 100%;
65
  float: left;
66
  padding: 0 0 0.8em;
70
  border-bottom: 4px solid #ccc;
71
  line-height: 1.4;
72
  }
73
+ .w-factory-clearfy-237-setup-steps li::before {
74
  content: "";
75
  border: 4px solid #ccc;
76
  border-radius: 100%;
83
  margin-bottom: -8px;
84
  background: #fff;
85
  }
86
+ .w-factory-clearfy-237-setup-steps li.active {
87
  border-color: #ff1c40 !important;
88
  color: #222;
89
  font-weight: 700;
90
  }
91
+ .w-factory-clearfy-237-setup-steps li.active::before {
92
  border-color: #ff1c40 !important;
93
  }
94
+ .w-factory-clearfy-237-setup-steps li a {
95
  color: #a16696;
96
  text-decoration: none;
97
  padding: 1.5em;
99
  position: relative;
100
  z-index: 1;
101
  }
102
+ .w-factory-clearfy-237-setup-steps li a:focus,
103
+ .w-factory-clearfy-237-setup-steps li a:hover {
104
  color: #111;
105
  text-decoration: underline;
106
  }
107
+ /*.w-factory-clearfy-237-setup-steps li.done {
108
  border-color: #f57d4f;
109
  color: #f57d4f
110
  }
111
 
112
+ .w-factory-clearfy-237-setup-steps li.done::before {
113
  border-color: #f57d4f;
114
  background: #f57d4f
115
  }*/
116
+ .w-factory-clearfy-237-setup .w-factory-clearfy-237-setup-actions {
117
  overflow: hidden;
118
  margin: 20px 0 0;
119
  position: relative;
120
  }
121
+ .w-factory-clearfy-237-setup-content p:last-child {
122
  margin-bottom: 0;
123
  }
124
+ .w-factory-clearfy-237-setup-content p.store-setup {
125
  margin-top: 0;
126
  }
127
+ .w-factory-clearfy-237-setup-footer-links {
128
  font-size: 0.85em;
129
  color: #7b7b7b;
130
  margin: 1.18em auto;
131
  display: inline-block;
132
  text-align: center;
133
  }
134
+ .w-factory-clearfy-237-logo {
135
  text-align: center;
136
  }
137
+ .w-factory-clearfy-237-logo img {
138
  max-width: 250px;
139
  }
140
+ .w-factory-clearfy-237-setup-content {
141
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.13);
142
  margin: 0 0 20px;
143
  background: #fff;
144
  zoom: 1;
145
  text-align: left;
146
  }
147
+ .w-factory-clearfy-237-setup-content table {
148
  font-size: 1em;
149
  line-height: 1.75;
150
  color: #666;
151
  }
152
+ .w-factory-clearfy-237-setup-content table thead {
153
  background: #f1f1f1;
154
  }
155
+ .w-factory-clearfy-237-setup-content table th,
156
+ .w-factory-clearfy-237-setup-content table td {
157
  padding: 10px 15px;
158
  }
159
+ .w-factory-clearfy-237-setup-content h1,
160
+ .w-factory-clearfy-237-setup-content h2,
161
+ .w-factory-clearfy-237-setup-content h3,
162
+ .w-factory-clearfy-237-setup-content table {
163
  margin: 0 0 20px;
164
  border: 0;
165
  padding: 0;
167
  clear: none;
168
  font-weight: 500;
169
  }
170
+ .w-factory-clearfy-237-setup-content p {
171
  margin: 20px 0;
172
  font-size: 1.15em;
173
  line-height: 1.75;
174
  color: #666;
175
  text-align: center;
176
  }
177
+ .w-factory-clearfy-237-setup-step__new_onboarding-welcome {
178
  font-size: 22px !important;
179
  }
180
+ .w-factory-clearfy-237-setup-content a {
181
  color: #f57d4f;
182
  }
183
+ .w-factory-clearfy-237-setup-content a:focus,
184
+ .w-factory-clearfy-237-setup-content a:hover {
185
  color: #111;
186
  }
187
+ .w-factory-clearfy-237-setup-content table.tax-rates {
188
  width: 100%;
189
  font-size: 0.92em;
190
  }
191
+ .w-factory-clearfy-237-setup-content table.tax-rates th {
192
  padding: 0;
193
  text-align: center;
194
  width: auto;
195
  vertical-align: middle;
196
  }
197
+ .w-factory-clearfy-237-setup-content table.tax-rates td {
198
  border: 1px solid #f5f5f5;
199
  padding: 6px;
200
  text-align: center;
201
  vertical-align: middle;
202
  }
203
+ .w-factory-clearfy-237-setup-content table.tax-rates td input {
204
  outline: 0;
205
  border: 0;
206
  padding: 0;
208
  text-align: center;
209
  width: 100%;
210
  }
211
+ .w-factory-clearfy-237-setup-content table.tax-rates td.sort {
212
  cursor: move;
213
  color: #ccc;
214
  }
215
+ .w-factory-clearfy-237-setup-content table.tax-rates td.sort::before {
216
  content: "\f333";
217
  font-family: dashicons;
218
  }
219
+ .w-factory-clearfy-237-setup-content table.tax-rates td.readonly {
220
  background: #f5f5f5;
221
  }
222
+ .w-factory-clearfy-237-setup-content table.tax-rates .add {
223
  padding: 1em 0 0 1em;
224
  line-height: 1;
225
  font-size: 1em;
230
  position: relative;
231
  display: inline-block;
232
  }
233
+ .w-factory-clearfy-237-setup-content table.tax-rates .add::before {
234
  content: "\f502";
235
  font-family: dashicons;
236
  position: absolute;
237
  left: 0;
238
  top: 0;
239
  }
240
+ .w-factory-clearfy-237-setup-content table.tax-rates .remove {
241
  padding: 1em 0 0 1em;
242
  line-height: 1;
243
  font-size: 1em;
248
  position: relative;
249
  display: inline-block;
250
  }
251
+ .w-factory-clearfy-237-setup-content table.tax-rates .remove::before {
252
  content: "\f182";
253
  font-family: dashicons;
254
  position: absolute;
255
  left: 0;
256
  top: 0;
257
  }
258
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages {
259
  width: 100%;
260
  border-top: 1px solid #eee;
261
  }
262
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages thead th {
263
  display: none;
264
  }
265
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-name {
266
  width: 30%;
267
  font-weight: 700;
268
  }
269
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages td,
270
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages th {
271
  padding: 14px 0;
272
  border-bottom: 1px solid #eee;
273
  }
274
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages td:first-child,
275
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages th:first-child {
276
  padding-right: 9px;
277
  }
278
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages th {
279
  padding-top: 0;
280
  }
281
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-options p {
282
  color: #777;
283
  margin: 6px 0 0 24px;
284
  line-height: 1.75;
285
  }
286
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-options p input {
287
  vertical-align: middle;
288
  margin: 1px 0 0;
289
  height: 1.75em;
290
  width: 1.75em;
291
  line-height: 1.75;
292
  }
293
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-options p label {
294
  line-height: 1;
295
  }
296
  @media screen and (max-width: 782px) {
297
+ .w-factory-clearfy-237-setup-content .form-table tbody th {
298
  width: auto;
299
  }
300
  }
301
+ .w-factory-clearfy-237-setup-content .twitter-share-button {
302
  float: right;
303
  }
304
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps {
305
  overflow: hidden;
306
  margin: 0 0 24px;
307
  padding-bottom: 2px;
308
  }
309
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps h2 {
310
  margin-bottom: 12px;
311
  }
312
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps .w-factory-clearfy-237-setup-next-steps-first {
313
  float: left;
314
  width: 50%;
315
  box-sizing: border-box;
316
  }
317
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps .w-factory-clearfy-237-setup-next-steps-last {
318
  float: right;
319
  width: 50%;
320
  box-sizing: border-box;
321
  }
322
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul {
323
  padding: 0 2em 0 0;
324
  list-style: none outside;
325
  margin: 0;
326
  }
327
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul li a {
328
  display: block;
329
  padding: 0 0 0.75em;
330
  }
331
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button {
332
  background-color: #f7f7f7;
333
  border-color: #ccc;
334
  color: #23282d;
342
  padding: 1em;
343
  text-align: center;
344
  }
345
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button:active,
346
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button:focus,
347
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button:hover {
348
  background: #f5f5f5;
349
  border-color: #aaa;
350
  }
351
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary {
352
  color: #fff;
353
  background-color: #f19570;
354
  border-color: #f77d50;
355
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
356
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
357
  }
358
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary:active,
359
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary:focus,
360
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary:hover {
361
  color: #fff;
362
  background: #f77d50;
363
  border-color: #f77d50;
364
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
365
  }
366
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul li a::before {
367
  color: #82878c;
368
  font: 400 20px/1 dashicons;
369
  speak: none;
374
  text-decoration: none !important;
375
  vertical-align: top;
376
  }
377
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .learn-more a::before {
378
  content: "\f105";
379
  }
380
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .video-walkthrough a::before {
381
  content: "\f126";
382
  }
383
+ .w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .newsletter a::before {
384
  content: "\f465";
385
  }
386
+ .w-factory-clearfy-237-setup-content .updated,
387
+ .w-factory-clearfy-237-setup-content .woocommerce-newsletter {
388
  padding: 24px 24px 0;
389
  margin: 0 0 24px;
390
  overflow: hidden;
391
  background: #f5f5f5;
392
  }
393
+ .w-factory-clearfy-237-setup-content .updated p,
394
+ .w-factory-clearfy-237-setup-content .woocommerce-newsletter p {
395
  padding: 0;
396
  margin: 0 0 12px;
397
  }
398
+ .w-factory-clearfy-237-setup-content .updated form,
399
+ .w-factory-clearfy-237-setup-content .updated p:last-child,
400
+ .w-factory-clearfy-237-setup-content .woocommerce-newsletter form,
401
+ .w-factory-clearfy-237-setup-content .woocommerce-newsletter p:last-child {
402
  margin: 0 0 24px;
403
  }
404
+ .w-factory-clearfy-237-setup-content .checkbox input[type=checkbox] {
405
  opacity: 0;
406
  position: absolute;
407
  left: -9999px;
408
  }
409
+ .w-factory-clearfy-237-setup-content .checkbox label {
410
  position: relative;
411
  display: inline-block;
412
  padding-left: 28px;
413
  }
414
+ .w-factory-clearfy-237-setup-content .checkbox label::after,
415
+ .w-factory-clearfy-237-setup-content .checkbox label::before {
416
  position: absolute;
417
  content: "";
418
  display: inline-block;
419
  }
420
+ .w-factory-clearfy-237-setup-content .checkbox label::before {
421
  height: 16px;
422
  width: 16px;
423
  left: 0;
426
  background-color: #fff;
427
  border-radius: 3px;
428
  }
429
+ .w-factory-clearfy-237-setup-content .checkbox label::after {
430
  height: 5px;
431
  width: 9px;
432
  border-left: 2px solid;
438
  top: 7px;
439
  color: #fff;
440
  }
441
+ .w-factory-clearfy-237-setup-content .checkbox input[type=checkbox] + label::after {
442
  content: none;
443
  }
444
+ .w-factory-clearfy-237-setup-content .checkbox input[type=checkbox]:checked + label::after {
445
  content: "";
446
  }
447
+ .w-factory-clearfy-237-setup-content .checkbox input[type=checkbox]:focus + label::before {
448
  outline: #3b99fc auto 5px;
449
  }
450
+ .w-factory-clearfy-237-setup-content .checkbox input[type=checkbox]:checked + label::before {
451
  background: #935687;
452
  border-color: #935687;
453
  }
libs/factory/clearfy/assets/js/clearfy-globals.js CHANGED
@@ -2,8 +2,8 @@
2
  * Глобальный JS файл, который регистрирует глобальные переменные с общими методами для всех компонентов Clearfy
3
  * и самого Clearfy.
4
  *
5
- * $.wbcr_factory_clearfy_236.app - методы для работы с приложением. Скрыть, показать уведомления.
6
- * $.wbcr_factory_clearfy_236.hooks - это иммитация хуков и фильтров аналогично тем, что используются в Wordpress
7
  *
8
  * Copyright 2018, Webcraftic, http://webcraftic.com
9
  *
@@ -13,16 +13,16 @@
13
  (function($) {
14
  'use strict';
15
 
16
- if( !$.wbcr_factory_clearfy_236 ) {
17
- $.wbcr_factory_clearfy_236 = {};
18
  }
19
 
20
  //todo: Переопредление для совместимости со старыми версиями плагинов.
21
- $.wbcr_factory_clearfy_236.filters = $.wbcr_factory_clearfy_236.filters || $.wfactory_445.filters;
22
  //todo: Переопредление для совместимости со старыми версиями плагинов.
23
- $.wbcr_factory_clearfy_236.hooks = $.wbcr_factory_clearfy_236.hooks || $.wfactory_445.hooks;
24
 
25
- $.wbcr_factory_clearfy_236.app = $.wbcr_factory_clearfy_236.app || {
26
  /**
27
  * Создает и показывает уведомление внутри интерфейса Clearfy
28
  *
@@ -68,12 +68,12 @@
68
  /**
69
  * Хук выполняет проивольную функцию, после того как уведомление отображено
70
  * Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
71
- * Пример регистрации хука $.wfactory_445.hooks.add('wbcr/factory_clearfy_236/updated',
72
  * function(noticeId) {});
73
  * @param {string} noticeId - id уведомления
74
  */
75
- $.wfactory_445.hooks.run('wbcr/factory_clearfy_236/showed_notice', [noticeId]);
76
- $.wfactory_445.hooks.run('wbcr/clearfy/showed_notice', [noticeId]);
77
  });
78
 
79
  return noticeId;
@@ -98,13 +98,13 @@
98
  /**
99
  * Хук выполняет проивольную функцию, после того как уведомление скрыто
100
  * Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
101
- * Пример регистрации хука $.wfactory_445.hooks.add('wbcr/factory_clearfy_236/updated',
102
  * function(noticeId)
103
  * {});
104
  * @param {string} noticeId - id уведомления
105
  */
106
- $.wfactory_445.hooks.run('wbcr/factory_clearfy_236/hidded_notice', [noticeId]);
107
- $.wfactory_445.hooks.run('wbcr/clearfy/hidded_notice', [noticeId]);
108
  });
109
  },
110
 
@@ -121,7 +121,7 @@
121
 
122
  };
123
 
124
- $.wfactory_445.hooks.add('core/components/pre_activate', function(button) {
125
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
126
  if( !$('#WBCR').length ) {
127
  return false;
@@ -137,7 +137,7 @@
137
  }
138
  });
139
 
140
- $.wfactory_445.hooks.add('core/components/deactivated', function(button, data, response) {
141
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
142
  if( !$('#WBCR').length ) {
143
  return false;
@@ -156,7 +156,7 @@
156
  }
157
  });
158
 
159
- $.wfactory_445.hooks.add('core/components/deleted', function(button) {
160
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
161
  if( !$('#WBCR').length ) {
162
  return false;
@@ -175,32 +175,32 @@
175
  }
176
  });
177
 
178
- $.wfactory_445.hooks.add('core/components/activation_error', function(plugin, button, response) {
179
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
180
- if( !($('#WBCR').length && $.wbcr_factory_clearfy_236) ) {
181
  return false;
182
  }
183
 
184
  button.closest('.plugin-card').addClass('plugin-status-deactive');
185
 
186
  if( response.data && response.data.error_message ) {
187
- $.wbcr_factory_clearfy_236.app.showNotice(response.data.error_message, 'danger');
188
  }
189
  });
190
 
191
- $.wfactory_445.hooks.add('core/components/update_error', function(button, data, response) {
192
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
193
- if( !($('#WBCR').length && $.wbcr_factory_clearfy_236) ) {
194
  return false;
195
  }
196
 
197
  if( response.data && response.data.error_message ) {
198
- $.wbcr_factory_clearfy_236.app.showNotice(response.data.error_message, 'danger');
199
  }
200
 
201
  });
202
 
203
- $.wfactory_445.hooks.add('core/components/activated', function(button, data, response) {
204
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
205
  if( !$('#WBCR').length ) {
206
  return false;
@@ -209,13 +209,13 @@
209
  button.closest('.plugin-card').removeClass('plugin-status-deactive');
210
  });
211
 
212
- $.wfactory_445.hooks.add('core/components/ajax_error', function(xhr, ajaxOptions, thrownError) {
213
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
214
- if( !($('#WBCR').length && $.wbcr_factory_clearfy_236) ) {
215
  return false;
216
  }
217
 
218
- $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
219
  });
220
 
221
  })(jQuery);
2
  * Глобальный JS файл, который регистрирует глобальные переменные с общими методами для всех компонентов Clearfy
3
  * и самого Clearfy.
4
  *
5
+ * $.wbcr_factory_clearfy_237.app - методы для работы с приложением. Скрыть, показать уведомления.
6
+ * $.wbcr_factory_clearfy_237.hooks - это иммитация хуков и фильтров аналогично тем, что используются в Wordpress
7
  *
8
  * Copyright 2018, Webcraftic, http://webcraftic.com
9
  *
13
  (function($) {
14
  'use strict';
15
 
16
+ if( !$.wbcr_factory_clearfy_237 ) {
17
+ $.wbcr_factory_clearfy_237 = {};
18
  }
19
 
20
  //todo: Переопредление для совместимости со старыми версиями плагинов.
21
+ $.wbcr_factory_clearfy_237.filters = $.wbcr_factory_clearfy_237.filters || $.wfactory_446.filters;
22
  //todo: Переопредление для совместимости со старыми версиями плагинов.
23
+ $.wbcr_factory_clearfy_237.hooks = $.wbcr_factory_clearfy_237.hooks || $.wfactory_446.hooks;
24
 
25
+ $.wbcr_factory_clearfy_237.app = $.wbcr_factory_clearfy_237.app || {
26
  /**
27
  * Создает и показывает уведомление внутри интерфейса Clearfy
28
  *
68
  /**
69
  * Хук выполняет проивольную функцию, после того как уведомление отображено
70
  * Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
71
+ * Пример регистрации хука $.wfactory_446.hooks.add('wbcr/factory_clearfy_237/updated',
72
  * function(noticeId) {});
73
  * @param {string} noticeId - id уведомления
74
  */
75
+ $.wfactory_446.hooks.run('wbcr/factory_clearfy_237/showed_notice', [noticeId]);
76
+ $.wfactory_446.hooks.run('wbcr/clearfy/showed_notice', [noticeId]);
77
  });
78
 
79
  return noticeId;
98
  /**
99
  * Хук выполняет проивольную функцию, после того как уведомление скрыто
100
  * Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
101
+ * Пример регистрации хука $.wfactory_446.hooks.add('wbcr/factory_clearfy_237/updated',
102
  * function(noticeId)
103
  * {});
104
  * @param {string} noticeId - id уведомления
105
  */
106
+ $.wfactory_446.hooks.run('wbcr/factory_clearfy_237/hidded_notice', [noticeId]);
107
+ $.wfactory_446.hooks.run('wbcr/clearfy/hidded_notice', [noticeId]);
108
  });
109
  },
110
 
121
 
122
  };
123
 
124
+ $.wfactory_446.hooks.add('core/components/pre_activate', function(button) {
125
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
126
  if( !$('#WBCR').length ) {
127
  return false;
137
  }
138
  });
139
 
140
+ $.wfactory_446.hooks.add('core/components/deactivated', function(button, data, response) {
141
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
142
  if( !$('#WBCR').length ) {
143
  return false;
156
  }
157
  });
158
 
159
+ $.wfactory_446.hooks.add('core/components/deleted', function(button) {
160
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
161
  if( !$('#WBCR').length ) {
162
  return false;
175
  }
176
  });
177
 
178
+ $.wfactory_446.hooks.add('core/components/activation_error', function(plugin, button, response) {
179
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
180
+ if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
181
  return false;
182
  }
183
 
184
  button.closest('.plugin-card').addClass('plugin-status-deactive');
185
 
186
  if( response.data && response.data.error_message ) {
187
+ $.wbcr_factory_clearfy_237.app.showNotice(response.data.error_message, 'danger');
188
  }
189
  });
190
 
191
+ $.wfactory_446.hooks.add('core/components/update_error', function(button, data, response) {
192
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
193
+ if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
194
  return false;
195
  }
196
 
197
  if( response.data && response.data.error_message ) {
198
+ $.wbcr_factory_clearfy_237.app.showNotice(response.data.error_message, 'danger');
199
  }
200
 
201
  });
202
 
203
+ $.wfactory_446.hooks.add('core/components/activated', function(button, data, response) {
204
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
205
  if( !$('#WBCR').length ) {
206
  return false;
209
  button.closest('.plugin-card').removeClass('plugin-status-deactive');
210
  });
211
 
212
+ $.wfactory_446.hooks.add('core/components/ajax_error', function(xhr, ajaxOptions, thrownError) {
213
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
214
+ if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
215
  return false;
216
  }
217
 
218
+ $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
219
  });
220
 
221
  })(jQuery);
libs/factory/clearfy/assets/js/clearfy-license-manager.js CHANGED
@@ -20,7 +20,7 @@ jQuery(function($) {
20
  licenseAction = $(this).data('action');
21
 
22
  for( i = 0; i < allNotices.length; i++ ) {
23
- $.wbcr_factory_clearfy_236.app.hideNotice(allNotices[i]);
24
  }
25
 
26
  $('.wcl-control-btn').hide();
@@ -53,7 +53,7 @@ jQuery(function($) {
53
 
54
  if( response.data ) {
55
  console.log(response.data.error_message);
56
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
57
  allNotices.push(noticeId);
58
  } else {
59
  console.log(response);
@@ -63,7 +63,7 @@ jQuery(function($) {
63
  }
64
 
65
  if( response.data && response.data.message ) {
66
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice(response.data.message, 'success');
67
  allNotices.push(noticeId);
68
 
69
  // todo: доработать генерацию формы, вместо перезагрузки страницы
@@ -80,7 +80,7 @@ jQuery(function($) {
80
  console.log(xhr.responseText);
81
  console.log(thrownError);
82
 
83
- var noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
84
 
85
  allNotices.push(noticeId);
86
  }
20
  licenseAction = $(this).data('action');
21
 
22
  for( i = 0; i < allNotices.length; i++ ) {
23
+ $.wbcr_factory_clearfy_237.app.hideNotice(allNotices[i]);
24
  }
25
 
26
  $('.wcl-control-btn').hide();
53
 
54
  if( response.data ) {
55
  console.log(response.data.error_message);
56
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
57
  allNotices.push(noticeId);
58
  } else {
59
  console.log(response);
63
  }
64
 
65
  if( response.data && response.data.message ) {
66
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice(response.data.message, 'success');
67
  allNotices.push(noticeId);
68
 
69
  // todo: доработать генерацию формы, вместо перезагрузки страницы
80
  console.log(xhr.responseText);
81
  console.log(thrownError);
82
 
83
+ var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
84
 
85
  allNotices.push(noticeId);
86
  }
libs/factory/clearfy/assets/js/clearfy-search-options.js CHANGED
@@ -28,10 +28,10 @@
28
  throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
29
  }
30
 
31
- $('#wbcr-factory-clearfy-236__autocomplete').wfactory_clearfy_autocomplete({
32
  lookup: wfactory_clearfy_search_options,
33
  onSelect: function(suggestion) {
34
- $('#wbcr-factory-clearfy-236__autocomplete').prop("disabled", true);
35
  window.location.href = suggestion.data.page_url;
36
  }
37
  });
28
  throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
29
  }
30
 
31
+ $('#wbcr-factory-clearfy-237__autocomplete').wfactory_clearfy_autocomplete({
32
  lookup: wfactory_clearfy_search_options,
33
  onSelect: function(suggestion) {
34
+ $('#wbcr-factory-clearfy-237__autocomplete').prop("disabled", true);
35
  window.location.href = suggestion.data.page_url;
36
  }
37
  });
libs/factory/clearfy/assets/js/clearfy-widgets.js CHANGED
@@ -25,9 +25,9 @@ jQuery(function($) {
25
  if( !response || !response.success ) {
26
  if( response.data ) {
27
  console.log(response.data.error_message);
28
- noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
29
  setTimeout(function() {
30
- $.wbcr_factory_clearfy_236.app.hideNotice(noticeId);
31
  }, 5000);
32
  } else {
33
  console.log(response);
@@ -52,9 +52,9 @@ jQuery(function($) {
52
  console.log(xhr.responseText);
53
  console.log(thrownError);
54
 
55
- var noticeId = $.wbcr_factory_clearfy_236.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
56
  setTimeout(function() {
57
- $.wbcr_factory_clearfy_236.app.hideNotice(noticeId);
58
  }, 5000);
59
  }
60
  });
25
  if( !response || !response.success ) {
26
  if( response.data ) {
27
  console.log(response.data.error_message);
28
+ noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
29
  setTimeout(function() {
30
+ $.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
31
  }, 5000);
32
  } else {
33
  console.log(response);
52
  console.log(xhr.responseText);
53
  console.log(thrownError);
54
 
55
+ var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
56
  setTimeout(function() {
57
+ $.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
58
  }, 5000);
59
  }
60
  });
libs/factory/clearfy/assets/js/libs/jquery.autocomplete.min.js CHANGED
@@ -5,4 +5,4 @@
5
  * Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
6
  * For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
7
  */
8
- !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=this;e.element=c,e.el=a(c),e.suggestions=[],e.badQueries=[],e.selectedIndex=-1,e.currentValue=e.element.value,e.timeoutId=null,e.cachedResponse={},e.onChangeTimeout=null,e.onChange=null,e.isLocal=!1,e.suggestionsContainer=null,e.noSuggestionsContainer=null,e.options=a.extend(!0,{},b.defaults,d),e.classes={selected:"wbcr-factory-clearfy-236__autocomplete-selected",suggestion:"wbcr-factory-clearfy-236__autocomplete-suggestion"},e.hint=null,e.hintValue="",e.selection=null,e.initialize(),e.setOptions(d)}function c(a,b,c){return a.value.toLowerCase().indexOf(c)!==-1}function d(b){return"string"==typeof b?a.parseJSON(b):b}function e(a,b){if(!b)return a.value;var c="("+g.escapeRegExChars(b)+")";return a.value.replace(new RegExp(c,"gi"),"<strong>$1</strong>").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>")}function f(a,b){return'<div class="wbcr-factory-clearfy-236__autocomplete-group">'+b+"</div>"}var g=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),h={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40},i=a.noop;b.utils=g,a.Autocomplete=b,b.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:e,formatGroup:f,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,containerClass:"wbcr-factory-clearfy-236__autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:c,paramName:"query",transformResult:d,showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},b.prototype={initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo||"body"),"auto"!==g.width&&c.css("width",g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),c.on("click.autocomplete",function(){clearTimeout(d.blurTimeoutId)}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.disabled||(a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange())},onBlur:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);b.blurTimeoutId=setTimeout(function(){b.hide(),b.selection&&b.currentValue!==e&&(c.onInvalidateSelection||a.noop).call(b.element)},200)},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=a.extend({},c.options,b);c.isLocal=Array.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex}),this.options=d},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearTimeout(a.onChangeTimeout),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.top+=d.scrollTop,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()+"px"),c.css(i)}},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:!document.selection||(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length)},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===h.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case h.ESC:b.el.val(b.currentValue),b.hide();break;case h.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case h.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(b.selectedIndex===-1)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case h.RETURN:if(b.selectedIndex===-1)return void b.hide();b.select(b.selectedIndex);break;case h.UP:b.moveUp();break;case h.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case h.UP:case h.DOWN:return}clearTimeout(b.onChangeTimeout),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeTimeout=setTimeout(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){if(this.ignoreValueChange)return void(this.ignoreValueChange=!1);var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearTimeout(b.onChangeTimeout),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,h.onSearchStart.call(g.element,h.params)!==!1){if(d=h.ignoreParams?null:h.params,a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&Array.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearTimeout(b.onChangeTimeout),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var f=a.data[e];return b===f?"":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g,a)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=b.options.beforeRender,d=a(b.suggestionsContainer),e=a(b.noSuggestionsContainer);this.adjustContainerWidth(),e.detach(),d.empty(),d.append(e),a.isFunction(c)&&c.call(b.element,d,b.suggestions),b.fixPosition(),d.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width?(b=c.el.outerWidth(),e.css("width",b>0?b:300)):"flex"===d.width&&e.css("width","")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),a.inArray(b,["auto","bottom","top"])===-1&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,d.selectedIndex!==-1&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(b.selectedIndex!==-1)return 0===b.selectedIndex?(a(b.suggestionsContainer).children("."+b.classes.suggestion).first().removeClass(b.classes.selected),b.selectedIndex=-1,b.ignoreValueChange=!1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,e<f?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||(c.ignoreValueChange=!0,c.el.val(c.getValue(c.suggestions[b].value))),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)},a.fn.wfactory_clearfy_autocomplete||(a.fn.wfactory_clearfy_autocomplete=a.fn.devbridgeAutocomplete)});
5
  * Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
6
  * For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
7
  */
8
+ !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=this;e.element=c,e.el=a(c),e.suggestions=[],e.badQueries=[],e.selectedIndex=-1,e.currentValue=e.element.value,e.timeoutId=null,e.cachedResponse={},e.onChangeTimeout=null,e.onChange=null,e.isLocal=!1,e.suggestionsContainer=null,e.noSuggestionsContainer=null,e.options=a.extend(!0,{},b.defaults,d),e.classes={selected:"wbcr-factory-clearfy-237__autocomplete-selected",suggestion:"wbcr-factory-clearfy-237__autocomplete-suggestion"},e.hint=null,e.hintValue="",e.selection=null,e.initialize(),e.setOptions(d)}function c(a,b,c){return a.value.toLowerCase().indexOf(c)!==-1}function d(b){return"string"==typeof b?a.parseJSON(b):b}function e(a,b){if(!b)return a.value;var c="("+g.escapeRegExChars(b)+")";return a.value.replace(new RegExp(c,"gi"),"<strong>$1</strong>").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>")}function f(a,b){return'<div class="wbcr-factory-clearfy-237__autocomplete-group">'+b+"</div>"}var g=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),h={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40},i=a.noop;b.utils=g,a.Autocomplete=b,b.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:e,formatGroup:f,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,containerClass:"wbcr-factory-clearfy-237__autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:c,paramName:"query",transformResult:d,showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},b.prototype={initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo||"body"),"auto"!==g.width&&c.css("width",g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),c.on("click.autocomplete",function(){clearTimeout(d.blurTimeoutId)}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.disabled||(a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange())},onBlur:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);b.blurTimeoutId=setTimeout(function(){b.hide(),b.selection&&b.currentValue!==e&&(c.onInvalidateSelection||a.noop).call(b.element)},200)},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=a.extend({},c.options,b);c.isLocal=Array.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex}),this.options=d},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearTimeout(a.onChangeTimeout),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.top+=d.scrollTop,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()+"px"),c.css(i)}},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:!document.selection||(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length)},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===h.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case h.ESC:b.el.val(b.currentValue),b.hide();break;case h.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case h.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(b.selectedIndex===-1)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case h.RETURN:if(b.selectedIndex===-1)return void b.hide();b.select(b.selectedIndex);break;case h.UP:b.moveUp();break;case h.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case h.UP:case h.DOWN:return}clearTimeout(b.onChangeTimeout),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeTimeout=setTimeout(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){if(this.ignoreValueChange)return void(this.ignoreValueChange=!1);var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearTimeout(b.onChangeTimeout),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,h.onSearchStart.call(g.element,h.params)!==!1){if(d=h.ignoreParams?null:h.params,a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&Array.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearTimeout(b.onChangeTimeout),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var f=a.data[e];return b===f?"":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g,a)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=b.options.beforeRender,d=a(b.suggestionsContainer),e=a(b.noSuggestionsContainer);this.adjustContainerWidth(),e.detach(),d.empty(),d.append(e),a.isFunction(c)&&c.call(b.element,d,b.suggestions),b.fixPosition(),d.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width?(b=c.el.outerWidth(),e.css("width",b>0?b:300)):"flex"===d.width&&e.css("width","")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),a.inArray(b,["auto","bottom","top"])===-1&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,d.selectedIndex!==-1&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(b.selectedIndex!==-1)return 0===b.selectedIndex?(a(b.suggestionsContainer).children("."+b.classes.suggestion).first().removeClass(b.classes.selected),b.selectedIndex=-1,b.ignoreValueChange=!1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,e<f?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||(c.ignoreValueChange=!0,c.el.val(c.getValue(c.suggestions[b].value))),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)},a.fn.wfactory_clearfy_autocomplete||(a.fn.wfactory_clearfy_autocomplete=a.fn.devbridgeAutocomplete)});
libs/factory/clearfy/boot.php CHANGED
@@ -14,22 +14,22 @@ if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
 
17
- if( defined('FACTORY_CLEARFY_236_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_CLEARFY_236_LOADED', true);
22
 
23
- define('FACTORY_CLEARFY_236', '2.3.6');
24
 
25
- define('FACTORY_CLEARFY_236_DIR', dirname(__FILE__));
26
- define('FACTORY_CLEARFY_236_URL', plugins_url(null, __FILE__));
27
 
28
- load_plugin_textdomain('wbcr_factory_clearfy_236', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
- require(FACTORY_CLEARFY_236_DIR . '/includes/ajax-handlers.php');
31
- require(FACTORY_CLEARFY_236_DIR . '/includes/class-helpers.php');
32
- require(FACTORY_CLEARFY_236_DIR . '/includes/class-configurate.php');
33
 
34
  // module provides function only for the admin area
35
  if( is_admin() ) {
@@ -38,13 +38,13 @@ if( is_admin() ) {
38
  * на все страницы админпанели.
39
  */
40
  add_action('admin_enqueue_scripts', function ($hook) {
41
- wp_enqueue_script('wbcr-factory-clearfy-236-global', FACTORY_CLEARFY_236_URL . '/assets/js/clearfy-globals.js', [
42
  'jquery',
43
- 'wfactory-445-core-general'
44
- ], FACTORY_CLEARFY_236);
45
 
46
- require_once FACTORY_CLEARFY_236_DIR . '/includes/class-search-options.php';
47
- $all_options = \WBCR\Factory_Clearfy_236\Search_Options::get_all_options();
48
 
49
  if( empty($all_options) ) {
50
  return;
@@ -72,18 +72,18 @@ if( is_admin() ) {
72
  return;
73
  }
74
 
75
- wp_localize_script('wbcr-factory-clearfy-236-global', 'wfactory_clearfy_search_options', $formated_options);
76
  });
77
 
78
- if( defined('FACTORY_PAGES_444_LOADED') ) {
79
- require(FACTORY_CLEARFY_236_DIR . '/pages/class-pages.php');
80
- require(FACTORY_CLEARFY_236_DIR . '/pages/class-page-more-features.php');
81
- require(FACTORY_CLEARFY_236_DIR . '/pages/class-page-license.php');
82
- require(FACTORY_CLEARFY_236_DIR . '/pages/class-pages-components.php');
83
 
84
- require(FACTORY_CLEARFY_236_DIR . '/pages/setup-parts/class-step.php');
85
- require(FACTORY_CLEARFY_236_DIR . '/pages/setup-parts/class-step-form.php');
86
- require(FACTORY_CLEARFY_236_DIR . '/pages/setup-parts/class-step-custom.php');
87
- require(FACTORY_CLEARFY_236_DIR . '/pages/class-page-setup.php');
88
  }
89
  }
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_CLEARFY_237_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_CLEARFY_237_LOADED', true);
22
 
23
+ define('FACTORY_CLEARFY_237', '2.3.7');
24
 
25
+ define('FACTORY_CLEARFY_237_DIR', dirname(__FILE__));
26
+ define('FACTORY_CLEARFY_237_URL', plugins_url(null, __FILE__));
27
 
28
+ load_plugin_textdomain('wbcr_factory_clearfy_237', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
+ require(FACTORY_CLEARFY_237_DIR . '/includes/ajax-handlers.php');
31
+ require(FACTORY_CLEARFY_237_DIR . '/includes/class-helpers.php');
32
+ require(FACTORY_CLEARFY_237_DIR . '/includes/class-configurate.php');
33
 
34
  // module provides function only for the admin area
35
  if( is_admin() ) {
38
  * на все страницы админпанели.
39
  */
40
  add_action('admin_enqueue_scripts', function ($hook) {
41
+ wp_enqueue_script('wbcr-factory-clearfy-237-global', FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-globals.js', [
42
  'jquery',
43
+ 'wfactory-446-core-general'
44
+ ], FACTORY_CLEARFY_237);
45
 
46
+ require_once FACTORY_CLEARFY_237_DIR . '/includes/class-search-options.php';
47
+ $all_options = \WBCR\Factory_Clearfy_237\Search_Options::get_all_options();
48
 
49
  if( empty($all_options) ) {
50
  return;
72
  return;
73
  }
74
 
75
+ wp_localize_script('wbcr-factory-clearfy-237-global', 'wfactory_clearfy_search_options', $formated_options);
76
  });
77
 
78
+ if( defined('FACTORY_PAGES_445_LOADED') ) {
79
+ require(FACTORY_CLEARFY_237_DIR . '/pages/class-pages.php');
80
+ require(FACTORY_CLEARFY_237_DIR . '/pages/class-page-more-features.php');
81
+ require(FACTORY_CLEARFY_237_DIR . '/pages/class-page-license.php');
82
+ require(FACTORY_CLEARFY_237_DIR . '/pages/class-pages-components.php');
83
 
84
+ require(FACTORY_CLEARFY_237_DIR . '/pages/setup-parts/class-step.php');
85
+ require(FACTORY_CLEARFY_237_DIR . '/pages/setup-parts/class-step-form.php');
86
+ require(FACTORY_CLEARFY_237_DIR . '/pages/setup-parts/class-step-custom.php');
87
+ require(FACTORY_CLEARFY_237_DIR . '/pages/class-page-setup.php');
88
  }
89
  }
libs/factory/clearfy/includes/ajax-handlers.php CHANGED
@@ -15,12 +15,12 @@ if( !defined('ABSPATH') ) {
15
  /**
16
  * Обработчик ajax запросов для виджета подписки на новости
17
  *
18
- * @param Wbcr_Factory445_Plugin $plugin_instance
19
  *
20
  * @since 2.3.0
21
  *
22
  */
23
- function wbcr_factory_clearfy_236_subscribe($plugin_instance)
24
  {
25
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
26
 
@@ -34,11 +34,11 @@ function wbcr_factory_clearfy_236_subscribe($plugin_instance)
34
  check_admin_referer("clearfy_subscribe_for_{$plugin_name}");
35
 
36
  if( empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
37
- wp_send_json_error(['error_message' => __('You did not send your email address or it is incorrect!', 'wbcr_factory_clearfy_236')]);
38
  }
39
 
40
  if( empty($group_id) ) {
41
- wp_send_json_error(['error_message' => __('Group ID is empty!', 'wbcr_factory_clearfy_236')]);
42
  }
43
 
44
  $response = wp_remote_post('https://clearfy.pro/wp-json/mailerlite/v1/subscribe/', [
@@ -63,7 +63,7 @@ function wbcr_factory_clearfy_236_subscribe($plugin_instance)
63
  wp_send_json_success(['subscribed' => $data['subscribed']]);
64
  }
65
 
66
- wp_send_json_error(['error_message' => __('Unknown error while trying to subscribe to newsletter.', 'wbcr_factory_clearfy_236')]);
67
 
68
  die();
69
  }
@@ -71,12 +71,12 @@ function wbcr_factory_clearfy_236_subscribe($plugin_instance)
71
  /**
72
  * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
73
  *
74
- * @param Wbcr_Factory445_Plugin $plugin_instance
75
  *
76
  * @since 2.0.7
77
  *
78
  */
79
- function wbcr_factory_clearfy_236_check_license($plugin_instance)
80
  {
81
 
82
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
@@ -91,7 +91,7 @@ function wbcr_factory_clearfy_236_check_license($plugin_instance)
91
  check_admin_referer("clearfy_activate_license_for_{$plugin_name}");
92
 
93
  if( empty($action) || !in_array($action, ['activate', 'deactivate', 'sync', 'unsubscribe']) ) {
94
- wp_send_json_error(['error_message' => __('Licensing action not passed or this action is prohibited!', 'wbcr_factory_clearfy_236')]);
95
  die();
96
  }
97
 
@@ -102,23 +102,23 @@ function wbcr_factory_clearfy_236_check_license($plugin_instance)
102
  switch( $action ) {
103
  case 'activate':
104
  if( empty($license_key) || strlen($license_key) > 32 ) {
105
- wp_send_json_error(['error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'wbcr_factory_clearfy_236')]);
106
  } else {
107
  $plugin_instance->premium->activate($license_key);
108
- $success_message = __('Your license has been successfully activated', 'wbcr_factory_clearfy_236');
109
  }
110
  break;
111
  case 'deactivate':
112
  $plugin_instance->premium->deactivate();
113
- $success_message = __('The license is deactivated', 'wbcr_factory_clearfy_236');
114
  break;
115
  case 'sync':
116
  $plugin_instance->premium->sync();
117
- $success_message = __('The license has been updated', 'wbcr_factory_clearfy_236');
118
  break;
119
  case 'unsubscribe':
120
  $plugin_instance->premium->cancel_paid_subscription();
121
- $success_message = __('Subscription success cancelled', 'wbcr_factory_clearfy_236');
122
  break;
123
  }
124
  } catch( Exception $e ) {
15
  /**
16
  * Обработчик ajax запросов для виджета подписки на новости
17
  *
18
+ * @param Wbcr_Factory446_Plugin $plugin_instance
19
  *
20
  * @since 2.3.0
21
  *
22
  */
23
+ function wbcr_factory_clearfy_237_subscribe($plugin_instance)
24
  {
25
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
26
 
34
  check_admin_referer("clearfy_subscribe_for_{$plugin_name}");
35
 
36
  if( empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
37
+ wp_send_json_error(['error_message' => __('You did not send your email address or it is incorrect!', 'wbcr_factory_clearfy_237')]);
38
  }
39
 
40
  if( empty($group_id) ) {
41
+ wp_send_json_error(['error_message' => __('Group ID is empty!', 'wbcr_factory_clearfy_237')]);
42
  }
43
 
44
  $response = wp_remote_post('https://clearfy.pro/wp-json/mailerlite/v1/subscribe/', [
63
  wp_send_json_success(['subscribed' => $data['subscribed']]);
64
  }
65
 
66
+ wp_send_json_error(['error_message' => __('Unknown error while trying to subscribe to newsletter.', 'wbcr_factory_clearfy_237')]);
67
 
68
  die();
69
  }
71
  /**
72
  * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
73
  *
74
+ * @param Wbcr_Factory446_Plugin $plugin_instance
75
  *
76
  * @since 2.0.7
77
  *
78
  */
79
+ function wbcr_factory_clearfy_237_check_license($plugin_instance)
80
  {
81
 
82
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
91
  check_admin_referer("clearfy_activate_license_for_{$plugin_name}");
92
 
93
  if( empty($action) || !in_array($action, ['activate', 'deactivate', 'sync', 'unsubscribe']) ) {
94
+ wp_send_json_error(['error_message' => __('Licensing action not passed or this action is prohibited!', 'wbcr_factory_clearfy_237')]);
95
  die();
96
  }
97
 
102
  switch( $action ) {
103
  case 'activate':
104
  if( empty($license_key) || strlen($license_key) > 32 ) {
105
+ wp_send_json_error(['error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'wbcr_factory_clearfy_237')]);
106
  } else {
107
  $plugin_instance->premium->activate($license_key);
108
+ $success_message = __('Your license has been successfully activated', 'wbcr_factory_clearfy_237');
109
  }
110
  break;
111
  case 'deactivate':
112
  $plugin_instance->premium->deactivate();
113
+ $success_message = __('The license is deactivated', 'wbcr_factory_clearfy_237');
114
  break;
115
  case 'sync':
116
  $plugin_instance->premium->sync();
117
+ $success_message = __('The license has been updated', 'wbcr_factory_clearfy_237');
118
  break;
119
  case 'unsubscribe':
120
  $plugin_instance->premium->cancel_paid_subscription();
121
+ $success_message = __('Subscription success cancelled', 'wbcr_factory_clearfy_237');
122
  break;
123
  }
124
  } catch( Exception $e ) {
libs/factory/clearfy/includes/class-configurate.php CHANGED
@@ -13,12 +13,12 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  * @copyright (c) 2018, Webcraftic Ltd
14
  *
15
  */
16
- abstract class Wbcr_FactoryClearfy236_Configurate {
17
 
18
  /**
19
- * @param Wbcr_Factory445_Plugin $plugin
20
  */
21
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
22
  $this->plugin = $plugin;
23
  $this->registerActionsAndFilters();
24
  }
13
  * @copyright (c) 2018, Webcraftic Ltd
14
  *
15
  */
16
+ abstract class Wbcr_FactoryClearfy237_Configurate {
17
 
18
  /**
19
+ * @param Wbcr_Factory446_Plugin $plugin
20
  */
21
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
22
  $this->plugin = $plugin;
23
  $this->registerActionsAndFilters();
24
  }
libs/factory/clearfy/includes/class-helpers.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  // Exit if accessed directly
3
- if ( ! defined( 'ABSPATH' ) ) {
4
  exit;
5
  }
6
 
@@ -14,24 +14,25 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  * @copyright (c) 2018, Webcraftic Ltd
15
  *
16
  */
17
- class WbcrFactoryClearfy236_Helpers {
18
 
19
  /**
20
  * Recursive sanitation for an array
21
  *
22
- * @since 2.0.5
23
- *
24
  * @param $array
25
  *
26
  * @return mixed
 
 
27
  */
28
- public static function recursiveSanitizeArray( $array, $function ) {
29
- foreach ( $array as $key => &$value ) {
30
- if ( is_array( $value ) ) {
31
- $value = self::recursiveSanitizeArray( $value, $function );
 
32
  } else {
33
- if ( function_exists( $function ) ) {
34
- $value = $function( $value );
35
  }
36
  }
37
  }
@@ -42,14 +43,15 @@ class WbcrFactoryClearfy236_Helpers {
42
  /**
43
  * Is permalink enabled?
44
  *
45
- * @since 1.0.0
46
  * @return bool
 
47
  * @global WP_Rewrite $wp_rewrite
48
  */
49
- public static function isPermalink() {
 
50
  global $wp_rewrite;
51
 
52
- if ( ! isset( $wp_rewrite ) || ! is_object( $wp_rewrite ) || ! $wp_rewrite->using_permalinks() ) {
53
  return false;
54
  }
55
 
@@ -59,44 +61,47 @@ class WbcrFactoryClearfy236_Helpers {
59
  /**
60
  * Display 404 page to bump bots and bad guys
61
  *
62
- * @param bool $simple If true force displaying basic 404 page
63
  */
64
- public static function setError404() {
 
65
  global $wp_query;
66
 
67
- if ( function_exists( 'status_header' ) ) {
68
- status_header( '404' );
69
  nocache_headers();
70
  }
71
 
72
- if ( $wp_query && is_object( $wp_query ) ) {
73
  $wp_query->set_404();
74
- get_template_part( 404 );
75
  } else {
76
  global $pagenow;
77
 
78
  $pagenow = 'index.php';
79
 
80
- if ( ! defined( 'WP_USE_THEMES' ) ) {
81
- define( 'WP_USE_THEMES', true );
82
  }
83
 
84
  wp();
85
 
86
- $_SERVER['REQUEST_URI'] = self::userTrailingslashit( '/hmwp_404' );
87
 
88
- require_once( ABSPATH . WPINC . '/template-loader.php' );
89
  }
90
 
91
  exit();
92
  }
93
 
94
- public static function useTrailingSlashes() {
95
- return ( '/' === substr( get_option( 'permalink_structure' ), - 1, 1 ) );
 
96
  }
97
 
98
- public static function userTrailingslashit( $string ) {
99
- return self::useTrailingSlashes() ? trailingslashit( $string ) : untrailingslashit( $string );
 
100
  }
101
 
102
  /**
@@ -104,18 +109,19 @@ class WbcrFactoryClearfy236_Helpers {
104
  *
105
  * @param string $string
106
  * @param string $find
107
- * @param bool $case_sensitive
108
  *
109
  * @return bool
110
  */
111
- public static function strContains( $string, $find, $case_sensitive = true ) {
112
- if ( empty( $string ) || empty( $find ) ) {
 
113
  return false;
114
  }
115
 
116
- $pos = $case_sensitive ? strpos( $string, $find ) : stripos( $string, $find );
117
 
118
- return ! ( $pos === false );
119
  }
120
 
121
  /**
@@ -123,16 +129,17 @@ class WbcrFactoryClearfy236_Helpers {
123
  *
124
  * @param string $string
125
  * @param string $find
126
- * @param bool $case_sensitive
127
  *
128
  * @return bool
129
  */
130
- public static function strStartsWith( $string, $find, $case_sensitive = true ) {
131
- if ( $case_sensitive ) {
132
- return strpos( $string, $find ) === 0;
 
133
  }
134
 
135
- return stripos( $string, $find ) === 0;
136
  }
137
 
138
  /**
@@ -144,35 +151,38 @@ class WbcrFactoryClearfy236_Helpers {
144
  *
145
  * @return bool
146
  */
147
- public static function strEndsWith( $string, $find, $case_sensitive = true ) {
148
- $expected_position = strlen( $string ) - strlen( $find );
 
149
 
150
- if ( $case_sensitive ) {
151
- return strrpos( $string, $find, 0 ) === $expected_position;
152
  }
153
 
154
- return strripos( $string, $find, 0 ) === $expected_position;
155
  }
156
 
157
- public static function arrayMergeInsert( array $arr, array $inserted, $position = 'bottom', $key = null ) {
158
- if ( $position == 'top' ) {
159
- return array_merge( $inserted, $arr );
 
160
  }
161
- $key_position = ( $key === null ) ? false : array_search( $key, array_keys( $arr ) );
162
- if ( $key_position === false OR ( $position != 'before' AND $position != 'after' ) ) {
163
- return array_merge( $arr, $inserted );
164
  }
165
- if ( $position == 'after' ) {
166
- $key_position ++;
167
  }
168
 
169
- return array_merge( array_slice( $arr, 0, $key_position, true ), $inserted, array_slice( $arr, $key_position, null, true ) );
170
  }
171
 
172
- public static function maybeGetPostJson( $name ) {
173
- if ( isset( $_POST[ $name ] ) AND is_string( $_POST[ $name ] ) ) {
174
- $result = json_decode( stripslashes( $_POST[ $name ] ), true );
175
- if ( ! is_array( $result ) ) {
 
176
  $result = [];
177
  }
178
 
@@ -182,8 +192,9 @@ class WbcrFactoryClearfy236_Helpers {
182
  }
183
  }
184
 
185
- public static function getEscapeJson( array $data ) {
186
- return htmlspecialchars( json_encode( $data ), ENT_QUOTES, 'UTF-8' );
 
187
  }
188
 
189
  /**
@@ -193,9 +204,10 @@ class WbcrFactoryClearfy236_Helpers {
193
  *
194
  * @return string
195
  */
196
- public static function replaceMsUrl( $string ) {
197
- if ( is_multisite() && BLOG_ID_CURRENT_SITE != get_current_blog_id() ) {
198
- return str_replace( get_site_url( BLOG_ID_CURRENT_SITE ), get_site_url( get_current_blog_id() ), $string );
 
199
  }
200
 
201
  return $string;
@@ -206,60 +218,63 @@ class WbcrFactoryClearfy236_Helpers {
206
  *
207
  * @return void
208
  */
209
- public static function flushPageCache() {
210
- if ( function_exists( 'wp_cache_clear_cache' ) ) {
211
- if ( is_multisite() ) {
 
212
  $blog_id = get_current_blog_id();
213
- wp_cache_clear_cache( $blog_id );
214
  } else {
215
  wp_cache_clear_cache();
216
  }
217
- } else if ( has_action( 'cachify_flush_cache' ) ) {
218
- do_action( 'cachify_flush_cache' );
219
- } else if ( function_exists( 'w3tc_pgcache_flush' ) ) {
220
  w3tc_pgcache_flush();
221
- } else if ( function_exists( 'wp_fast_cache_bulk_delete_all' ) ) {
222
  wp_fast_cache_bulk_delete_all();
223
- } else if ( class_exists( 'WpFastestCache' ) ) {
224
  $wpfc = new WpFastestCache();
225
  $wpfc->deleteCache();
226
- } else if ( class_exists( 'c_ws_plugin__qcache_purging_routines' ) ) {
227
  c_ws_plugin__qcache_purging_routines::purge_cache_dir(); // quick cache
228
- } else if ( class_exists( 'zencache' ) ) {
229
  zencache::clear();
230
- } else if ( class_exists( 'comet_cache' ) ) {
231
  comet_cache::clear();
232
- } else if ( class_exists( 'WpeCommon' ) ) {
 
 
233
  // WPEngine cache purge/flush methods to call by default
234
  $wpe_methods = [
235
  'purge_varnish_cache',
236
  ];
237
 
238
  // More agressive clear/flush/purge behind a filter
239
- if ( apply_filters( 'wbcr/factory/flush_wpengine_aggressive', false ) ) {
240
- $wpe_methods = array_merge( $wpe_methods, [ 'purge_memcached', 'clear_maxcdn_cache' ] );
241
  }
242
 
243
  // Filtering the entire list of WpeCommon methods to be called (for advanced usage + easier testing)
244
- $wpe_methods = apply_filters( 'wbcr/factory/wpengine_methods', $wpe_methods );
245
 
246
- foreach ( $wpe_methods as $wpe_method ) {
247
- if ( method_exists( 'WpeCommon', $wpe_method ) ) {
248
  WpeCommon::$wpe_method();
249
  }
250
  }
251
- } else if ( function_exists( 'sg_cachepress_purge_cache' ) ) {
252
  sg_cachepress_purge_cache();
253
- } else if ( file_exists( WP_CONTENT_DIR . '/wp-cache-config.php' ) && function_exists( 'prune_super_cache' ) ) {
254
  // fallback for WP-Super-Cache
255
  global $cache_path;
256
- if ( is_multisite() ) {
257
  $blog_id = get_current_blog_id();
258
- prune_super_cache( get_supercache_dir( $blog_id ), true );
259
- prune_super_cache( $cache_path . 'blogs/', true );
260
  } else {
261
- prune_super_cache( $cache_path . 'supercache/', true );
262
- prune_super_cache( $cache_path, true );
263
  }
264
  }
265
  }
1
  <?php
2
  // Exit if accessed directly
3
+ if( !defined('ABSPATH') ) {
4
  exit;
5
  }
6
 
14
  * @copyright (c) 2018, Webcraftic Ltd
15
  *
16
  */
17
+ class WbcrFactoryClearfy237_Helpers {
18
 
19
  /**
20
  * Recursive sanitation for an array
21
  *
 
 
22
  * @param $array
23
  *
24
  * @return mixed
25
+ * @since 2.0.5
26
+ *
27
  */
28
+ public static function recursiveSanitizeArray($array, $function)
29
+ {
30
+ foreach($array as $key => &$value) {
31
+ if( is_array($value) ) {
32
+ $value = self::recursiveSanitizeArray($value, $function);
33
  } else {
34
+ if( function_exists($function) ) {
35
+ $value = $function($value);
36
  }
37
  }
38
  }
43
  /**
44
  * Is permalink enabled?
45
  *
 
46
  * @return bool
47
+ * @since 1.0.0
48
  * @global WP_Rewrite $wp_rewrite
49
  */
50
+ public static function isPermalink()
51
+ {
52
  global $wp_rewrite;
53
 
54
+ if( !isset($wp_rewrite) || !is_object($wp_rewrite) || !$wp_rewrite->using_permalinks() ) {
55
  return false;
56
  }
57
 
61
  /**
62
  * Display 404 page to bump bots and bad guys
63
  *
64
+ * @param bool $simple If true force displaying basic 404 page
65
  */
66
+ public static function setError404()
67
+ {
68
  global $wp_query;
69
 
70
+ if( function_exists('status_header') ) {
71
+ status_header('404');
72
  nocache_headers();
73
  }
74
 
75
+ if( $wp_query && is_object($wp_query) ) {
76
  $wp_query->set_404();
77
+ get_template_part(404);
78
  } else {
79
  global $pagenow;
80
 
81
  $pagenow = 'index.php';
82
 
83
+ if( !defined('WP_USE_THEMES') ) {
84
+ define('WP_USE_THEMES', true);
85
  }
86
 
87
  wp();
88
 
89
+ $_SERVER['REQUEST_URI'] = self::userTrailingslashit('/hmwp_404');
90
 
91
+ require_once(ABSPATH . WPINC . '/template-loader.php');
92
  }
93
 
94
  exit();
95
  }
96
 
97
+ public static function useTrailingSlashes()
98
+ {
99
+ return ('/' === substr(get_option('permalink_structure'), -1, 1));
100
  }
101
 
102
+ public static function userTrailingslashit($string)
103
+ {
104
+ return self::useTrailingSlashes() ? trailingslashit($string) : untrailingslashit($string);
105
  }
106
 
107
  /**
109
  *
110
  * @param string $string
111
  * @param string $find
112
+ * @param bool $case_sensitive
113
  *
114
  * @return bool
115
  */
116
+ public static function strContains($string, $find, $case_sensitive = true)
117
+ {
118
+ if( empty($string) || empty($find) ) {
119
  return false;
120
  }
121
 
122
+ $pos = $case_sensitive ? strpos($string, $find) : stripos($string, $find);
123
 
124
+ return !($pos === false);
125
  }
126
 
127
  /**
129
  *
130
  * @param string $string
131
  * @param string $find
132
+ * @param bool $case_sensitive
133
  *
134
  * @return bool
135
  */
136
+ public static function strStartsWith($string, $find, $case_sensitive = true)
137
+ {
138
+ if( $case_sensitive ) {
139
+ return strpos($string, $find) === 0;
140
  }
141
 
142
+ return stripos($string, $find) === 0;
143
  }
144
 
145
  /**
151
  *
152
  * @return bool
153
  */
154
+ public static function strEndsWith($string, $find, $case_sensitive = true)
155
+ {
156
+ $expected_position = strlen($string) - strlen($find);
157
 
158
+ if( $case_sensitive ) {
159
+ return strrpos($string, $find, 0) === $expected_position;
160
  }
161
 
162
+ return strripos($string, $find, 0) === $expected_position;
163
  }
164
 
165
+ public static function arrayMergeInsert(array $arr, array $inserted, $position = 'bottom', $key = null)
166
+ {
167
+ if( $position == 'top' ) {
168
+ return array_merge($inserted, $arr);
169
  }
170
+ $key_position = ($key === null) ? false : array_search($key, array_keys($arr));
171
+ if( $key_position === false or ($position != 'before' and $position != 'after') ) {
172
+ return array_merge($arr, $inserted);
173
  }
174
+ if( $position == 'after' ) {
175
+ $key_position++;
176
  }
177
 
178
+ return array_merge(array_slice($arr, 0, $key_position, true), $inserted, array_slice($arr, $key_position, null, true));
179
  }
180
 
181
+ public static function maybeGetPostJson($name)
182
+ {
183
+ if( isset($_POST[$name]) and is_string($_POST[$name]) ) {
184
+ $result = json_decode(stripslashes($_POST[$name]), true);
185
+ if( !is_array($result) ) {
186
  $result = [];
187
  }
188
 
192
  }
193
  }
194
 
195
+ public static function getEscapeJson(array $data)
196
+ {
197
+ return htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
198
  }
199
 
200
  /**
204
  *
205
  * @return string
206
  */
207
+ public static function replaceMsUrl($string)
208
+ {
209
+ if( is_multisite() && BLOG_ID_CURRENT_SITE != get_current_blog_id() ) {
210
+ return str_replace(get_site_url(BLOG_ID_CURRENT_SITE), get_site_url(get_current_blog_id()), $string);
211
  }
212
 
213
  return $string;
218
  *
219
  * @return void
220
  */
221
+ public static function flushPageCache()
222
+ {
223
+ if( function_exists('wp_cache_clear_cache') ) {
224
+ if( is_multisite() ) {
225
  $blog_id = get_current_blog_id();
226
+ wp_cache_clear_cache($blog_id);
227
  } else {
228
  wp_cache_clear_cache();
229
  }
230
+ } else if( has_action('cachify_flush_cache') ) {
231
+ do_action('cachify_flush_cache');
232
+ } else if( function_exists('w3tc_pgcache_flush') ) {
233
  w3tc_pgcache_flush();
234
+ } else if( function_exists('wp_fast_cache_bulk_delete_all') ) {
235
  wp_fast_cache_bulk_delete_all();
236
+ } else if( class_exists('WpFastestCache') ) {
237
  $wpfc = new WpFastestCache();
238
  $wpfc->deleteCache();
239
+ } else if( class_exists('c_ws_plugin__qcache_purging_routines') ) {
240
  c_ws_plugin__qcache_purging_routines::purge_cache_dir(); // quick cache
241
+ } else if( class_exists('zencache') ) {
242
  zencache::clear();
243
+ } else if( class_exists('comet_cache') ) {
244
  comet_cache::clear();
245
+ } else if( class_exists('WCL_Cache_Helpers') ) {
246
+ WCL_Cache_Helpers::deleteCache();
247
+ } else if( class_exists('WpeCommon') ) {
248
  // WPEngine cache purge/flush methods to call by default
249
  $wpe_methods = [
250
  'purge_varnish_cache',
251
  ];
252
 
253
  // More agressive clear/flush/purge behind a filter
254
+ if( apply_filters('wbcr/factory/flush_wpengine_aggressive', false) ) {
255
+ $wpe_methods = array_merge($wpe_methods, ['purge_memcached', 'clear_maxcdn_cache']);
256
  }
257
 
258
  // Filtering the entire list of WpeCommon methods to be called (for advanced usage + easier testing)
259
+ $wpe_methods = apply_filters('wbcr/factory/wpengine_methods', $wpe_methods);
260
 
261
+ foreach($wpe_methods as $wpe_method) {
262
+ if( method_exists('WpeCommon', $wpe_method) ) {
263
  WpeCommon::$wpe_method();
264
  }
265
  }
266
+ } else if( function_exists('sg_cachepress_purge_cache') ) {
267
  sg_cachepress_purge_cache();
268
+ } else if( file_exists(WP_CONTENT_DIR . '/wp-cache-config.php') && function_exists('prune_super_cache') ) {
269
  // fallback for WP-Super-Cache
270
  global $cache_path;
271
+ if( is_multisite() ) {
272
  $blog_id = get_current_blog_id();
273
+ prune_super_cache(get_supercache_dir($blog_id), true);
274
+ prune_super_cache($cache_path . 'blogs/', true);
275
  } else {
276
+ prune_super_cache($cache_path . 'supercache/', true);
277
+ prune_super_cache($cache_path, true);
278
  }
279
  }
280
  }
libs/factory/clearfy/includes/class-search-options.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Clearfy_236;
4
 
5
  /**
6
  * Class Search options
1
  <?php
2
 
3
+ namespace WBCR\Factory_Clearfy_237;
4
 
5
  /**
6
  * Class Search options
libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.mo → wbcr_factory_clearfy_237-ru_RU.mo} RENAMED
File without changes
libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.po → wbcr_factory_clearfy_237-ru_RU.po} RENAMED
File without changes
libs/factory/clearfy/pages/class-page-license.php CHANGED
@@ -11,7 +11,7 @@ if( !defined('ABSPATH') ) {
11
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
12
  * @since 2.0.7
13
  */
14
- class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase {
15
 
16
  /**
17
  * {@inheritdoc}
@@ -80,7 +80,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
80
 
81
  /**
82
  * @since 2.0.7
83
- * @var \WBCR\Factory_445\Premium\Provider
84
  */
85
  protected $premium;
86
 
@@ -98,7 +98,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
98
 
99
  /**
100
  * @since 2.0.7
101
- * @var \WBCR\Factory_445\Premium\Interfaces\License
102
  */
103
  protected $premium_license;
104
 
@@ -107,9 +107,9 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
107
 
108
  /**
109
  * {@inheritdoc}
110
- * @param Wbcr_Factory445_Plugin $plugin
111
  */
112
- public function __construct(Wbcr_Factory445_Plugin $plugin)
113
  {
114
  $this->plugin = $plugin;
115
 
@@ -136,8 +136,8 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
136
  {
137
  parent::assets($scripts, $styles);
138
 
139
- $this->styles->add(FACTORY_CLEARFY_236_URL . '/assets/css/license-manager.css');
140
- $this->scripts->add(FACTORY_CLEARFY_236_URL . '/assets/js/clearfy-license-manager.js');
141
  }
142
 
143
  /**
@@ -147,7 +147,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
147
  */
148
  public function ajax_handler()
149
  {
150
- wbcr_factory_clearfy_236_check_license($this->plugin);
151
  }
152
 
153
  /**
@@ -157,7 +157,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
157
  {
158
  ?>
159
  <div id="wcl-license-wrapper"
160
- data-loader="<?php echo FACTORY_CLEARFY_236_URL . '/assets/img/loader.gif'; ?>"
161
  data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
162
  data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
163
  <?php $this->show_license_form(); ?>
@@ -263,11 +263,11 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
263
  if( $this->is_premium ):
264
  ?>
265
  <p style="margin-top: 10px;">
266
- <?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'wbcr_factory_clearfy_236'), $this->plugin->get_support()->get_pricing_url(true, 'license_page')); ?>
267
  </p>
268
  <?php else: ?>
269
  <p style="margin-top: 10px;">
270
- <?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'wbcr_factory_clearfy_236'), $this->plugin->get_support()->get_contacts_url(true, 'license_page')) ?>
271
  </p>
272
  <?php endif;
273
  }
@@ -279,16 +279,16 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
279
  {
280
  ?>
281
  <div id="license-manager"
282
- class="factory-bootstrap-445 onp-page-wrap <?= $this->get_license_type() ?>-license-manager-content">
283
  <div>
284
- <h3><?php printf(__('Activate %s', 'wbcr_factory_clearfy_236'), $this->plan_name) ?></h3>
285
  <?php echo $this->get_plan_description() ?>
286
  </div>
287
  <br>
288
  <?php if( is_wp_error($notice) ) : ?>
289
  <div class="license-message <?= $this->get_license_type() ?>-license-message">
290
  <div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
291
- <h4 class="alert-heading"><?php _e($notice->get_error_message(), 'wbcr_factory_clearfy_236') ?></h4>
292
  </div>
293
  </div>
294
  <?php endif; ?>
@@ -298,20 +298,20 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
298
  <a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
299
  class="purchase-premium" target="_blank" rel="noopener">
300
  <span class="btn btn-gold btn-inner-wrap">
301
- <?php _e('Upgrade to Premium', 'wbcr_factory_clearfy_236') ?>
302
  </span>
303
  </a>
304
- <p><?php printf(__('Your current license for %1$s:', 'wbcr_factory_clearfy_236'), $this->plugin->getPluginTitle()) ?></p>
305
  <?php endif; ?>
306
  <div class="license-details-block <?= $this->get_license_type() ?>-details-block">
307
  <?php if( $this->is_premium ): ?>
308
  <a data-action="deactivate" href="#"
309
  class="btn btn-default btn-small license-delete-button wcl-control-btn">
310
- <?php _e('Delete Key', 'wbcr_factory_clearfy_236') ?>
311
  </a>
312
  <a data-action="sync" href="#"
313
  class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
314
- <?php _e('Synchronization', 'wbcr_factory_clearfy_236') ?>
315
  </a>
316
  <?php endif; ?>
317
  <h3>
@@ -330,19 +330,19 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
330
  <?php endif; ?>
331
  <div class="license-key-description">
332
  <?php if( !$this->is_premium ): ?>
333
- <p><?php _e('Public License is a GPLv3 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'wbcr_factory_clearfy_236') ?></p>
334
  <?php else: ?>
335
- <p><?php _e('Сommercial license, only to the premium add-on to this free plugin. You cannot distribute or modify the premium add-on. But free plugin is a GPLv3 compatible license allowing you to change and use this version of the plugin for free.', 'wbcr_factory_clearfy_236') ?></p>
336
  <?php endif; ?>
337
  <?php if( $this->is_premium && $this->premium_has_subscription ): ?>
338
  <p class="activate-trial-hint">
339
- <?php _e('You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wcl-control-btn" href="#">cancel subscription</a>', 'wbcr_factory_clearfy_236') ?>
340
  </p>
341
  <?php endif; ?>
342
 
343
  <?php if( $this->get_license_type() == 'trial' ): ?>
344
  <p class="activate-error-hint">
345
- <?php printf(__('Your license has expired, please extend the license to get updates and support.', 'wbcr_factory_clearfy_236'), '') ?>
346
  </p>
347
  <?php endif; ?>
348
  </div>
@@ -350,19 +350,19 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
350
  <tr>
351
  <!--<td class="license-param license-param-domain">
352
  <span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
353
- <span class="license-value-name"><?php _e('domain', 'wbcr_factory_clearfy_236') ?></span>
354
  </td>-->
355
  <td class="license-param license-param-days">
356
  <span class="license-value"><?= $this->get_plan() ?></span>
357
- <span class="license-value-name"><?php _e('plan', 'wbcr_factory_clearfy_236') ?></span>
358
  </td>
359
  <?php if( $this->is_premium ) : ?>
360
  <td class="license-param license-param-sites">
361
  <span class="license-value">
362
  <?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>
363
- <?php _e('of', 'wbcr_factory_clearfy_236') ?>
364
  <?php echo esc_attr($this->premium_license->get_sites_quota()); ?></span>
365
- <span class="license-value-name"><?php _e('active sites', 'wbcr_factory_clearfy_236') ?></span>
366
  </td>
367
  <?php endif; ?>
368
  <td class="license-param license-param-version">
@@ -372,8 +372,8 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
372
  <?php if( $this->is_premium ): ?>
373
  <td class="license-param license-param-days">
374
  <?php if( $this->get_license_type() == 'trial' ): ?>
375
- <span class="license-value"><?php _e('EXPIRED!', 'wbcr_factory_clearfy_236') ?></span>
376
- <span class="license-value-name"><?php _e('please update the key', 'wbcr_factory_clearfy_236') ?></span>
377
  <?php else: ?>
378
  <span class="license-value">
379
  <?php
@@ -383,9 +383,9 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
383
  echo $this->get_expiration_days();
384
  }
385
  ?>
386
- <small> <?php _e('day(s)', 'wbcr_factory_clearfy_236') ?></small>
387
  </span>
388
- <span class="license-value-name"><?php _e('remained', 'wbcr_factory_clearfy_236') ?></span>
389
  <?php endif; ?>
390
  </td>
391
  <?php endif; ?>
@@ -396,14 +396,14 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
396
  <div class="license-input">
397
  <form action="" method="post">
398
  <?php if($this->is_premium): ?>
399
- <p><?php _e('Have a key to activate the premium version? Paste it here:', 'wbcr_factory_clearfy_236') ?><p>
400
  <?php else: ?>
401
- <p><?php _e('Have a key to activate the plugin? Paste it here:', 'wbcr_factory_clearfy_236') ?>
402
  <p>
403
  <?php endif; ?>
404
  <button data-action="activate" class="btn btn-default wcl-control-btn" type="button"
405
  id="license-submit">
406
- <?php _e('Submit Key', 'wbcr_factory_clearfy_236') ?>
407
  </button>
408
  <div class="license-key-wrap">
409
  <input type="text" id="license-key" name="licensekey" value="" class="form-control"/>
11
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
12
  * @since 2.0.7
13
  */
14
+ class Wbcr_FactoryClearfy237_LicensePage extends Wbcr_FactoryClearfy237_PageBase {
15
 
16
  /**
17
  * {@inheritdoc}
80
 
81
  /**
82
  * @since 2.0.7
83
+ * @var \WBCR\Factory_446\Premium\Provider
84
  */
85
  protected $premium;
86
 
98
 
99
  /**
100
  * @since 2.0.7
101
+ * @var \WBCR\Factory_446\Premium\Interfaces\License
102
  */
103
  protected $premium_license;
104
 
107
 
108
  /**
109
  * {@inheritdoc}
110
+ * @param Wbcr_Factory446_Plugin $plugin
111
  */
112
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
113
  {
114
  $this->plugin = $plugin;
115
 
136
  {
137
  parent::assets($scripts, $styles);
138
 
139
+ $this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/license-manager.css');
140
+ $this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-license-manager.js');
141
  }
142
 
143
  /**
147
  */
148
  public function ajax_handler()
149
  {
150
+ wbcr_factory_clearfy_237_check_license($this->plugin);
151
  }
152
 
153
  /**
157
  {
158
  ?>
159
  <div id="wcl-license-wrapper"
160
+ data-loader="<?php echo FACTORY_CLEARFY_237_URL . '/assets/img/loader.gif'; ?>"
161
  data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
162
  data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
163
  <?php $this->show_license_form(); ?>
263
  if( $this->is_premium ):
264
  ?>
265
  <p style="margin-top: 10px;">
266
+ <?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'wbcr_factory_clearfy_237'), $this->plugin->get_support()->get_pricing_url(true, 'license_page')); ?>
267
  </p>
268
  <?php else: ?>
269
  <p style="margin-top: 10px;">
270
+ <?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'wbcr_factory_clearfy_237'), $this->plugin->get_support()->get_contacts_url(true, 'license_page')) ?>
271
  </p>
272
  <?php endif;
273
  }
279
  {
280
  ?>
281
  <div id="license-manager"
282
+ class="factory-bootstrap-446 onp-page-wrap <?= $this->get_license_type() ?>-license-manager-content">
283
  <div>
284
+ <h3><?php printf(__('Activate %s', 'wbcr_factory_clearfy_237'), $this->plan_name) ?></h3>
285
  <?php echo $this->get_plan_description() ?>
286
  </div>
287
  <br>
288
  <?php if( is_wp_error($notice) ) : ?>
289
  <div class="license-message <?= $this->get_license_type() ?>-license-message">
290
  <div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
291
+ <h4 class="alert-heading"><?php _e($notice->get_error_message(), 'wbcr_factory_clearfy_237') ?></h4>
292
  </div>
293
  </div>
294
  <?php endif; ?>
298
  <a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
299
  class="purchase-premium" target="_blank" rel="noopener">
300
  <span class="btn btn-gold btn-inner-wrap">
301
+ <?php _e('Upgrade to Premium', 'wbcr_factory_clearfy_237') ?>
302
  </span>
303
  </a>
304
+ <p><?php printf(__('Your current license for %1$s:', 'wbcr_factory_clearfy_237'), $this->plugin->getPluginTitle()) ?></p>
305
  <?php endif; ?>
306
  <div class="license-details-block <?= $this->get_license_type() ?>-details-block">
307
  <?php if( $this->is_premium ): ?>
308
  <a data-action="deactivate" href="#"
309
  class="btn btn-default btn-small license-delete-button wcl-control-btn">
310
+ <?php _e('Delete Key', 'wbcr_factory_clearfy_237') ?>
311
  </a>
312
  <a data-action="sync" href="#"
313
  class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
314
+ <?php _e('Synchronization', 'wbcr_factory_clearfy_237') ?>
315
  </a>
316
  <?php endif; ?>
317
  <h3>
330
  <?php endif; ?>
331
  <div class="license-key-description">
332
  <?php if( !$this->is_premium ): ?>
333
+ <p><?php _e('Public License is a GPLv3 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'wbcr_factory_clearfy_237') ?></p>
334
  <?php else: ?>
335
+ <p><?php _e('Сommercial license, only to the premium add-on to this free plugin. You cannot distribute or modify the premium add-on. But free plugin is a GPLv3 compatible license allowing you to change and use this version of the plugin for free.', 'wbcr_factory_clearfy_237') ?></p>
336
  <?php endif; ?>
337
  <?php if( $this->is_premium && $this->premium_has_subscription ): ?>
338
  <p class="activate-trial-hint">
339
+ <?php _e('You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wcl-control-btn" href="#">cancel subscription</a>', 'wbcr_factory_clearfy_237') ?>
340
  </p>
341
  <?php endif; ?>
342
 
343
  <?php if( $this->get_license_type() == 'trial' ): ?>
344
  <p class="activate-error-hint">
345
+ <?php printf(__('Your license has expired, please extend the license to get updates and support.', 'wbcr_factory_clearfy_237'), '') ?>
346
  </p>
347
  <?php endif; ?>
348
  </div>
350
  <tr>
351
  <!--<td class="license-param license-param-domain">
352
  <span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
353
+ <span class="license-value-name"><?php _e('domain', 'wbcr_factory_clearfy_237') ?></span>
354
  </td>-->
355
  <td class="license-param license-param-days">
356
  <span class="license-value"><?= $this->get_plan() ?></span>
357
+ <span class="license-value-name"><?php _e('plan', 'wbcr_factory_clearfy_237') ?></span>
358
  </td>
359
  <?php if( $this->is_premium ) : ?>
360
  <td class="license-param license-param-sites">
361
  <span class="license-value">
362
  <?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>
363
+ <?php _e('of', 'wbcr_factory_clearfy_237') ?>
364
  <?php echo esc_attr($this->premium_license->get_sites_quota()); ?></span>
365
+ <span class="license-value-name"><?php _e('active sites', 'wbcr_factory_clearfy_237') ?></span>
366
  </td>
367
  <?php endif; ?>
368
  <td class="license-param license-param-version">
372
  <?php if( $this->is_premium ): ?>
373
  <td class="license-param license-param-days">
374
  <?php if( $this->get_license_type() == 'trial' ): ?>
375
+ <span class="license-value"><?php _e('EXPIRED!', 'wbcr_factory_clearfy_237') ?></span>
376
+ <span class="license-value-name"><?php _e('please update the key', 'wbcr_factory_clearfy_237') ?></span>
377
  <?php else: ?>
378
  <span class="license-value">
379
  <?php
383
  echo $this->get_expiration_days();
384
  }
385
  ?>
386
+ <small> <?php _e('day(s)', 'wbcr_factory_clearfy_237') ?></small>
387
  </span>
388
+ <span class="license-value-name"><?php _e('remained', 'wbcr_factory_clearfy_237') ?></span>
389
  <?php endif; ?>
390
  </td>
391
  <?php endif; ?>
396
  <div class="license-input">
397
  <form action="" method="post">
398
  <?php if($this->is_premium): ?>
399
+ <p><?php _e('Have a key to activate the premium version? Paste it here:', 'wbcr_factory_clearfy_237') ?><p>
400
  <?php else: ?>
401
+ <p><?php _e('Have a key to activate the plugin? Paste it here:', 'wbcr_factory_clearfy_237') ?>
402
  <p>
403
  <?php endif; ?>
404
  <button data-action="activate" class="btn btn-default wcl-control-btn" type="button"
405
  id="license-submit">
406
+ <?php _e('Submit Key', 'wbcr_factory_clearfy_237') ?>
407
  </button>
408
  <div class="license-key-wrap">
409
  <input type="text" id="license-key" name="licensekey" value="" class="form-control"/>
libs/factory/clearfy/pages/class-page-more-features.php CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  }
16
 
17
 
18
- class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_ImpressiveThemplate {
19
 
20
  /**
21
  * {@inheritDoc}
@@ -60,8 +60,8 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
60
  */
61
  public $internal = true;
62
 
63
- public function __construct( Wbcr_Factory445_Plugin $plugin ) {
64
- $this->menu_title = __( 'More features (<b>free</b>)', 'wbcr_factory_clearfy_236' );
65
 
66
  parent::__construct( $plugin );
67
 
@@ -74,7 +74,7 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
74
  * @return string
75
  */
76
  public function getPageTitle() {
77
- return __( 'More features', 'wbcr_factory_clearfy_236' );
78
  }
79
 
80
  /**
@@ -88,66 +88,66 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
88
  <div class="col-sm-4">
89
  <div class="wbcr-factory-feature-box">
90
  <span class="dashicons dashicons-yes"></span>
91
- <h3><?php _e( 'Code cleaning', 'wbcr_factory_clearfy_236' ) ?></h3>
92
- <p><?php _e( 'Clears the source code of the page from unused code.', 'wbcr_factory_clearfy_236' ) ?></p>
93
  </div>
94
  </div>
95
  <div class="col-sm-4">
96
  <div class="wbcr-factory-feature-box">
97
  <span class="dashicons dashicons-chart-bar"></span>
98
- <h3><?php _e( 'Improve SEO', 'wbcr_factory_clearfy_236' ) ?></h3>
99
- <p><?php _e( 'Removes duplicate pages, closes external links, changes the headers of the server.', 'wbcr_factory_clearfy_236' ) ?></p>
100
  </div>
101
  </div>
102
  <div class="col-sm-4">
103
  <div class="wbcr-factory-feature-box">
104
  <span class="dashicons dashicons-shield-alt"></span>
105
- <h3><?php _e( 'Site protection', 'wbcr_factory_clearfy_236' ) ?></h3>
106
- <p><?php _e( 'Enables and disables features that improve the protection of your site.', 'wbcr_factory_clearfy_236' ) ?></p>
107
  </div>
108
  </div>
109
  <div class="col-sm-4">
110
  <div class="wbcr-factory-feature-box">
111
  <span class="dashicons dashicons-welcome-comments"></span>
112
- <h3><?php _e( 'Disable comments', 'wbcr_factory_clearfy_236' ) ?></h3>
113
- <p><?php _e( 'Disables comments on the entire site or on specific pages.', 'wbcr_factory_clearfy_236' ) ?></p>
114
  </div>
115
  </div>
116
  <div class="col-sm-4">
117
  <div class="wbcr-factory-feature-box">
118
  <span class="dashicons dashicons-update"></span>
119
- <h3><?php _e( 'Manage updates', 'wbcr_factory_clearfy_236' ) ?></h3>
120
  <p><?php _e( 'Enables or disables automatically updates for plugins, themes and core. It is also possible
121
- to disable all updates.', 'wbcr_factory_clearfy_236' ) ?></p>
122
  </div>
123
  </div>
124
  <div class="col-sm-4">
125
  <div class="wbcr-factory-feature-box">
126
  <span class="dashicons dashicons-admin-plugins"></span>
127
- <h3><?php _e( 'Manage widgets', 'wbcr_factory_clearfy_236' ) ?></h3>
128
- <p><?php _e( 'Allows you to remove unused widgets.', 'wbcr_factory_clearfy_236' ) ?></p>
129
  </div>
130
  </div>
131
  <div class="col-sm-4">
132
  <div class="wbcr-factory-feature-box">
133
  <span class="dashicons dashicons-dashboard"></span>
134
- <h3><?php _e( 'Speed Optimization', 'wbcr_factory_clearfy_236' ) ?></h3>
135
- <p><?php _e( 'Increases performance by disabling unused functions and reducing the number of requests.', 'wbcr_factory_clearfy_236' ) ?></p>
136
  </div>
137
  </div>
138
  <div class="col-sm-4">
139
  <div class="wbcr-factory-feature-box">
140
  <span class="dashicons dashicons-visibility"></span>
141
- <h3><?php _e( 'Site privacy', 'wbcr_factory_clearfy_236' ) ?></h3>
142
  <p><?php _e( 'Allows you to hide the version of the site and plugins. Allows you to hide your
143
- WordPress.', 'wbcr_factory_clearfy_236' ) ?></p>
144
  </div>
145
  </div>
146
  <div class="col-sm-4">
147
  <div class="wbcr-factory-feature-box">
148
  <span class="dashicons dashicons-admin-settings"></span>
149
- <h3><?php _e( 'Easy setup', 'wbcr_factory_clearfy_236' ) ?></h3>
150
- <p><?php _e( 'In quick mode, you can easily configure the plugin according to your needs.', 'wbcr_factory_clearfy_236' ) ?></p>
151
  </div>
152
  </div>
153
  </div>
@@ -161,7 +161,7 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
161
  $url .= '?utm_source=wordpress.org&utm_campaign=' . $this->plugin->getPluginName();
162
  ?>
163
  <a href="<?= $url ?>" class="wbcr-factory-premium-button" target="_blank">
164
- <?php _e( 'Get the ultimate plugin 100% FREE', 'wbcr_factory_clearfy_236' ) ?>
165
  </a>
166
  </div>
167
  <?php
15
  }
16
 
17
 
18
+ class Wbcr_FactoryClearfy237_MoreFeaturesPage extends Wbcr_FactoryPages445_ImpressiveThemplate {
19
 
20
  /**
21
  * {@inheritDoc}
60
  */
61
  public $internal = true;
62
 
63
+ public function __construct( Wbcr_Factory446_Plugin $plugin ) {
64
+ $this->menu_title = __( 'More features (<b>free</b>)', 'wbcr_factory_clearfy_237' );
65
 
66
  parent::__construct( $plugin );
67
 
74
  * @return string
75
  */
76
  public function getPageTitle() {
77
+ return __( 'More features', 'wbcr_factory_clearfy_237' );
78
  }
79
 
80
  /**
88
  <div class="col-sm-4">
89
  <div class="wbcr-factory-feature-box">
90
  <span class="dashicons dashicons-yes"></span>
91
+ <h3><?php _e( 'Code cleaning', 'wbcr_factory_clearfy_237' ) ?></h3>
92
+ <p><?php _e( 'Clears the source code of the page from unused code.', 'wbcr_factory_clearfy_237' ) ?></p>
93
  </div>
94
  </div>
95
  <div class="col-sm-4">
96
  <div class="wbcr-factory-feature-box">
97
  <span class="dashicons dashicons-chart-bar"></span>
98
+ <h3><?php _e( 'Improve SEO', 'wbcr_factory_clearfy_237' ) ?></h3>
99
+ <p><?php _e( 'Removes duplicate pages, closes external links, changes the headers of the server.', 'wbcr_factory_clearfy_237' ) ?></p>
100
  </div>
101
  </div>
102
  <div class="col-sm-4">
103
  <div class="wbcr-factory-feature-box">
104
  <span class="dashicons dashicons-shield-alt"></span>
105
+ <h3><?php _e( 'Site protection', 'wbcr_factory_clearfy_237' ) ?></h3>
106
+ <p><?php _e( 'Enables and disables features that improve the protection of your site.', 'wbcr_factory_clearfy_237' ) ?></p>
107
  </div>
108
  </div>
109
  <div class="col-sm-4">
110
  <div class="wbcr-factory-feature-box">
111
  <span class="dashicons dashicons-welcome-comments"></span>
112
+ <h3><?php _e( 'Disable comments', 'wbcr_factory_clearfy_237' ) ?></h3>
113
+ <p><?php _e( 'Disables comments on the entire site or on specific pages.', 'wbcr_factory_clearfy_237' ) ?></p>
114
  </div>
115
  </div>
116
  <div class="col-sm-4">
117
  <div class="wbcr-factory-feature-box">
118
  <span class="dashicons dashicons-update"></span>
119
+ <h3><?php _e( 'Manage updates', 'wbcr_factory_clearfy_237' ) ?></h3>
120
  <p><?php _e( 'Enables or disables automatically updates for plugins, themes and core. It is also possible
121
+ to disable all updates.', 'wbcr_factory_clearfy_237' ) ?></p>
122
  </div>
123
  </div>
124
  <div class="col-sm-4">
125
  <div class="wbcr-factory-feature-box">
126
  <span class="dashicons dashicons-admin-plugins"></span>
127
+ <h3><?php _e( 'Manage widgets', 'wbcr_factory_clearfy_237' ) ?></h3>
128
+ <p><?php _e( 'Allows you to remove unused widgets.', 'wbcr_factory_clearfy_237' ) ?></p>
129
  </div>
130
  </div>
131
  <div class="col-sm-4">
132
  <div class="wbcr-factory-feature-box">
133
  <span class="dashicons dashicons-dashboard"></span>
134
+ <h3><?php _e( 'Speed Optimization', 'wbcr_factory_clearfy_237' ) ?></h3>
135
+ <p><?php _e( 'Increases performance by disabling unused functions and reducing the number of requests.', 'wbcr_factory_clearfy_237' ) ?></p>
136
  </div>
137
  </div>
138
  <div class="col-sm-4">
139
  <div class="wbcr-factory-feature-box">
140
  <span class="dashicons dashicons-visibility"></span>
141
+ <h3><?php _e( 'Site privacy', 'wbcr_factory_clearfy_237' ) ?></h3>
142
  <p><?php _e( 'Allows you to hide the version of the site and plugins. Allows you to hide your
143
+ WordPress.', 'wbcr_factory_clearfy_237' ) ?></p>
144
  </div>
145
  </div>
146
  <div class="col-sm-4">
147
  <div class="wbcr-factory-feature-box">
148
  <span class="dashicons dashicons-admin-settings"></span>
149
+ <h3><?php _e( 'Easy setup', 'wbcr_factory_clearfy_237' ) ?></h3>
150
+ <p><?php _e( 'In quick mode, you can easily configure the plugin according to your needs.', 'wbcr_factory_clearfy_237' ) ?></p>
151
  </div>
152
  </div>
153
  </div>
161
  $url .= '?utm_source=wordpress.org&utm_campaign=' . $this->plugin->getPluginName();
162
  ?>
163
  <a href="<?= $url ?>" class="wbcr-factory-premium-button" target="_blank">
164
+ <?php _e( 'Get the ultimate plugin 100% FREE', 'wbcr_factory_clearfy_237' ) ?>
165
  </a>
166
  </div>
167
  <?php
libs/factory/clearfy/pages/class-page-setup.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\FactoryClearfy236\Pages;
4
 
5
  // Exit if accessed directly
6
  if( !defined('ABSPATH') ) {
@@ -10,15 +10,15 @@ if( !defined('ABSPATH') ) {
10
  /**
11
  * Класс страницы, которая реализует функции мастера установки.
12
  *
13
- * Этот класс унаследован от стандартного шаблона страницы \Wbcr_FactoryPages444_ImpressiveThemplate,
14
  * поэтому все его инструменты могут быть применены и в этом классе. Но вы должны учитывать, что
15
  * поведение экшенов страницы было изменено. В данной реализации экшены используется для пагинации шагов.
16
  *
17
- * @package WBCR\FactoryClearfy236\Pages
18
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
19
  * @since 2.2.2
20
  */
21
- class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
22
 
23
  const DEFAULT_STEP = 'step0';
24
 
@@ -68,20 +68,20 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
68
  private $steps = [];
69
 
70
  /**
71
- * @param \Wbcr_Factory445_Plugin $plugin
72
  */
73
- public function __construct(\Wbcr_Factory445_Plugin $plugin)
74
  {
75
  $this->id = 'setup';
76
 
77
- $this->menu_title = __('Setup master', 'wbcr_factory_clearfy_236');
78
- $this->page_menu_short_description = __('Setup master', 'wbcr_factory_clearfy_236');
79
  parent::__construct($plugin);
80
  }
81
 
82
  public function getPageTitle()
83
  {
84
- return __('Setup', 'wbcr_factory_clearfy_236');
85
  }
86
 
87
  public function get_close_wizard_url()
@@ -135,18 +135,18 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
135
  /**
136
  * Requests assets (js and css) for the page.
137
  *
138
- * @param \Wbcr_Factory445_ScriptList $scripts
139
- * @param \Wbcr_Factory445_StyleList $styles
140
  *
141
  * @return void
142
- * @see Wbcr_FactoryPages444_AdminPage
143
  *
144
  */
145
  public function assets($scripts, $styles)
146
  {
147
  parent::assets($scripts, $styles);
148
 
149
- $this->styles->add(FACTORY_CLEARFY_236_URL . '/assets/css/page-setup.css');
150
 
151
  // Require step assets
152
  if( isset($_GET['action']) && false !== strpos($_GET['action'], 'step') && isset($this->steps[$_GET['action']]) ) {
@@ -163,8 +163,8 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
163
  protected function showPage($content = null)
164
  {
165
  ?>
166
- <div class="w-factory-clearfy-236-setup">
167
- <ol class="w-factory-clearfy-236-setup-steps">
168
  <?php foreach($this->steps as $step): ?>
169
  <?php if( self::DEFAULT_STEP === $step->get_id() ) {
170
  continue;
@@ -172,11 +172,11 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
172
  <li <?php if($this->current_step === $step->get_id()): ?>class="active"<?php endif; ?>><?php echo $step->get_title(); ?></li>
173
  <?php endforeach; ?>
174
  </ol>
175
- <div class="w-factory-clearfy-236-setup-content">
176
  <?php echo $content; ?>
177
  </div>
178
- <a class="w-factory-clearfy-236-setup-footer-links" href="<?php echo esc_url($this->get_close_wizard_url()); ?>">
179
- <?php _e('Not now', 'wbcr_factory_clearfy_236') ?>
180
  </a>
181
  </div>
182
  <?php
1
  <?php
2
 
3
+ namespace WBCR\FactoryClearfy237\Pages;
4
 
5
  // Exit if accessed directly
6
  if( !defined('ABSPATH') ) {
10
  /**
11
  * Класс страницы, которая реализует функции мастера установки.
12
  *
13
+ * Этот класс унаследован от стандартного шаблона страницы \Wbcr_FactoryPages445_ImpressiveThemplate,
14
  * поэтому все его инструменты могут быть применены и в этом классе. Но вы должны учитывать, что
15
  * поведение экшенов страницы было изменено. В данной реализации экшены используется для пагинации шагов.
16
  *
17
+ * @package WBCR\FactoryClearfy237\Pages
18
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
19
  * @since 2.2.2
20
  */
21
+ class Setup extends \Wbcr_FactoryPages445_ImpressiveThemplate {
22
 
23
  const DEFAULT_STEP = 'step0';
24
 
68
  private $steps = [];
69
 
70
  /**
71
+ * @param \Wbcr_Factory446_Plugin $plugin
72
  */
73
+ public function __construct(\Wbcr_Factory446_Plugin $plugin)
74
  {
75
  $this->id = 'setup';
76
 
77
+ $this->menu_title = __('Setup master', 'wbcr_factory_clearfy_237');
78
+ $this->page_menu_short_description = __('Setup master', 'wbcr_factory_clearfy_237');
79
  parent::__construct($plugin);
80
  }
81
 
82
  public function getPageTitle()
83
  {
84
+ return __('Setup', 'wbcr_factory_clearfy_237');
85
  }
86
 
87
  public function get_close_wizard_url()
135
  /**
136
  * Requests assets (js and css) for the page.
137
  *
138
+ * @param \Wbcr_Factory446_ScriptList $scripts
139
+ * @param \Wbcr_Factory446_StyleList $styles
140
  *
141
  * @return void
142
+ * @see Wbcr_FactoryPages445_AdminPage
143
  *
144
  */
145
  public function assets($scripts, $styles)
146
  {
147
  parent::assets($scripts, $styles);
148
 
149
+ $this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/page-setup.css');
150
 
151
  // Require step assets
152
  if( isset($_GET['action']) && false !== strpos($_GET['action'], 'step') && isset($this->steps[$_GET['action']]) ) {
163
  protected function showPage($content = null)
164
  {
165
  ?>
166
+ <div class="w-factory-clearfy-237-setup">
167
+ <ol class="w-factory-clearfy-237-setup-steps">
168
  <?php foreach($this->steps as $step): ?>
169
  <?php if( self::DEFAULT_STEP === $step->get_id() ) {
170
  continue;
172
  <li <?php if($this->current_step === $step->get_id()): ?>class="active"<?php endif; ?>><?php echo $step->get_title(); ?></li>
173
  <?php endforeach; ?>
174
  </ol>
175
+ <div class="w-factory-clearfy-237-setup-content">
176
  <?php echo $content; ?>
177
  </div>
178
+ <a class="w-factory-clearfy-237-setup-footer-links" href="<?php echo esc_url($this->get_close_wizard_url()); ?>">
179
+ <?php _e('Not now', 'wbcr_factory_clearfy_237') ?>
180
  </a>
181
  </div>
182
  <?php
libs/factory/clearfy/pages/class-pages-components.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\FactoryClearfy236\Pages;
4
 
5
  /**
6
  * This file is the add-ons page.
@@ -16,7 +16,7 @@ if( !defined('ABSPATH') ) {
16
  exit;
17
  }
18
 
19
- class Components extends \Wbcr_FactoryClearfy236_PageBase {
20
 
21
  /**
22
  * The id of the page in the admin menu.
@@ -24,7 +24,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
24
  * Mainly used to navigate between pages.
25
  *
26
  * @since 1.0.0
27
- * @see FactoryPages444_AdminPage
28
  *
29
  * @var string
30
  */
@@ -41,12 +41,12 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
41
  public $available_for_multisite = true;
42
 
43
  /**
44
- * @param \Wbcr_Factory445_Plugin $plugin
45
  */
46
- public function __construct(\Wbcr_Factory445_Plugin $plugin)
47
  {
48
- $this->menu_title = __('Components', 'wbcr_factory_clearfy_236');
49
- $this->page_menu_short_description = __('More features for plugin', 'wbcr_factory_clearfy_236');
50
 
51
  parent::__construct($plugin);
52
 
@@ -58,18 +58,18 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
58
  *
59
  * @return void
60
  * @since 1.0.0
61
- * @see FactoryPages444_AdminPage
62
  *
63
  */
64
  public function assets($scripts, $styles)
65
  {
66
  parent::assets($scripts, $styles);
67
 
68
- $this->styles->add(FACTORY_CLEARFY_236_URL . '/assets/css/components.css');
69
 
70
  /**
71
- * @param \Wbcr_Factory445_StyleList $styles
72
- * @param \Wbcr_Factory445_ScriptList $scripts
73
  * @since 1.4.0
74
  *
75
  */
@@ -80,10 +80,10 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
80
  * We register notifications for some actions
81
  *
82
  * @param $notices
83
- * @param \Wbcr_Factory445_Plugin $plugin
84
  *
85
  * @return array
86
- * @see libs\factory\pages\themplates\FactoryPages444_ImpressiveThemplate
87
  */
88
  public function getActionNotices($notices)
89
  {
@@ -92,7 +92,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
92
  'wbcr-force-update-components-success' => 1
93
  ],
94
  'type' => 'success',
95
- 'message' => __('Components have been successfully updated to the latest version.', 'wbcr_factory_clearfy_236')
96
  ];
97
 
98
  $notices[] = [
@@ -100,7 +100,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
100
  'wbcr-force-update-components-error' => 'inactive_licence'
101
  ],
102
  'type' => 'danger',
103
- 'message' => __('To use premium components, you need activate a license!', 'wbcr_factory_clearfy_236') . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __('Activate license', 'wbcr_factory_clearfy_236') . '</a>'
104
  ];
105
 
106
  $notices[] = [
@@ -173,12 +173,12 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
173
  $components = apply_filters('wbcr/clearfy/components/items_list', $components);
174
 
175
  ?>
176
- <div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'wbcr_factory_clearfy_236') ?>
177
  <p>
178
- <?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'wbcr_factory_clearfy_236') ?>
179
  </p>
180
  </div>
181
- <div class="wbc-factory-clearfy-236-components">
182
  <?php
183
  /**
184
  * @since 1.4.0
@@ -229,7 +229,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
229
  <div class="plugin-card-bottom">
230
  <?php if( !(isset($component['disable_button']) && $component['disable_button']) ): ?>
231
  <?php if( 'premium' === $component['build'] && !($this->plugin->premium->is_activate() && $this->plugin->premium->is_install_package()) ): ?>
232
- <a target="_blank" href="<?php echo esc_url($component['url']) ?>" class="button button-default install-now"><?php _e('Read more', 'wbcr_factory_clearfy_236'); ?></a>
233
  <?php else: ?>
234
  <?php $delete_button->render_button(); ?><?php $install_button->render_button(); ?>
235
  <?php endif; ?>
1
  <?php
2
 
3
+ namespace WBCR\FactoryClearfy237\Pages;
4
 
5
  /**
6
  * This file is the add-ons page.
16
  exit;
17
  }
18
 
19
+ class Components extends \Wbcr_FactoryClearfy237_PageBase {
20
 
21
  /**
22
  * The id of the page in the admin menu.
24
  * Mainly used to navigate between pages.
25
  *
26
  * @since 1.0.0
27
+ * @see FactoryPages445_AdminPage
28
  *
29
  * @var string
30
  */
41
  public $available_for_multisite = true;
42
 
43
  /**
44
+ * @param \Wbcr_Factory446_Plugin $plugin
45
  */
46
+ public function __construct(\Wbcr_Factory446_Plugin $plugin)
47
  {
48
+ $this->menu_title = __('Components', 'wbcr_factory_clearfy_237');
49
+ $this->page_menu_short_description = __('More features for plugin', 'wbcr_factory_clearfy_237');
50
 
51
  parent::__construct($plugin);
52
 
58
  *
59
  * @return void
60
  * @since 1.0.0
61
+ * @see FactoryPages445_AdminPage
62
  *
63
  */
64
  public function assets($scripts, $styles)
65
  {
66
  parent::assets($scripts, $styles);
67
 
68
+ $this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/components.css');
69
 
70
  /**
71
+ * @param \Wbcr_Factory446_StyleList $styles
72
+ * @param \Wbcr_Factory446_ScriptList $scripts
73
  * @since 1.4.0
74
  *
75
  */
80
  * We register notifications for some actions
81
  *
82
  * @param $notices
83
+ * @param \Wbcr_Factory446_Plugin $plugin
84
  *
85
  * @return array
86
+ * @see libs\factory\pages\themplates\FactoryPages445_ImpressiveThemplate
87
  */
88
  public function getActionNotices($notices)
89
  {
92
  'wbcr-force-update-components-success' => 1
93
  ],
94
  'type' => 'success',
95
+ 'message' => __('Components have been successfully updated to the latest version.', 'wbcr_factory_clearfy_237')
96
  ];
97
 
98
  $notices[] = [
100
  'wbcr-force-update-components-error' => 'inactive_licence'
101
  ],
102
  'type' => 'danger',
103
+ 'message' => __('To use premium components, you need activate a license!', 'wbcr_factory_clearfy_237') . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __('Activate license', 'wbcr_factory_clearfy_237') . '</a>'
104
  ];
105
 
106
  $notices[] = [
173
  $components = apply_filters('wbcr/clearfy/components/items_list', $components);
174
 
175
  ?>
176
+ <div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'wbcr_factory_clearfy_237') ?>
177
  <p>
178
+ <?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'wbcr_factory_clearfy_237') ?>
179
  </p>
180
  </div>
181
+ <div class="wbc-factory-clearfy-237-components">
182
  <?php
183
  /**
184
  * @since 1.4.0
229
  <div class="plugin-card-bottom">
230
  <?php if( !(isset($component['disable_button']) && $component['disable_button']) ): ?>
231
  <?php if( 'premium' === $component['build'] && !($this->plugin->premium->is_activate() && $this->plugin->premium->is_install_package()) ): ?>
232
+ <a target="_blank" href="<?php echo esc_url($component['url']) ?>" class="button button-default install-now"><?php _e('Read more', 'wbcr_factory_clearfy_237'); ?></a>
233
  <?php else: ?>
234
  <?php $delete_button->render_button(); ?><?php $install_button->render_button(); ?>
235
  <?php endif; ?>
libs/factory/clearfy/pages/class-pages.php CHANGED
@@ -14,7 +14,7 @@ if( !defined('ABSPATH') ) {
14
  }
15
 
16
  /**
17
- * Class Wbcr_FactoryPages444_ImpressiveThemplate
18
  *
19
  * @method string getInfoWidget() - get widget content information
20
  * @method string getRatingWidget(array $args = []) - get widget content rating
@@ -23,7 +23,7 @@ if( !defined('ABSPATH') ) {
23
  * @method string getBusinessSuggetionWidget()
24
  * @method string getSupportWidget
25
  */
26
- class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThemplate {
27
 
28
  /**
29
  * {@inheritDoc}
@@ -58,9 +58,9 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
58
  public $show_search_options_form = true;
59
 
60
  /**
61
- * @param Wbcr_Factory445_Plugin $plugin
62
  */
63
- public function __construct(Wbcr_Factory445_Plugin $plugin)
64
  {
65
  parent::__construct($plugin);
66
 
@@ -101,18 +101,18 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
101
  /**
102
  * Requests assets (js and css) for the page.
103
  *
104
- * @param Wbcr_Factory445_ScriptList $scripts
105
- * @param Wbcr_Factory445_StyleList $styles
106
  *
107
  * @return void
108
- * @see Wbcr_FactoryPages444_AdminPage
109
  *
110
  */
111
  public function assets($scripts, $styles)
112
  {
113
  parent::assets($scripts, $styles);
114
 
115
- $this->styles->add(FACTORY_CLEARFY_236_URL . '/assets/css/clearfy-base.css');
116
 
117
  // todo: вынести все общие скрипты и стили фреймворка, продумать совместимость с другими плагинами
118
  if( defined('WCL_PLUGIN_URL') ) {
@@ -120,19 +120,19 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
120
  }
121
 
122
  if( !($this->plugin->has_premium() && $this->plugin->premium->is_active()) ) {
123
- $this->scripts->add(FACTORY_CLEARFY_236_URL . '/assets/js/clearfy-widgets.js', [
124
  'jquery',
125
- 'wfactory-445-core-general',
126
- 'wbcr-factory-clearfy-236-global'
127
- ], 'wbcr-factory-clearfy-236-widgets');
128
  }
129
 
130
  // Script for search form on plugin options
131
  if( $this->show_search_options_form && "options" === $this->type ) {
132
- $this->styles->add(FACTORY_CLEARFY_236_URL . '/assets/css/libs/autocomplete.css');
133
 
134
- $this->scripts->add(FACTORY_CLEARFY_236_URL . '/assets/js/libs/jquery.autocomplete.min.js');
135
- $this->scripts->add(FACTORY_CLEARFY_236_URL . '/assets/js/clearfy-search-options.js');
136
  }
137
 
138
  /**
@@ -151,11 +151,11 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
151
  */
152
  public function subsribe_widget_ajax_handler()
153
  {
154
- wbcr_factory_clearfy_236_subscribe($this->plugin);
155
  }
156
 
157
  /**
158
- * @return Wbcr_Factory445_Request
159
  */
160
  public function request()
161
  {
@@ -254,7 +254,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
254
  /**
255
  * @since 4.0.9 - является устаревшим
256
  */
257
- $widgets = wbcr_factory_445_apply_filters_deprecated('wbcr_factory_pages_444_imppage_get_widgets', [
258
  $widgets,
259
  $position,
260
  $this->plugin,
@@ -283,24 +283,24 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
283
  $purchase_url = $this->plugin->get_support()->get_pricing_url(true, 'right_sidebar_ads');
284
 
285
  $default_features = [
286
- '4_premium' => __('4 premium components now;', 'wbcr_factory_clearfy_236'),
287
- '40_premium' => __('40 new premium components within a year for the single price;', 'wbcr_factory_clearfy_236'),
288
- 'multisite_support' => __('Multisite support;', 'wbcr_factory_clearfy_236'),
289
- 'advance_settings' => __('Advanced settings;', 'wbcr_factory_clearfy_236'),
290
- 'no_ads' => __('No ads;', 'wbcr_factory_clearfy_236'),
291
- 'perfect_support' => __('Perfect support.', 'wbcr_factory_clearfy_236')
292
  ];
293
 
294
  /**
295
  * @since 2.0.8 - added
296
  */
297
- $suggetion_title = __('MORE IN CLEARFY <span>BUSINESS</span>', 'wbcr_factory_clearfy_236');
298
  $suggetion_title = apply_filters('wbcr/clearfy/pages/suggetion_title', $suggetion_title, $plugin_name, $this->id);
299
 
300
  /**
301
  * @since 2.0.8 - deprecated
302
  */
303
- $suggetion_features = wbcr_factory_445_apply_filters_deprecated('wbcr/clearfy/page_bussines_suggetion_features', [
304
  $default_features,
305
  $this->plugin->getPluginName(),
306
  $this->id
@@ -316,7 +316,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
316
  $suggetion_features = $default_features;
317
  }
318
  ?>
319
- <div class="wbcr-factory-sidebar-widget wbcr-factory-clearfy-236-pro-suggettion">
320
  <h3><?php echo $suggetion_title; ?></h3>
321
  <ul>
322
  <?php if( !empty($suggetion_features) ): ?>
@@ -327,7 +327,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
327
  </ul>
328
  <a href="<?php echo $purchase_url ?>" class="wbcr-factory-purchase-premium" target="_blank"
329
  rel="noopener">
330
- <?php printf(__('Upgrade for $%s', 'wbcr_factory_clearfy_236'), $upgrade_price) ?>
331
  </a>
332
  </div>
333
  <?php
@@ -349,25 +349,25 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
349
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
350
  alt=""/>
351
  </span>
352
- - <?php _e('A neutral setting that can not harm your site, but you must be sure that you need to use it.', 'wbcr_factory_clearfy_236'); ?>
353
  </li>
354
  <li>
355
  <span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-grey">
356
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
357
  alt=""/>
358
  </span>
359
- - <?php _e('When set this option, you must be careful. Plugins and themes may depend on this function. You must be sure that you can disable this feature for the site.', 'wbcr_factory_clearfy_236'); ?>
360
  </li>
361
  <li>
362
  <span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-green">
363
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
364
  alt=""/>
365
  </span>
366
- - <?php _e('Absolutely safe setting, We recommend to use.', 'wbcr_factory_clearfy_236'); ?>
367
  </li>
368
  </ul>
369
  ----------<br>
370
- <p><?php _e('Hover to the icon to get help for the feature you selected.', 'wbcr_factory_clearfy_236'); ?></p>
371
  </div>
372
  <?php
373
  }
@@ -389,19 +389,19 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
389
  $page_url = $args[0];
390
  }
391
 
392
- $page_url = apply_filters('wbcr_factory_pages_444_imppage_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId());
393
 
394
  ?>
395
  <div class="wbcr-factory-sidebar-widget">
396
  <p>
397
- <strong><?php _e('Do you want the plugin to improved and update?', 'wbcr_factory_clearfy_236'); ?></strong>
398
  </p>
399
- <p><?php _e('Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_clearfy_236'); ?></p>
400
- <p><?php _e('And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_clearfy_236'); ?></p>
401
  <p>
402
  <i class="wbcr-factory-icon-5stars"></i>
403
  <a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
404
- <strong><?php _e('Go rate us and push ideas', 'wbcr_factory_clearfy_236'); ?></strong>
405
  </a>
406
  </p>
407
  </div>
@@ -419,7 +419,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
419
  ?>
420
  <div class="wbcr-factory-sidebar-widget">
421
  <p>
422
- <strong><?php _e('Donation for plugin development', 'wbcr_factory_clearfy_236'); ?></strong>
423
  </p>
424
  <?php if( get_locale() !== 'ru_RU' ): ?>
425
  <form id="wbcr-factory-paypal-donation-form" action="https://www.paypal.com/cgi-bin/webscr"
@@ -427,7 +427,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
427
  <input type="hidden" name="cmd" value="_s-xclick">
428
  <input type="hidden" name="hosted_button_id" value="VDX7JNTQPNPFW">
429
  <div class="wbcr-factory-donation-price">5$</div>
430
- <input type="image" src="<?php echo FACTORY_PAGES_444_URL ?>/templates/assets/img/paypal-donate.png"
431
  border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
432
  </form>
433
  <?php else: ?>
@@ -452,19 +452,19 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
452
 
453
  ?>
454
  <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
455
- <p><strong><?php _e('Having Issues?', 'wbcr_factory_clearfy_236'); ?></strong></p>
456
  <div class="wbcr-clr-support-widget-body">
457
  <p>
458
- <?php _e('We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_clearfy_236'); ?>
459
  </p>
460
  <ul>
461
  <li><span class="dashicons dashicons-sos"></span>
462
  <a href="<?php echo $free_support_url; ?>" target="_blank"
463
- rel="noopener"><?php _e('Get starting free support', 'wbcr_factory_clearfy_236'); ?></a>
464
  </li>
465
  <li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
466
  <span class="dashicons dashicons-warning"></span>
467
- <?php printf(__('If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_clearfy_236'), $hot_support_url); ?>
468
  </li>
469
  </ul>
470
  </div>
@@ -479,27 +479,27 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
479
  $terms = "https://cm-wp.com/?bizpanda=privacy-policy";
480
  ?>
481
  <div id="wbcr-clr-subscribe-widget" class="wbcr-factory-sidebar-widget wbcr-factory-subscribe-widget">
482
- <p><strong><?php _e('Subscribe to plugin’s newsletter', 'wbcr_factory_clearfy_236'); ?></strong></p>
483
  <div class="wbcr-clr-subscribe-widget-body">
484
 
485
  <div class="wbcr-factory-subscribe-widget__message-contanier">
486
  <div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success">
487
- <?php _e("Thank you, you have successfully subscribed!", 'wbcr_factory_clearfy_236') ?>
488
  </div>
489
  <div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success2">
490
- <?php _e("Thank you for your subscription, a confirmation email has been sent to you. You need to confirm your subscription to complete this process.", 'wbcr_factory_clearfy_236'); ?>
491
  </div>
492
  </div>
493
 
494
  <form id="wbcr-factory-subscribe-widget__subscribe-form" method="post" data-nonce="<?php echo wp_create_nonce('clearfy_subscribe_for_' . $this->plugin->getPluginName()) ?>">
495
- <input id="wbcr-factory-subscribe-widget__email" class="wbcr-factory-subscribe-widget__field" type="email" name="email" placeholder="<?php _e('Enter your email address', 'wbcr_factory_clearfy_236'); ?>" required>
496
  <label class="wbcr-factory-subscribe-widget__checkbox-label">
497
  <input class="wbcr-factory-subscribe-widget__checkbox" type="checkbox" name="agree_terms" required>
498
- <?php echo sprintf(__("I confirm to subscribe to the CreativeMotion newsletter to receive the latest news. You can find how we use your information on our %s Privacy Policy %s", 'wbcr_factory_clearfy_236'), '<a href="' . $terms . '" target="_blank">', '</a>'); ?>
499
  </label>
500
  <input type="hidden" id="wbcr-factory-subscribe-widget__group-id" value="<?php echo esc_attr($group_id); ?>">
501
  <input type="hidden" id="wbcr-factory-subscribe-widget__plugin-name" value="<?php echo esc_attr($this->plugin->getPluginName()); ?>">
502
- <input type="submit" class="btn wbcr-factory-subscribe-widget__button" value="<?php _e('Subscribe', 'wbcr_factory_clearfy_236'); ?>">
503
  </form>
504
  </div>
505
  </div>
@@ -514,13 +514,13 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
514
  */
515
  public function register_options_to_search()
516
  {
517
- require_once FACTORY_CLEARFY_236_DIR . '/includes/class-search-options.php';
518
 
519
  $options = $this->getPageOptions();
520
  $page_url = $this->getBaseUrl();
521
  $page_id = $this->getResultId();
522
 
523
- \WBCR\Factory_Clearfy_236\Search_Options::register_options($options, $page_url, $page_id);
524
  }
525
 
526
  /**
@@ -534,11 +534,11 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
534
  return;
535
  }
536
  ?>
537
- <div id="wbcr-factory-clearfy-236__search_options_form" class="wbcr-factory-clearfy-236__autocomplete-wrap">
538
- <label for="autocomplete" class="wbcr-factory-clearfy-236__autocomplete-label">
539
- <?php _e('Can\'t find the settings you need? Use the search by the plugin options:', 'wbcr_factory_clearfy_236'); ?>
540
  </label>
541
- <input type="text" name="country" id="wbcr-factory-clearfy-236__autocomplete"/>
542
 
543
  </div>
544
  <?php
14
  }
15
 
16
  /**
17
+ * Class Wbcr_FactoryPages445_ImpressiveThemplate
18
  *
19
  * @method string getInfoWidget() - get widget content information
20
  * @method string getRatingWidget(array $args = []) - get widget content rating
23
  * @method string getBusinessSuggetionWidget()
24
  * @method string getSupportWidget
25
  */
26
+ class Wbcr_FactoryClearfy237_PageBase extends Wbcr_FactoryPages445_ImpressiveThemplate {
27
 
28
  /**
29
  * {@inheritDoc}
58
  public $show_search_options_form = true;
59
 
60
  /**
61
+ * @param Wbcr_Factory446_Plugin $plugin
62
  */
63
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
64
  {
65
  parent::__construct($plugin);
66
 
101
  /**
102
  * Requests assets (js and css) for the page.
103
  *
104
+ * @param Wbcr_Factory446_ScriptList $scripts
105
+ * @param Wbcr_Factory446_StyleList $styles
106
  *
107
  * @return void
108
+ * @see Wbcr_FactoryPages445_AdminPage
109
  *
110
  */
111
  public function assets($scripts, $styles)
112
  {
113
  parent::assets($scripts, $styles);
114
 
115
+ $this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/clearfy-base.css');
116
 
117
  // todo: вынести все общие скрипты и стили фреймворка, продумать совместимость с другими плагинами
118
  if( defined('WCL_PLUGIN_URL') ) {
120
  }
121
 
122
  if( !($this->plugin->has_premium() && $this->plugin->premium->is_active()) ) {
123
+ $this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-widgets.js', [
124
  'jquery',
125
+ 'wfactory-446-core-general',
126
+ 'wbcr-factory-clearfy-237-global'
127
+ ], 'wbcr-factory-clearfy-237-widgets');
128
  }
129
 
130
  // Script for search form on plugin options
131
  if( $this->show_search_options_form && "options" === $this->type ) {
132
+ $this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/libs/autocomplete.css');
133
 
134
+ $this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/libs/jquery.autocomplete.min.js');
135
+ $this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-search-options.js');
136
  }
137
 
138
  /**
151
  */
152
  public function subsribe_widget_ajax_handler()
153
  {
154
+ wbcr_factory_clearfy_237_subscribe($this->plugin);
155
  }
156
 
157
  /**
158
+ * @return Wbcr_Factory446_Request
159
  */
160
  public function request()
161
  {
254
  /**
255
  * @since 4.0.9 - является устаревшим
256
  */
257
+ $widgets = wbcr_factory_446_apply_filters_deprecated('wbcr_factory_pages_445_imppage_get_widgets', [
258
  $widgets,
259
  $position,
260
  $this->plugin,
283
  $purchase_url = $this->plugin->get_support()->get_pricing_url(true, 'right_sidebar_ads');
284
 
285
  $default_features = [
286
+ '4_premium' => __('4 premium components now;', 'wbcr_factory_clearfy_237'),
287
+ '40_premium' => __('40 new premium components within a year for the single price;', 'wbcr_factory_clearfy_237'),
288
+ 'multisite_support' => __('Multisite support;', 'wbcr_factory_clearfy_237'),
289
+ 'advance_settings' => __('Advanced settings;', 'wbcr_factory_clearfy_237'),
290
+ 'no_ads' => __('No ads;', 'wbcr_factory_clearfy_237'),
291
+ 'perfect_support' => __('Perfect support.', 'wbcr_factory_clearfy_237')
292
  ];
293
 
294
  /**
295
  * @since 2.0.8 - added
296
  */
297
+ $suggetion_title = __('MORE IN CLEARFY <span>BUSINESS</span>', 'wbcr_factory_clearfy_237');
298
  $suggetion_title = apply_filters('wbcr/clearfy/pages/suggetion_title', $suggetion_title, $plugin_name, $this->id);
299
 
300
  /**
301
  * @since 2.0.8 - deprecated
302
  */
303
+ $suggetion_features = wbcr_factory_446_apply_filters_deprecated('wbcr/clearfy/page_bussines_suggetion_features', [
304
  $default_features,
305
  $this->plugin->getPluginName(),
306
  $this->id
316
  $suggetion_features = $default_features;
317
  }
318
  ?>
319
+ <div class="wbcr-factory-sidebar-widget wbcr-factory-clearfy-237-pro-suggettion">
320
  <h3><?php echo $suggetion_title; ?></h3>
321
  <ul>
322
  <?php if( !empty($suggetion_features) ): ?>
327
  </ul>
328
  <a href="<?php echo $purchase_url ?>" class="wbcr-factory-purchase-premium" target="_blank"
329
  rel="noopener">
330
+ <?php printf(__('Upgrade for $%s', 'wbcr_factory_clearfy_237'), $upgrade_price) ?>
331
  </a>
332
  </div>
333
  <?php
349
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
350
  alt=""/>
351
  </span>
352
+ - <?php _e('A neutral setting that can not harm your site, but you must be sure that you need to use it.', 'wbcr_factory_clearfy_237'); ?>
353
  </li>
354
  <li>
355
  <span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-grey">
356
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
357
  alt=""/>
358
  </span>
359
+ - <?php _e('When set this option, you must be careful. Plugins and themes may depend on this function. You must be sure that you can disable this feature for the site.', 'wbcr_factory_clearfy_237'); ?>
360
  </li>
361
  <li>
362
  <span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-green">
363
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
364
  alt=""/>
365
  </span>
366
+ - <?php _e('Absolutely safe setting, We recommend to use.', 'wbcr_factory_clearfy_237'); ?>
367
  </li>
368
  </ul>
369
  ----------<br>
370
+ <p><?php _e('Hover to the icon to get help for the feature you selected.', 'wbcr_factory_clearfy_237'); ?></p>
371
  </div>
372
  <?php
373
  }
389
  $page_url = $args[0];
390
  }
391
 
392
+ $page_url = apply_filters('wbcr_factory_pages_445_imppage_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId());
393
 
394
  ?>
395
  <div class="wbcr-factory-sidebar-widget">
396
  <p>
397
+ <strong><?php _e('Do you want the plugin to improved and update?', 'wbcr_factory_clearfy_237'); ?></strong>
398
  </p>
399
+ <p><?php _e('Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_clearfy_237'); ?></p>
400
+ <p><?php _e('And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_clearfy_237'); ?></p>
401
  <p>
402
  <i class="wbcr-factory-icon-5stars"></i>
403
  <a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
404
+ <strong><?php _e('Go rate us and push ideas', 'wbcr_factory_clearfy_237'); ?></strong>
405
  </a>
406
  </p>
407
  </div>
419
  ?>
420
  <div class="wbcr-factory-sidebar-widget">
421
  <p>
422
+ <strong><?php _e('Donation for plugin development', 'wbcr_factory_clearfy_237'); ?></strong>
423
  </p>
424
  <?php if( get_locale() !== 'ru_RU' ): ?>
425
  <form id="wbcr-factory-paypal-donation-form" action="https://www.paypal.com/cgi-bin/webscr"
427
  <input type="hidden" name="cmd" value="_s-xclick">
428
  <input type="hidden" name="hosted_button_id" value="VDX7JNTQPNPFW">
429
  <div class="wbcr-factory-donation-price">5$</div>
430
+ <input type="image" src="<?php echo FACTORY_PAGES_445_URL ?>/templates/assets/img/paypal-donate.png"
431
  border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
432
  </form>
433
  <?php else: ?>
452
 
453
  ?>
454
  <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
455
+ <p><strong><?php _e('Having Issues?', 'wbcr_factory_clearfy_237'); ?></strong></p>
456
  <div class="wbcr-clr-support-widget-body">
457
  <p>
458
+ <?php _e('We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_clearfy_237'); ?>
459
  </p>
460
  <ul>
461
  <li><span class="dashicons dashicons-sos"></span>
462
  <a href="<?php echo $free_support_url; ?>" target="_blank"
463
+ rel="noopener"><?php _e('Get starting free support', 'wbcr_factory_clearfy_237'); ?></a>
464
  </li>
465
  <li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
466
  <span class="dashicons dashicons-warning"></span>
467
+ <?php printf(__('If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_clearfy_237'), $hot_support_url); ?>
468
  </li>
469
  </ul>
470
  </div>
479
  $terms = "https://cm-wp.com/?bizpanda=privacy-policy";
480
  ?>
481
  <div id="wbcr-clr-subscribe-widget" class="wbcr-factory-sidebar-widget wbcr-factory-subscribe-widget">
482
+ <p><strong><?php _e('Subscribe to plugin’s newsletter', 'wbcr_factory_clearfy_237'); ?></strong></p>
483
  <div class="wbcr-clr-subscribe-widget-body">
484
 
485
  <div class="wbcr-factory-subscribe-widget__message-contanier">
486
  <div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success">
487
+ <?php _e("Thank you, you have successfully subscribed!", 'wbcr_factory_clearfy_237') ?>
488
  </div>
489
  <div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success2">
490
+ <?php _e("Thank you for your subscription, a confirmation email has been sent to you. You need to confirm your subscription to complete this process.", 'wbcr_factory_clearfy_237'); ?>
491
  </div>
492
  </div>
493
 
494
  <form id="wbcr-factory-subscribe-widget__subscribe-form" method="post" data-nonce="<?php echo wp_create_nonce('clearfy_subscribe_for_' . $this->plugin->getPluginName()) ?>">
495
+ <input id="wbcr-factory-subscribe-widget__email" class="wbcr-factory-subscribe-widget__field" type="email" name="email" placeholder="<?php _e('Enter your email address', 'wbcr_factory_clearfy_237'); ?>" required>
496
  <label class="wbcr-factory-subscribe-widget__checkbox-label">
497
  <input class="wbcr-factory-subscribe-widget__checkbox" type="checkbox" name="agree_terms" required>
498
+ <?php echo sprintf(__("I confirm to subscribe to the CreativeMotion newsletter to receive the latest news. You can find how we use your information on our %s Privacy Policy %s", 'wbcr_factory_clearfy_237'), '<a href="' . $terms . '" target="_blank">', '</a>'); ?>
499
  </label>
500
  <input type="hidden" id="wbcr-factory-subscribe-widget__group-id" value="<?php echo esc_attr($group_id); ?>">
501
  <input type="hidden" id="wbcr-factory-subscribe-widget__plugin-name" value="<?php echo esc_attr($this->plugin->getPluginName()); ?>">
502
+ <input type="submit" class="btn wbcr-factory-subscribe-widget__button" value="<?php _e('Subscribe', 'wbcr_factory_clearfy_237'); ?>">
503
  </form>
504
  </div>
505
  </div>
514
  */
515
  public function register_options_to_search()
516
  {
517
+ require_once FACTORY_CLEARFY_237_DIR . '/includes/class-search-options.php';
518
 
519
  $options = $this->getPageOptions();
520
  $page_url = $this->getBaseUrl();
521
  $page_id = $this->getResultId();
522
 
523
+ \WBCR\Factory_Clearfy_237\Search_Options::register_options($options, $page_url, $page_id);
524
  }
525
 
526
  /**
534
  return;
535
  }
536
  ?>
537
+ <div id="wbcr-factory-clearfy-237__search_options_form" class="wbcr-factory-clearfy-237__autocomplete-wrap">
538
+ <label for="autocomplete" class="wbcr-factory-clearfy-237__autocomplete-label">
539
+ <?php _e('Can\'t find the settings you need? Use the search by the plugin options:', 'wbcr_factory_clearfy_237'); ?>
540
  </label>
541
+ <input type="text" name="country" id="wbcr-factory-clearfy-237__autocomplete"/>
542
 
543
  </div>
544
  <?php
libs/factory/clearfy/pages/setup-parts/class-step-custom.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\FactoryClearfy236\Pages;
4
 
5
  /**
6
  * Step
@@ -18,10 +18,10 @@ class Step_Custom extends Step {
18
  public function render_button($continue = true, $skip = false, $custom_title = null, $align = 'right')
19
  {
20
  $this->set_button_handler();
21
- $button_title = !empty($custom_title) ? $custom_title : __('Continue', 'wbcr_factory_clearfy_236');
22
 
23
  if( !$this->get_next_id() ) {
24
- $button_title = __('Finish', 'wbcr_factory_clearfy_236');
25
  }
26
 
27
  if( !in_array($align, ['center', 'left', 'right']) ) {
@@ -29,13 +29,13 @@ class Step_Custom extends Step {
29
  }
30
 
31
  ?>
32
- <form method="post" id="w-factory-clearfy-236__setup-form-<?php echo $this->get_id() ?>" class="form-horizontal">
33
- <div class="w-factory-clearfy-236__form-buttons" style="text-align: <?php echo esc_attr($align); ?>">
34
  <?php if( $skip ): ?>
35
- <input type="submit" name="skip_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-236__skip-button" value="<?php _e('Skip', 'wbcr_factory_clearfy_236') ?>">
36
  <?php endif; ?>
37
  <?php if( $continue ): ?>
38
- <input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-236__continue-button" value="<?php echo $button_title; ?>">
39
  <?php endif; ?>
40
  </div>
41
  </form>
1
  <?php
2
 
3
+ namespace WBCR\FactoryClearfy237\Pages;
4
 
5
  /**
6
  * Step
18
  public function render_button($continue = true, $skip = false, $custom_title = null, $align = 'right')
19
  {
20
  $this->set_button_handler();
21
+ $button_title = !empty($custom_title) ? $custom_title : __('Continue', 'wbcr_factory_clearfy_237');
22
 
23
  if( !$this->get_next_id() ) {
24
+ $button_title = __('Finish', 'wbcr_factory_clearfy_237');
25
  }
26
 
27
  if( !in_array($align, ['center', 'left', 'right']) ) {
29
  }
30
 
31
  ?>
32
+ <form method="post" id="w-factory-clearfy-237__setup-form-<?php echo $this->get_id() ?>" class="form-horizontal">
33
+ <div class="w-factory-clearfy-237__form-buttons" style="text-align: <?php echo esc_attr($align); ?>">
34
  <?php if( $skip ): ?>
35
+ <input type="submit" name="skip_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-237__skip-button" value="<?php _e('Skip', 'wbcr_factory_clearfy_237') ?>">
36
  <?php endif; ?>
37
  <?php if( $continue ): ?>
38
+ <input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-237__continue-button" value="<?php echo $button_title; ?>">
39
  <?php endif; ?>
40
  </div>
41
  </form>
libs/factory/clearfy/pages/setup-parts/class-step-form.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\FactoryClearfy236\Pages;
4
 
5
  /**
6
  * Step
@@ -10,7 +10,7 @@ namespace WBCR\FactoryClearfy236\Pages;
10
  */
11
  class Step_Form extends Step {
12
 
13
- public function __construct(\WBCR\FactoryClearfy236\Pages\Setup $page)
14
  {
15
  parent::__construct($page);
16
  }
@@ -33,12 +33,12 @@ class Step_Form extends Step {
33
  protected function instance_form($options)
34
  {
35
 
36
- $form = new \Wbcr_FactoryForms442_Form([
37
  'scope' => rtrim($this->plugin->getPrefix(), '_'),
38
  'name' => $this->page->getResultId() . "-options-" . $this->get_id()
39
  ], $this->plugin);
40
 
41
- $form->setProvider(new \Wbcr_FactoryForms442_OptionsValueProvider($this->plugin));
42
 
43
  $form_options = [];
44
 
@@ -83,20 +83,20 @@ class Step_Form extends Step {
83
  return $form;
84
  }
85
 
86
- protected function render_form(\Wbcr_FactoryForms442_Form $form)
87
  {
88
  ?>
89
- <form method="post" id="w-factory-clearfy-236__setup-form-<?php echo $this->get_id() ?>" class="w-factory-clearfy-236__setup-form form-horizontal">
90
  <?php $form->html(); ?>
91
- <div class="w-factory-clearfy-236__form-buttons">
92
- <!--<input type="submit" name="skip_button_<?php /*echo $this->get_id() */ ?>" class="button-primary button button-large w-factory-clearfy-236__skip-button" value="<?php /*_e('Skip', 'wbcr_factory_clearfy_236') */ ?>">-->
93
- <input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-236__continue-button" value="<?php _e('Continue', 'wbcr_factory_clearfy_236') ?>">
94
  </div>
95
  </form>
96
  <?php
97
  }
98
 
99
- protected function set_form_handler(\Wbcr_FactoryForms442_Form $form)
100
  {
101
  if( isset($_POST['continue_button_' . $this->get_id()]) ) {
102
  $form->save();
@@ -121,8 +121,8 @@ class Step_Form extends Step {
121
  $form = $this->instance_form($this->get_form_options());
122
  ?>
123
  <div id="WBCR" class="wrap">
124
- <div class="wbcr-factory-pages-444-impressive-page-template factory-bootstrap-445 factory-fontawesome-000">
125
- <div class="w-factory-clearfy-236-setup__inner-wrap">
126
  <h3><?php echo $this->get_title(); ?></h3>
127
  <p style="text-align: left;"><?php echo $this->get_form_description(); ?></p>
128
  </div>
1
  <?php
2
 
3
+ namespace WBCR\FactoryClearfy237\Pages;
4
 
5
  /**
6
  * Step
10
  */
11
  class Step_Form extends Step {
12
 
13
+ public function __construct(\WBCR\FactoryClearfy237\Pages\Setup $page)
14
  {
15
  parent::__construct($page);
16
  }
33
  protected function instance_form($options)
34
  {
35
 
36
+ $form = new \Wbcr_FactoryForms443_Form([
37
  'scope' => rtrim($this->plugin->getPrefix(), '_'),
38
  'name' => $this->page->getResultId() . "-options-" . $this->get_id()
39
  ], $this->plugin);
40
 
41
+ $form->setProvider(new \Wbcr_FactoryForms443_OptionsValueProvider($this->plugin));
42
 
43
  $form_options = [];
44
 
83
  return $form;
84
  }
85
 
86
+ protected function render_form(\Wbcr_FactoryForms443_Form $form)
87
  {
88
  ?>
89
+ <form method="post" id="w-factory-clearfy-237__setup-form-<?php echo $this->get_id() ?>" class="w-factory-clearfy-237__setup-form form-horizontal">
90
  <?php $form->html(); ?>
91
+ <div class="w-factory-clearfy-237__form-buttons">
92
+ <!--<input type="submit" name="skip_button_<?php /*echo $this->get_id() */ ?>" class="button-primary button button-large w-factory-clearfy-237__skip-button" value="<?php /*_e('Skip', 'wbcr_factory_clearfy_237') */ ?>">-->
93
+ <input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-237__continue-button" value="<?php _e('Continue', 'wbcr_factory_clearfy_237') ?>">
94
  </div>
95
  </form>
96
  <?php
97
  }
98
 
99
+ protected function set_form_handler(\Wbcr_FactoryForms443_Form $form)
100
  {
101
  if( isset($_POST['continue_button_' . $this->get_id()]) ) {
102
  $form->save();
121
  $form = $this->instance_form($this->get_form_options());
122
  ?>
123
  <div id="WBCR" class="wrap">
124
+ <div class="wbcr-factory-pages-445-impressive-page-template factory-bootstrap-446 factory-fontawesome-000">
125
+ <div class="w-factory-clearfy-237-setup__inner-wrap">
126
  <h3><?php echo $this->get_title(); ?></h3>
127
  <p style="text-align: left;"><?php echo $this->get_form_description(); ?></p>
128
  </div>
libs/factory/clearfy/pages/setup-parts/class-step.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\FactoryClearfy236\Pages;
4
 
5
  /**
6
  * Step
@@ -16,16 +16,16 @@ abstract class Step {
16
  protected $next_id = false;
17
 
18
  /**
19
- * @var \WBCR\FactoryClearfy236\Pages\Setup
20
  */
21
  protected $page;
22
 
23
  /**
24
- * @var \Wbcr_Factory445_Plugin
25
  */
26
  protected $plugin;
27
 
28
- public function __construct(\WBCR\FactoryClearfy236\Pages\Setup $page)
29
  {
30
  $this->page = $page;
31
  $this->plugin = $page->plugin;
@@ -51,7 +51,7 @@ abstract class Step {
51
  *
52
  * @return void
53
  * @since 1.0.0
54
- * @see FactoryPages444_AdminPage
55
  *
56
  */
57
  public function assets($scripts, $styles)
1
  <?php
2
 
3
+ namespace WBCR\FactoryClearfy237\Pages;
4
 
5
  /**
6
  * Step
16
  protected $next_id = false;
17
 
18
  /**
19
+ * @var \WBCR\FactoryClearfy237\Pages\Setup
20
  */
21
  protected $page;
22
 
23
  /**
24
+ * @var \Wbcr_Factory446_Plugin
25
  */
26
  protected $plugin;
27
 
28
+ public function __construct(\WBCR\FactoryClearfy237\Pages\Setup $page)
29
  {
30
  $this->page = $page;
31
  $this->plugin = $page->plugin;
51
  *
52
  * @return void
53
  * @since 1.0.0
54
+ * @see FactoryPages445_AdminPage
55
  *
56
  */
57
  public function assets($scripts, $styles)
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_445_install_components($plugin_instance)
19
  {
20
  check_ajax_referer('updates');
21
 
@@ -24,11 +24,11 @@ function wfactory_445_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_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,7 +44,7 @@ function wfactory_445_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_445')]);
48
  }
49
  } else if( $storage == 'wordpress' || $storage == 'creativemotion' ) {
50
  if( !empty($slug) ) {
@@ -80,7 +80,7 @@ function wfactory_445_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_445' ), admin_url( 'options-permalink.php' ) . '</span>' );
84
  }
85
  }*/
86
 
@@ -94,7 +94,7 @@ function wfactory_445_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_445')]);
98
  }
99
 
100
  /**
@@ -102,18 +102,18 @@ function wfactory_445_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_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,7 +133,7 @@ function wfactory_445_prepare_component($plugin_instance)
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
 
15
  /**
16
  * This action allows you to process Ajax requests to activate external components Clearfy
17
  */
18
+ function wfactory_446_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_446'), __('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_446')]);
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_446')]);
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_446' ), 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_446')]);
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_446_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_446')], 403);
113
  }
114
 
115
  if( empty($component_name) ) {
116
+ wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_446')]);
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_446_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-445-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-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,11 +54,11 @@
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,7 +80,7 @@
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,7 +96,7 @@
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,7 +124,7 @@
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,7 +134,7 @@
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,7 +144,7 @@
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,7 +169,7 @@
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,7 +177,7 @@
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,7 +187,7 @@
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,7 +210,7 @@
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
20
  * This event is intended for installation, removal, activation, deactivation of external add-ons
21
  */
22
 
23
+ $(document).on('click', '.wfactory-446-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-446-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-446-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_446.hooks.run('core/components/pre_update', [$this, data]);
58
 
59
  self.sendRequest(data, function(response) {
60
  if( !response || !response.success ) {
61
+ $.wfactory_446.hooks.run('core/components/update_error', [
62
  $this,
63
  data,
64
  response
80
  $this.removeClass('button-default').addClass('button-primary');
81
  }
82
 
83
+ $.wfactory_446.hooks.run('core/components/installed', [
84
  $this,
85
  data,
86
  response
96
  $this.removeClass('button-primary').addClass('button-default');
97
  }
98
 
99
+ $.wfactory_446.hooks.run('core/components/pre_activate', [
100
  $this,
101
  data,
102
  response
124
  $this.removeClass('button-default').addClass('button-primary');
125
  }
126
 
127
+ $.wfactory_446.hooks.run('core/components/deactivated', [
128
  $this,
129
  data,
130
  response
134
 
135
  plugin_action = 'install';
136
 
137
+ $.wfactory_446.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_446.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-446-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_446.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_446.hooks.run('core/components/activated', [
191
  componentButton,
192
  sendData,
193
  response
210
  console.log(xhr.responseText);
211
  console.log(thrownError);
212
 
213
+ $.wfactory_446.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_445 ) {
12
- $.wfactory_445 = {};
13
  }
14
 
15
- $.wfactory_445.filters = $.wfactory_445.filters || {
16
 
17
  /**
18
  * A set of registered filters.
@@ -79,20 +79,20 @@
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
 
8
  (function($) {
9
  'use strict';
10
 
11
+ if( !$.wfactory_446 ) {
12
+ $.wfactory_446 = {};
13
  }
14
 
15
+ $.wfactory_446.filters = $.wfactory_446.filters || {
16
 
17
  /**
18
  * A set of registered filters.
79
  }
80
  };
81
 
82
+ $.wfactory_446.hooks = $.wfactory_446.hooks || {
83
 
84
  /**
85
  * Applies filters to a given input value.
86
  */
87
  run: function(filterName, args) {
88
+ $.wfactory_446.filters.run(filterName, args);
89
  },
90
 
91
  /**
92
  * Registers a new filter.
93
  */
94
  add: function(filterName, callback, priority) {
95
+ $.wfactory_446.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_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
  });
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_446_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_446_LOADED', true);
22
 
23
+ define( 'FACTORY_446_VERSION', '4.4.6' );
24
 
25
+ define('FACTORY_446_DIR', dirname(__FILE__));
26
+ define('FACTORY_446_URL', plugins_url(null, __FILE__));
27
 
28
+ load_plugin_textdomain('wbcr_factory_446', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
  #comp merge
31
+ require_once(FACTORY_446_DIR . '/includes/functions.php');
32
 
33
+ require_once(FACTORY_446_DIR . '/includes/entities/class-factory-paths.php');
34
+ require_once(FACTORY_446_DIR . '/includes/entities/class-factory-support.php');
35
 
36
+ require_once(FACTORY_446_DIR . '/includes/class-factory-requests.php');
37
+ require_once(FACTORY_446_DIR . '/includes/class-factory-options.php');
38
+ require_once(FACTORY_446_DIR . '/includes/class-factory-plugin-base.php');
39
+ require_once(FACTORY_446_DIR . '/includes/class-factory-migrations.php');
40
+ require_once(FACTORY_446_DIR . '/includes/class-factory-notices.php');
41
 
42
  // ASSETS
43
+ require_once(FACTORY_446_DIR . '/includes/assets-managment/class-factory-assets-list.php');
44
+ require_once(FACTORY_446_DIR . '/includes/assets-managment/class-factory-script-list.php');
45
+ require_once(FACTORY_446_DIR . '/includes/assets-managment/class-factory-style-list.php');
46
 
47
  // PREMIUM
48
+ require_once(FACTORY_446_DIR . '/includes/premium/class-factory-license-interface.php');
49
+ require_once(FACTORY_446_DIR . '/includes/premium/class-factory-provider-abstract.php');
50
+ require_once(FACTORY_446_DIR . '/includes/premium/class-factory-manager.php');
51
 
52
  // UPDATES
53
+ require_once(FACTORY_446_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
54
+ require_once(FACTORY_446_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
55
+ require_once(FACTORY_446_DIR . '/includes/updates/repositories/class-factory-github.php');
56
+ require_once(FACTORY_446_DIR . '/includes/updates/class-factory-upgrader.php');
57
+ require_once(FACTORY_446_DIR . '/includes/updates/class-factory-premium-upgrader.php');
58
 
59
+ require_once(FACTORY_446_DIR . '/includes/class-factory-plugin-abstract.php');
60
 
61
+ require_once(FACTORY_446_DIR . '/includes/activation/class-factory-activator.php');
62
+ require_once(FACTORY_446_DIR . '/includes/activation/class-factory-update.php');
63
  #endcomp
64
 
65
  add_action('admin_enqueue_scripts', function () {
66
+ wp_enqueue_script('wfactory-446-core-general', FACTORY_446_URL . '/assets/js/core-general.js', [
67
  'jquery'
68
+ ], FACTORY_446_VERSION);
69
+ wp_enqueue_script('wfactory-446-core-components', FACTORY_446_URL . '/assets/js/core-components.js', [
70
  'jquery',
71
+ 'wfactory-446-core-general'
72
+ ], FACTORY_446_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_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
 
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_Factory446_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
+ * @var Wbcr_Factory446_Plugin
28
  */
29
  public $plugin;
30
 
31
+ public function __construct( Wbcr_Factory446_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_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
 
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_Factory446_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
+ * @var Wbcr_Factory446_Plugin
29
  */
30
  var $plugin;
31
 
32
+ public function __construct( Wbcr_Factory446_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_Factory445_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
@@ -29,15 +29,15 @@ class Wbcr_Factory445_AssetsList {
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 ) {
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_Factory446_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
29
  protected $default_place;
30
 
31
  /**
32
+ * @var Wbcr_Factory446_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
+ * @param Wbcr_Factory446_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
+ public function __construct( Wbcr_Factory446_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_Factory445_ScriptList extends Wbcr_Factory445_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
@@ -149,7 +149,7 @@ class Wbcr_Factory445_ScriptList extends Wbcr_Factory445_AssetsList {
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 );
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory446_ScriptList extends Wbcr_Factory446_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
149
  * @param string $varname
150
  * @param array $data
151
  *
152
+ * @return Wbcr_Factory446_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_Factory445_StyleList extends Wbcr_Factory445_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory446_StyleList extends Wbcr_Factory446_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
libs/factory/core/includes/class-check-compatibility.php CHANGED
@@ -75,19 +75,19 @@ if ( ! class_exists( 'Wbcr_Factory_Compatibility' ) ) {
75
  $notice_text = $notice_default_text = '';
76
  $notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
77
 
78
- $notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_clearfy_236' ), $this->plugin_title ) . ' ';
79
  $notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
80
 
81
  $has_one = false;
82
 
83
  if ( ! $this->isPhpCompatibility() ) {
84
  $has_one = true;
85
- $notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_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 ) {
75
  $notice_text = $notice_default_text = '';
76
  $notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
77
 
78
+ $notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_clearfy_237' ), $this->plugin_title ) . ' ';
79
  $notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
80
 
81
  $has_one = false;
82
 
83
  if ( ! $this->isPhpCompatibility() ) {
84
  $has_one = true;
85
+ $notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_446' ), $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_446' ), $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_445;
4
 
5
  use Exception;
6
- use Wbcr_Factory445_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -35,11 +35,11 @@ class Migrations {
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,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_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,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_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,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_445' ) );
509
  }
510
 
511
  $tokens = token_get_all( $phpCode );
1
  <?php
2
 
3
+ namespace WBCR\Factory_446;
4
 
5
  use Exception;
6
+ use Wbcr_Factory446_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
35
  /**
36
  * Migrations constructor.
37
  *
38
+ * @param Wbcr_Factory446_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
+ public function __construct( Wbcr_Factory446_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_446' ) . "</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_446' ) . '</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_446" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
+ $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_446" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
+ $notice_text .= __( "Current plugin version:", "wbcr_factory_446" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
+ $notice_text .= __( "Need migration:", "wbcr_factory_446" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
+ $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_446" ) . "</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_446' ) . '</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_446' ) );
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_445;
4
 
5
- use Wbcr_Factory445_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_Factory445_Plugin
31
  */
32
  protected $plugin;
33
  /**
@@ -58,7 +58,7 @@ class Notices {
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
- * @param Wbcr_Factory445_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_445
90
  */
91
  $this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
92
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_446;
4
 
5
+ use Wbcr_Factory446_Plugin;
6
 
7
  // Exit if accessed directly
8
  if( !defined('ABSPATH') ) {
27
  class Notices {
28
 
29
  /**
30
+ * @var Wbcr_Factory446_Plugin
31
  */
32
  protected $plugin;
33
  /**
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
+ * @param Wbcr_Factory446_Plugin $plugin
62
  */
63
  public function __construct($plugin)
64
  {
86
  public function currentScreenAction()
87
  {
88
  /**
89
+ * @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_446
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_445;
4
 
5
  // Exit if accessed directly
6
  use Exception;
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
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. Основная задача была получать, обновлять, удалять опции без использования префиксов,
1
  <?php
2
 
3
+ namespace WBCR\Factory_446;
4
 
5
  // Exit if accessed directly
6
  use Exception;
10
  }
11
 
12
  /**
13
+ * Трейт используется для расширения базового класса плагина Wbcr_Factory446_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_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,7 +86,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,8 +115,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,15 +144,15 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,20 +165,20 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,9 +186,9 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,9 +196,9 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,8 +246,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,8 +265,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +276,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,18 +312,18 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +333,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,11 +355,11 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,16 +409,16 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +427,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,16 +443,16 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,16 +493,16 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +511,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,11 +523,11 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +536,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,8 +574,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +584,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
584
  return null;
585
  }
586
 
587
- return Wbcr_FactoryPages444::getPageUrl($this, $page_id, $args);
588
  }
589
 
590
  /**
@@ -594,13 +594,13 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,13 +609,13 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,12 +798,12 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +830,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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,7 +846,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
846
  */
847
  protected function init_plugin_migrations()
848
  {
849
- new WBCR\Factory_445\Migrations($this);
850
  }
851
 
852
  /**
@@ -857,7 +857,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
857
  */
858
  protected function init_plugin_notices()
859
  {
860
- new Wbcr\Factory_445\Notices($this);
861
  }
862
 
863
  /**
@@ -873,7 +873,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
873
  protected function init_plugin_updates()
874
  {
875
  if( $this->has_updates ) {
876
- new WBCR\Factory_445\Updates\Upgrader($this);
877
  }
878
  }
879
 
@@ -896,11 +896,11 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
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
  }
24
  * @package factory-core
25
  *
26
  */
27
+ abstract class Wbcr_Factory446_Plugin extends Wbcr_Factory446_Base {
28
 
29
  /**
30
+ * Instance class Wbcr_Factory446_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
+ * @var Wbcr_Factory446_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
+ * @var \WBCR\Factory_446\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
+ * @var Wbcr_FactoryBootstrap446_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
+ * @var Wbcr_FactoryForms443_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
+ * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory446_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
+ * @var array[] Wbcr_Factory446_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_124\Base
90
  */
91
  private $adverts;
92
 
115
 
116
  parent::__construct($plugin_path, $data);
117
 
118
+ $this->request = new Wbcr_Factory446_Request();
119
+ //$this->route = new Wbcr_Factory446_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-446-intall-component" == $_REQUEST['action'] ) {
148
+ add_action('wp_ajax_wfactory-446-intall-component', [$this, 'ajax_handler_install_components']);
149
  }
150
 
151
+ if( "wfactory-446-prepare-component" == $_REQUEST['action'] ) {
152
+ add_action('wp_ajax_wfactory-446-prepare-component', [$this, 'ajax_handler_prepare_component']);
153
  }
154
+ if( "wfactory-446-creativemotion-install-plugin" == $_REQUEST['action'] ) {
155
+ add_action('wp_ajax_wfactory-446-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_446_DIR . '/ajax/install-addons.php';
169
+ wfactory_446_install_components($this);
170
  }
171
 
172
  public function ajax_handler_prepare_component()
173
  {
174
+ require_once FACTORY_446_DIR . '/ajax/install-addons.php';
175
+ wfactory_446_prepare_component($this);
176
  }
177
 
178
  public function ajax_handler_install_creativemotion_plugins()
179
  {
180
+ require_once FACTORY_446_DIR . '/ajax/install-addons.php';
181
+ wfactory_446_creativemotion_install_plugin($this);
182
  }
183
  // --------------------------------------------------------
184
 
186
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
187
  * скриптов, стилей) фреймворка.
188
  *
189
+ * @param Wbcr_FactoryBootstrap446_Manager $bootstrap
190
  */
191
+ public function setBootstap(Wbcr_FactoryBootstrap446_Manager $bootstrap)
192
  {
193
  $this->bootstrap = $bootstrap;
194
  }
196
  /**
197
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
198
  *
199
+ * @param Wbcr_FactoryForms443_Manager $forms
200
  */
201
+ public function setForms(Wbcr_FactoryForms443_Manager $forms)
202
  {
203
  $this->forms = $forms;
204
  }
246
  */
247
  public function set_license_provider($name, $class_name)
248
  {
249
+ if( !isset(WBCR\Factory_446\Premium\Manager::$providers[$name]) ) {
250
+ WBCR\Factory_446\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_446\Updates\Upgrader::$repositories[$name]) ) {
269
+ WBCR\Factory_446\Updates\Upgrader::$repositories[$name] = $class_name;
270
  }
271
  }
272
 
276
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
277
  * рекламных объявлений.
278
  *
279
+ * @return \WBCR\Factory_Adverts_124\Base
280
  * @since 1.1
281
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
282
  */
312
 
313
  public function newScriptList()
314
  {
315
+ return new Wbcr_Factory446_ScriptList($this);
316
  }
317
 
318
  public function newStyleList()
319
  {
320
+ return new Wbcr_Factory446_StyleList($this);
321
  }
322
 
323
  /**
324
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
325
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
326
+ * Wbcr_FactoryPages445_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_FactoryPages445_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_FactoryPages445') ) {
359
+ throw new Exception('The factory_pages_445 module is not included.');
360
  }
361
 
362
+ Wbcr_FactoryPages445::register($this, $class_name);
363
  }
364
 
365
  /**
409
  /**
410
  * @since 4.1.1 - change hook name
411
  */
412
+ if( apply_filters("wbcr/factory_446/cancel_plugin_activation_{$this->plugin_name}", false) ) {
413
  return;
414
  }
415
 
416
  /**
417
+ * wbcr_factory_446_plugin_activation
418
  *
419
  * @since 4.1.1 - deprecated
420
  */
421
+ wbcr_factory_446_do_action_deprecated('wbcr_factory_446_plugin_activation', [
422
  $this
423
  ], '4.1.1', "wbcr/factory/plugin_activation");
424
 
427
  *
428
  * @since 4.1.2 - deprecated
429
  */
430
+ wbcr_factory_446_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_446_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_446_plugin_activation_' . $this->plugin_name
452
  *
453
  * @since 4.1.1 - deprecated
454
  */
455
+ wbcr_factory_446_do_action_deprecated('wbcr_factory_446_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_446/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
497
  return;
498
  }
499
 
500
  /**
501
+ * wbcr_factory_446_plugin_deactivation
502
  *
503
  * @since 4.1.1 - deprecated
504
  */
505
+ wbcr_factory_446_do_action_deprecated('wbcr_factory_446_plugin_deactivation', [
506
  $this
507
  ], '4.1.1', "wbcr/factory/plugin_deactivation");
508
 
511
  *
512
  * @since 4.1.2 - deprecated
513
  */
514
+ wbcr_factory_446_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_446_plugin_deactivation_ . $this->plugin_name
527
  *
528
  * @since 4.1.1 - deprecated
529
  */
530
+ wbcr_factory_446_do_action_deprecated('wbcr_factory_446_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_446_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_FactoryPages445') ) {
578
+ throw new Exception('The factory_pages_445 module is not included.');
579
  }
580
 
581
  if( !is_admin() ) {
584
  return null;
585
  }
586
 
587
+ return Wbcr_FactoryPages445::getPageUrl($this, $page_id, $args);
588
  }
589
 
590
  /**
594
  * @param $slug
595
  * param $premium
596
  *
597
+ * @return \WBCR\Factory_446\Components\Install_Button
598
  */
599
  public function get_install_component_button($component_type, $slug)
600
  {
601
+ require_once FACTORY_446_DIR . '/includes/components/class-install-component-button.php';
602
 
603
+ return new \WBCR\Factory_446\Components\Install_Button($this, $component_type, $slug);
604
  }
605
 
606
  /**
609
  * @param $component_type
610
  * @param $slug
611
  *
612
+ * @return \WBCR\Factory_446\Components\Delete_Button
613
  */
614
  public function get_delete_component_button($component_type, $slug)
615
  {
616
+ require_once FACTORY_446_DIR . '/includes/components/class-delete-component-button.php';
617
 
618
+ return new WBCR\Factory_446\Components\Delete_Button($this, $component_type, $slug);
619
  }
620
 
621
  /**
798
  /**
799
  * @since 4.1.1 - deprecated
800
  */
801
+ wbcr_factory_446_do_action_deprecated('wbcr_factory_446_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_446/modules_loaded-" . $this->plugin_name);
802
 
803
  /**
804
  * @since 4.1.1 - add
805
  */
806
+ do_action('wbcr/factory_446/modules_loaded-' . $this->plugin_name);
807
  }
808
 
809
 
830
  });
831
 
832
  if( is_admin() ) {
833
+ add_filter('wbcr_factory_446_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_446\Migrations($this);
850
  }
851
 
852
  /**
857
  */
858
  protected function init_plugin_notices()
859
  {
860
+ new Wbcr\Factory_446\Notices($this);
861
  }
862
 
863
  /**
873
  protected function init_plugin_updates()
874
  {
875
  if( $this->has_updates ) {
876
+ new WBCR\Factory_446\Updates\Upgrader($this);
877
  }
878
  }
879
 
896
  }
897
 
898
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
899
+ $this->premium = WBCR\Factory_446\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_446\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_Factory445_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_Factory445_Base {
21
 
22
- use WBCR\Factory_445\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
@@ -81,7 +81,7 @@ class Wbcr_Factory445_Base {
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
- * экземпляр класса \WBCR\Factory_445\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
@@ -127,7 +127,7 @@ class Wbcr_Factory445_Base {
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
- * WBCR\Factory_445\Premium\Provider > WBCR\Factory_Freemius_133\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
@@ -177,9 +177,9 @@ class Wbcr_Factory445_Base {
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,20 +209,20 @@ class Wbcr_Factory445_Base {
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,8 +270,8 @@ class Wbcr_Factory445_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_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,7 +391,7 @@ class Wbcr_Factory445_Base {
391
  * Проверяет, включен ли премиум для этого плагина или нет.
392
  *
393
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
394
- * См. Wbcr_Factory445_Base::has_premium
395
  */
396
  public function has_premium() {
397
  return $this->has_premium;
@@ -400,7 +400,7 @@ class Wbcr_Factory445_Base {
400
  /**
401
  * Позволяет получить заголовок плагина.
402
  *
403
- * @return string Возвращает заголовок плагина. См. Wbcr_Factory445_Base::plugin_title
404
  */
405
  public function getPluginTitle() {
406
  return $this->plugin_title;
@@ -409,7 +409,7 @@ class Wbcr_Factory445_Base {
409
  /**
410
  * Позволяет получить префикс плагина.
411
  *
412
- * @return string Возвращает префикс плагина.См. Wbcr_Factory445_Base::prefix
413
  */
414
  public function getPrefix() {
415
  return $this->prefix;
@@ -418,7 +418,7 @@ class Wbcr_Factory445_Base {
418
  /**
419
  * Позволяет получить имя плагина.
420
  *
421
- * @return string Возвращает имя плагина. См. Wbcr_Factory445_Base::plugin_name
422
  */
423
  public function getPluginName() {
424
  return $this->plugin_name;
@@ -427,7 +427,7 @@ class Wbcr_Factory445_Base {
427
  /**
428
  * Позволяет получить версию плагина.
429
  *
430
- * @return string Возвращает версию плагина. См. Wbcr_Factory445_Base::plugin_version
431
  */
432
  public function getPluginVersion() {
433
  return $this->plugin_version;
@@ -449,7 +449,7 @@ class Wbcr_Factory445_Base {
449
  * какие-то данные не описанные в интерфейсе этого плагина.
450
  *
451
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
452
- * Wbcr_Factory445_Base::plugin_data
453
  *
454
  * @return null
455
  */
@@ -462,18 +462,18 @@ class Wbcr_Factory445_Base {
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,7 +482,7 @@ class Wbcr_Factory445_Base {
482
  /**
483
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
484
  *
485
- * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory445_Base::plugin_data
486
  */
487
  public function getPluginInfo() {
488
  return (object) $this->plugin_data;
5
  }
6
 
7
  /**
8
+ * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory446_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_Factory446_Base {
21
 
22
+ use WBCR\Factory_446\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
+ * экземпляр класса \WBCR\Factory_446\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
+ * WBCR\Factory_446\Premium\Provider > WBCR\Factory_Freemius_134\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
+ [ 'libs/factory/bootstrap', 'factory_bootstrap_446', 'admin' ],
181
+ [ 'libs/factory/forms', 'factory_forms_443', 'admin' ],
182
+ [ 'libs/factory/pages', 'factory_pages_445', 'admin' ],
183
  ];
184
 
185
  /**
209
 
210
 
211
  /**
212
+ * Экземпляр класса \WBCR\Factory_446\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
+ * @var \WBCR\Factory_446\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
+ * Экземпляр класса \WBCR\Factory_446\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
+ * @var \WBCR\Factory_446\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_446\Entities\Support( $this->support_details );
274
+ $this->paths = new \WBCR\Factory_446\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_Factory446_Base::has_premium
395
  */
396
  public function has_premium() {
397
  return $this->has_premium;
400
  /**
401
  * Позволяет получить заголовок плагина.
402
  *
403
+ * @return string Возвращает заголовок плагина. См. Wbcr_Factory446_Base::plugin_title
404
  */
405
  public function getPluginTitle() {
406
  return $this->plugin_title;
409
  /**
410
  * Позволяет получить префикс плагина.
411
  *
412
+ * @return string Возвращает префикс плагина.См. Wbcr_Factory446_Base::prefix
413
  */
414
  public function getPrefix() {
415
  return $this->prefix;
418
  /**
419
  * Позволяет получить имя плагина.
420
  *
421
+ * @return string Возвращает имя плагина. См. Wbcr_Factory446_Base::plugin_name
422
  */
423
  public function getPluginName() {
424
  return $this->plugin_name;
427
  /**
428
  * Позволяет получить версию плагина.
429
  *
430
+ * @return string Возвращает версию плагина. См. Wbcr_Factory446_Base::plugin_version
431
  */
432
  public function getPluginVersion() {
433
  return $this->plugin_version;
449
  * какие-то данные не описанные в интерфейсе этого плагина.
450
  *
451
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
452
+ * Wbcr_Factory446_Base::plugin_data
453
  *
454
  * @return null
455
  */
462
  }
463
 
464
  /**
465
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_446\Entities\Support.
466
  *
467
+ * @return \WBCR\Factory_446\Entities\Support
468
  */
469
  public function get_support() {
470
  return $this->support;
471
  }
472
 
473
  /**
474
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_446\Entities\Paths.
475
  *
476
+ * @return \WBCR\Factory_446\Entities\Paths
477
  */
478
  public function get_paths() {
479
  return $this->paths;
482
  /**
483
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
484
  *
485
+ * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory446_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_Factory445_Request {
15
 
16
  /**
17
  * @param null $param
11
  * @package factory-core
12
  */
13
 
14
+ class Wbcr_Factory446_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_Factory445_Requirements' ) ) {
16
- class Wbcr_Factory445_Requirements {
17
 
18
  /**
19
  * Factory framework version
@@ -242,7 +242,7 @@ if ( ! class_exists( 'Wbcr_Factory445_Requirements' ) ) {
242
  $notice_text = $notice_default_text = '';
243
  $notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
244
 
245
- $notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_clearfy_236' ), $this->plugin_title ) . ' ';
246
  $notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
247
 
248
  $has_one = false;
@@ -273,21 +273,21 @@ if ( ! class_exists( 'Wbcr_Factory445_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_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
  }
12
  * @since 4.0.9
13
  */
14
  // @formatter:off
15
+ if ( ! class_exists( 'Wbcr_Factory446_Requirements' ) ) {
16
+ class Wbcr_Factory446_Requirements {
17
 
18
  /**
19
  * Factory framework version
242
  $notice_text = $notice_default_text = '';
243
  $notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
244
 
245
+ $notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_clearfy_237' ), $this->plugin_title ) . ' ';
246
  $notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
247
 
248
  $has_one = false;
273
  * @return string
274
  */
275
  protected function get_php_incompat_text() {
276
+ return sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_446' ), $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_446' ), $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_446' ), $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_445\Components;
4
 
5
  /**
6
  * This file groups the settings for quick setup
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\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_445\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-445-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_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.');
@@ -67,7 +67,7 @@ class Install_Button {
67
 
68
  // Set default data
69
  $this->add_data('storage', $this->type);
70
- $this->add_data('i18n', \WbcrFactoryClearfy236_Helpers::getEscapeJson($this->get_i18n()));
71
  $this->add_data('wpnonce', wp_create_nonce('updates'));
72
  }
73
 
@@ -420,13 +420,13 @@ class Install_Button {
420
  protected function get_i18n()
421
  {
422
  return [
423
- 'activate' => __('Activate', '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
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Components;
4
 
5
  /**
6
  * This file groups the settings for quick setup
22
 
23
  protected $classes = [
24
  'button',
25
+ 'wfactory-446-process-button'
26
  ];
27
  protected $data = [];
28
  protected $base_path;
37
  * @throws \Exception
38
  * @since 4.3.3
39
  */
40
+ public function __construct(\Wbcr_Factory446_Plugin $plugin, $type, $plugin_slug)
41
  {
42
  if( empty($type) || !is_string($plugin_slug) ) {
43
  throw new \Exception('Empty type or plugin_slug attribute.');
67
 
68
  // Set default data
69
  $this->add_data('storage', $this->type);
70
+ $this->add_data('i18n', \WbcrFactoryClearfy237_Helpers::getEscapeJson($this->get_i18n()));
71
  $this->add_data('wpnonce', wp_create_nonce('updates'));
72
  }
73
 
420
  protected function get_i18n()
421
  {
422
  return [
423
+ 'activate' => __('Activate', 'wbcr_factory_446'),
424
+ 'install' => __('Install', 'wbcr_factory_446'),
425
+ 'deactivate' => __('Deactivate', 'wbcr_factory_446'),
426
+ 'delete' => __('Delete', 'wbcr_factory_446'),
427
+ 'loading' => __('Please wait...', 'wbcr_factory_446'),
428
+ 'preparation' => __('Preparation...', 'wbcr_factory_446'),
429
+ 'read' => __('Read more', 'wbcr_factory_446')
430
  ];
431
  }
432
 
libs/factory/core/includes/entities/class-factory-paths.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_445\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\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_445\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\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_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,7 +89,7 @@ function wbcr_factory_445_apply_filters_deprecated( $tag, $args, $version, $repl
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,14 +98,14 @@ function wbcr_factory_445_do_action_deprecated( $tag, $args, $version, $replacem
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,7 +123,7 @@ function wbcr_factory_445_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_445_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_446_deprecated_hook()
57
  *
58
  */
59
+ function wbcr_factory_446_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_446_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_446_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_446_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_446_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_446_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_445\Premium\Interfaces;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\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_445\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory445_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_Factory445_Plugin
28
  */
29
  protected $plugin;
30
 
@@ -36,24 +36,24 @@ class Manager {
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,7 +62,7 @@ class Manager {
62
  /**
63
  * @param $provider_name
64
  *
65
- * @return \WBCR\Factory_Freemius_133\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_445\Premium\Provider interface!" );
74
  }
75
 
76
  return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory446_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
24
  public static $providers;
25
 
26
  /**
27
+ * @var Wbcr_Factory446_Plugin
28
  */
29
  protected $plugin;
30
 
36
  /**
37
  * Manager constructor.
38
  *
39
+ * @param Wbcr_Factory446_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
+ public function __construct( Wbcr_Factory446_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
+ * @param Wbcr_Factory446_Plugin $plugin
51
  * @param array $settings
52
  *
53
+ * @return \WBCR\Factory_Freemius_134\Premium\Provider
54
  * @throws Exception
55
  */
56
+ public static function instance( Wbcr_Factory446_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_134\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_446\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_445\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory445_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_Factory445_Plugin
25
  */
26
  protected $plugin;
27
 
@@ -38,10 +38,10 @@ abstract class Provider {
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,7 +244,7 @@ abstract class Provider {
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
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory446_Plugin;
7
 
8
  // Exit if accessed directly
9
  if( !defined('ABSPATH') ) {
21
  abstract class Provider {
22
 
23
  /**
24
+ * @var Wbcr_Factory446_Plugin
25
  */
26
  protected $plugin;
27
 
38
  /**
39
  * Provider constructor.
40
  *
41
+ * @param Wbcr_Factory446_Plugin $plugin
42
  * @param array $settings
43
  */
44
+ public function __construct(Wbcr_Factory446_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_446\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_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,13 +45,13 @@ class Premium_Upgrader extends Upgrader {
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,9 +242,9 @@ class Premium_Upgrader extends Upgrader {
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
@@ -809,12 +809,12 @@ class Premium_Upgrader extends Upgrader {
809
  $cancel_license_url = $this->get_action_url('cancel_license');
810
 
811
  $texts = [
812
- 'need_activate_license' => __('License activation required. A license is required to get premium plugin updates, as well as to get additional services.', '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]) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
+ use Wbcr_Factory446_Plugin;
9
+ use Wbcr_FactoryPages445_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_Factory446_Plugin $plugin
49
  *
50
  * @throws Exception
51
  * @since 4.1.1
52
  *
53
  */
54
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
55
  {
56
  parent::__construct($plugin);
57
 
242
  /**
243
  * Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
244
  *
245
+ * @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
246
  *
247
+ * @param Wbcr_Factory446_Plugin $plugin
248
  *
249
  * @return void
250
  * @since 4.1.1
809
  $cancel_license_url = $this->get_action_url('cancel_license');
810
 
811
  $texts = [
812
+ 'need_activate_license' => __('License activation required. A license is required to get premium plugin updates, as well as to get additional services.', 'wbcr_factory_446'),
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_446'),
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_446'), $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_446'), $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_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,8 +28,8 @@ class Upgrader {
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,7 +42,7 @@ class Upgrader {
42
  protected $type = 'default';
43
 
44
  /**
45
- * @var Wbcr_Factory445_Plugin
46
  */
47
  protected $plugin;
48
 
@@ -88,7 +88,7 @@ class Upgrader {
88
  /**
89
  * Manager constructor.
90
  *
91
- * @param Wbcr_Factory445_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_Factory445_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_445\Updates\Wordpress_Repository';
111
- self::$repositories['github'] = '\WBCR\Factory_445\Updates\Github_Repository';
112
 
113
  $settings = $this->get_settings();
114
 
@@ -298,7 +298,7 @@ class Upgrader {
298
 
299
  if( isset(self::$repositories[$repository_name]) && class_exists(self::$repositories[$repository_name]) ) {
300
  if( self::$repositories[$repository_name] instanceof Repository ) {
301
- throw new Exception("Repository {$repository_name} must extend the class WBCR\Factory_445\Updates\Repository interface!");
302
  }
303
 
304
  return new self::$repositories[$repository_name]($this->plugin, $this->get_settings());
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
+ use Wbcr_Factory446_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_134\Updates\Freemius_Repository',
32
+ * 'freemius' => '\WBCR\Factory_446\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
42
  protected $type = 'default';
43
 
44
  /**
45
+ * @var Wbcr_Factory446_Plugin
46
  */
47
  protected $plugin;
48
 
88
  /**
89
  * Manager constructor.
90
  *
91
+ * @param Wbcr_Factory446_Plugin $plugin
92
  * @param $args
93
  * @param bool $is_premium
94
  *
96
  * @since 4.1.1
97
  *
98
  */
99
+ public function __construct(Wbcr_Factory446_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_446\Updates\Wordpress_Repository';
111
+ self::$repositories['github'] = '\WBCR\Factory_446\Updates\Github_Repository';
112
 
113
  $settings = $this->get_settings();
114
 
298
 
299
  if( isset(self::$repositories[$repository_name]) && class_exists(self::$repositories[$repository_name]) ) {
300
  if( self::$repositories[$repository_name] instanceof Repository ) {
301
+ throw new Exception("Repository {$repository_name} must extend the class WBCR\Factory_446\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_445\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory445_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_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' => '',
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory446_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
57
  /**
58
  * Wordpress constructor.
59
  *
60
+ * @param Wbcr_Factory446_Plugin $plugin
61
  * @param bool $is_premium
62
  * @since 4.4.1
63
  */
64
+ public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings = [])
65
  {
66
  $settings = wp_parse_args($settings, [
67
  'github_username' => '',
libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_445\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory445_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
@@ -23,17 +23,17 @@ abstract class Repository {
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
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory446_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
23
  protected $initialized = false;
24
 
25
  /**
26
+ * @var Wbcr_Factory446_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
+ * @param Wbcr_Factory446_Plugin $plugin
34
  * @param array $settings
35
  */
36
+ abstract public function __construct(Wbcr_Factory446_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_445\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory445_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_Factory445_Plugin $plugin
24
  * @param array $settings
25
  */
26
- public function __construct(Wbcr_Factory445_Plugin $plugin, array $settings = [])
27
  {
28
  $this->plugin = $plugin;
29
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_446\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory446_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
20
  /**
21
  * Wordpress constructor.
22
  *
23
+ * @param Wbcr_Factory446_Plugin $plugin
24
  * @param array $settings
25
  */
26
+ public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings = [])
27
  {
28
  $this->plugin = $plugin;
29
  }
libs/factory/core/langs/{wbcr_factory_445-ru_RU.mo → wbcr_factory_446-ru_RU.mo} RENAMED
File without changes
libs/factory/core/langs/{wbcr_factory_445-ru_RU.po → wbcr_factory_446-ru_RU.po} RENAMED
File without changes
libs/factory/forms/boot.php CHANGED
@@ -22,175 +22,175 @@ if( !is_admin() ) {
22
 
23
  // checks if the module is already loaded in order to
24
  // prevent loading the same version of the module twice.
25
- if( defined('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,53 +198,53 @@ if( !function_exists('wbcr_factory_forms_442_register_default_controls') ) {
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,23 +252,23 @@ if( !function_exists('wbcr_factory_forms_442_register_default_controls') ) {
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
  }
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_443_LOADED') ) {
26
  return;
27
  }
28
 
29
+ define('FACTORY_FORMS_443_LOADED', true);
30
 
31
+ define( 'FACTORY_FORMS_443_VERSION', '4.4.3' );
32
 
33
  // absolute path and URL to the files and resources of the module.
34
+ define('FACTORY_FORMS_443_DIR', dirname(__FILE__));
35
+ define('FACTORY_FORMS_443_URL', plugins_url(null, __FILE__));
36
 
37
  #comp merge
38
+ require_once(FACTORY_FORMS_443_DIR . '/includes/providers/value-provider.interface.php');
39
+ require_once(FACTORY_FORMS_443_DIR . '/includes/providers/meta-value-provider.class.php');
40
+ require_once(FACTORY_FORMS_443_DIR . '/includes/providers/options-value-provider.class.php');
41
 
42
+ require_once(FACTORY_FORMS_443_DIR . '/includes/form.class.php');
43
  #endcomp
44
 
45
+ load_plugin_textdomain('wbcr_factory_forms_443', 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_443_register_controls' hook
53
  *
54
  */
55
+ if( !function_exists('wbcr_factory_forms_443_register_default_controls') ) {
56
 
57
  /**
58
+ * @param Wbcr_Factory446_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
+ function wbcr_factory_forms_443_register_default_controls(Wbcr_Factory446_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_443_DIR . '/includes/html-builder.class.php');
70
+ require_once(FACTORY_FORMS_443_DIR . '/includes/form-element.class.php');
71
+ require_once(FACTORY_FORMS_443_DIR . '/includes/control.class.php');
72
+ require_once(FACTORY_FORMS_443_DIR . '/includes/complex-control.class.php');
73
+ require_once(FACTORY_FORMS_443_DIR . '/includes/holder.class.php');
74
+ require_once(FACTORY_FORMS_443_DIR . '/includes/control-holder.class.php');
75
+ require_once(FACTORY_FORMS_443_DIR . '/includes/custom-element.class.php');
76
+ require_once(FACTORY_FORMS_443_DIR . '/includes/form-layout.class.php');
77
 
78
  // registration of controls
79
  $plugin->forms->registerControls([
80
  [
81
  'type' => 'checkbox',
82
+ 'class' => 'Wbcr_FactoryForms443_CheckboxControl',
83
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/checkbox.php'
84
  ],
85
  [
86
  'type' => 'list',
87
+ 'class' => 'Wbcr_FactoryForms443_ListControl',
88
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/list.php'
89
  ],
90
  [
91
  'type' => 'dropdown',
92
+ 'class' => 'Wbcr_FactoryForms443_DropdownControl',
93
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/dropdown.php'
94
  ],
95
  [
96
  'type' => 'dropdown-and-colors',
97
+ 'class' => 'Wbcr_FactoryForms443_DropdownAndColorsControl',
98
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/dropdown-and-colors.php'
99
  ],
100
  [
101
  'type' => 'hidden',
102
+ 'class' => 'Wbcr_FactoryForms443_HiddenControl',
103
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/hidden.php'
104
  ],
105
  [
106
  'type' => 'hidden',
107
+ 'class' => 'Wbcr_FactoryForms443_HiddenControl',
108
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/hidden.php'
109
  ],
110
  [
111
  'type' => 'radio',
112
+ 'class' => 'Wbcr_FactoryForms443_RadioControl',
113
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/radio.php'
114
  ],
115
  [
116
  'type' => 'radio-colors',
117
+ 'class' => 'Wbcr_FactoryForms443_RadioColorsControl',
118
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/radio-colors.php'
119
  ],
120
  [
121
  'type' => 'textarea',
122
+ 'class' => 'Wbcr_FactoryForms443_TextareaControl',
123
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/textarea.php'
124
  ],
125
  [
126
  'type' => 'textbox',
127
+ 'class' => 'Wbcr_FactoryForms443_TextboxControl',
128
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/textbox.php'
129
  ],
130
  [
131
  'type' => 'multiple-textbox',
132
+ 'class' => 'Wbcr_FactoryForms443_MultipleTextboxControl',
133
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/multiple-textbox.php'
134
  ],
135
  [
136
  'type' => 'datetimepicker-range',
137
+ 'class' => 'Wbcr_FactoryForms443_DatepickerRangeControl',
138
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/datepicker-range.php'
139
  ],
140
  [
141
  'type' => 'url',
142
+ 'class' => 'Wbcr_FactoryForms443_UrlControl',
143
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/url.php'
144
  ],
145
  [
146
  'type' => 'wp-editor',
147
+ 'class' => 'Wbcr_FactoryForms443_WpEditorControl',
148
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/wp-editor.php'
149
  ],
150
  [
151
  'type' => 'color',
152
+ 'class' => 'Wbcr_FactoryForms443_ColorControl',
153
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/color.php'
154
  ],
155
  [
156
  'type' => 'color-and-opacity',
157
+ 'class' => 'Wbcr_FactoryForms443_ColorAndOpacityControl',
158
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/color-and-opacity.php'
159
  ],
160
  [
161
  'type' => 'gradient',
162
+ 'class' => 'Wbcr_FactoryForms443_GradientControl',
163
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/gradient.php'
164
  ],
165
  [
166
  'type' => 'font',
167
+ 'class' => 'Wbcr_FactoryForms443_FontControl',
168
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/font.php'
169
  ],
170
  [
171
  'type' => 'google-font',
172
+ 'class' => 'Wbcr_FactoryForms443_GoogleFontControl',
173
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/google-font.php'
174
  ],
175
  [
176
  'type' => 'pattern',
177
+ 'class' => 'Wbcr_FactoryForms443_PatternControl',
178
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/pattern.php'
179
  ],
180
  [
181
  'type' => 'integer',
182
+ 'class' => 'Wbcr_FactoryForms443_IntegerControl',
183
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/integer.php'
184
  ],
185
  [
186
  'type' => 'control-group',
187
+ 'class' => 'Wbcr_FactoryForms443_ControlGroupHolder',
188
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/control-group.php'
189
  ],
190
  [
191
  'type' => 'paddings-editor',
192
+ 'class' => 'Wbcr_FactoryForms443_PaddingsEditorControl',
193
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/paddings-editor.php'
194
  ],
195
  ]);
196
 
198
  $plugin->forms->registerHolders([
199
  [
200
  'type' => 'tab',
201
+ 'class' => 'Wbcr_FactoryForms443_TabHolder',
202
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/tab.php'
203
  ],
204
  [
205
  'type' => 'tab-item',
206
+ 'class' => 'Wbcr_FactoryForms443_TabItemHolder',
207
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/tab-item.php'
208
  ],
209
  [
210
  'type' => 'accordion',
211
+ 'class' => 'Wbcr_FactoryForms443_AccordionHolder',
212
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/accordion.php'
213
  ],
214
  [
215
  'type' => 'accordion-item',
216
+ 'class' => 'Wbcr_FactoryForms443_AccordionItemHolder',
217
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/accordion-item.php'
218
  ],
219
  [
220
  'type' => 'control-group',
221
+ 'class' => 'Wbcr_FactoryForms443_ControlGroupHolder',
222
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/control-group.php'
223
  ],
224
  [
225
  'type' => 'control-group-item',
226
+ 'class' => 'Wbcr_FactoryForms443_ControlGroupItem',
227
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/control-group-item.php'
228
  ],
229
  [
230
  'type' => 'form-group',
231
+ 'class' => 'Wbcr_FactoryForms443_FormGroupHolder',
232
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/form-group.php'
233
  ],
234
  [
235
  'type' => 'more-link',
236
+ 'class' => 'Wbcr_FactoryForms443_MoreLinkHolder',
237
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/more-link.php'
238
  ],
239
  [
240
  'type' => 'div',
241
+ 'class' => 'Wbcr_FactoryForms443_DivHolder',
242
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/div.php'
243
  ],
244
  [
245
  'type' => 'columns',
246
+ 'class' => 'Wbcr_FactoryForms443_ColumnsHolder',
247
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/holders/columns.php'
248
  ]
249
  ]);
250
 
252
  $plugin->forms->registerCustomElements([
253
  [
254
  'type' => 'html',
255
+ 'class' => 'Wbcr_FactoryForms443_Html',
256
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/customs/html.php',
257
  ],
258
  [
259
  'type' => 'separator',
260
+ 'class' => 'Wbcr_FactoryForms443_Separator',
261
+ 'include' => FACTORY_FORMS_443_DIR . '/controls/customs/separator.php',
262
  ],
263
  ]);
264
 
265
  // registration of form layouts
266
  $plugin->forms->registerFormLayout([
267
  'name' => 'bootstrap-3',
268
+ 'class' => 'Wbcr_FactoryForms443_Bootstrap3FormLayout',
269
+ 'include' => FACTORY_FORMS_443_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
270
  ]);
271
  }
272
 
273
+ add_action('wbcr_factory_forms_443_register_controls', 'wbcr_factory_forms_443_register_default_controls');
274
  }
libs/factory/forms/controls/checkbox.php CHANGED
@@ -20,9 +20,9 @@
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,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_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
  } ?>" />
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms443_CheckboxControl') ) {
24
 
25
+ class Wbcr_FactoryForms443_CheckboxControl extends Wbcr_FactoryForms443_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_443') ?></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_443') ?></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_FactoryForms442_ColorAndOpacityControl') ) {
24
  }
25
 
26
- class Wbcr_FactoryForms442_ColorAndOpacityControl extends Wbcr_FactoryForms442_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
@@ -57,8 +57,8 @@
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
  }
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms443_ColorAndOpacityControl') ) {
24
  }
25
 
26
+ class Wbcr_FactoryForms443_ColorAndOpacityControl extends Wbcr_FactoryForms443_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
57
  'way' => 'slider'
58
  ));
59
 
60
+ $this->color = new Wbcr_FactoryForms443_ColorControl($options['color'], $form, $provider);
61
+ $this->opacity = new Wbcr_FactoryForms443_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_FactoryForms442_ColorControl') ) {
24
 
25
- class Wbcr_FactoryForms442_ColorControl extends Wbcr_FactoryForms442_Control {
26
 
27
  public $type = 'color';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms443_ColorControl') ) {
24
 
25
+ class Wbcr_FactoryForms443_ColorControl extends Wbcr_FactoryForms443_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_FactoryForms442_Html') ) {
18
 
19
- class Wbcr_FactoryForms442_Html extends Wbcr_FactoryForms442_CustomElement {
20
 
21
  public $type = 'html';
22
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_Html') ) {
18
 
19
+ class Wbcr_FactoryForms443_Html extends Wbcr_FactoryForms443_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_FactoryForms442_Separator') ) {
18
- class Wbcr_FactoryForms442_Separator extends Wbcr_FactoryForms442_CustomElement {
19
 
20
  public $type = 'separator';
21
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_Separator') ) {
18
+ class Wbcr_FactoryForms443_Separator extends Wbcr_FactoryForms443_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_FactoryForms442_DatepickerRangeControl') ) {
33
 
34
- class Wbcr_FactoryForms442_DatepickerRangeControl extends Wbcr_FactoryForms442_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_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) {
29
  exit;
30
  }
31
 
32
+ if( !class_exists('Wbcr_FactoryForms443_DatepickerRangeControl') ) {
33
 
34
+ class Wbcr_FactoryForms443_DatepickerRangeControl extends Wbcr_FactoryForms443_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_FactoryForms443_TextboxControl($options['range_1'], $form, $provider);
69
+ $this->range_2 = new Wbcr_FactoryForms443_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 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,9 +37,9 @@
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,8 +69,8 @@
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');
5
  *
6
  * Main options:
7
  * name => a name of the control
8
+ * // see FactoryForms443_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 FactoryForms443_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_FactoryForms443_DropdownAndColorsControl') ) {
41
 
42
+ class Wbcr_FactoryForms443_DropdownAndColorsControl extends Wbcr_FactoryForms443_ComplexControl {
43
 
44
  public $type = 'dropdown-and-colors';
45
 
69
  'name' => $this->options['name'] . '__colors',
70
  ));
71
 
72
+ $this->dropdown = new Wbcr_FactoryForms443_DropdownControl($options['dropdown'], $form, $provider);
73
+ $this->colors = new Wbcr_FactoryForms443_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_FactoryForms442_DropdownControl' ) ) {
25
 
26
- class Wbcr_FactoryForms442_DropdownControl extends Wbcr_FactoryForms442_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_442' ) ) ?>'
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_442' ) );
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_442' );
353
 
354
  $data = isset( $item['data'] ) ? $item['data'] : null;
355
  } else {
21
  exit;
22
  }
23
 
24
+ if ( ! class_exists( 'Wbcr_FactoryForms443_DropdownControl' ) ) {
25
 
26
+ class Wbcr_FactoryForms443_DropdownControl extends Wbcr_FactoryForms443_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_443' ) ) ?>'
127
  };
128
  </script>
129
  <?php
268
  }
269
 
270
  $is_empty = $this->isAjax() || empty( $items );
271
+ $empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_443' ) );
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_443' );
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_FactoryForms442_FontControl') ) {
24
 
25
- class Wbcr_FactoryForms442_FontControl extends Wbcr_FactoryForms442_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_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,8 +66,8 @@
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,10 +77,10 @@
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,7 +131,7 @@
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,7 +187,7 @@
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'),
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms443_FontControl') ) {
24
 
25
+ class Wbcr_FactoryForms443_FontControl extends Wbcr_FactoryForms443_ComplexControl {
26
 
27
  public $type = 'font';
28
 
54
  'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
55
  );
56
 
57
+ $this->size = new Wbcr_FactoryForms443_IntegerControl($option_font_size, $form, $provider);
58
+ $this->family = new Wbcr_FactoryForms443_DropdownControl($option_font_family, $form, $provider);
59
+ $this->color = new Wbcr_FactoryForms443_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_443_fonts', $fonts);
70
+ $fonts = apply_filters('wbcr_factory_forms_443_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_443')),
81
  array(
82
  'group',
83
+ __('Sans Serif:', 'wbcr_factory_forms_443'),
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_443'),
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_443'),
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_FactoryForms442_GoogleFontControl extends Wbcr_FactoryForms442_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_FactoryForms442_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_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,7 +65,7 @@
65
  )
66
  );
67
 
68
- $fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_442'), 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_442');
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_442');
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_442');
137
 
138
  return $body;
139
  }
15
  * @package core
16
  * @since 1.0.0
17
  */
18
+ class Wbcr_FactoryForms443_GoogleFontControl extends Wbcr_FactoryForms443_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_FactoryForms443_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_443'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
+ __('Standard:', 'wbcr_factory_forms_443'),
58
  array(
59
 
60
  array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
65
  )
66
  );
67
 
68
+ $fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_443'), 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_443');
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_443');
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_443');
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_FactoryForms442_GradientControl') ) {
29
- class Wbcr_FactoryForms442_GradientControl extends Wbcr_FactoryForms442_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_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">
25
  exit;
26
  }
27
 
28
+ if( !class_exists('Wbcr_FactoryForms443_GradientControl') ) {
29
+ class Wbcr_FactoryForms443_GradientControl extends Wbcr_FactoryForms443_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_443' ) ?>';
70
+ factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_443' ) ?>';
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_FactoryForms442_HiddenControl') ) {
24
 
25
- class Wbcr_FactoryForms442_HiddenControl extends Wbcr_FactoryForms442_Control {
26
 
27
  public $type = 'hidden';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms443_HiddenControl') ) {
24
 
25
+ class Wbcr_FactoryForms443_HiddenControl extends Wbcr_FactoryForms443_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_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.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms443_AccordionItemHolder extends Wbcr_FactoryForms443_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_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.
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms443_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms443_AccordionHolder extends Wbcr_FactoryForms443_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_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.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms443_ColumnsHolder extends Wbcr_FactoryForms443_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_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.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms443_ControlGroupItem extends Wbcr_FactoryForms443_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_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,7 +61,7 @@
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'));
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms443_ControlGroupHolder extends Wbcr_FactoryForms443_ControlHolder {
25
 
26
  /**
27
  * A holder type.
61
  continue;
62
  }
63
 
64
+ $builder = new Wbcr_FactoryForms443_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_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.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms443_DivHolder extends Wbcr_FactoryForms443_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_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.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms443_FormGroupHolder extends Wbcr_FactoryForms443_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_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.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms443_MoreLinkHolder extends Wbcr_FactoryForms443_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_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.
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms443_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms443_TabItemHolder extends Wbcr_FactoryForms443_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_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,7 +44,7 @@
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,7 +88,7 @@
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());
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms443_TabHolder extends Wbcr_FactoryForms443_Holder {
25
 
26
  /**
27
  * A holder type.
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param FactoryForms443_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_FactoryForms443_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_FactoryForms442_IntegerControl') ) {
36
 
37
- class Wbcr_FactoryForms442_IntegerControl extends Wbcr_FactoryForms442_Control {
38
 
39
  public $type = 'integer';
40
 
32
  exit;
33
  }
34
 
35
+ if( !class_exists('Wbcr_FactoryForms443_IntegerControl') ) {
36
 
37
+ class Wbcr_FactoryForms443_IntegerControl extends Wbcr_FactoryForms443_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_FactoryForms442_ListControl') ) {
25
 
26
- class Wbcr_FactoryForms442_ListControl extends Wbcr_FactoryForms442_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_442') ) ?>'
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_442'));
140
 
141
  if( $is_empty ) {
142
  $this->addCssClass('factory-empty');
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms443_ListControl') ) {
25
 
26
+ class Wbcr_FactoryForms443_ListControl extends Wbcr_FactoryForms443_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_443') ) ?>'
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_443'));
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_FactoryForms442_MultipleTextboxControl') ) {
19
 
20
- class Wbcr_FactoryForms442_MultipleTextboxControl extends Wbcr_FactoryForms442_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_442') ?>
90
  </button>
91
  </div>
92
 
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms443_MultipleTextboxControl') ) {
19
 
20
+ class Wbcr_FactoryForms443_MultipleTextboxControl extends Wbcr_FactoryForms443_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_443') ?>
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_FactoryForms442_PaddingsEditorControl') ) {
18
 
19
- class Wbcr_FactoryForms442_PaddingsEditorControl extends Wbcr_FactoryForms442_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_442') ?>
71
  </label>
72
 
73
  <div class="factory-slider">
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_PaddingsEditorControl') ) {
18
 
19
+ class Wbcr_FactoryForms443_PaddingsEditorControl extends Wbcr_FactoryForms443_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_443') ?>
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_FactoryForms442_PatternControl') ) {
19
 
20
- class Wbcr_FactoryForms442_PatternControl extends Wbcr_FactoryForms442_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_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,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_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>
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms443_PatternControl') ) {
19
 
20
+ class Wbcr_FactoryForms443_PatternControl extends Wbcr_FactoryForms443_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_443_patterns', array());
56
+ $this->patterns = apply_filters('wbcr_factory_forms_443_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
+ $this->color = new Wbcr_FactoryForms443_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_443') ?>">
106
  <i class="fa fa-flask"></i>
107
+ <span><?php _e('re-color', 'wbcr_factory_forms_443') ?></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_443') ?></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_443') ?></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_FactoryForms442_RadioColorsControl') ) {
31
 
32
- class Wbcr_FactoryForms442_RadioColorsControl extends Wbcr_FactoryForms442_Control {
33
 
34
  public $type = 'radio-color';
35
 
27
  exit;
28
  }
29
 
30
+ if( !class_exists('Wbcr_FactoryForms443_RadioColorsControl') ) {
31
 
32
+ class Wbcr_FactoryForms443_RadioColorsControl extends Wbcr_FactoryForms443_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_FactoryForms442_RadioControl') ) {
25
 
26
- class Wbcr_FactoryForms442_RadioControl extends Wbcr_FactoryForms442_Control {
27
 
28
  public $type = 'radio';
29
 
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms443_RadioControl') ) {
25
 
26
+ class Wbcr_FactoryForms443_RadioControl extends Wbcr_FactoryForms443_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_FactoryForms442_TextareaControl') ) {
24
 
25
- class Wbcr_FactoryForms442_TextareaControl extends Wbcr_FactoryForms442_Control {
26
 
27
  public $type = 'textarea';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms443_TextareaControl') ) {
24
 
25
+ class Wbcr_FactoryForms443_TextareaControl extends Wbcr_FactoryForms443_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_FactoryForms442_TextboxControl') ) {
33
 
34
- class Wbcr_FactoryForms442_TextboxControl extends Wbcr_FactoryForms442_Control {
35
 
36
  public $type = 'textbox';
37
 
29
  exit;
30
  }
31
 
32
+ if( !class_exists('Wbcr_FactoryForms443_TextboxControl') ) {
33
 
34
+ class Wbcr_FactoryForms443_TextboxControl extends Wbcr_FactoryForms443_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 FactoryForms442_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_FactoryForms442_UrlControl') ) {
22
 
23
- class Wbcr_FactoryForms442_UrlControl extends Wbcr_FactoryForms442_TextboxControl {
24
 
25
  public $type = 'url';
26
 
4
  * Url Control
5
  *
6
  * Main options:
7
+ * @see FactoryForms443_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_FactoryForms443_UrlControl') ) {
22
 
23
+ class Wbcr_FactoryForms443_UrlControl extends Wbcr_FactoryForms443_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_FactoryForms442_WpEditorControl') ) {
26
 
27
- class Wbcr_FactoryForms442_WpEditorControl extends Wbcr_FactoryForms442_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_442_URL . '/assets/css/editor.css';
46
  }
47
  }
48
 
22
  exit;
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms443_WpEditorControl') ) {
26
 
27
+ class Wbcr_FactoryForms443_WpEditorControl extends Wbcr_FactoryForms443_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_443_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_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,7 +33,7 @@
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,7 +41,7 @@
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)
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms443_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_FactoryForms443_ComplexControl extends Wbcr_FactoryForms443_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_FactoryForms443_Control[]
37
  */
38
  public $inner_controls = array();
39
 
41
  * Sets a provider for the control.
42
  *
43
  * @since 1.0.0
44
+ * @param Wbcr_IFactoryForms443_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_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,7 +43,7 @@
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,7 +60,7 @@
60
  * Returns holder elements.
61
  *
62
  * @since 1.0.0
63
- * @return Wbcr_FactoryForms442_FormElement[].
64
  */
65
  public function getElements()
66
  {
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms443_ControlHolder extends Wbcr_FactoryForms443_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
+ * @var Wbcr_FactoryForms443_Control[]
30
  */
31
  protected $elements = array();
32
 
43
  *
44
  * @since 1.0.0
45
  * @param mixed[] $options A holder options.
46
+ * @param Wbcr_FactoryForms443_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_FactoryForms443_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_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,7 +43,7 @@
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,7 +51,7 @@
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,7 +66,7 @@
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)
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms443_Control extends Wbcr_FactoryForms443_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_IFactoryForms443_ValueProvider
47
  */
48
  protected $provider = null;
49
 
51
  * Create a new instance of the control.
52
  *
53
  * @param mixed[] $options
54
+ * @param FactoryForms443_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 IFactoryForms443_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_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?
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms443_CustomElement extends Wbcr_FactoryForms443_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_FactoryForms442_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_FactoryForms442_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_FactoryForms442_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
@@ -53,7 +53,7 @@
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
- * @var Wbcr_FactoryForms442_Form
57
  */
58
  protected $form;
59
 
@@ -61,7 +61,7 @@
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
- * @var Wbcr_FactoryForms442_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_FactoryForms442_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_FactoryForms442_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_FactoryForms443_FormElement') ) {
18
 
19
  /**
20
  * The base class for all form element (controls, holders).
23
  *
24
  * @since 1.0.0
25
  */
26
+ abstract class Wbcr_FactoryForms443_FormElement {
27
 
28
  /**
29
  * A type of an elemnt.
37
  * An html attribute builder.
38
  *
39
  * @since 1.0.0
40
+ * @var Wbcr_FactoryForms443_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
+ * @var Wbcr_FactoryForms443_Form
57
  */
58
  protected $form;
59
 
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
+ * @var Wbcr_FactoryForms443_FormLayout
65
  */
66
  protected $layout;
67
 
94
  *
95
  * @since 1.0.0
96
  * @param mixed[] $options A holder options.
97
+ * @param Wbcr_FactoryForms443_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_FactoryForms443_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_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,7 +42,7 @@
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,8 +52,8 @@
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
  /**
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
+ abstract class Wbcr_FactoryForms443_FormLayout extends Wbcr_FactoryForms443_Holder {
23
 
24
  /**
25
  * A form layout name.
42
  *
43
  * @since 1.0.0
44
  * @param mixed[] $options A holder options.
45
+ * @param Wbcr_FactoryForms443_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-443-' . $this->type);
56
+ $this->addCssClass('factory-forms-443-' . $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_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,7 +57,7 @@
57
  /**
58
  * Registers a set of new controls.
59
  *
60
- * @see FactoryForms442_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 FactoryForms442_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 FactoryForms442_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_FactoryForms442_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
- class Wbcr_FactoryForms442_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_IFactoryForms442_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_FactoryForms442_FormLayout
249
  */
250
  public $layout;
251
 
@@ -261,20 +261,20 @@
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,14 +289,14 @@
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,14 +332,14 @@
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,7 +355,7 @@
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,7 +395,7 @@
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,7 +417,7 @@
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,7 +433,7 @@
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,7 +441,7 @@
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,7 +465,7 @@
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,7 +473,7 @@
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,7 +491,7 @@
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,7 +499,7 @@
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,12 +523,12 @@
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,7 +552,7 @@
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,9 +602,9 @@
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,7 +660,7 @@
660
  */
661
  public static function isControl($item)
662
  {
663
- return isset(Wbcr_FactoryForms442_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
@@ -672,7 +672,7 @@
672
  */
673
  public static function isControlHolder($item)
674
  {
675
- return isset(Wbcr_FactoryForms442_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
@@ -684,7 +684,7 @@
684
  */
685
  public static function isCustomElement($item)
686
  {
687
- return isset(Wbcr_FactoryForms442_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_443_plugin_created', 'wbcr_factory_forms_443_plugin_created');
19
 
20
+ function wbcr_factory_forms_443_plugin_created($plugin)
21
  {
22
+ $plugin->forms = new Wbcr_FactoryForms443_Manager($plugin);
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms443_Manager') ) {
26
 
27
+ class Wbcr_FactoryForms443_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
57
  /**
58
  * Registers a set of new controls.
59
  *
60
+ * @see FactoryForms443_Form::registerControl()
61
  *
62
  * @since 1.0.0
63
  * @return void
95
  /**
96
  * Registers a set of new holder controls.
97
  *
98
+ * @see FactoryForms443_Form::registerHolder()
99
  *
100
  * @since 1.0.0
101
  * @return void
129
  /**
130
  * Registers a set of new custom form elements.
131
  *
132
+ * @see FactoryForms443_Form::registerCustomElement()
133
  *
134
  * @since 1.0.0
135
  * @return void
180
  public static $controls_registered = false;
181
  }
182
  }
183
+ if( !class_exists('Wbcr_FactoryForms443_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
+ class Wbcr_FactoryForms443_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_IFactoryForms443_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_FactoryForms443_FormLayout
249
  */
250
  public $layout;
251
 
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
+ * @param Wbcr_Factory446_Plugin $plugin
265
  */
266
+ public function __construct(array $options, Wbcr_Factory446_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
+ if( !Wbcr_FactoryForms443_Manager::$controls_registered ) {
270
 
271
+ do_action('wbcr_factory_forms_443_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
+ do_action('wbcr_factory_forms_443_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
+ Wbcr_FactoryForms443_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_FactoryForms443_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
+ * @param Wbcr_IFactoryForms443_ValueProvider $provider
300
  * @return void
301
  */
302
  public function setProvider($provider)
332
  */
333
  public function getItems()
334
  {
335
+ return apply_filters('wbcr_factory_446_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
+ * @return Wbcr_FactoryForms443_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_FactoryForms443_Control[]
359
  */
360
 
361
  public function createControls($holder = null)
395
  *
396
  * @since 1.0.0
397
  * @param array $item Item data.
398
+ * @return Wbcr_FactoryForms443_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_FactoryForms443_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_FactoryForms443_Control A control object.
437
  */
438
  public function createControl($item)
439
  {
441
 
442
  if( is_array($item) ) {
443
 
444
+ $control_data = Wbcr_FactoryForms443_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_FactoryForms443_Holder A control holder object.
469
  */
470
  public function createHolder($item)
471
  {
473
 
474
  if( is_array($item) ) {
475
 
476
+ $holderData = Wbcr_FactoryForms443_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_FactoryForms443_FormElement A custom form element object.
495
  */
496
  public function createCustomElement($item)
497
  {
499
 
500
  if( is_array($item) ) {
501
 
502
+ $data = Wbcr_FactoryForms443_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_FactoryForms443_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_FactoryForms443_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_FactoryForms443_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_FactoryForms443_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
+ $haystack = Wbcr_FactoryForms443_Manager::$registered_holders;
608
  }
609
 
610
  if( isset($haystack[$type]) ) {
660
  */
661
  public static function isControl($item)
662
  {
663
+ return isset(Wbcr_FactoryForms443_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
672
  */
673
  public static function isControlHolder($item)
674
  {
675
+ return isset(Wbcr_FactoryForms443_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
684
  */
685
  public static function isCustomElement($item)
686
  {
687
+ return isset(Wbcr_FactoryForms443_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_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,7 +44,7 @@
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,7 +56,7 @@
56
  * Returns holder elements.
57
  *
58
  * @since 1.0.0
59
- * @return Wbcr_FactoryForms442_Control[].
60
  */
61
  public function getElements()
62
  {
@@ -84,7 +84,7 @@
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 ) {
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms443_Holder extends Wbcr_FactoryForms443_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
+ * @var Wbcr_FactoryForms443_Control[]
31
  */
32
  protected $elements = array();
33
 
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param Wbcr_FactoryForms443_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_FactoryForms443_Control[].
60
  */
61
  public function getElements()
62
  {
84
  $is_first_item = false;
85
  }
86
 
87
+ do_action('wbcr_factory_446_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_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.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms443_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_FactoryForms442_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
@@ -24,7 +24,7 @@
24
  *
25
  * @since 1.0.0
26
  */
27
- class Wbcr_FactoryForms442_MetaValueProvider implements Wbcr_IFactoryForms442_ValueProvider {
28
 
29
 
30
  public $scope;
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
24
  *
25
  * @since 1.0.0
26
  */
27
+ class Wbcr_FactoryForms443_MetaValueProvider implements Wbcr_IFactoryForms443_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_FactoryForms442_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
@@ -22,7 +22,7 @@
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,7 +43,7 @@
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
  }
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms443_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
22
  *
23
  * @since 1.0.0
24
  */
25
+ class Wbcr_FactoryForms443_OptionsValueProvider implements Wbcr_IFactoryForms443_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_Factory446_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_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.
14
  if( !defined('ABSPATH') ) {
15
  exit;
16
  }
17
+ if( !class_exists('Wbcr_IFactoryForms443_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
+ interface Wbcr_IFactoryForms443_ValueProvider {
24
 
25
  /**
26
  * Inits a form a provider to get data from a storage.
libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.mo → wbcr_factory_forms_443-ru_RU.mo} RENAMED
File without changes
libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.po → wbcr_factory_forms_443-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_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,7 +27,7 @@
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,7 +68,7 @@
68
  }
69
 
70
  /**
71
- * @param Wbcr_FactoryForms442_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
@@ -116,7 +116,7 @@
116
  }
117
 
118
  /**
119
- * @param Wbcr_FactoryForms442_Control $control
120
  */
121
  public function afterControl($control)
122
  {
@@ -168,7 +168,7 @@
168
  }
169
 
170
  /**
171
- * @param Wbcr_FactoryForms442_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
@@ -193,7 +193,7 @@
193
  }
194
 
195
  /**
196
- * @param Wbcr_FactoryForms442_Control $control
197
  * @param int $index
198
  * @param int $total
199
  */
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms443_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
+ class Wbcr_FactoryForms443_Bootstrap3FormLayout extends Wbcr_FactoryForms443_FormLayout {
22
 
23
  public $name = 'default';
24
 
27
  *
28
  * @since 1.0.0
29
  * @param array $options A holder options.
30
+ * @param Wbcr_FactoryForms443_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
68
  }
69
 
70
  /**
71
+ * @param Wbcr_FactoryForms443_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
116
  }
117
 
118
  /**
119
+ * @param Wbcr_FactoryForms443_Control $control
120
  */
121
  public function afterControl($control)
122
  {
168
  }
169
 
170
  /**
171
+ * @param Wbcr_FactoryForms443_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
193
  }
194
 
195
  /**
196
+ * @param Wbcr_FactoryForms443_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_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
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_FREEMIUS_134_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define( 'FACTORY_FREEMIUS_134_VERSION', '1.3.4' );
22
 
23
+ define('FACTORY_FREEMIUS_134_LOADED', true);
24
+ define('FACTORY_FREEMIUS_134_DIR', dirname(__FILE__));
25
+ define('FACTORY_FREEMIUS_134_URL', plugins_url(null, __FILE__));
26
 
27
  #comp merge
28
  // Freemius
29
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-entity.php');
30
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-scope.php');
31
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-user.php');
32
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-site.php');
33
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-license.php');
34
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/licensing/class-freemius-provider.php');
35
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/updates/class-freemius-repository.php');
36
 
37
  if( !class_exists('Freemius_Api_WordPress') ) {
38
+ require_once FACTORY_FREEMIUS_134_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
+ require_once(FACTORY_FREEMIUS_134_DIR . '/includes/class-freemius-api.php');
42
 
43
  /**
44
+ * @param Wbcr_Factory446_Plugin $plugin
45
  */
46
+ add_action('wbcr_factory_freemius_134_plugin_created', function ($plugin) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
+ $plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_134\Premium\Provider');
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
+ $plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_134\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_133;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
- use Wbcr_Factory445_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
@@ -33,7 +33,7 @@ final class Api {
33
  private $api;
34
 
35
  /**
36
- * @var Wbcr_Factory445_Plugin
37
  */
38
  private $plugin;
39
 
@@ -48,14 +48,14 @@ final class Api {
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,7 +73,7 @@ final class Api {
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,7 +82,7 @@ final class Api {
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 ] ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
+ use Wbcr_Factory446_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
33
  private $api;
34
 
35
  /**
36
+ * @var Wbcr_Factory446_Plugin
37
  */
38
  private $plugin;
39
 
48
  private static $clock_diff;
49
 
50
  /**
51
+ * @param Wbcr_Factory446_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_Factory446_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_Factory446_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_Factory446_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_133\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\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_133\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_445\Premium\Interfaces\License {
18
 
19
  /**
20
  * @var number
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\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_446\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_133\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\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_133\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\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_133\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\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_133\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\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_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,17 +40,17 @@ final class Provider extends License_Provider {
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,11 +82,11 @@ final class Provider extends License_Provider {
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,7 +150,7 @@ final class Provider extends License_Provider {
150
  }
151
 
152
  /**
153
- * @return \WBCR\Factory_Freemius_133\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_133\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_133\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_133\Api
647
  * @throws Exception
648
  */
649
  private function get_api_plugin_scope()
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\Premium;
4
+
5
+ use WBCR\Factory_Freemius_134\Entities\License;
6
+ use WBCR\Factory_Freemius_134\Entities\Plugin;
7
+ use WBCR\Factory_Freemius_134\Entities\Site;
8
+ use WBCR\Factory_Freemius_134\Entities\User;
9
+ use WBCR\Factory_446\Premium\Provider as License_Provider;
10
+ use Wbcr_Factory446_Plugin;
11
+ use WBCR\Factory_Freemius_134\Api;
12
  use WP_Error;
13
  use Exception;
14
 
40
  private $slug;
41
 
42
  /**
43
+ * @var \WBCR\Factory_Freemius_134\Api
44
  */
45
  private $site_api;
46
 
47
  /**
48
+ * @var \WBCR\Factory_Freemius_134\Api
49
  */
50
  private $plugin_api;
51
 
52
  /**
53
+ * @var \WBCR\Factory_Freemius_134\Api
54
  */
55
  private $user_api;
56
 
82
  /**
83
  * Manager constructor.
84
  *
85
+ * @param Wbcr_Factory446_Plugin $plugin
86
  *
87
  * @throws Exception
88
  */
89
+ public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings)
90
  {
91
  parent::__construct($plugin, $settings);
92
 
150
  }
151
 
152
  /**
153
+ * @return \WBCR\Factory_Freemius_134\Entities\License|null
154
  * @throws Exception
155
  */
156
  public function get_license()
613
  /**
614
  * @param bool $flush
615
  *
616
+ * @return \WBCR\Factory_Freemius_134\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_134\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_134\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_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,19 +20,19 @@ if( !defined('ABSPATH') ) {
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,7 +43,7 @@ class Freemius_Repository extends Repository {
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
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_134\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
+ use Wbcr_Factory446_Plugin;
8
+ use WBCR\Factory_446\Updates\Repository;
9
 
10
  if( !defined('ABSPATH') ) {
11
  exit;
20
  class Freemius_Repository extends Repository {
21
 
22
  /**
23
+ * @var \WBCR\Factory_Freemius_134\Premium\Provider
24
  */
25
  private $premium;
26
 
27
  /**
28
  * Freemius constructor.
29
+ * @param Wbcr_Factory446_Plugin $plugin
30
  *
31
  * @throws Exception
32
  * @since 4.0.0
33
  *
34
  */
35
+ public function __construct(Wbcr_Factory446_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_134\Premium\Provider ) {
47
  throw new Exception("This repository type requires Freemius premium provider.");
48
  }
49
 
libs/factory/pages/boot.php CHANGED
@@ -19,25 +19,26 @@ if( !is_admin() ) {
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
 
19
  return;
20
  }
21
 
22
+ if( defined('FACTORY_PAGES_445_LOADED') ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_PAGES_445_LOADED', true);
27
 
28
+ define( 'FACTORY_PAGES_445_VERSION', '4.4.5' );
29
 
30
+ define('FACTORY_PAGES_445_DIR', dirname(__FILE__));
31
+ define('FACTORY_PAGES_445_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_445', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
38
 
39
+ require( FACTORY_PAGES_445_DIR . '/pages.php' );
40
+ require( FACTORY_PAGES_445_DIR . '/includes/page.class.php' );
41
+ require( FACTORY_PAGES_445_DIR . '/includes/admin-page.class.php' );
42
+ require( FACTORY_PAGES_445_DIR . '/templates/impressive/impressive-page.class.php' );
43
+ require( FACTORY_PAGES_445_DIR . '/templates/impressive-lite/impressive-lite-page.class.php' );
44
 
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_FactoryPages444_AdminPage') ) {
18
 
19
- class Wbcr_FactoryPages444_AdminPage extends Wbcr_FactoryPages444_Page {
20
 
21
  /**
22
  * Visible page title.
@@ -209,7 +209,7 @@ if( !class_exists('Wbcr_FactoryPages444_AdminPage') ) {
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,13 +325,13 @@ if( !class_exists('Wbcr_FactoryPages444_AdminPage') ) {
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,7 +370,7 @@ if( !class_exists('Wbcr_FactoryPages444_AdminPage') ) {
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
  ]);
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryPages445_AdminPage') ) {
18
 
19
+ class Wbcr_FactoryPages445_AdminPage extends Wbcr_FactoryPages445_Page {
20
 
21
  /**
22
  * Visible page title.
209
  */
210
  public $add_link_to_plugin_actions = false;
211
 
212
+ public function __construct(Wbcr_Factory446_Plugin $plugin)
213
  {
214
  parent::__construct($plugin);
215
  $this->configure();
325
  {
326
  $result_id = $this->getResultId();
327
 
328
+ $this->hidden = apply_filters('wbcr_factory_446_page_is_hidden_' . $result_id, $this->hidden);
329
 
330
  if( $this->hidden ) {
331
  return;
332
  }
333
 
334
+ $this->internal = apply_filters('wbcr_factory_446_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_446_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_FactoryPages444_Page' ) ) {
18
 
19
- class Wbcr_FactoryPages444_Page {
20
 
21
 
22
  /**
@@ -30,7 +30,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
- * @see FactoryPages444_AdminPage
34
  *
35
  * @var string
36
  */
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
39
  /**
40
  * Current Factory Plugin.
41
  *
42
- * @var Wbcr_Factory445_Plugin
43
  */
44
  public $plugin;
45
 
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
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,7 +111,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
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]();
14
  exit;
15
  }
16
 
17
+ if ( ! class_exists( 'Wbcr_FactoryPages445_Page' ) ) {
18
 
19
+ class Wbcr_FactoryPages445_Page {
20
 
21
 
22
  /**
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
+ * @see FactoryPages445_AdminPage
34
  *
35
  * @var string
36
  */
39
  /**
40
  * Current Factory Plugin.
41
  *
42
+ * @var Wbcr_Factory446_Plugin
43
  */
44
  public $plugin;
45
 
51
  //private $default_actions = array();
52
 
53
  /**
54
+ * @param Wbcr_Factory446_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
+ public function __construct( Wbcr_Factory446_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_445/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_444-fr_FR.mo → wbcr_factory_pages_445-fr_FR.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_444-fr_FR.po → wbcr_factory_pages_445-fr_FR.po} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.mo → wbcr_factory_pages_445-ru_RU.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.po → wbcr_factory_pages_445-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_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,7 +59,7 @@
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,7 +75,7 @@
75
  }
76
 
77
  /**
78
- * @param Wbcr_Factory445_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_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
  }
14
  exit;
15
  }
16
 
17
+ add_action('admin_menu', 'Wbcr_FactoryPages445::actionAdminMenu');
18
+ add_action('network_admin_menu', 'Wbcr_FactoryPages445::actionAdminMenu');
19
 
20
+ if( !class_exists('Wbcr_FactoryPages445') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
+ class Wbcr_FactoryPages445 {
27
 
28
  /**
29
+ * @var Wbcr_FactoryPages445_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
+ * @param Wbcr_Factory446_Plugin $plugin
35
  * @param $class_name
36
  */
37
  public static function register($plugin, $class_name)
59
  }
60
  }
61
 
62
+ public static function getPageUrl(Wbcr_Factory446_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_Factory446_Plugin $plugin
79
  * @return array
80
  */
81
  public static function getIds($plugin)
93
  }
94
  }
95
 
96
+ if( !function_exists('wbcr_factory_pages_445_get_page_id') ) {
97
  /**
98
  *
99
+ * @param Wbcr_Factory446_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
+ function wbcr_factory_pages_445_get_page_id($plugin, $page_id)
104
  {
105
  return $page_id . '-' . $plugin->getPluginName();
106
  }
libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css ADDED
@@ -0,0 +1,552 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * General styles
3
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
+ * @copyright Alex Kovalev 23.08.2017
5
+ */
6
+ #WBCR .updated,
7
+ #WBCR .notice,
8
+ #WBCR .error,
9
+ #WBCR .wdan-notices-compact-panel {
10
+ display: none !important;
11
+ }
12
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template {
13
+ position: relative;
14
+ /**
15
+ Content sections
16
+ */
17
+ /**
18
+ Widget in the sidebar of the plugin
19
+ */
20
+ }
21
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-color-grey {
22
+ color: #9a9a9a;
23
+ }
24
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-orange-color {
25
+ color: #ffc107;
26
+ }
27
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-light-orange-color {
28
+ color: #ffeb3b;
29
+ }
30
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .form-group {
31
+ padding: 0 20px;
32
+ }
33
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .form-group label {
34
+ font-weight: normal;
35
+ }
36
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .form-horizontal .control-label {
37
+ max-width: 300px;
38
+ }
39
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-control-buttons {
40
+ text-align: right;
41
+ padding-right: 20px;
42
+ }
43
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-from-control-list label span {
44
+ display: inline-block;
45
+ vertical-align: bottom;
46
+ }
47
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-from-control-list label span input[type="checkbox"],
48
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
49
+ outline: none;
50
+ }
51
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .alert + .wbcr-factory-page-group-header {
59
+ margin-top: 0 !important;
60
+ }
61
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-warning {
62
+ background: #fff3d0;
63
+ }
64
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-warning:nth-child(2n+1) {
65
+ background: #fffde9;
66
+ }
67
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-danger {
68
+ background: #de716d;
69
+ }
70
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-danger:nth-child(2n+1) {
71
+ background: #ec8c89;
72
+ }
73
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-success {
74
+ background: #d0ecc4;
75
+ }
76
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-success:nth-child(2n+1) {
77
+ background: #e0eadb;
78
+ }
79
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-header {
80
+ padding: 20px 20px 40px;
81
+ }
82
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-options,
89
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page {
90
+ position: relative;
91
+ background: #e6e6e6;
92
+ overflow: hidden;
93
+ }
94
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-options:after,
95
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page:after {
96
+ display: block;
97
+ content: '';
98
+ clear: both;
99
+ }
100
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-group-header:first-child {
107
+ margin-top: 0;
108
+ }
109
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-group-header strong {
110
+ font-size: 15px;
111
+ }
112
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-group-header p {
113
+ color: #8c8888;
114
+ font-size: 12px;
115
+ }
116
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
123
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
124
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
125
+ border: 0;
126
+ }
127
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:first-child {
133
+ margin: 0;
134
+ }
135
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:hover {
136
+ background: #f7f7f7;
137
+ }
138
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:active,
144
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:focus {
145
+ box-shadow: none;
146
+ outline: none;
147
+ }
148
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header {
149
+ position: absolute;
150
+ z-index: 13;
151
+ top: 0;
152
+ left: 0;
153
+ right: 0;
154
+ overflow: hidden;
155
+ background-color: #32373c;
156
+ color: #fff;
157
+ border-radius: 5px 5px 0 0;
158
+ }
159
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-header-logo {
160
+ float: left;
161
+ padding: 25px 0;
162
+ font-size: 20px;
163
+ line-height: 30px;
164
+ font-weight: 400;
165
+ text-align: center;
166
+ background-color: #464b50;
167
+ color: #ccc;
168
+ padding-left: 25px;
169
+ margin-right: 10px;
170
+ background: none;
171
+ }
172
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-header-title {
173
+ display: inline-block;
174
+ vertical-align: middle;
175
+ }
176
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-header-title h2 {
177
+ font-size: 18px;
178
+ line-height: 30px;
179
+ font-weight: 300;
180
+ margin-top: 26px;
181
+ padding: 0 !important;
182
+ overflow: hidden;
183
+ white-space: nowrap;
184
+ text-overflow: ellipsis;
185
+ color: #fff;
186
+ }
187
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-control {
188
+ position: relative;
189
+ float: right;
190
+ margin: 12px;
191
+ }
192
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button {
193
+ display: inline-block;
194
+ vertical-align: top;
195
+ font-size: 13px;
196
+ font-weight: 600;
197
+ line-height: 20px;
198
+ text-transform: uppercase;
199
+ margin: 10px 0 0;
200
+ padding: 8px 30px;
201
+ cursor: pointer;
202
+ position: relative;
203
+ overflow: hidden;
204
+ border: none;
205
+ border-radius: 50px;
206
+ box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.08) inset;
207
+ background-color: #f1f1f1;
208
+ color: inherit;
209
+ transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
210
+ text-align: center;
211
+ outline: none;
212
+ text-decoration: none;
213
+ z-index: 3;
214
+ }
215
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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;
261
+ font-size: 12px;
262
+ color: #585858;
263
+ text-decoration: none;
264
+ text-transform: uppercase;
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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link,
293
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
294
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover,
295
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
296
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-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;
323
+ border: 0;
324
+ margin: 0;
325
+ padding: 5px 5px 5px 30px;
326
+ background: #f5f5f5;
327
+ text-decoration: none;
328
+ outline: none;
329
+ }
330
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a:focus,
331
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-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;
339
+ -moz-transform: scaleX(-1);
340
+ -webkit-transform: scaleX(-1);
341
+ -o-transform: scaleX(-1);
342
+ transform: scaleX(-1);
343
+ -ms-filter: fliph;
344
+ filter: fliph;
345
+ }
346
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-content-section,
355
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section {
356
+ display: inline-block;
357
+ vertical-align: top;
358
+ }
359
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section {
360
+ width: 74.6%;
361
+ }
362
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section.wbcr-fullwidth {
363
+ width: 100%;
364
+ }
365
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section .nav-tab-wrapper {
366
+ margin-top: 15px;
367
+ }
368
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-content-section .wbcr-factory-content > form {
375
+ padding-top: 0 !important;
376
+ }
377
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-sidebar-widget {
385
+ margin: 0 0 20px;
386
+ }
387
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget {
388
+ display: inline-block;
389
+ min-height: 230px;
390
+ width: 100%;
391
+ margin-top: 20px;
392
+ background-color: #fff;
393
+ padding: 20px 15px;
394
+ vertical-align: top;
395
+ }
396
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-hide {
397
+ display: none;
398
+ }
399
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-warning {
400
+ background: #fff4d0;
401
+ }
402
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-danger {
403
+ background: #e2ffc0;
404
+ }
405
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-success {
406
+ background: #ffebe9;
407
+ }
408
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-hint-icon-simple {
409
+ display: inline-block;
410
+ width: 16px;
411
+ height: 16px;
412
+ line-height: 13px;
413
+ padding: 0;
414
+ font-size: 11px;
415
+ text-align: center;
416
+ color: #fff;
417
+ background: #E91E63;
418
+ border-radius: 3px;
419
+ }
420
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-grey {
421
+ background: #E91E63;
422
+ }
423
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-red {
424
+ background: #9e9e9e;
425
+ }
426
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-green {
427
+ background: #8bc34a;
428
+ }
429
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-icon-5stars {
430
+ display: block;
431
+ width: 80px;
432
+ height: 17px;
433
+ background: url('../img/5-stars22.png') no-repeat;
434
+ vertical-align: middle;
435
+ margin-bottom: 5px;
436
+ }
437
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :focus,
443
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box {
454
+ min-height: 240px;
455
+ margin-bottom: 20px;
456
+ text-align: center;
457
+ background: #fdfcf7;
458
+ padding: 30px;
459
+ border: 1px solid #f3f1e7;
460
+ }
461
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
469
+ color: #7b6111;
470
+ }
471
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box p {
472
+ color: #9e9e9e;
473
+ }
474
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button {
479
+ display: inline-block;
480
+ padding: 20px 60px;
481
+ background-color: #FFC107;
482
+ color: #866605;
483
+ text-decoration: none;
484
+ text-transform: uppercase;
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-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button:hover {
489
+ background-color: #ffce3a;
490
+ }
491
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog {
492
+ padding: 20px;
493
+ background: #ffffff;
494
+ }
495
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog .updated,
496
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog .alert {
497
+ display: none;
498
+ }
499
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog h2 {
500
+ font-size: 18px;
501
+ margin-top: 10px;
502
+ }
503
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-content-section {
515
+ width: 69.6%;
516
+ }
517
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section {
518
+ width: 30%;
519
+ }
520
+ }
521
+ @media screen and (max-width: 1320px) {
522
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section {
523
+ width: 100%;
524
+ }
525
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section {
526
+ display: none !important;
527
+ }
528
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-header-logo .dash {
529
+ display: none !important;
530
+ }
531
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-header-title {
532
+ display: none !important;
533
+ }
534
+ }
535
+ @media screen and (max-width: 950px) {
536
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar {
537
+ width: 70px;
538
+ }
539
+ #WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab a {
540
+ font-size: 0;
541
+ }
542
+ #WBCR .wbcr-factory-pages-445-impressive-lite-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-445-impressive-lite-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-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap {
549
+ margin-left: 70px;
550
+ }
551
+ }
552
+ /*# sourceMappingURL=impressive-lite.page.template.css.map */
libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["impressive-lite.page.template.less"],"names":[],"mappings":";;;;;AAMA,KACE;AADF,KACY;AADZ,KACqB;AADrB,KAC6B;EACzB,wBAAA;;AAFJ,KAKE;EACE,kBAAA;;;;;;;;AANJ,KAKE,sDAGE;EACE,cAAA;;AATN,KAKE,sDAOE;EACE,cAAA;;AAbN,KAKE,sDAWE;EACE,cAAA;;AAjBN,KAKE,sDAeE;EACE,eAAA;;AArBN,KAKE,sDAeE,YAGE;EACE,mBAAA;;AAxBR,KAKE,sDAuBE,iBAAiB;EACf,gBAAA;;AA7BN,KAKE,sDA2BE;EACE,iBAAA;EACA,mBAAA;;AAlCN,KAKE,sDAgCE,2BACE,MACE;EACE,qBAAA;EACA,sBAAA;;AAzCV,KAKE,sDAgCE,2BACE,MACE,KAIE,MAAK;AA3Cf,KAKE,sDAgCE,2BACE,MACE,KAI0B,MAAK,iBAAiB;EAC5C,aAAA;;AA5CZ,KAKE,sDA6CE;EACE,iBAAA;EACA,oBAAA;EACA,SAAA;EACA,gBAAA;EACA,aAAA;;AAEA,KApDJ,sDA6CE,OAOI;EACA,wBAAA;;AAGF,KAxDJ,sDA6CE,OAWG;EACC,mBAAA;;AAGF,KA5DJ,sDA6CE,OAeG,cAAc,UAAU;EACvB,mBAAA;;AAGF,KAhEJ,sDA6CE,OAmBG;EACC,mBAAA;;AAGF,KApEJ,sDA6CE,OAuBG,aAAa,UAAU;EACtB,mBAAA;;AAGF,KAxEJ,sDA6CE,OA2BG;EACC,mBAAA;;AAGF,KA5EJ,sDA6CE,OA+BG,cAAc,UAAU;EACvB,mBAAA;;AAlFR,KAKE,sDAiFE;EACE,uBAAA;;AAvFN,KAKE,sDAqFE;EACE,cAAA;EACA,eAAA;EACA,oBAAA;EACA,cAAA;;AA9FN,KAKE,sDA4FE;AAjGJ,KAKE,sDA4FyB;EACrB,kBAAA;EACA,mBAAA;EACA,gBAAA;;AASA,KAxGJ,sDA4FE,sBAYG;AAAD,KAxGJ,sDA4FyB,mBAYpB;EACC,cAAA;EACA,SAAS,EAAT;EACA,WAAA;;AAhHR,KAKE,sDA+GE;EACE,mBAAA;EACA,yBAAA;EACA,cAAA;EACA,sCAAA;;AAEA,KArHJ,sDA+GE,gCAMG;EACC,aAAA;;AA3HR,KAKE,sDA+GE,gCAUE;EACE,eAAA;;AA/HR,KAKE,sDA+GE,gCAcE;EACE,cAAA;EACA,eAAA;;AApIR,KAKE,sDAwIE;EAIE,kBAAA;EAEA,mBAAA;EACA,mBAAA;EACA,gBAAA;;AArJN,KAKE,sDAwIE,8BAUE;AAvJN,KAKE,sDAwIE,8BAUoB,GAAE;AAvJ1B,KAKE,sDAwIE,8BAUwC,GAAE;EACtC,SAAA;;AAxJR,KAKE,sDAwIE,8BAcE;EACE,mBAAA;EACA,mBAAA;EACA,gCAAA;;AA9JR,KAKE,sDAwIE,8BAoBE,SAAQ;EACN,SAAA;;AAlKR,KAKE,sDAwIE,8BAwBE,SAAQ;EACN,mBAAA;;AAtKR,KAKE,sDAwIE,8BA4BE;EACE,yBAAA;EACA,gBAAA;EACA,uCAAA;;AAEA,KAzKN,sDAwIE,8BA4BE,SAKG;AAAS,KAzKhB,sDAwIE,8BA4BE,SAKa;EACT,gBAAA;EACA,aAAA;;AAhLV,KAKE,sDAgLE;EACE,kBAAA;EACA,WAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,gBAAA;EACA,yBAAA;EACA,WAAA;EACA,0BAAA;;AA9LN,KAKE,sDAgLE,0BAWE;EACE,WAAA;EACA,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EAEA,yBAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,gBAAA;;AA5MR,KAKE,sDAgLE,0BA0BE;EACE,qBAAA;EACA,sBAAA;;AAjNR,KAKE,sDAgLE,0BA0BE,2BAIE;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,gBAAA;EACA,qBAAA;EAEA,gBAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;;AA7NV,KAKE,sDAgLE,0BA4CE;EACE,kBAAA;EACA,YAAA;EACA,YAAA;;AApOR,KAKE,sDAgLE,0BAkDE;EACE,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,8CAAA;EACA,yBAAA;EACA,cAAA;EACA,8EAAA;EACA,kBAAA;EACA,aAAA;EACA,qBAAA;EACA,UAAA;;AAEA,KAzPN,sDAgLE,0BAkDE,qBAuBG;EACC,gBAAA;EACA,gBAAA;EACA,yBAAA;EACA,WAAA;;AAEA,KA/PR,sDAgLE,0BAkDE,qBAuBG,uBAME;EACC,mBAAA;EACA,WAAA;;AAGF,KApQR,sDAgLE,0BAkDE,qBAuBG,uBAWE;EACC,iDAAA;;AAIJ,KAzQN,sDAgLE,0BAkDE,qBAuCG;EACC,gBAAA;EACA,gBAAA;EACA,yBAAA;EACA,WAAA;;AAEA,KA/QR,sDAgLE,0BAkDE,qBAuCG,2BAME;EACC,mBAAA;EACA,WAAA;;AAGF,KApRR,sDAgLE,0BAkDE,qBAuCG,2BAWE;EACC,iDAAA;;AA1RZ,KAKE,sDA2RE;EAEE,WAAA;EACA,mBAAA;EACA,YAAA;EACA,mBAAA;;AArSN,KAKE,sDA2RE,kCAOE;EACE,UAAA;EACA,gBAAA;EACA,gBAAA;;AA1SR,KAKE,sDA2RE,kCAOE,GAKE;EACE,cAAA;EACA,mBAAA;EAEA,aAAA;;AAhTV,KAKE,sDA2RE,kCAOE,GAKE,sBAME;EACE,cAAA;EACA,WAAA;EACA,kBAAA;EACA,eAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;EACA,gBAAA;EACA,gDAAgD,oDAAoD,4BAApG;;AA3TZ,KAKE,sDA2RE,kCAOE,GAKE,sBAME,wBAWE;EACE,cAAA;EACA,iBAAA;;AA/Td,KAKE,sDA2RE,kCAOE,GAKE,sBAME,wBAgBE;EACE,cAAA;EACA,eAAA;EACA,mBAAA;EACA,oBAAA;EACA,cAAA;;AAvUd,KAKE,sDA2RE,kCAOE,GAKE,sBAME,wBAwBE;EACE,YAAA;EAEA,WAAA;;AAGF,KA3UV,sDA2RE,kCAOE,GAKE,sBAME,wBA8BG;EACC,WAAA;;AAGF,KA/UV,sDA2RE,kCAOE,GAKE,sBAME,wBAkCG;EACC,mBAAA;;AADF,KA/UV,sDA2RE,kCAOE,GAKE,sBAME,wBAkCG,MAGC;EACE,cAAA;;AAIJ,KAvVV,sDA2RE,kCAOE,GAKE,sBAME;AA0CK,KAvVb,sDA2RE,kCAOE,GAKE,sBAME,wBA0CM;AAAS,KAvVvB,sDA2RE,kCAOE,GAKE,sBAME,wBA0CgB;AAAQ,KAvVhC,sDA2RE,kCAOE,GAKE,sBAME,wBA0CyB;AAAS,KAvV1C,sDA2RE,kCAOE,GAKE,sBAME,wBA0CmC;EAC/B,qBAAA;EACA,2BAAA;;AAKJ,KA9VR,sDA2RE,kCAOE,GAKE,sBAuDG;EACC,gBAAA;EACA,8BAAA;;AAFF,KA9VR,sDA2RE,kCAOE,GAKE,sBAuDG,wBAIC;EACE,cAAA;EACA,iBAAA;;AANJ,KA9VR,sDA2RE,kCAOE,GAKE,sBAuDG,wBAIC,EAKE;EACE,cAAA;;AA7WhB,KAKE,sDA2RE,kCAOE,GAKE,sBAsEE;EACE,UAAA;EACA,SAAA;;AApXZ,KAKE,sDA2RE,kCAOE,GAKE,sBAsEE,sBAIE;EACE,eAAA;EACA,UAAA;;AAxXd,KAKE,sDA2RE,kCAOE,GAKE,sBAsEE,sBAIE,GAIE;EACE,cAAA;EACA,mBAAA;EACA,WAAA;EACA,SAAA;EACA,SAAA;EACA,yBAAA;EACA,mBAAA;EACA,qBAAA;EACA,aAAA;;AAEA,KAhYd,sDA2RE,kCAOE,GAKE,sBAsEE,sBAIE,GAIE,EAWG;AAAQ,KAhYvB,sDA2RE,kCAOE,GAKE,sBAsEE,sBAIE,GAIE,EAWY;EACR,qBAAA;EACA,4BAAA;;AAvYlB,KAKE,sDA2RE,kCAOE,GAKE,sBAsEE,sBAIE,GAIE,EAgBE;EACE,cAAA;EACA,eAAA;EACA,SAAA;EACA,gBAAgB,UAAhB;EACA,mBAAmB,UAAnB;EACA,cAAc,UAAd;EACA,W