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

Version Description

(24.11.2021) = * Added: Page caching. It creates static HTML files of frontend pages and stores them on the servers disk. This allows the static HTML files to be delivered instead of generating pages on the fly, avoiding resource intensive backend processes from the WordPress core, plugins, and database. * Improved: Compatibility with premium plugin

Download this release

Release Info

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

Code changes from version 1.9.6 to 2.0.0

Files changed (281) 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 +3 -3
  5. admin/assets/js/general.js +17 -17
  6. admin/assets/js/license-manager.js +4 -4
  7. admin/boot.php +7 -7
  8. admin/includes/compatibility.php +70 -39
  9. admin/pages/class-page.php +9 -9
  10. admin/pages/class-pages-advanced.php +1 -1
  11. admin/pages/class-pages-clearfy-settings.php +1 -1
  12. admin/pages/class-pages-components-license.php +5 -5
  13. admin/pages/class-pages-components.php +2 -2
  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-google.php +1 -1
  20. admin/pages/class-pages-quick-start.php +2 -2
  21. admin/pages/class-pages-seo-double-pages.php +1 -1
  22. admin/pages/class-pages-seo.php +1 -1
  23. admin/pages/class-pages-widgets.php +1 -1
  24. admin/pages/setup/class-pages-setup.php +4 -4
  25. admin/pages/setup/steps/class-step-congratulation.php +2 -2
  26. admin/pages/setup/steps/class-step-default.php +5 -5
  27. admin/pages/setup/steps/class-step-google-page-speed-after.php +2 -2
  28. admin/pages/setup/steps/class-step-google-page-speed-before.php +2 -2
  29. admin/pages/setup/steps/class-step-optimize-images.php +4 -4
  30. admin/pages/setup/steps/class-step-plugins.php +2 -2
  31. admin/pages/setup/steps/class-step-setting-seo-optimize.php +1 -1
  32. admin/pages/setup/steps/class-step-setting-speed-optimize.php +1 -1
  33. clearfy.php +54 -50
  34. components/assets-manager/admin/activation.php +2 -2
  35. components/assets-manager/admin/ajax/save-settings.php +1 -1
  36. components/assets-manager/admin/boot.php +2 -2
  37. components/assets-manager/admin/pages/class-pages-settings.php +4 -4
  38. components/assets-manager/gonzales.php +7 -7
  39. components/assets-manager/includes/class-plugin.php +3 -3
  40. components/assets-manager/includes/classes/class-assets-manager-global.php +2 -2
  41. components/assets-manager/includes/classes/class-views.php +4 -4
  42. components/assets-manager/migrations/010100.php +1 -1
  43. components/assets-manager/migrations/010108.php +1 -1
  44. components/assets-manager/migrations/020005.php +1 -1
  45. components/assets-manager/mu-plugins/assets-manager.php +1 -1
  46. components/cache/admin/activation.php +43 -0
  47. components/cache/admin/boot.php +81 -0
  48. components/cache/admin/index.php +2 -0
  49. {admin → components/cache/admin}/pages/class-pages-performance-cache.php +92 -21
  50. components/cache/cache.php +137 -0
  51. components/cache/clearfy.php +52 -0
  52. components/cache/includes/3rd-party/class-clearfy-plugin.php +113 -0
  53. components/cache/includes/3rd-party/index.php +2 -0
  54. components/cache/includes/cache.php +98 -0
  55. components/cache/includes/class-plugin.php +121 -0
  56. components/cache/includes/includes/cache.php +921 -0
  57. components/cache/includes/includes/helpers.php +1245 -0
  58. components/cache/includes/includes/index.html +1 -0
  59. components/cache/includes/includes/todo_cdn.php +462 -0
  60. components/cache/includes/index.php +2 -0
  61. components/comments-plus/admin/boot.php +1 -1
  62. components/comments-plus/admin/pages/class-page-comments.php +3 -3
  63. components/comments-plus/admin/pages/class-page-delete-comments.php +6 -6
  64. components/comments-plus/comments-plus.php +7 -7
  65. components/comments-plus/includes/class-plugin.php +3 -3
  66. components/comments-plus/includes/classes/class-configurate-comments.php +3 -3
  67. components/cyrlitera/admin/activation.php +2 -2
  68. components/cyrlitera/admin/boot.php +1 -1
  69. components/cyrlitera/admin/pages/class-page-cyrlitera.php +4 -4
  70. components/cyrlitera/cyrlitera.php +7 -7
  71. components/cyrlitera/includes/class-plugin.php +3 -3
  72. components/cyrlitera/includes/classes/class-configurate-cyrlitera.php +2 -2
  73. components/cyrlitera/migrations/010004.php +1 -1
  74. components/disable-admin-notices/admin/boot.php +1 -1
  75. components/disable-admin-notices/admin/class-page-basic.php +4 -4
  76. components/disable-admin-notices/admin/options.php +2 -2
  77. components/disable-admin-notices/admin/pages/class-pages-edit-admin-bar.php +3 -3
  78. components/disable-admin-notices/admin/pages/class-pages-edit-redirects.php +3 -3
  79. components/disable-admin-notices/admin/pages/class-pages-license.php +3 -3
  80. components/disable-admin-notices/admin/pages/class-pages-notices.php +3 -3
  81. components/disable-admin-notices/admin/pages/class-pages-settings.php +6 -6
  82. components/disable-admin-notices/disable-admin-notices.php +9 -9
  83. components/disable-admin-notices/includes/class-plugin.php +4 -4
  84. components/disable-admin-notices/includes/classes/class-configurate-notices.php +1 -1
  85. components/disable-admin-notices/migrations/010007.php +1 -1
  86. components/ga-cache/admin/activation.php +2 -2
  87. components/ga-cache/admin/boot.php +2 -2
  88. components/ga-cache/admin/options.php +1 -1
  89. components/ga-cache/admin/pages/class-pages-general-settings.php +3 -3
  90. components/ga-cache/includes/class-plugin.php +3 -3
  91. components/ga-cache/includes/classes/class-configurate-ga.php +1 -1
  92. components/ga-cache/migrations/030002.php +1 -1
  93. components/ga-cache/simple_google_analytics.php +6 -6
  94. components/html-minify/admin/pages/class-pages-settings.php +3 -3
  95. components/html-minify/html-minify.php +7 -7
  96. components/html-minify/includes/class-plugin.php +3 -3
  97. components/minify-and-combine/admin/pages/class-pages-settings.php +7 -7
  98. components/minify-and-combine/includes/class-plugin.php +3 -3
  99. components/minify-and-combine/includes/classes/class-cache.php +1 -1
  100. components/minify-and-combine/minify-and-combine.php +7 -7
  101. components/updates-manager/admin/activation.php +2 -2
  102. components/updates-manager/admin/assets/js/ajax-components.js +4 -4
  103. components/updates-manager/admin/boot.php +1 -1
  104. components/updates-manager/admin/includes/class-abstract-filters.php +1 -1
  105. components/updates-manager/admin/pages/class-page-advanced.php +5 -5
  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 +15 -11
  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 +1 -1
  121. includes/classes/class.configurate-security.php +1 -1
  122. includes/classes/class.configurate-seo.php +1 -1
  123. includes/helpers.php +1 -1
  124. libs/factory/adverts/boot.php +12 -12
  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_127-ru_RU.mo → wbcr_factory_adverts_129-ru_RU.mo} +0 -0
  129. libs/factory/adverts/langs/{wbcr_factory_adverts_127-ru_RU.po → wbcr_factory_adverts_129-ru_RU.po} +0 -0
  130. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +2 -2
  131. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +2 -2
  132. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +2 -2
  133. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -16
  134. libs/factory/bootstrap/assets/css-min/bootstrap.datepicker.min.css +2 -8
  135. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +2 -2
  136. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +2 -2
  137. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +2 -2
  138. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +2 -2
  139. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +2 -2
  140. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +2 -2
  141. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +2 -2
  142. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +2 -2
  143. libs/factory/bootstrap/assets/css-min/control.color.min.css +2 -2
  144. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +2 -2
  145. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +2 -2
  146. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +2 -2
  147. libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +2 -2
  148. libs/factory/bootstrap/assets/js-min/bootstrap.tooltip.min.js +1 -1
  149. libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +2 -2
  150. libs/factory/bootstrap/assets/js-min/control.color.min.js +2 -2
  151. libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +2 -2
  152. libs/factory/bootstrap/assets/js-min/control.list.min.js +2 -2
  153. libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +2 -2
  154. libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +2 -2
  155. libs/factory/bootstrap/assets/js-min/plugin.color.min.js +1 -1
  156. libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +2 -5
  157. libs/factory/bootstrap/boot.php +9 -9
  158. libs/factory/bootstrap/includes/functions.php +10 -10
  159. libs/factory/core/ajax/install-addons.php +10 -10
  160. libs/factory/core/assets/js/core-components.js +14 -14
  161. libs/factory/core/assets/js/core-general.js +6 -6
  162. libs/factory/core/boot.php +33 -33
  163. libs/factory/core/includes/activation/class-factory-activator.php +3 -3
  164. libs/factory/core/includes/activation/class-factory-update.php +3 -3
  165. libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
  166. libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
  167. libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
  168. libs/factory/core/includes/class-check-compatibility.php +3 -3
  169. libs/factory/core/includes/class-factory-migrations.php +13 -13
  170. libs/factory/core/includes/class-factory-notices.php +7 -7
  171. libs/factory/core/includes/class-factory-options.php +2 -2
  172. libs/factory/core/includes/class-factory-plugin-abstract.php +71 -71
  173. libs/factory/core/includes/class-factory-plugin-base.php +25 -25
  174. libs/factory/core/includes/class-factory-requests.php +1 -1
  175. libs/factory/core/includes/class-factory-requirements.php +6 -6
  176. libs/factory/core/includes/components/class-delete-component-button.php +1 -1
  177. libs/factory/core/includes/components/class-install-component-button.php +11 -11
  178. libs/factory/core/includes/entities/class-factory-paths.php +1 -1
  179. libs/factory/core/includes/entities/class-factory-support.php +1 -1
  180. libs/factory/core/includes/functions.php +7 -7
  181. libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
  182. libs/factory/core/includes/premium/class-factory-manager.php +10 -10
  183. libs/factory/core/includes/premium/class-factory-provider-abstract.php +6 -6
  184. libs/factory/core/includes/updates/class-factory-premium-upgrader.php +11 -11
  185. libs/factory/core/includes/updates/class-factory-upgrader.php +10 -10
  186. libs/factory/core/includes/updates/repositories/class-factory-github.php +4 -4
  187. libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php +5 -5
  188. libs/factory/core/includes/updates/repositories/class-factory-wordpress.php +4 -4
  189. libs/factory/core/langs/{wbcr_factory_449-ru_RU.mo → wbcr_factory_452-ru_RU.mo} +0 -0
  190. libs/factory/core/langs/{wbcr_factory_449-ru_RU.po → wbcr_factory_452-ru_RU.po} +0 -0
  191. libs/factory/forms/boot.php +95 -95
  192. libs/factory/forms/controls/checkbox.php +7 -7
  193. libs/factory/forms/controls/color-and-opacity.php +4 -4
  194. libs/factory/forms/controls/color.php +2 -2
  195. libs/factory/forms/controls/customs/html.php +2 -2
  196. libs/factory/forms/controls/customs/separator.php +2 -2
  197. libs/factory/forms/controls/datepicker-range.php +4 -4
  198. libs/factory/forms/controls/dropdown-and-colors.php +6 -6
  199. libs/factory/forms/controls/dropdown.php +7 -7
  200. libs/factory/forms/controls/font.php +11 -11
  201. libs/factory/forms/controls/google-font.php +8 -8
  202. libs/factory/forms/controls/gradient.php +4 -4
  203. libs/factory/forms/controls/hidden.php +2 -2
  204. libs/factory/forms/controls/holders/accordion-item.php +2 -2
  205. libs/factory/forms/controls/holders/accordion.php +2 -2
  206. libs/factory/forms/controls/holders/columns.php +2 -2
  207. libs/factory/forms/controls/holders/control-group-item.php +2 -2
  208. libs/factory/forms/controls/holders/control-group.php +3 -3
  209. libs/factory/forms/controls/holders/div.php +2 -2
  210. libs/factory/forms/controls/holders/form-group.php +2 -2
  211. libs/factory/forms/controls/holders/more-link.php +2 -2
  212. libs/factory/forms/controls/holders/tab-item.php +2 -2
  213. libs/factory/forms/controls/holders/tab.php +4 -4
  214. libs/factory/forms/controls/integer.php +2 -2
  215. libs/factory/forms/controls/list.php +4 -4
  216. libs/factory/forms/controls/multiple-textbox.php +4 -4
  217. libs/factory/forms/controls/paddings-editor.php +3 -3
  218. libs/factory/forms/controls/pattern.php +9 -9
  219. libs/factory/forms/controls/radio-colors.php +3 -3
  220. libs/factory/forms/controls/radio.php +3 -3
  221. libs/factory/forms/controls/textarea.php +2 -2
  222. libs/factory/forms/controls/textbox.php +2 -2
  223. libs/factory/forms/controls/url.php +3 -3
  224. libs/factory/forms/controls/wp-editor.php +3 -3
  225. libs/factory/forms/includes/complex-control.class.php +4 -4
  226. libs/factory/forms/includes/control-holder.class.php +5 -5
  227. libs/factory/forms/includes/control.class.php +5 -5
  228. libs/factory/forms/includes/custom-element.class.php +2 -2
  229. libs/factory/forms/includes/form-element.class.php +7 -7
  230. libs/factory/forms/includes/form-layout.class.php +5 -5
  231. libs/factory/forms/includes/form.class.php +39 -39
  232. libs/factory/forms/includes/holder.class.php +6 -6
  233. libs/factory/forms/includes/html-builder.class.php +2 -2
  234. libs/factory/forms/includes/providers/meta-value-provider.class.php +2 -2
  235. libs/factory/forms/includes/providers/options-value-provider.class.php +3 -3
  236. libs/factory/forms/includes/providers/value-provider.interface.php +2 -2
  237. libs/factory/forms/langs/{wbcr_factory_forms_446-ru_RU.mo → wbcr_factory_forms_449-ru_RU.mo} +0 -0
  238. libs/factory/forms/langs/{wbcr_factory_forms_446-ru_RU.po → wbcr_factory_forms_449-ru_RU.po} +0 -0
  239. libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +10 -10
  240. libs/factory/freemius/boot.php +18 -18
  241. libs/factory/freemius/includes/class-freemius-api.php +7 -7
  242. libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
  243. libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
  244. libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
  245. libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
  246. libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
  247. libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
  248. libs/factory/freemius/includes/licensing/class-freemius-provider.php +18 -18
  249. libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
  250. libs/factory/logger/assets/js/logger.js +5 -5
  251. libs/factory/logger/boot.php +17 -17
  252. libs/factory/logger/includes/class-log-export.php +1 -1
  253. libs/factory/logger/includes/class-logger.php +3 -3
  254. libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.mo → wbcr_factory_logger_117-ru_RU.mo} +0 -0
  255. libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.po → wbcr_factory_logger_117-ru_RU.po} +0 -0
  256. libs/factory/logger/pages/class-logger-admin-page.php +22 -22
  257. libs/factory/logger/pages/class-logger-impressive-lite.php +20 -20
  258. libs/factory/logger/pages/class-logger-impressive-page.php +21 -21
  259. libs/factory/pages/boot.php +9 -9
  260. libs/factory/pages/includes/admin-page.class.php +6 -6
  261. libs/factory/pages/includes/page.class.php +7 -7
  262. libs/factory/pages/langs/{wbcr_factory_pages_448-fr_FR.mo → wbcr_factory_pages_451-fr_FR.mo} +0 -0
  263. libs/factory/pages/langs/{wbcr_factory_pages_448-fr_FR.po → wbcr_factory_pages_451-fr_FR.po} +0 -0
  264. libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.mo → wbcr_factory_pages_451-ru_RU.mo} +0 -0
  265. libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.po → wbcr_factory_pages_451-ru_RU.po} +0 -0
  266. libs/factory/pages/pages.php +11 -11
  267. libs/factory/templates/assets/css/clearfy-base.css +25 -25
  268. libs/factory/templates/assets/css/components.css +24 -24
  269. libs/factory/templates/assets/css/libs/autocomplete.css +12 -12
  270. libs/factory/templates/assets/css/page-setup.css +102 -102
  271. libs/factory/templates/assets/js/clearfy-globals.js +26 -26
  272. libs/factory/templates/assets/js/clearfy-license-manager.js +4 -4
  273. libs/factory/templates/assets/js/clearfy-search-options.js +2 -2
  274. libs/factory/templates/assets/js/clearfy-widgets.js +4 -4
  275. libs/factory/templates/assets/js/libs/jquery.autocomplete.min.js +1 -1
  276. libs/factory/templates/boot.php +27 -27
  277. libs/factory/templates/includes/ajax-handlers.php +13 -13
  278. libs/factory/templates/includes/class-configurate.php +3 -3
  279. libs/factory/templates/includes/class-helpers.php +1 -1
  280. libs/factory/templates/includes/class-search-options.php +1 -1
  281. libs/factory/templates/pages/class-page-license.php +28 -29
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 Factory449_Activator
8
  * @version 1.0
9
  */
10
 
@@ -13,7 +13,7 @@ if( !defined('ABSPATH') ) {
13
  exit;
14
  }
15
 
16
- class WCL_Activation extends Wbcr_Factory449_Activator {
17
 
18
  /**
19
  * Runs activation actions.
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
+ * @see Factory452_Activator
8
  * @version 1.0
9
  */
10
 
13
  exit;
14
  }
15
 
16
+ class WCL_Activation extends Wbcr_Factory452_Activator {
17
 
18
  /**
19
  * Runs activation actions.
admin/ajax/configurate.php CHANGED
@@ -57,7 +57,7 @@ function wbcr_clearfy_configurate_plugin()
57
  }
58
 
59
  if( !$flush_redirect ) {
60
- WBCR\Factory_Templates_101\Helpers::flushPageCache();
61
  }
62
 
63
  do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
57
  }
58
 
59
  if( !$flush_redirect ) {
60
+ WBCR\Factory_Templates_105\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 = WBCR\Factory_Templates_101\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
- WBCR\Factory_Templates_101\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 = WBCR\Factory_Templates_105\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
+ WBCR\Factory_Templates_105\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-448-impressive-page-template .wbcr-factory-page-header {
37
  height: 80px !important;
38
  }
39
- #WBCR .wbcr-factory-pages-448-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo span {
40
  display: inline-block !important;
41
  }
42
  #WBCR .row {
@@ -675,7 +675,7 @@
675
  #WBCR .wclearfy-quick-start-docs__column-inner-wrap ul li a:hover {
676
  color: #979696;
677
  }
678
- #WBCR .wbcr-factory-page-quick_start #wbcr-factory-templates-101__autocomplete {
679
  width: 100%;
680
  padding: 15px;
681
  border-radius: 4px;
33
  //float: right;
34
  }*/
35
  }
36
+ #WBCR .wbcr-factory-pages-451-impressive-page-template .wbcr-factory-page-header {
37
  height: 80px !important;
38
  }
39
+ #WBCR .wbcr-factory-pages-451-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo span {
40
  display: inline-block !important;
41
  }
42
  #WBCR .row {
675
  #WBCR .wclearfy-quick-start-docs__column-inner-wrap ul li a:hover {
676
  color: #979696;
677
  }
678
+ #WBCR .wbcr-factory-page-quick_start #wbcr-factory-templates-105__autocomplete {
679
  width: 100%;
680
  padding: 15px;
681
  border-radius: 4px;
admin/assets/js/general.js CHANGED
@@ -13,7 +13,7 @@
13
  this.qickStartAssistent();
14
  this.importOptions();
15
 
16
- /*$.wfactory_449.hooks.add('core/components/pre_activate', function(button) {
17
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
18
  if( !$('#WBCR').length ) {
19
  return false;
@@ -27,13 +27,13 @@
27
  }
28
  });*/
29
 
30
- /*$.wfactory_449.hooks.add('core/components/updated', function(button, data, response) {
31
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
32
- if( !($('#WBCR').length && $.wbcr_factory_templates_101) ) {
33
  return false;
34
  }
35
  if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
36
- $.wbcr_factory_templates_101.app.showNotice(response.data.need_rewrite_rules, 'warning');
37
  }
38
  });*/
39
  },
@@ -107,13 +107,13 @@
107
  * Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
108
  * результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
109
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
110
- * $.wbcr_factory_templates_101.hooks.add('wbcr/factory_templates_101/updated',
111
  * function(noticeId) {});
112
  * @param {string} modeName - имя режима конфигурации
113
  * @param {object} data
114
  */
115
 
116
- $.wbcr_factory_templates_101.hooks.run('clearfy/quick_start/configurated_error', [
117
  modeName,
118
  data
119
  ]);
@@ -130,12 +130,12 @@
130
  * Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
131
  * конфигурации Реализация системы фильтров и хуков в файле
132
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
133
- * $.wbcr_factory_templates_101.hooks.add('wbcr/factory_templates_101/updated', function(noticeId)
134
  * {});
135
  * @param {string} modeName - имя режима конфигурации
136
  * @param {object} data
137
  */
138
- $.wbcr_factory_templates_101.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
139
 
140
  if( modeName !== 'reset' ) {
141
  switcher.addClass('wbcr-clearfy-active');
@@ -203,12 +203,12 @@
203
  $this = $(this);
204
 
205
  if( !settings ) {
206
- $.wbcr_factory_templates_101.app.showNotice('Import options is empty!', 'danger');
207
  return false;
208
  }
209
 
210
  if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
211
- $.wbcr_factory_templates_101.app.showNotice('Unknown Javascript error, most likely the wbcr_clearfy_ajax variable does not exist!', 'danger');
212
  return false;
213
  }
214
 
@@ -223,7 +223,7 @@
223
 
224
  if( response.data.update_notice ) {
225
  if( !$('.wbcr-clr-update-package').length ) {
226
- $.wbcr_factory_templates_101.app.showNotice(response.data.update_notice);
227
  }
228
  } else {
229
  if( $('.wbcr-clr-update-package').length ) {
@@ -260,15 +260,15 @@
260
  console.log(data);
261
 
262
  if( data ) {
263
- noticeId = $.wbcr_factory_templates_101.app.showNotice(data.error_message, 'danger');
264
  } else {
265
  if( void 0 !== wbcr_clearfy_ajax ) {
266
- noticeId = $.wbcr_factory_templates_101.app.showNotice(wbcr_clearfy_ajax.i18n.unknown_error, 'danger');
267
  }
268
  }
269
 
270
  setTimeout(function() {
271
- $.wbcr_factory_templates_101.app.hideNotice(noticeId);
272
  }, 5000);
273
  return;
274
  }
@@ -277,10 +277,10 @@
277
 
278
  if( !request_data.flush_redirect ) {
279
  if( void 0 !== wbcr_clearfy_ajax ) {
280
- noticeId = $.wbcr_factory_templates_101.app.showNotice(wbcr_clearfy_ajax.i18n.success_update_settings, 'success');
281
 
282
  setTimeout(function() {
283
- $.wbcr_factory_templates_101.app.hideNotice(noticeId);
284
  }, 5000);
285
  }
286
  return;
@@ -295,7 +295,7 @@
295
  console.log(xhr.responseText);
296
  console.log(thrownError);
297
 
298
- var noticeId = $.wbcr_factory_templates_101.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
299
  }
300
  });
301
  }
13
  this.qickStartAssistent();
14
  this.importOptions();
15
 
16
+ /*$.wfactory_452.hooks.add('core/components/pre_activate', function(button) {
17
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
18
  if( !$('#WBCR').length ) {
19
  return false;
27
  }
28
  });*/
29
 
30
+ /*$.wfactory_452.hooks.add('core/components/updated', function(button, data, response) {
31
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
32
+ if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
33
  return false;
34
  }
35
  if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
36
+ $.wbcr_factory_templates_105.app.showNotice(response.data.need_rewrite_rules, 'warning');
37
  }
38
  });*/
39
  },
107
  * Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
108
  * результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
109
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
110
+ * $.wbcr_factory_templates_105.hooks.add('wbcr/factory_templates_105/updated',
111
  * function(noticeId) {});
112
  * @param {string} modeName - имя режима конфигурации
113
  * @param {object} data
114
  */
115
 
116
+ $.wbcr_factory_templates_105.hooks.run('clearfy/quick_start/configurated_error', [
117
  modeName,
118
  data
119
  ]);
130
  * Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
131
  * конфигурации Реализация системы фильтров и хуков в файле
132
  * libs/clearfy/admin/assests/js/global.js Пример регистрации хука
133
+ * $.wbcr_factory_templates_105.hooks.add('wbcr/factory_templates_105/updated', function(noticeId)
134
  * {});
135
  * @param {string} modeName - имя режима конфигурации
136
  * @param {object} data
137
  */
138
+ $.wbcr_factory_templates_105.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
139
 
140
  if( modeName !== 'reset' ) {
141
  switcher.addClass('wbcr-clearfy-active');
203
  $this = $(this);
204
 
205
  if( !settings ) {
206
+ $.wbcr_factory_templates_105.app.showNotice('Import options is empty!', 'danger');
207
  return false;
208
  }
209
 
210
  if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
211
+ $.wbcr_factory_templates_105.app.showNotice('Unknown Javascript error, most likely the wbcr_clearfy_ajax variable does not exist!', 'danger');
212
  return false;
213
  }
214
 
223
 
224
  if( response.data.update_notice ) {
225
  if( !$('.wbcr-clr-update-package').length ) {
226
+ $.wbcr_factory_templates_105.app.showNotice(response.data.update_notice);
227
  }
228
  } else {
229
  if( $('.wbcr-clr-update-package').length ) {
260
  console.log(data);
261
 
262
  if( data ) {
263
+ noticeId = $.wbcr_factory_templates_105.app.showNotice(data.error_message, 'danger');
264
  } else {
265
  if( void 0 !== wbcr_clearfy_ajax ) {
266
+ noticeId = $.wbcr_factory_templates_105.app.showNotice(wbcr_clearfy_ajax.i18n.unknown_error, 'danger');
267
  }
268
  }
269
 
270
  setTimeout(function() {
271
+ $.wbcr_factory_templates_105.app.hideNotice(noticeId);
272
  }, 5000);
273
  return;
274
  }
277
 
278
  if( !request_data.flush_redirect ) {
279
  if( void 0 !== wbcr_clearfy_ajax ) {
280
+ noticeId = $.wbcr_factory_templates_105.app.showNotice(wbcr_clearfy_ajax.i18n.success_update_settings, 'success');
281
 
282
  setTimeout(function() {
283
+ $.wbcr_factory_templates_105.app.hideNotice(noticeId);
284
  }, 5000);
285
  }
286
  return;
295
  console.log(xhr.responseText);
296
  console.log(thrownError);
297
 
298
+ var noticeId = $.wbcr_factory_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
299
  }
300
  });
301
  }
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_templates_101.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_templates_101.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_templates_101.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_templates_101.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_templates_105.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_templates_105.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_templates_105.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_templates_105.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_FactoryPages448_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_FactoryPages448') ) {
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_Factory449_Plugin $plugin
88
- * @param Wbcr_FactoryPages448_ImpressiveThemplate $obj
89
  */
90
  function wbcr_clearfy_multisite_before_save($form, $plugin, $obj)
91
  {
@@ -127,7 +127,7 @@ 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-templates-101-global'
131
  ], WCL_Plugin::app()->getPluginVersion());
132
  });*/
133
 
@@ -147,7 +147,7 @@ add_filter('flush_rewrite_rules_hard', 'wbcr_clearfy_flush_rewrite_rules');
147
  * Обновить постоынные ссылки, после выполнения быстрых настроек
148
  *
149
  * @param WHM_Plugin $plugin
150
- * @param Wbcr_FactoryPages448_ImpressiveThemplate $obj
151
  */
152
  function wbcr_clearfy_after_form_save($plugin, $obj)
153
  {
@@ -170,7 +170,7 @@ add_action('wbcr/factory/pages/impressive/after_form_save', 'wbcr_clearfy_after_
170
  *
171
  * @param array $widgets
172
  * @param string $position
173
- * @param Wbcr_Factory449_Plugin $plugin
174
  */
175
 
176
  add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
21
  * Уведомление будет показано на всех страницах Clearfy и его компонентах.
22
  *
23
  * @param WCL_Plugin $plugin
24
+ * @param Wbcr_FactoryPages451_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_FactoryPages451') ) {
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_Factory452_Plugin $plugin
88
+ * @param Wbcr_FactoryPages451_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-templates-105-global'
131
  ], WCL_Plugin::app()->getPluginVersion());
132
  });*/
133
 
147
  * Обновить постоынные ссылки, после выполнения быстрых настроек
148
  *
149
  * @param WHM_Plugin $plugin
150
+ * @param Wbcr_FactoryPages451_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_Factory452_Plugin $plugin
174
  */
175
 
176
  add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
admin/includes/compatibility.php CHANGED
@@ -7,90 +7,121 @@
7
  * @version 1.0
8
  */
9
 
10
- add_action( 'plugins_loaded', function () {
11
- if ( defined( 'WIO_PLUGIN_ACTIVE' ) ) {
12
- if ( ! file_exists( WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php' ) ) {
13
  return;
14
  }
15
 
16
- $plugin = get_plugin_data( WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php' );
17
 
18
- if ( isset( $plugin['Version'] ) && version_compare( $plugin['Version'], '1.0.8', '<=' ) ) {
19
- $notice = __( 'Please update the plugin Robin image Optimizer to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy' );
20
  /**
21
  * Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
22
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
23
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
24
  *
25
- * @param Wbcr_Factory449_Plugin $plugin
26
- * @param Wbcr_FactoryPages448_ImpressiveThemplate $obj
27
  *
28
  * @return bool
29
  */
30
- add_action( 'wbcr/factory/pages/impressive/print_all_notices', function ( $plugin, $obj ) use ( $notice ) {
31
- $obj->printErrorNotice( $notice );
32
- }, 10, 2 );
33
 
34
  // Специально для преидущей версии фреймворка (407)
35
- add_action( 'wbcr_factory_pages_407_imppage_print_all_notices', function ( $plugin, $obj ) use ( $notice ) {
36
- $obj->printErrorNotice( $notice );
37
- }, 10, 2 );
38
  }
39
  }
40
 
41
- if ( defined( 'WHLP_PLUGIN_ACTIVE' ) ) {
42
- if ( ! file_exists( WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php' ) ) {
43
  return;
44
  }
45
 
46
- $plugin = get_plugin_data( WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php' );
47
 
48
- if ( isset( $plugin['Version'] ) && version_compare( $plugin['Version'], '1.0.5', '<=' ) ) {
49
- $notice = __( 'Please update the plugin Hide login page to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy' );
50
  /**
51
  * Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
52
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
53
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
54
  *
55
- * @param Wbcr_Factory449_Plugin $plugin
56
- * @param Wbcr_FactoryPages448_ImpressiveThemplate $obj
57
  *
58
  * @return bool
59
  */
60
- add_action( 'wbcr/factory/pages/impressive/print_all_notices', function ( $plugin, $obj ) use ( $notice ) {
61
- $obj->printErrorNotice( $notice );
62
- }, 10, 2 );
63
 
64
  // Специально для преидущей версии фреймворка (407)
65
- add_action( 'wbcr_factory_pages_407_imppage_print_all_notices', function ( $plugin, $obj ) use ( $notice ) {
66
- $obj->printErrorNotice( $notice );
67
- }, 10, 2 );
68
  }
69
  }
70
 
71
- if ( defined( 'WCLRP_PLUGIN_ACTIVE' ) ) {
72
- add_action( 'wbcr/factory/admin_notices', function ( $notices, $plugin_name ) {
73
- if ( $plugin_name != WGZ_Plugin::app()->getPluginName() ) {
74
  return $notices;
75
  }
76
 
77
- if ( ! current_user_can( 'update_plugins' ) ) {
78
  return $notices;
79
  }
80
 
81
  $nonce_action = 'upgrade-plugin_' . WCLRP_PLUGIN_BASE;
82
- $upgrade_url = wp_nonce_url( self_admin_url( "update.php?action=upgrade-plugin&plugin=" . urlencode( WCLRP_PLUGIN_BASE ) ), $nonce_action );
83
- $notice_text = sprintf( __( 'You must <a href="%s">upgrade the premium version</a> of the Clearfy plugin to version 1.1.2, since the new Clearfy release isn\'t compatible with the previous version of the premium plugin.', 'clearfy' ), $upgrade_url );
84
 
85
  $notices[] = [
86
- 'id' => 'clearfy-package_-compatibility-113',
87
- 'type' => 'error',
88
- 'dismissible' => false,
89
  'dismiss_expires' => 0,
90
- 'text' => '<p><b>' . __( 'Clearfy', 'clearfy' ) . ': </b>' . $notice_text . '</p>'
91
  ];
92
 
93
  return $notices;
94
- }, 10, 2 );
95
  }
96
- }, 30 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  * @version 1.0
8
  */
9
 
10
+ add_action('plugins_loaded', function () {
11
+ if( defined('WIO_PLUGIN_ACTIVE') ) {
12
+ if( !file_exists(WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php') ) {
13
  return;
14
  }
15
 
16
+ $plugin = get_plugin_data(WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php');
17
 
18
+ if( isset($plugin['Version']) && version_compare($plugin['Version'], '1.0.8', '<=') ) {
19
+ $notice = __('Please update the plugin Robin image Optimizer to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy');
20
  /**
21
  * Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
22
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
23
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
24
  *
25
+ * @param Wbcr_Factory452_Plugin $plugin
26
+ * @param Wbcr_FactoryPages451_ImpressiveThemplate $obj
27
  *
28
  * @return bool
29
  */
30
+ add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) use ($notice) {
31
+ $obj->printErrorNotice($notice);
32
+ }, 10, 2);
33
 
34
  // Специально для преидущей версии фреймворка (407)
35
+ add_action('wbcr_factory_pages_407_imppage_print_all_notices', function ($plugin, $obj) use ($notice) {
36
+ $obj->printErrorNotice($notice);
37
+ }, 10, 2);
38
  }
39
  }
40
 
41
+ if( defined('WHLP_PLUGIN_ACTIVE') ) {
42
+ if( !file_exists(WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php') ) {
43
  return;
44
  }
45
 
46
+ $plugin = get_plugin_data(WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php');
47
 
48
+ if( isset($plugin['Version']) && version_compare($plugin['Version'], '1.0.5', '<=') ) {
49
+ $notice = __('Please update the plugin Hide login page to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy');
50
  /**
51
  * Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
52
  * Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
53
  * иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
54
  *
55
+ * @param Wbcr_Factory452_Plugin $plugin
56
+ * @param Wbcr_FactoryPages451_ImpressiveThemplate $obj
57
  *
58
  * @return bool
59
  */
60
+ add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) use ($notice) {
61
+ $obj->printErrorNotice($notice);
62
+ }, 10, 2);
63
 
64
  // Специально для преидущей версии фреймворка (407)
65
+ add_action('wbcr_factory_pages_407_imppage_print_all_notices', function ($plugin, $obj) use ($notice) {
66
+ $obj->printErrorNotice($notice);
67
+ }, 10, 2);
68
  }
69
  }
70
 
71
+ if( defined('WCLRP_PLUGIN_ACTIVE') ) {
72
+ add_action('wbcr/factory/admin_notices', function ($notices, $plugin_name) {
73
+ if( $plugin_name != WGZ_Plugin::app()->getPluginName() ) {
74
  return $notices;
75
  }
76
 
77
+ if( !current_user_can('update_plugins') ) {
78
  return $notices;
79
  }
80
 
81
  $nonce_action = 'upgrade-plugin_' . WCLRP_PLUGIN_BASE;
82
+ $upgrade_url = wp_nonce_url(self_admin_url("update.php?action=upgrade-plugin&plugin=" . urlencode(WCLRP_PLUGIN_BASE)), $nonce_action);
83
+ $notice_text = sprintf(__('You must <a href="%s">upgrade the premium version</a> of the Clearfy plugin to version 1.1.2, since the new Clearfy release isn\'t compatible with the previous version of the premium plugin.', 'clearfy'), $upgrade_url);
84
 
85
  $notices[] = [
86
+ 'id' => 'clearfy-package_-compatibility-113',
87
+ 'type' => 'error',
88
+ 'dismissible' => false,
89
  'dismiss_expires' => 0,
90
+ 'text' => '<p><b>' . __('Clearfy', 'clearfy') . ': </b>' . $notice_text . '</p>'
91
  ];
92
 
93
  return $notices;
94
+ }, 10, 2);
95
  }
96
+
97
+ if( defined('WCLP_PLUGIN_ACTIVE') ) {
98
+ add_action('wbcr/factory/admin_notices', function ($notices, $plugin_name) {
99
+ if( $plugin_name != WCL_Plugin::app()->getPluginName() ) {
100
+ return $notices;
101
+ }
102
+
103
+ if( !current_user_can('update_plugins') ) {
104
+ return $notices;
105
+ }
106
+
107
+ if( WCL_Plugin::app()->premium->is_install_package() ) {
108
+ $package = $this->premium->get_package_data();
109
+ if( version_compare($package['version'], "1.4.3", "<") ) {
110
+ $nonce_action = 'upgrade-plugin_' . WCLP_PLUGIN_BASE;
111
+ $upgrade_url = wp_nonce_url(self_admin_url("update.php?action=upgrade-plugin&plugin=" . urlencode(WCLP_PLUGIN_BASE)), $nonce_action);
112
+ $notice_text = sprintf(__('You must <a href="%s">upgrade the premium version</a> of the Clearfy plugin to version 1.4.2, since the new Clearfy release isn\'t compatible with the previous version of the premium plugin.', 'clearfy'), $upgrade_url);
113
+
114
+ $notices[] = [
115
+ 'id' => 'clearfy-package_-compatibility-143',
116
+ 'type' => 'error',
117
+ 'dismissible' => false,
118
+ 'dismiss_expires' => 0,
119
+ 'text' => '<p><b>' . __('Clearfy', 'clearfy') . ': </b>' . $notice_text . '</p>'
120
+ ];
121
+ }
122
+ }
123
+
124
+ return $notices;
125
+ }, 10, 2);
126
+ }
127
+ }, 30);
admin/pages/class-page.php CHANGED
@@ -7,14 +7,14 @@
7
  * @version 1.0
8
  */
9
 
10
- class WCL_Page extends WBCR\Factory_Templates_101\Pages\PageBase {
11
 
12
  /**
13
  * Requests assets (js and css) for the page.
14
  *
15
  * @return void
16
  * @since 1.0.0
17
- * @see FactoryPages448_AdminPage
18
  *
19
  */
20
  public function assets($scripts, $styles)
@@ -58,15 +58,15 @@ class WCL_Page extends WBCR\Factory_Templates_101\Pages\PageBase {
58
  $license_page_url = $this->getBaseUrl('clearfy_license');
59
  $upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
60
 
61
- $html = '<div class="wbcr-factory-templates-101-multisite-suggetion">';
62
  $html .= '<div class="wbcr-factory-inner-contanier">';
63
- $html .= '<h3>' . __('Upgrade to Clearfy Business', 'wbcr_factory_templates_101') . '</h3>';
64
- $html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', 'wbcr_factory_templates_101') . '</p>';
65
- $html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', 'wbcr_factory_templates_101') . '</p>';
66
- $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_templates_101') . '</p>';
67
  $html .= '<p style="margin-top:20px">';
68
- $html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', 'wbcr_factory_templates_101') . '</a> ';
69
- $html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', 'wbcr_factory_templates_101') . '</a>';
70
  $html .= '</p>';
71
  $html .= '</div>';
72
  $html .= '</div>';
7
  * @version 1.0
8
  */
9
 
10
+ class WCL_Page extends WBCR\Factory_Templates_105\Pages\PageBase {
11
 
12
  /**
13
  * Requests assets (js and css) for the page.
14
  *
15
  * @return void
16
  * @since 1.0.0
17
+ * @see FactoryPages451_AdminPage
18
  *
19
  */
20
  public function assets($scripts, $styles)
58
  $license_page_url = $this->getBaseUrl('clearfy_license');
59
  $upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
60
 
61
+ $html = '<div class="wbcr-factory-templates-105-multisite-suggetion">';
62
  $html .= '<div class="wbcr-factory-inner-contanier">';
63
+ $html .= '<h3>' . __('Upgrade to Clearfy Business', 'wbcr_factory_templates_105') . '</h3>';
64
+ $html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', 'wbcr_factory_templates_105') . '</p>';
65
+ $html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', 'wbcr_factory_templates_105') . '</p>';
66
+ $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_templates_105') . '</p>';
67
  $html .= '<p style="margin-top:20px">';
68
+ $html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', 'wbcr_factory_templates_105') . '</a> ';
69
+ $html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', 'wbcr_factory_templates_105') . '</a>';
70
  $html .= '</p>';
71
  $html .= '</div>';
72
  $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 FactoryPages448_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 FactoryPages451_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 FactoryPages448_AdminPage
23
  *
24
  * @var string
25
  */
19
  * Mainly used to navigate between pages.
20
  *
21
  * @since 1.0.0
22
+ * @see FactoryPages451_AdminPage
23
  *
24
  * @var string
25
  */
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_Factory449_Plugin $plugin
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
  */
63
- public function __construct(Wbcr_Factory449_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 FactoryPages448_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_Factory449_StyleList $styles
88
- * @param Wbcr_Factory449_ScriptList $scripts
89
  *
90
  * @since 1.4.0
91
  *
55
  /**
56
  * WCL_LicensePage constructor.
57
  *
58
+ * @param \Wbcr_Factory452_Plugin $plugin
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
  */
63
+ public function __construct(Wbcr_Factory452_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 FactoryPages451_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_Factory452_StyleList $styles
88
+ * @param Wbcr_Factory452_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\Factory_Templates_101\Pages\Components {
17
 
18
  public function get_components()
19
  {
@@ -25,7 +25,7 @@ class WCL_ComponentsPage extends \WBCR\Factory_Templates_101\Pages\Components {
25
  'name' => 'cache',
26
  'title' => __('Cache', 'clearfy'),
27
  'type' => 'internal',
28
- 'build' => 'premium',
29
  'disable_button' => is_plugin_active('wp-rocket/wp-rocket.php'),
30
  'disable_button_reason' => __('You cannot activate the component while the wp rocket plugin is active!', 'clearfy'),
31
  'url' => 'https://clearfy.pro/cache/',
13
  exit;
14
  }
15
 
16
+ class WCL_ComponentsPage extends \WBCR\Factory_Templates_105\Pages\Components {
17
 
18
  public function get_components()
19
  {
25
  'name' => 'cache',
26
  'title' => __('Cache', 'clearfy'),
27
  'type' => 'internal',
28
+ 'build' => 'freemium',
29
  'disable_button' => is_plugin_active('wp-rocket/wp-rocket.php'),
30
  'disable_button_reason' => __('You cannot activate the component while the wp rocket plugin is active!', 'clearfy'),
31
  'url' => 'https://clearfy.pro/cache/',
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 FactoryPages448_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_449.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-templates-101-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 FactoryPages451_AdminPage
23
  *
24
  * @var string
25
  */
83
  ?>
84
  <script>
85
  jQuery(document).ready(function($) {
86
+ $.wfactory_452.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-templates-105-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 FactoryPages448_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_449_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 FactoryPages451_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
132
  //'cssClass' => 'postbox'
133
  );
134
 
135
+ return wbcr_factory_452_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 FactoryPages448_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_449.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-templates-101-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 FactoryPages451_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
78
  ?>
79
  <script>
80
  jQuery(document).ready(function($) {
81
+ $.wfactory_452.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-templates-105-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 FactoryPages448_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_449.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-templates-101-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 FactoryPages451_AdminPage
23
  *
24
  * @var string
25
  */
79
  ?>
80
  <script>
81
  jQuery(document).ready(function($) {
82
+ $.wfactory_452.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-templates-105-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\Factory_Templates_101\Pages\License {
17
 
18
  /**
19
  * {@inheritdoc}
@@ -36,12 +36,12 @@
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
- * @param \Wbcr_Factory449_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
- public function __construct( Wbcr_Factory449_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\Factory_Templates_105\Pages\License {
17
 
18
  /**
19
  * {@inheritdoc}
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
+ * @param \Wbcr_Factory452_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
+ public function __construct( Wbcr_Factory452_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-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 FactoryPages448_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 FactoryPages451_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 FactoryPages448_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
@@ -89,7 +89,7 @@ class WCL_QuickStartPage extends WCL_Page {
89
  *
90
  * @return void
91
  * @since 1.0.0
92
- * @see FactoryPages448_AdminPage
93
  *
94
  */
95
  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 FactoryPages451_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
89
  *
90
  * @return void
91
  * @since 1.0.0
92
+ * @see FactoryPages451_AdminPage
93
  *
94
  */
95
  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 FactoryPages448_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 FactoryPages451_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 FactoryPages448_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 FactoryPages451_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 FactoryPages448_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 FactoryPages451_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\Factory_Templates_101\Pages\Setup {
15
 
16
  /**
17
- * @param \Wbcr_Factory449_Plugin $plugin
18
  */
19
- public function __construct(\Wbcr_Factory449_Plugin $plugin)
20
  {
21
  parent::__construct($plugin);
22
 
@@ -53,7 +53,7 @@ class WCL_Setup extends WBCR\Factory_Templates_101\Pages\Setup {
53
  *
54
  * @return void
55
  * @since 1.0.0
56
- * @see FactoryPages448_AdminPage
57
  *
58
  */
59
  public function assets($scripts, $styles)
11
  exit;
12
  }
13
 
14
+ class WCL_Setup extends WBCR\Factory_Templates_105\Pages\Setup {
15
 
16
  /**
17
+ * @param \Wbcr_Factory452_Plugin $plugin
18
  */
19
+ public function __construct(\Wbcr_Factory452_Plugin $plugin)
20
  {
21
  parent::__construct($plugin);
22
 
53
  *
54
  * @return void
55
  * @since 1.0.0
56
+ * @see FactoryPages451_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\Factory_Templates_101\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step6';
14
  protected $id = 'step7';
@@ -24,7 +24,7 @@ class Step_Congratulation extends \WBCR\Factory_Templates_101\Pages\Step_Custom
24
  {
25
  $pricing_page_url = $this->plugin->get_support()->get_pricing_url(true, 'setup_wizard');
26
  ?>
27
- <div class="w-factory-templates-101-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\Factory_Templates_105\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-templates-105-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\Factory_Templates_101\Pages\Step_Custom {
12
 
13
  protected $id = 'step0';
14
  protected $next_id = 'step1';
@@ -21,10 +21,10 @@ class Step_Default extends \WBCR\Factory_Templates_101\Pages\Step_Custom {
21
  public function html()
22
  {
23
  ?>
24
- <div class="w-factory-templates-101-setup__inner-wrap">
25
- <div class="w-factory-templates-101-setup-step__new_onboarding-wrapper">
26
- <p class="w-factory-templates-101-setup-step__new_onboarding-welcome">Welcome to</p>
27
- <h1 class="w-factory-templates-101-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\Factory_Templates_105\Pages\Step_Custom {
12
 
13
  protected $id = 'step0';
14
  protected $next_id = 'step1';
21
  public function html()
22
  {
23
  ?>
24
+ <div class="w-factory-templates-105-setup__inner-wrap">
25
+ <div class="w-factory-templates-105-setup-step__new_onboarding-wrapper">
26
+ <p class="w-factory-templates-105-setup-step__new_onboarding-welcome">Welcome to</p>
27
+ <h1 class="w-factory-templates-105-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\Factory_Templates_101\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\Factory_Templates_101\Pages\Ste
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-templates-101-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\Factory_Templates_105\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-templates-105-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\Factory_Templates_101\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\Factory_Templates_101\Pages\St
27
  wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>");
28
  });
29
  </script>
30
- <div class="w-factory-templates-101-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\Factory_Templates_105\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-templates-105-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\Factory_Templates_101\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step4';
14
  protected $id = 'step5';
15
  protected $next_id = 'step6';
16
 
17
- public function __construct(\WBCR\Factory_Templates_101\Pages\Setup $page)
18
  {
19
  parent::__construct($page);
20
  }
@@ -58,7 +58,7 @@ class Step_Optimize_Images extends \WBCR\Factory_Templates_101\Pages\Step_Custom
58
  ];
59
  ?>
60
 
61
- <div class="w-factory-templates-101-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\Factory_Templates_101\Pages\Step_Custom
165
  $install_robin_plugin_btn->add_class('wclearfy-setup__install-component-button');
166
 
167
  ?>
168
- <div class="w-factory-templates-101-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\Factory_Templates_105\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step4';
14
  protected $id = 'step5';
15
  protected $next_id = 'step6';
16
 
17
+ public function __construct(\WBCR\Factory_Templates_105\Pages\Setup $page)
18
  {
19
  parent::__construct($page);
20
  }
58
  ];
59
  ?>
60
 
61
+ <div class="w-factory-templates-105-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-templates-105-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\Factory_Templates_101\Pages\Step_Custom {
12
 
13
  protected $prev_id = 'step1';
14
  protected $id = 'step2';
@@ -26,7 +26,7 @@ class Step_Plugins extends \WBCR\Factory_Templates_101\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-templates-101-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\Factory_Templates_105\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-templates-105-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\Factory_Templates_101\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\Factory_Templates_105\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\Factory_Templates_101\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\Factory_Templates_105\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.9.6
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  * Author URI: https://cm-wp.com
11
- * Framework Version: FACTORY_449_VERSION
12
  */
13
 
14
  // Exit if accessed directly
@@ -26,21 +26,21 @@ if( !defined('ABSPATH') ) {
26
 
27
  require_once(dirname(__FILE__) . '/libs/factory/core/includes/class-factory-requirements.php');
28
 
29
- $plugin_info = array(
30
  'prefix' => 'wbcr_clearfy_',
31
  'plugin_name' => 'wbcr_clearfy',
32
  'plugin_title' => __('Clearfy', 'clearfy'),
33
 
34
  // PLUGIN SUPPORT
35
- 'support_details' => array(
36
  'url' => 'http://clearfy.pro',
37
- 'pages_map' => array(
38
  'features' => 'premium-features', // {site}/premium-features
39
  'pricing' => 'pricing', // {site}/prices
40
  'support' => 'support', // {site}/support
41
  'docs' => 'docs' // {site}/docs
42
- )
43
- ),
44
  //todo: for compatibility with Robin image optimizer
45
  'freemius_plugin_id' => '2315',
46
  'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
@@ -61,20 +61,20 @@ $plugin_info = array(
61
 
62
  // PLUGIN PREMIUM SETTINGS
63
  'has_premium' => true,
64
- 'license_settings' => array(
65
  'provider' => 'freemius',
66
  'slug' => 'clearfy_package',
67
  'plugin_id' => '2315',
68
  'public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
69
  'price' => 29,
70
  'has_updates' => true,
71
- 'updates_settings' => array(
72
  'maybe_rollback' => true,
73
- 'rollback_settings' => array(
74
  'prev_stable_version' => '0.0.0'
75
- )
76
- )
77
- ),
78
 
79
  // PLUGIN SUBSCRIBE FORM
80
  'subscribe_widget' => true,
@@ -82,66 +82,70 @@ $plugin_info = array(
82
 
83
  // PLUGIN ADVERTS
84
  'render_adverts' => true,
85
- 'adverts_settings' => array(
86
  'dashboard_widget' => true, // show dashboard widget (default: false)
87
  'right_sidebar' => true, // show adverts sidebar (default: false)
88
  'notice' => true, // show notice message (default: false)
89
- ),
90
  // FRAMEWORK MODULES
91
- 'load_factory_modules' => array(
92
- array('libs/factory/bootstrap', 'factory_bootstrap_449', 'admin'),
93
- array('libs/factory/forms', 'factory_forms_446', 'admin'),
94
- array('libs/factory/pages', 'factory_pages_448', 'admin'),
95
- array('libs/factory/templates', 'factory_templates_101', 'all'),
96
- array('libs/factory/freemius', 'factory_freemius_137', 'all'),
97
- array('libs/factory/adverts', 'factory_adverts_127', 'admin'),
98
- array('libs/factory/logger', 'factory_logger_114', 'all'),
99
-
100
- ),
101
- 'load_plugin_components' => array(
102
- 'disable_notices' => array(
103
  'autoload' => 'components/disable-admin-notices/clearfy.php',
104
  'plugin_prefix' => 'WDN_'
105
- ),
106
- 'cyrlitera' => array(
107
  'autoload' => 'components/cyrlitera/clearfy.php',
108
  'plugin_prefix' => 'WCTR_'
109
- ),
110
- 'updates_manager' => array(
111
  'autoload' => 'components/updates-manager/clearfy.php',
112
  'plugin_prefix' => 'WUPM_'
113
- ),
114
- 'comments_tools' => array(
115
  'autoload' => 'components/comments-plus/clearfy.php',
116
  'plugin_prefix' => 'WCM_'
117
- ),
118
- 'ga_cache' => array(
119
  'autoload' => 'components/ga-cache/clearfy.php',
120
  'plugin_prefix' => 'WGA_'
121
- ),
122
- 'assets_manager' => array(
123
  'autoload' => 'components/assets-manager/clearfy.php',
124
  'plugin_prefix' => 'WGZ_'
125
- ),
126
- 'minify_and_combine' => array(
127
  'autoload' => 'components/minify-and-combine/clearfy.php',
128
  'plugin_prefix' => 'WMAC_'
129
- ),
130
- 'html_minify' => array(
131
  'autoload' => 'components/html-minify/clearfy.php',
132
  'plugin_prefix' => 'WHTM_'
133
- ),
134
- )
135
- );
 
 
 
 
136
 
137
 
138
 
139
- $clearfy_compatibility = new Wbcr_Factory449_Requirements(__FILE__, array_merge($plugin_info, array(
140
  'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
141
  'required_php_version' => '7.0',
142
  'required_wp_version' => '5.2.0',
143
  'required_clearfy_check_component' => false
144
- )));
145
 
146
  /**
147
  * If the plugin is compatible, then it will continue its work, otherwise it will be stopped,
@@ -167,7 +171,7 @@ define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
167
 
168
  // Plugin version
169
  define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
170
- define('WCL_FRAMEWORK_VER', 'FACTORY_449_VERSION');
171
 
172
  define('WCL_PLUGIN_DIR', dirname(__FILE__));
173
  define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
@@ -185,13 +189,13 @@ try {
185
  require_once(WCL_PLUGIN_DIR . '/libs/factory/core/boot.php');
186
  require_once(WCL_PLUGIN_DIR . '/includes/class.plugin.php');
187
 
188
- new WCL_Plugin(__FILE__, array_merge($plugin_info, array(
189
  'plugin_version' => WCL_PLUGIN_VERSION,
190
  'plugin_text_domain' => $clearfy_compatibility->get_text_domain(),
191
- )));
192
  } catch( Exception $e ) {
193
  // Plugin wasn't initialized due to an error
194
- define('WRIO_PLUGIN_THROW_ERROR', true);
195
 
196
  $clearfy_plugin_error_func = function () use ($e) {
197
  $error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Clearfy', $e->getMessage(), $e->getCode());
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: 2.0.0
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  * Author URI: https://cm-wp.com
11
+ * Framework Version: FACTORY_452_VERSION
12
  */
13
 
14
  // Exit if accessed directly
26
 
27
  require_once(dirname(__FILE__) . '/libs/factory/core/includes/class-factory-requirements.php');
28
 
29
+ $plugin_info = [
30
  'prefix' => 'wbcr_clearfy_',
31
  'plugin_name' => 'wbcr_clearfy',
32
  'plugin_title' => __('Clearfy', 'clearfy'),
33
 
34
  // PLUGIN SUPPORT
35
+ 'support_details' => [
36
  'url' => 'http://clearfy.pro',
37
+ 'pages_map' => [
38
  'features' => 'premium-features', // {site}/premium-features
39
  'pricing' => 'pricing', // {site}/prices
40
  'support' => 'support', // {site}/support
41
  'docs' => 'docs' // {site}/docs
42
+ ]
43
+ ],
44
  //todo: for compatibility with Robin image optimizer
45
  'freemius_plugin_id' => '2315',
46
  'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
61
 
62
  // PLUGIN PREMIUM SETTINGS
63
  'has_premium' => true,
64
+ 'license_settings' => [
65
  'provider' => 'freemius',
66
  'slug' => 'clearfy_package',
67
  'plugin_id' => '2315',
68
  'public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
69
  'price' => 29,
70
  'has_updates' => true,
71
+ 'updates_settings' => [
72
  'maybe_rollback' => true,
73
+ 'rollback_settings' => [
74
  'prev_stable_version' => '0.0.0'
75
+ ]
76
+ ]
77
+ ],
78
 
79
  // PLUGIN SUBSCRIBE FORM
80
  'subscribe_widget' => true,
82
 
83
  // PLUGIN ADVERTS
84
  'render_adverts' => true,
85
+ 'adverts_settings' => [
86
  'dashboard_widget' => true, // show dashboard widget (default: false)
87
  'right_sidebar' => true, // show adverts sidebar (default: false)
88
  'notice' => true, // show notice message (default: false)
89
+ ],
90
  // FRAMEWORK MODULES
91
+ 'load_factory_modules' => [
92
+ ['libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'],
93
+ ['libs/factory/forms', 'factory_forms_449', 'admin'],
94
+ ['libs/factory/pages', 'factory_pages_451', 'admin'],
95
+ ['libs/factory/templates', 'factory_templates_105', 'all'],
96
+ ['libs/factory/freemius', 'factory_freemius_139', 'all'],
97
+ ['libs/factory/adverts', 'factory_adverts_129', 'admin'],
98
+ ['libs/factory/logger', 'factory_logger_117', 'all'],
99
+
100
+ ],
101
+ 'load_plugin_components' => [
102
+ 'disable_notices' => [
103
  'autoload' => 'components/disable-admin-notices/clearfy.php',
104
  'plugin_prefix' => 'WDN_'
105
+ ],
106
+ 'cyrlitera' => [
107
  'autoload' => 'components/cyrlitera/clearfy.php',
108
  'plugin_prefix' => 'WCTR_'
109
+ ],
110
+ 'updates_manager' => [
111
  'autoload' => 'components/updates-manager/clearfy.php',
112
  'plugin_prefix' => 'WUPM_'
113
+ ],
114
+ 'comments_tools' => [
115
  'autoload' => 'components/comments-plus/clearfy.php',
116
  'plugin_prefix' => 'WCM_'
117
+ ],
118
+ 'ga_cache' => [
119
  'autoload' => 'components/ga-cache/clearfy.php',
120
  'plugin_prefix' => 'WGA_'
121
+ ],
122
+ 'assets_manager' => [
123
  'autoload' => 'components/assets-manager/clearfy.php',
124
  'plugin_prefix' => 'WGZ_'
125
+ ],
126
+ 'minify_and_combine' => [
127
  'autoload' => 'components/minify-and-combine/clearfy.php',
128
  'plugin_prefix' => 'WMAC_'
129
+ ],
130
+ 'html_minify' => [
131
  'autoload' => 'components/html-minify/clearfy.php',
132
  'plugin_prefix' => 'WHTM_'
133
+ ],
134
+ 'cache' => [
135
+ 'autoload' => 'components/cache/clearfy.php',
136
+ 'plugin_prefix' => 'WCACHE_'
137
+ ],
138
+ ]
139
+ ];
140
 
141
 
142
 
143
+ $clearfy_compatibility = new Wbcr_Factory452_Requirements(__FILE__, array_merge($plugin_info, [
144
  'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
145
  'required_php_version' => '7.0',
146
  'required_wp_version' => '5.2.0',
147
  'required_clearfy_check_component' => false
148
+ ]));
149
 
150
  /**
151
  * If the plugin is compatible, then it will continue its work, otherwise it will be stopped,
171
 
172
  // Plugin version
173
  define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
174
+ define('WCL_FRAMEWORK_VER', 'FACTORY_452_VERSION');
175
 
176
  define('WCL_PLUGIN_DIR', dirname(__FILE__));
177
  define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
189
  require_once(WCL_PLUGIN_DIR . '/libs/factory/core/boot.php');
190
  require_once(WCL_PLUGIN_DIR . '/includes/class.plugin.php');
191
 
192
+ new WCL_Plugin(__FILE__, array_merge($plugin_info, [
193
  'plugin_version' => WCL_PLUGIN_VERSION,
194
  'plugin_text_domain' => $clearfy_compatibility->get_text_domain(),
195
+ ]));
196
  } catch( Exception $e ) {
197
  // Plugin wasn't initialized due to an error
198
+ define('WCL_PLUGIN_THROW_ERROR', true);
199
 
200
  $clearfy_plugin_error_func = function () use ($e) {
201
  $error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Clearfy', $e->getMessage(), $e->getCode());
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_Factory449_Activator
9
  * @version 1.0
10
  */
11
 
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WGNZ_Activation extends Wbcr_Factory449_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_Factory452_Activator
9
  * @version 1.0
10
  */
11
 
14
  exit;
15
  }
16
 
17
+ class WGNZ_Activation extends Wbcr_Factory452_Activator {
18
 
19
  /**
20
  * Runs activation actions.
components/assets-manager/admin/ajax/save-settings.php CHANGED
@@ -96,7 +96,7 @@ function wam_save_settings_action()
96
  wbcr_gnz_deploy_mu_plugin();
97
 
98
  // Flush cache for all cache plugins
99
- WBCR\Factory_Templates_101\Helpers::flushPageCache();
100
  }
101
 
102
  wp_send_json_success([
96
  wbcr_gnz_deploy_mu_plugin();
97
 
98
  // Flush cache for all cache plugins
99
+ WBCR\Factory_Templates_105\Helpers::flushPageCache();
100
  }
101
 
102
  wp_send_json_success([
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_Factory449_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_448_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
211
  }
147
  *
148
  * @param array $widgets
149
  * @param string $position
150
+ * @param Wbcr_Factory452_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_451_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
211
  }
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\Factory_Templates_101\Pages\PageBase {
20
 
21
  /**
22
  * The id of the page in the admin menu.
@@ -24,7 +24,7 @@ class WGZ_AssetsManagerPage extends WBCR\Factory_Templates_101\Pages\PageBase {
24
  * Mainly used to navigate between pages.
25
  *
26
  * @since 1.0.0
27
- * @see FactoryPages448_AdminPage
28
  *
29
  * @var string
30
  */
@@ -48,9 +48,9 @@ class WGZ_AssetsManagerPage extends WBCR\Factory_Templates_101\Pages\PageBase {
48
  public $available_for_multisite = true;
49
 
50
  /**
51
- * @param Wbcr_Factory449_Plugin $plugin
52
  */
53
- public function __construct(Wbcr_Factory449_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\Factory_Templates_105\Pages\PageBase {
20
 
21
  /**
22
  * The id of the page in the admin menu.
24
  * Mainly used to navigate between pages.
25
  *
26
  * @since 1.0.0
27
+ * @see FactoryPages451_AdminPage
28
  *
29
  * @var string
30
  */
48
  public $available_for_multisite = true;
49
 
50
  /**
51
+ * @param Wbcr_Factory452_Plugin $plugin
52
  */
53
+ public function __construct(Wbcr_Factory452_Plugin $plugin)
54
  {
55
  $this->menu_title = __('Assets manager', 'gonzales');
56
 
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_449_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_449', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_446', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_448', 'admin'),
74
- array('libs/factory/clearfy', 'factory_templates_101', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_127', 'admin')
76
  )
77
  );
78
 
79
- $wgnz_compatibility = new Wbcr_Factory449_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_452_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_449', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_451', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_templates_105', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_129', 'admin')
76
  )
77
  );
78
 
79
+ $wgnz_compatibility = new Wbcr_Factory452_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_Factory449_Plugin {
15
 
16
  /**
17
  * @see self::app()
18
- * @var Wbcr_Factory449_Plugin
19
  */
20
  private static $app;
21
 
@@ -53,7 +53,7 @@ class WGZ_Plugin extends Wbcr_Factory449_Plugin {
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
- * @return \Wbcr_Factory449_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_Factory452_Plugin {
15
 
16
  /**
17
  * @see self::app()
18
+ * @var Wbcr_Factory452_Plugin
19
  */
20
  private static $app;
21
 
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
+ * @return \Wbcr_Factory452_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_Factory449_Plugin $plugin
29
  */
30
- public function __construct(Wbcr_Factory449_Plugin $plugin)
31
  {
32
  $this->plugin = $plugin;
33
 
25
  private $deregistered = [];
26
 
27
  /**
28
+ * @param Wbcr_Factory452_Plugin $plugin
29
  */
30
+ public function __construct(Wbcr_Factory452_Plugin $plugin)
31
  {
32
  $this->plugin = $plugin;
33
 
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\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\PageBase $page
96
  */
97
- public function print_template( $template, $data = [], WBCR\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\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\Factory_Templates_105\Pages\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\Factory_Templates_105\Pages\PageBase $page
96
  */
97
+ public function print_template( $template, $data = [], WBCR\Factory_Templates_105\Pages\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_Factory449_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_Factory452_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_Factory449_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_Factory452_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_Factory449_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_Factory452_Update {
8
 
9
  public function install() {
10
  $settings = get_option( $this->plugin->getPrefix() . 'assets_states', [] );
components/assets-manager/mu-plugins/assets-manager.php CHANGED
@@ -3,7 +3,7 @@
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_449_VERSION
7
  */
8
 
9
  // todo: проверить, как работает кеширование
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_452_VERSION
7
  */
8
 
9
  // todo: проверить, как работает кеширование
components/cache/admin/activation.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Activator for the cyrlitera
5
+ *
6
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
+ * @copyright (c) 09.03.2018, Webcraftic
8
+ * @see Wbcr_Factory452_Activator
9
+ * @version 1.0
10
+ */
11
+
12
+ // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
+ exit;
15
+ }
16
+
17
+ class WCACHE_Activation extends Wbcr_Factory452_Activator {
18
+
19
+ /**
20
+ * Runs activation actions.
21
+ *
22
+ * @since 1.0.0
23
+ */
24
+ public function activate()
25
+ {
26
+ require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
27
+ try {
28
+ WCL_Cache::activate();
29
+ } catch( Exception $e ) {
30
+ //nothing
31
+ }
32
+ }
33
+
34
+ public function deactivate()
35
+ {
36
+ require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
37
+ try {
38
+ WCL_Cache::deactivate();
39
+ } catch( Exception $e ) {
40
+ //nothing
41
+ }
42
+ }
43
+ }
components/cache/admin/boot.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Clearfy quick start options
4
+ *
5
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>
6
+ * @copyright (c) 03.06.2020, Webcraftic
7
+ * @version 1.0
8
+ */
9
+
10
+ add_filter("wbcr_clearfy_group_options", function ($options) {
11
+ $options[] = [
12
+ 'name' => 'enable_cache',
13
+ 'title' => __('Enable cache', 'clearfy'),
14
+ 'tags' => ['optimize_performance']
15
+ ];
16
+
17
+ $options[] = [
18
+ 'name' => 'dont_cache_for_logged_in_users',
19
+ 'title' => __('Don\'t cache for logged-in users', 'clearfy'),
20
+ 'tags' => ['optimize_performance']
21
+ ];
22
+
23
+ $options[] = [
24
+ 'name' => 'cache_reject_uri',
25
+ 'title' => __('Never Cache URL(s)', 'clearfy'),
26
+ 'tags' => []
27
+ ];
28
+
29
+ $options[] = [
30
+ 'name' => 'preload_cache',
31
+ 'title' => __('Preload cache', 'clearfy'),
32
+ 'tags' => []
33
+ ];
34
+
35
+ $options[] = [
36
+ 'name' => 'clear_cache_for_newpost',
37
+ 'title' => __('Clear cache for new post', 'clearfy'),
38
+ 'tags' => ['optimize_performance']
39
+ ];
40
+
41
+ $options[] = [
42
+ 'name' => 'exclude_files',
43
+ 'title' => __('Filenames that can be cached', 'clearfy'),
44
+ 'tags' => []
45
+ ];
46
+
47
+ $options[] = [
48
+ 'name' => 'exclude_pages',
49
+ 'title' => __('Rejected User Agents', 'clearfy'),
50
+ 'tags' => []
51
+ ];
52
+
53
+ return $options;
54
+ });
55
+
56
+ add_filter('wclearfy/setup_wizard/speed_optimize_step/form_options', function ($options) {
57
+ array_unshift($options, [
58
+ 'type' => 'checkbox',
59
+ 'way' => 'buttons',
60
+ 'name' => 'enable_cache',
61
+ 'title' => __('Enable cache', 'clearfy'),
62
+ 'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
63
+ 'hint' => __('This option enable cache to generates static html files from your dynamic WordPress blog. After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts.', 'clearfy'),
64
+ 'default' => true
65
+ ]);
66
+
67
+ return $options;
68
+ });
69
+
70
+ add_action('wclearfy/setup_wizard/speed_optimize_step/continue_step', function () {
71
+ require_once WCACHE_PLUGIN_DIR . '/includes/includes/helpers.php';
72
+ try {
73
+ \WCL_Cache_Helpers::modifyHtaccess();
74
+ } catch( \Exception $e ) {
75
+
76
+ }
77
+ });
78
+
79
+ add_action('wfactory/activated_' . WCL_Plugin::app()->getPluginName() . '_component', function ($component_name) {
80
+ //todo: Проверить совместимость с плагинами, включить или отключить компонент в зависимсти от результатов
81
+ });
components/cache/admin/index.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php
2
+ // Silence is golden.
{admin → components/cache/admin}/pages/class-pages-performance-cache.php RENAMED
@@ -10,7 +10,7 @@ if( !defined('ABSPATH') ) {
10
  exit;
11
  }
12
 
13
- class WCL_CachePage extends WCL_Page {
14
 
15
  /**
16
  * @see {@inheritDoc}
@@ -43,7 +43,28 @@ class WCL_CachePage extends WCL_Page {
43
  *
44
  * @var bool
45
  */
46
- public $available_for_multisite = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
  /**
49
  * @param WCL_Plugin $plugin
@@ -53,8 +74,8 @@ class WCL_CachePage extends WCL_Page {
53
  $this->menu_title = __('Cache', 'clearfy');
54
  $this->page_menu_short_description = __('Cache pages', 'clearfy');
55
 
56
- if( $plugin->premium->is_activate() && $plugin->premium->is_install_package() && !WCL_Plugin::app()->isActivateComponent('cache') ) {
57
- $this->type = 'page';
58
  }
59
 
60
  parent::__construct($plugin);
@@ -62,6 +83,39 @@ class WCL_CachePage extends WCL_Page {
62
  $this->plugin = $plugin;
63
  }
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  /**
66
  * Permalinks options.
67
  *
@@ -84,7 +138,7 @@ class WCL_CachePage extends WCL_Page {
84
  'title' => __('Enable cache', 'clearfy'),
85
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
86
  'hint' => __('This option enable cache to generates static html files from your dynamic WordPress blog. After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts.', 'clearfy'),
87
- 'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
88
  'default' => false
89
  ];
90
 
@@ -95,7 +149,7 @@ class WCL_CachePage extends WCL_Page {
95
  'title' => __('Don\'t cache for logged-in users', 'clearfy'),
96
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
97
  'hint' => __('Don\'t show the cached version for logged-in users', 'clearfy'),
98
- 'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
99
  'default' => false
100
  ];
101
 
@@ -134,10 +188,10 @@ If the commonly used files are cached by browser, the visitors’ browsers do no
134
  //'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
135
  '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.
136
  Use (.*) wildcards to address multiple URLs under a given path.', 'clearfy'),
137
- 'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? [
138
  'disabled' => 'disabled',
139
  'placeholder' => '/members/(.*)'
140
- ] : ['placeholder' => '/members/(.*)'],
141
  ];
142
 
143
  $options[] = [
@@ -204,7 +258,7 @@ The Preload runs every 5 minutes. If you want set a specific interval. Note: The
204
  'title' => __('Clear cache for new post', 'clearfy'),
205
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
206
  'hint' => __('Clear cache files when a post or page is published', 'clearfy'),
207
- 'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
208
  'default' => true
209
  ],
210
 
@@ -215,7 +269,7 @@ The Preload runs every 5 minutes. If you want set a specific interval. Note: The
215
  'title' => __('Clear cache for updated Post', 'clearfy'),
216
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
217
  'hint' => __('Clear cache files when a post or page is updated', 'clearfy'),
218
- 'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
219
  'default' => true
220
  ],
221
  [
@@ -224,7 +278,7 @@ The Preload runs every 5 minutes. If you want set a specific interval. Note: The
224
  'title' => __('Filenames that can be cached', 'clearfy'),
225
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
226
  'hint' => __('Add here those filenames that can be cached, even if they match one of the rejected substring specified above.', 'clearfy'),
227
- 'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
228
  'default' => 'wp-comments-popup.php
229
  wp-links-opml.php
230
  wp-locations.php
@@ -236,7 +290,7 @@ wp-locations.php
236
  'title' => __('Rejected User Agents', 'clearfy'),
237
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
238
  'hint' => __('Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists.', 'clearfy'),
239
- 'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
240
  'default' => 'bot
241
  ia_archive
242
  slurp
@@ -250,13 +304,13 @@ Yandex
250
 
251
  $form_options = [];
252
 
253
- if( !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ) {
254
  foreach($options as &$option) {
255
  if( 'checkbox' === $option['type'] ) {
256
  $option['value'] = false;
257
  }
258
  }
259
- }
260
 
261
  $form_options[] = [
262
  'type' => 'form-group',
@@ -279,7 +333,7 @@ Yandex
279
  ?>
280
  <script>
281
  jQuery(document).ready(function($) {
282
- $.wfactory_449.hooks.add('core/components/updated', function(button, data) {
283
  console.log(data);
284
 
285
  if( data.plugin_action === 'install' ) {
@@ -289,23 +343,40 @@ Yandex
289
 
290
  });
291
 
292
- $.wfactory_449.hooks.add('core/components/activated', function(button, data) {
293
  button.remove();
294
  window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
295
 
296
  });
297
  });
298
  </script>
299
- <div class="wbcr-factory-templates-101-multisite-suggetion">
300
  <div class="wbcr-factory-inner-contanier">
301
- <h3><?php _e('Install Page Cache component', 'clearfy') ?></h3>
302
- <p><?php _e('To start page caching, you need to install the additional component Cache!', 'clearfy') ?></p>
303
- <p><?php _e('Installing the component will not take you long, just click the install button, then activate.', 'clearfy') ?></p>
 
 
 
304
  <p style="margin-top:20px">
305
- <?php $install_button->render_link(); ?>
 
306
  </p>
307
  </div>
308
  </div>
309
  <?php
310
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
311
  }
10
  exit;
11
  }
12
 
13
+ class WCACHE_CachePage extends WBCR\Factory_Templates_105\Pages\PageBase {
14
 
15
  /**
16
  * @see {@inheritDoc}
43
  *
44
  * @var bool
45
  */
46
+ //public $available_for_multisite = true;
47
+
48
+ protected $errors = [
49
+ 98 => "<label>.htaccess was not found</label> <a target='_blank' href='http://www.wpfastestcache.com/warnings/htaccess-was-not-found/'>Read More</a>",
50
+ 99 => "define('WP_CACHE', true); is needed to be added into wp-config.php",
51
+ 100 => "You have to set <strong><u><a href=" . "'/wp-admin/options-permalink.php'>permalinks</a></u></strong>",
52
+ 101 => "Fast Velocity Minify needs to be deactivated",
53
+ 102 => 'Far Future Expiration Plugin needs to be deactivated',
54
+ 103 => "SG Optimizer needs to be deactived",
55
+ 104 => "AdRotate needs to be deactived",
56
+ 105 => "MobilePress needs to be deactived",
57
+ 106 => "Speed Booster Pack needs to be deactived",
58
+ 107 => "WP Performance Score Booster needs to be deactivated<br>This plugin has aldready Gzip, Leverage Browser Caching features",
59
+ 109 => "Check and Enable GZIP compression needs to be deactivated<br>This plugin has aldready Gzip feature",
60
+ 110 => "GZippy needs to be deactivated<br>This plugin has aldready Gzip feature",
61
+ 111 => "GZip Ninja Speed Compression needs to be deactivated<br>This plugin has aldready Gzip feature",
62
+ 112 => "WordPress Gzip Compression needs to be deactivated<br>This plugin has aldready Gzip feature",
63
+ 113 => "GZIP Output needs to be deactivated<br>This plugin has aldready Gzip feature",
64
+ 114 => "Head Cleaner needs to be deactivated",
65
+ 115 => "Far Future Expiration Plugin needs to be deactivated",
66
+ ];
67
+
68
 
69
  /**
70
  * @param WCL_Plugin $plugin
74
  $this->menu_title = __('Cache', 'clearfy');
75
  $this->page_menu_short_description = __('Cache pages', 'clearfy');
76
 
77
+ if( $plugin->premium->is_activate() && $plugin->premium->is_install_package() ) {
78
+ $this->available_for_multisite = true;
79
  }
80
 
81
  parent::__construct($plugin);
83
  $this->plugin = $plugin;
84
  }
85
 
86
+ /**
87
+ * We register notifications for some actions
88
+ *
89
+ * @param $notices
90
+ * @param \Wbcr_Factory452_Plugin $plugin
91
+ *
92
+ * @return array
93
+ * @see libs\factory\pages\themplates\FactoryPages451_ImpressiveThemplate
94
+ */
95
+ public function getActionNotices($notices)
96
+ {
97
+
98
+ $notices[] = [
99
+ 'conditions' => [
100
+ 'wclearfy-cache-cleared' => 1
101
+ ],
102
+ 'type' => 'success',
103
+ 'message' => 'Cache has been cleared!'
104
+ ];
105
+
106
+ foreach($this->errors as $key => $error_message) {
107
+ $notices[] = [
108
+ 'conditions' => [
109
+ 'wclearfy-cache-error' => $key
110
+ ],
111
+ 'type' => 'danger',
112
+ 'message' => $error_message
113
+ ];
114
+ }
115
+
116
+ return $notices;
117
+ }
118
+
119
  /**
120
  * Permalinks options.
121
  *
138
  'title' => __('Enable cache', 'clearfy'),
139
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
140
  'hint' => __('This option enable cache to generates static html files from your dynamic WordPress blog. After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts.', 'clearfy'),
141
+ //'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
142
  'default' => false
143
  ];
144
 
149
  'title' => __('Don\'t cache for logged-in users', 'clearfy'),
150
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
151
  'hint' => __('Don\'t show the cached version for logged-in users', 'clearfy'),
152
+ //'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
153
  'default' => false
154
  ];
155
 
188
  //'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
189
  '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.
190
  Use (.*) wildcards to address multiple URLs under a given path.', 'clearfy'),
191
+ /*'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? [
192
  'disabled' => 'disabled',
193
  'placeholder' => '/members/(.*)'
194
+ ] : ['placeholder' => '/members/(.*)'],*/
195
  ];
196
 
197
  $options[] = [
258
  'title' => __('Clear cache for new post', 'clearfy'),
259
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
260
  'hint' => __('Clear cache files when a post or page is published', 'clearfy'),
261
+ //'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
262
  'default' => true
263
  ],
264
 
269
  'title' => __('Clear cache for updated Post', 'clearfy'),
270
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
271
  'hint' => __('Clear cache files when a post or page is updated', 'clearfy'),
272
+ //'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
273
  'default' => true
274
  ],
275
  [
278
  'title' => __('Filenames that can be cached', 'clearfy'),
279
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
280
  'hint' => __('Add here those filenames that can be cached, even if they match one of the rejected substring specified above.', 'clearfy'),
281
+ //'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
282
  'default' => 'wp-comments-popup.php
283
  wp-links-opml.php
284
  wp-locations.php
290
  'title' => __('Rejected User Agents', 'clearfy'),
291
  'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
292
  'hint' => __('Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists.', 'clearfy'),
293
+ //'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
294
  'default' => 'bot
295
  ia_archive
296
  slurp
304
 
305
  $form_options = [];
306
 
307
+ /*if( !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ) {
308
  foreach($options as &$option) {
309
  if( 'checkbox' === $option['type'] ) {
310
  $option['value'] = false;
311
  }
312
  }
313
+ }*/
314
 
315
  $form_options[] = [
316
  'type' => 'form-group',
333
  ?>
334
  <script>
335
  jQuery(document).ready(function($) {
336
+ $.wfactory_452.hooks.add('core/components/updated', function(button, data) {
337
  console.log(data);
338
 
339
  if( data.plugin_action === 'install' ) {
343
 
344
  });
345
 
346
+ $.wfactory_452.hooks.add('core/components/activated', function(button, data) {
347
  button.remove();
348
  window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
349
 
350
  });
351
  });
352
  </script>
353
+ <div class="wbcr-factory-templates-105-multisite-suggetion">
354
  <div class="wbcr-factory-inner-contanier">
355
+ <h3><?php
356
+ _e('Install Page Cache component', 'clearfy') ?></h3>
357
+ <p><?php
358
+ _e('To start page caching, you need to install the additional component Cache!', 'clearfy') ?></p>
359
+ <p><?php
360
+ _e('Installing the component will not take you long, just click the install button, then activate.', 'clearfy') ?></p>
361
  <p style="margin-top:20px">
362
+ <?php
363
+ $install_button->render_link(); ?>
364
  </p>
365
  </div>
366
  </div>
367
  <?php
368
  }
369
+
370
+ public function afterFormSave()
371
+ {
372
+ try {
373
+ do_action("wclearfy/cache/settings_page/after_form_save");
374
+
375
+ WCL_Cache_Helpers::modifyHtaccess();
376
+ } catch( Exception $e ) {
377
+ if( !empty($e->getCode()) && isset($this->errors[$e->getCode()]) ) {
378
+ $this->redirectToAction('index', ['wclearfy-cache-error' => $e->getCode()]);
379
+ }
380
+ }
381
+ }
382
  }
components/cache/cache.php ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Name: Webcraftic Clearfy Cache
4
+ * Plugin URI: https://webcraftic.com
5
+ * Description: Webcraftic Clearfy Cache
6
+ * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.0.0
8
+ * Text Domain: clearfy_cache
9
+ * Domain Path: /languages/
10
+ * Author URI: https://webcraftic.com
11
+ * Framework Version: FACTORY_452_VERSION
12
+ */
13
+
14
+ // Exit if accessed directly
15
+ if( !defined('ABSPATH') ) {
16
+ exit;
17
+ }
18
+
19
+ /**
20
+ * Developers who contributions in the development plugin:
21
+ *
22
+ * Alexander Kovalev
23
+ * ---------------------------------------------------------------------------------
24
+ * Full plugin development.
25
+ *
26
+ * Email: alex.kovalevv@gmail.com
27
+ * Personal card: https://alexkovalevv.github.io
28
+ * Personal repo: https://github.com/alexkovalevv
29
+ * ---------------------------------------------------------------------------------
30
+ */
31
+
32
+ /**
33
+ * -----------------------------------------------------------------------------
34
+ * CHECK REQUIREMENTS
35
+ * Check compatibility with php and wp version of the user's site. As well as checking
36
+ * compatibility with other plugins from Webcraftic.
37
+ * -----------------------------------------------------------------------------
38
+ */
39
+
40
+ require_once(dirname(__FILE__) . '/libs/factory/core/includes/class-factory-requirements.php');
41
+
42
+ // @formatter:off
43
+ $wcache_plugin_info = [
44
+ 'prefix' => 'wcache_',
45
+ 'plugin_name' => 'wcache',
46
+ 'plugin_title' => __('Webcraftic Clearfy Cache', 'clearfy_cache'),
47
+
48
+ // PLUGIN SUPPORT
49
+ 'support_details' => [
50
+ 'url' => 'https://webcraftic.com',
51
+ 'pages_map' => [
52
+ 'support' => 'support', // {site}/support
53
+ 'docs' => 'docs' // {site}/docs
54
+ ]
55
+ ],
56
+
57
+ // PLUGIN SUBSCRIBE FORM
58
+ 'subscribe_widget' => true,
59
+ 'subscribe_settings' => ['group_id' => '105408892'],
60
+
61
+ // PLUGIN ADVERTS
62
+ 'render_adverts' => true,
63
+ 'adverts_settings' => [
64
+ 'dashboard_widget' => true, // show dashboard widget (default: false)
65
+ 'right_sidebar' => true, // show adverts sidebar (default: false)
66
+ 'notice' => true, // show notice message (default: false)
67
+ ],
68
+
69
+ // FRAMEWORK MODULES
70
+ 'load_factory_modules' => [
71
+ ['libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'],
72
+ ['libs/factory/forms', 'factory_forms_449', 'admin'],
73
+ ['libs/factory/pages', 'factory_pages_451', 'admin'],
74
+ ['libs/factory/clearfy', 'factory_templates_105', 'all'],
75
+ ['libs/factory/adverts', 'factory_adverts_129', 'admin']
76
+ ]
77
+ ];
78
+
79
+ $wcache_compatibility = new Wbcr_Factory452_Requirements(__FILE__, array_merge($wcache_plugin_info, [
80
+ 'plugin_already_activate' => defined('WCACHE_ACTIVE'),
81
+ 'required_php_version' => '5.4',
82
+ 'required_wp_version' => '4.2.0',
83
+ 'required_clearfy_check_component' => false
84
+ ]));
85
+
86
+ /**
87
+ * If the plugin is compatible, then it will continue its work, otherwise it will be stopped,
88
+ * and the user will throw a warning.
89
+ */
90
+ if( !$wcache_compatibility->check() ) {
91
+ return;
92
+ }
93
+
94
+ /**
95
+ * -----------------------------------------------------------------------------
96
+ * CONSTANTS
97
+ * Install frequently used constants and constants for debugging, which will be
98
+ * removed after compiling the plugin.
99
+ * -----------------------------------------------------------------------------
100
+ */
101
+
102
+ // This plugin is activated
103
+ define('WCACHE_PLUGIN_ACTIVE', true);
104
+ define('WCACHE_PLUGIN_VERSION', $wcache_compatibility->get_plugin_version());
105
+ define('WCACHE_PLUGIN_DIR', dirname(__FILE__));
106
+ define('WCACHE_PLUGIN_BASE', plugin_basename(__FILE__));
107
+ define('WCACHE_PLUGIN_URL', plugins_url(null, __FILE__));
108
+
109
+
110
+
111
+ /**
112
+ * -----------------------------------------------------------------------------
113
+ * PLUGIN INIT
114
+ * -----------------------------------------------------------------------------
115
+ */
116
+
117
+ require_once(WCACHE_PLUGIN_DIR . '/libs/factory/core/boot.php');
118
+ require_once(WCACHE_PLUGIN_DIR . '/includes/class-plugin.php');
119
+
120
+ try {
121
+ new WCTR_Plugin(__FILE__, array_merge($wcache_plugin_info, [
122
+ 'plugin_version' => WCACHE_PLUGIN_VERSION,
123
+ 'plugin_text_domain' => $wcache_compatibility->get_text_domain(),
124
+ ]));
125
+ } catch( Exception $e ) {
126
+ // Plugin wasn't initialized due to an error
127
+ define('WCACHE_THROW_ERROR', true);
128
+
129
+ $wcache_plugin_error_func = function () use ($e) {
130
+ $error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Webcraftic Clearfy Cache', $e->getMessage(), $e->getCode());
131
+ echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
132
+ };
133
+
134
+ add_action('admin_notices', $wcache_plugin_error_func);
135
+ add_action('network_admin_notices', $wcache_plugin_error_func);
136
+ }
137
+ // @formatter:on
components/cache/clearfy.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Этот файл инициализирует этот плагин, как аддон для плагина Clearfy.
4
+ *
5
+ * Файл будет подключен только в плагине Clearfy, используя особый вариант загрузки. Это более простое решение
6
+ * пришло на смену встроенной системы подключения аддонов в фреймворке.
7
+ *
8
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
9
+ * @copyright (c) 2018 Webraftic Ltd
10
+ */
11
+
12
+ // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
+ exit;
15
+ }
16
+
17
+ if( !defined('WCACHE_PLUGIN_ACTIVE') ) {
18
+ define('WCACHE_PLUGIN_VERSION', '1.0.0');
19
+ define('WCACHE_TEXT_DOMAIN', 'clearfy_cache');
20
+ define('WCACHE_PLUGIN_ACTIVE', true);
21
+
22
+ // Этот плагин загружен, как аддон для плагина Clearfy
23
+ define('LOADING_CLEARFY_CACHE_AS_ADDON', true);
24
+
25
+ if( !defined('WCACHE_PLUGIN_DIR') ) {
26
+ define('WCACHE_PLUGIN_DIR', dirname(__FILE__));
27
+ }
28
+
29
+ if( !defined('WCACHE_PLUGIN_BASE') ) {
30
+ define('WCACHE_PLUGIN_BASE', plugin_basename(__FILE__));
31
+ }
32
+
33
+ if( !defined('WCACHE_PLUGIN_URL') ) {
34
+ define('WCACHE_PLUGIN_URL', plugins_url(null, __FILE__));
35
+ }
36
+
37
+ try {
38
+ // Global scripts
39
+ require_once(WCACHE_PLUGIN_DIR . '/includes/3rd-party/class-clearfy-plugin.php');
40
+ new WCACHE_Plugin();
41
+ } catch( Exception $e ) {
42
+ $wcache_plugin_error_func = function () use ($e) {
43
+ $error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Webcraftic Clearfy Cache', $e->getMessage(), $e->getCode());
44
+ echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
45
+ };
46
+
47
+ add_action('admin_notices', $wcache_plugin_error_func);
48
+ add_action('network_admin_notices', $wcache_plugin_error_func);
49
+ }
50
+ }
51
+
52
+
components/cache/includes/3rd-party/class-clearfy-plugin.php ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Exit if accessed directly
3
+ if( !defined('ABSPATH') ) {
4
+ exit;
5
+ }
6
+
7
+ /**
8
+ * Cyrlitera
9
+ *
10
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
+ * @copyright (c) 2018 Webraftic Ltd
12
+ * @version 1.0
13
+ */
14
+ class WCACHE_Plugin {
15
+
16
+ /**
17
+ * @see self::app()
18
+ * @var WCL_Plugin
19
+ */
20
+ private static $app;
21
+
22
+ /**
23
+ * Конструктор
24
+ *
25
+ * Применяет конструктор родительского класса и записывает экземпляр текущего класса в свойство $app.
26
+ * Подробнее о свойстве $app см. self::app()
27
+ *
28
+ * @param string $plugin_path
29
+ * @param array $data
30
+ *
31
+ * @throws Exception
32
+ */
33
+ public function __construct()
34
+ {
35
+ if( !class_exists('WCL_Plugin') ) {
36
+ throw new Exception('Plugin Clearfy is not installed!');
37
+ }
38
+
39
+ self::$app = WCL_Plugin::app();
40
+
41
+ $this->global_scripts();
42
+
43
+ if( is_admin() ) {
44
+ $this->admin_scripts();
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Статический метод для быстрого доступа к интерфейсу плагина.
50
+ *
51
+ * Позволяет разработчику глобально получить доступ к экземпляру класса плагина в любом месте
52
+ * плагина, но при этом разработчик не может вносить изменения в основной класс плагина.
53
+ *
54
+ * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
55
+ * классам.
56
+ *
57
+ * @return WCL_Plugin
58
+ */
59
+ public static function app()
60
+ {
61
+ return self::$app;
62
+ }
63
+
64
+ /**
65
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
66
+ * @since 1.0.0
67
+ */
68
+ protected function init_activation()
69
+ {
70
+ include_once(WCACHE_PLUGIN_DIR . '/admin/activation.php');
71
+ self::app()->registerActivation('WCACHE_Activation');
72
+ }
73
+
74
+ /**
75
+ * @throws \Exception
76
+ * @since 1.0.0
77
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
78
+ */
79
+ private function register_pages()
80
+ {
81
+ self::app()->registerPage('WCACHE_CachePage', WCACHE_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
82
+ }
83
+
84
+ /**
85
+ * @throws \Exception
86
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
87
+ */
88
+ private function admin_scripts()
89
+ {
90
+ $this->init_activation();
91
+ $this->register_pages();
92
+ }
93
+
94
+ private function global_scripts()
95
+ {
96
+ require_once WCACHE_PLUGIN_DIR . '/includes/includes/helpers.php';
97
+ require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
98
+
99
+ if( is_admin() ) {
100
+ require(WCACHE_PLUGIN_DIR . '/admin/boot.php');
101
+ }
102
+
103
+ add_filter('wbcr/clearfy/adminbar_menu_items', function ($menu_items) {
104
+ $menu_items['clearfy-clear-all-cache'] = [
105
+ 'id' => 'clearfy-clear-all-cache',
106
+ 'title' => '<span class="dashicons dashicons-update"></span> ' . __('Clear all cache', 'clearfy'),
107
+ 'href' => add_query_arg('wclearfy_cache_delete', '1')
108
+ ];
109
+
110
+ return $menu_items;
111
+ });
112
+ }
113
+ }
components/cache/includes/3rd-party/index.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php
2
+ // Silence is golden.
components/cache/includes/cache.php ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ require_once 'includes/helpers.php';
3
+ include_once('includes/cache.php');
4
+
5
+ class WCL_Cache {
6
+
7
+ public function __construct()
8
+ {
9
+
10
+ add_action('transition_post_status', array($this, 'on_all_status_transitions'), 10, 3);
11
+
12
+ add_action('init', function () {
13
+ if( current_user_can('manage_options') && isset($_GET['wclearfy_cache_delete']) ) {
14
+ WCL_Cache_Helpers::deleteCache();
15
+ wp_redirect(remove_query_arg('wclearfy_cache_delete'));
16
+ die();
17
+ }
18
+ });
19
+
20
+ if( !is_admin() ) {
21
+ if( isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] ) {
22
+ $cache = new WCL_Create_Cache();
23
+ $cache->createCache();
24
+ }
25
+ }
26
+ }
27
+
28
+ public function on_all_status_transitions($new_status, $old_status, $post)
29
+ {
30
+ if( !WCL_Plugin::app()->getPopulateOption('enable_cache') ) {
31
+ return false;
32
+ }
33
+
34
+ if( !wp_is_post_revision($post->ID) ) {
35
+ if( isset($post->post_type) ) {
36
+ if( $post->post_type == "nf_sub" ) {
37
+ return false;
38
+ }
39
+ }
40
+
41
+ if( WCL_Plugin::app()->getPopulateOption('clear_cache_for_newpost') ) {
42
+ if( $new_status == "publish" && $old_status != "publish" ) {
43
+
44
+ WCL_Cache_Helpers::deleteHomePageCache();
45
+
46
+ //to clear category cache and tag cache
47
+ WCL_Cache_Helpers::singleDeleteCache(false, $post->ID);
48
+
49
+ //to clear widget cache
50
+ WCL_Cache_Helpers::deleteWidgetCache();
51
+ }
52
+ }
53
+
54
+ if( WCL_Plugin::app()->getPopulateOption('clear_cache_for_updated_post') ) {
55
+ if( $new_status == "publish" && $old_status == "publish" ) {
56
+ WCL_Cache_Helpers::singleDeleteCache(false, $post->ID);
57
+
58
+ //to clear widget cache
59
+ WCL_Cache_Helpers::deleteWidgetCache();
60
+ }
61
+ }
62
+
63
+ if( $new_status == "trash" && $old_status == "publish" ) {
64
+ WCL_Cache_Helpers::singleDeleteCache(false, $post->ID);
65
+ } else if( ($new_status == "draft" || $new_status == "pending" || $new_status == "private") && $old_status == "publish" ) {
66
+ WCL_Cache_Helpers::deleteCache();
67
+ }
68
+ }
69
+ }
70
+
71
+ public static function activate()
72
+ {
73
+ if( WCL_Plugin::app()->getPopulateOption('enable_cache') ) {
74
+ WCL_Cache_Helpers::modifyHtaccess();
75
+ }
76
+ }
77
+
78
+ public static function deactivate()
79
+ {
80
+ $path = ABSPATH;
81
+
82
+ if( WCL_Cache_Helpers::is_subdirectory_install() ) {
83
+ $path = WCL_Cache_Helpers::getABSPATH();
84
+ }
85
+
86
+ if( is_file($path . ".htaccess") && is_writable($path . ".htaccess") ) {
87
+ $htaccess = file_get_contents($path . ".htaccess");
88
+ $htaccess = preg_replace("/#\s?BEGIN\s?WClearfyCache.*?#\s?END\s?WClearfyCache/s", "", $htaccess);
89
+ $htaccess = preg_replace("/#\s?BEGIN\s?GzipWClearfyCache.*?#\s?END\s?GzipWClearfyCache/s", "", $htaccess);
90
+ $htaccess = preg_replace("/#\s?BEGIN\s?LBCWClearfyCache.*?#\s?END\s?LBCWClearfyCache/s", "", $htaccess);
91
+ $htaccess = preg_replace("/#\s?BEGIN\s?WEBPWClearfyCache.*?#\s?END\s?WEBPWClearfyCache/s", "", $htaccess);
92
+ @file_put_contents($path . ".htaccess", $htaccess);
93
+ }
94
+ //$wclearfy->deleteCache();
95
+ }
96
+ }
97
+
98
+ new WCL_Cache();
components/cache/includes/class-plugin.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Exit if accessed directly
3
+ if( !defined('ABSPATH') ) {
4
+ exit;
5
+ }
6
+
7
+ /**
8
+ * Transliteration core class
9
+ *
10
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
11
+ * @copyright (c) 19.02.2018, Webcraftic
12
+ */
13
+ class WCACHE_Plugin extends Wbcr_Factory452_Plugin {
14
+
15
+ /**
16
+ * @see self::app()
17
+ * @var Wbcr_Factory452_Plugin
18
+ */
19
+ private static $app;
20
+
21
+ /**
22
+ * @since 1.1.0
23
+ * @var array
24
+ */
25
+ private $plugin_data;
26
+
27
+ /**
28
+ * Конструктор
29
+ *
30
+ * Применяет конструктор родительского класса и записывает экземпляр текущего класса в свойство $app.
31
+ * Подробнее о свойстве $app см. self::app()
32
+ *
33
+ * @param string $plugin_path
34
+ * @param array $data
35
+ *
36
+ * @throws Exception
37
+ */
38
+ public function __construct($plugin_path, $data)
39
+ {
40
+ parent::__construct($plugin_path, $data);
41
+
42
+ self::$app = $this;
43
+ $this->plugin_data = $data;
44
+
45
+ $this->global_scripts();
46
+
47
+ if( is_admin() ) {
48
+ $this->admin_scripts();
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Статический метод для быстрого доступа к интерфейсу плагина.
54
+ *
55
+ * Позволяет разработчику глобально получить доступ к экземпляру класса плагина в любом месте
56
+ * плагина, но при этом разработчик не может вносить изменения в основной класс плагина.
57
+ *
58
+ * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
59
+ * классам.
60
+ *
61
+ * @return \Wbcr_Factory452_Plugin|\WCTR_Plugin
62
+ */
63
+ public static function app()
64
+ {
65
+ return self::$app;
66
+ }
67
+
68
+ /**
69
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
70
+ * @since 1.0.0
71
+ */
72
+ protected function init_activation()
73
+ {
74
+ include_once(WCACHE_PLUGIN_DIR . '/admin/activation.php');
75
+ self::app()->registerActivation('WCACHE_Activation');
76
+ }
77
+
78
+ /**
79
+ * @throws \Exception
80
+ * @since 1.0.0
81
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
82
+ */
83
+ private function register_pages()
84
+ {
85
+ $this->registerPage('WCACHE_CachePage', WCACHE_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
86
+ }
87
+
88
+ /**
89
+ * @throws \Exception
90
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
91
+ */
92
+ private function admin_scripts()
93
+ {
94
+ $this->init_activation();
95
+ $this->register_pages();
96
+ }
97
+
98
+ private function global_scripts()
99
+ {
100
+ require_once WCACHE_PLUGIN_DIR . '/includes/includes/helpers.php';
101
+ require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
102
+
103
+ if( is_admin() ) {
104
+ require(WCACHE_PLUGIN_DIR . '/admin/boot.php');
105
+ if( class_exists('WCL_CachePage') ) {
106
+ WCL_Plugin::app()->registerPage('WCL_CacheProPage', WCACHE_PLUGIN_DIR . '/admin/pages/class-pages-cache.php');
107
+ }
108
+ }
109
+
110
+ add_filter('wbcr/clearfy/adminbar_menu_items', function ($menu_items) {
111
+ $menu_items['clearfy-clear-all-cache'] = [
112
+ 'id' => 'clearfy-clear-all-cache',
113
+ 'title' => '<span class="dashicons dashicons-update"></span> ' . __('Clear all cache', 'clearfy'),
114
+ 'href' => add_query_arg('wclearfy_cache_delete', '1')
115
+ ];
116
+
117
+ return $menu_items;
118
+ });
119
+ }
120
+ }
121
+
components/cache/includes/includes/cache.php ADDED
@@ -0,0 +1,921 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class WCL_Create_Cache {
4
+
5
+ public $options = [];
6
+ public $cdn;
7
+ private $startTime;
8
+ private $blockCache = false;
9
+ private $err = "";
10
+ public $cacheFilePath = "";
11
+ public $exclude_rules = false;
12
+ public $preload_user_agent = false;
13
+ public $current_page_type = false;
14
+ public $current_page_content_type = false;
15
+ public $exclude_current_page_text = false;
16
+
17
+ public function __construct()
18
+ {
19
+ //to fix: PHP Notice: Undefined index: HTTP_USER_AGENT
20
+ $_SERVER['HTTP_USER_AGENT'] = isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] ? strip_tags($_SERVER['HTTP_USER_AGENT']) : "Empty User Agent";
21
+
22
+ if( preg_match("/(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)/", $_SERVER['HTTP_USER_AGENT']) ) {
23
+ $this->preload_user_agent = true;
24
+ } else {
25
+ $this->preload_user_agent = false;
26
+ }
27
+
28
+ //$this->set_cdn();
29
+ $this->set_cache_file_path();
30
+ }
31
+
32
+ public function detect_current_page_type()
33
+ {
34
+ if( preg_match("/\?/", $_SERVER["REQUEST_URI"]) ) {
35
+ return true;
36
+ }
37
+
38
+ if( preg_match("/^\/wp-json/", $_SERVER["REQUEST_URI"]) ) {
39
+ return true;
40
+ }
41
+
42
+ if( is_front_page() ) {
43
+ echo "<!--WCLEARFY_PAGE_TYPE_homepage-->";
44
+ } else if( is_category() ) {
45
+ echo "<!--WCLEARFY_PAGE_TYPE_category-->";
46
+ } else if( is_tag() ) {
47
+ echo "<!--WCLEARFY_PAGE_TYPE_tag-->";
48
+ } else if( is_singular('post') ) {
49
+ echo "<!--WCLEARFY_PAGE_TYPE_post-->";
50
+ } else if( is_page() ) {
51
+ echo "<!--WCLEARFY_PAGE_TYPE_page-->";
52
+ } else if( is_attachment() ) {
53
+ echo "<!--WCLEARFY_PAGE_TYPE_attachment-->";
54
+ } else if( is_archive() ) {
55
+ echo "<!--WCLEARFY_PAGE_TYPE_archive-->";
56
+ }
57
+ }
58
+
59
+ public function set_exclude_rules()
60
+ {
61
+ if( $json_data = get_option("WClearfyCacheExclude") ) {
62
+ $this->exclude_rules = json_decode($json_data);
63
+ }
64
+ }
65
+
66
+ public function set_cache_file_path()
67
+ {
68
+ $type = "all";
69
+
70
+ if( WCL_Cache_Helpers::isMobile() && WCL_Plugin::app()->getPopulateOption('cache_mobile') ) {
71
+ if( class_exists("WCL_MobileCache") && WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
72
+ $type = "wclearfy-mobile-cache";
73
+ }
74
+ }
75
+
76
+ if( WCL_Cache_Helpers::isPluginActive('gtranslate/gtranslate.php') ) {
77
+ if( isset($_SERVER["HTTP_X_GT_LANG"]) ) {
78
+ $this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["HTTP_X_GT_LANG"] . $_SERVER["REQUEST_URI"];
79
+ } else if( isset($_SERVER["REDIRECT_URL"]) && $_SERVER["REDIRECT_URL"] != "/index.php" ) {
80
+ $this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["REDIRECT_URL"];
81
+ } else if( isset($_SERVER["REQUEST_URI"]) ) {
82
+ $this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["REQUEST_URI"];
83
+ }
84
+ } else {
85
+ $this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["REQUEST_URI"];
86
+
87
+ // for /?s=
88
+ $this->cacheFilePath = preg_replace("/(\/\?s\=)/", "$1/", $this->cacheFilePath);
89
+ }
90
+
91
+ $this->cacheFilePath = $this->cacheFilePath ? rtrim($this->cacheFilePath, "/") . "/" : "";
92
+ $this->cacheFilePath = preg_replace("/\/cache\/(all|wclearfy-mobile-cache)\/\//", "/cache/$1/", $this->cacheFilePath);
93
+
94
+ if( strlen($_SERVER["REQUEST_URI"]) > 1 ) { // for the sub-pages
95
+ if( !preg_match("/\.html/i", $_SERVER["REQUEST_URI"]) ) {
96
+ if( WCL_Cache_Helpers::is_trailing_slash() ) {
97
+ if( !preg_match("/\/$/", $_SERVER["REQUEST_URI"]) ) {
98
+ if( defined('WCACHE_QUERYSTRING') && WCACHE_QUERYSTRING ) {
99
+
100
+ } else if( preg_match("/gclid\=/i", $this->cacheFilePath) ) {
101
+
102
+ } else if( preg_match("/fbclid\=/i", $this->cacheFilePath) ) {
103
+
104
+ } else if( preg_match("/utm_(source|medium|campaign|content|term)/i", $this->cacheFilePath) ) {
105
+
106
+ } else {
107
+ $this->cacheFilePath = false;
108
+ }
109
+ }
110
+ } else {
111
+ //toDo
112
+ }
113
+ }
114
+ }
115
+
116
+ $this->remove_url_paramters();
117
+
118
+ // to decode path if it is not utf-8
119
+ if( $this->cacheFilePath ) {
120
+ $this->cacheFilePath = urldecode($this->cacheFilePath);
121
+ }
122
+
123
+ // for security
124
+ if( preg_match("/\.{2,}/", $this->cacheFilePath) ) {
125
+ $this->cacheFilePath = false;
126
+ }
127
+ if( WCL_Cache_Helpers::isMobile() ) {
128
+ if( WCL_Plugin::app()->getPopulateOption('cache_mobile') ) {
129
+ if( !class_exists("WCL_MobileCache") ) {
130
+ $this->cacheFilePath = false;
131
+ } else {
132
+ if( !WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
133
+ $this->cacheFilePath = false;
134
+ }
135
+ }
136
+ }
137
+ }
138
+ }
139
+
140
+ public function remove_url_paramters()
141
+ {
142
+ $action = false;
143
+
144
+ //to remove query strings for cache if Google Click Identifier are set
145
+ if( preg_match("/gclid\=/i", $this->cacheFilePath) ) {
146
+ $action = true;
147
+ }
148
+
149
+ //to remove query strings for cache if facebook parameters are set
150
+ if( preg_match("/fbclid\=/i", $this->cacheFilePath) ) {
151
+ $action = true;
152
+ }
153
+
154
+ //to remove query strings for cache if google analytics parameters are set
155
+ if( preg_match("/utm_(source|medium|campaign|content|term)/i", $this->cacheFilePath) ) {
156
+ $action = true;
157
+ }
158
+
159
+ if( $action ) {
160
+ if( strlen($_SERVER["REQUEST_URI"]) > 1 ) { // for the sub-pages
161
+
162
+ $this->cacheFilePath = preg_replace("/\/*\?.+/", "", $this->cacheFilePath);
163
+ $this->cacheFilePath = $this->cacheFilePath . "/";
164
+
165
+ define('WCACHE_QUERYSTRING', true);
166
+ }
167
+ }
168
+ }
169
+
170
+ public function set_cdn()
171
+ {
172
+ $cdn_values = get_option("WClearfyCacheCDN");
173
+ if( $cdn_values ) {
174
+ $std_obj = json_decode($cdn_values);
175
+ $arr = [];
176
+
177
+ if( is_array($std_obj) ) {
178
+ $arr = $std_obj;
179
+ } else {
180
+ array_push($arr, $std_obj);
181
+ }
182
+
183
+ foreach($arr as $key => &$std) {
184
+ $std->originurl = trim($std->originurl);
185
+ $std->originurl = trim($std->originurl, "/");
186
+ $std->originurl = preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->originurl);
187
+
188
+ $std->cdnurl = trim($std->cdnurl);
189
+ $std->cdnurl = trim($std->cdnurl, "/");
190
+
191
+ if( !preg_match("/https\:\/\//", $std->cdnurl) ) {
192
+ $std->cdnurl = "//" . preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->cdnurl);
193
+ }
194
+ }
195
+
196
+ $this->cdn = $arr;
197
+ }
198
+ }
199
+
200
+ public function checkShortCode($content)
201
+ {
202
+ if( preg_match("/\[wclearfyNOT\]/", $content) ) {
203
+ if( !is_home() || !is_archive() ) {
204
+ $this->blockCache = true;
205
+ }
206
+ $content = str_replace("[wclearfyNOT]", "", $content);
207
+ }
208
+
209
+ return $content;
210
+ }
211
+
212
+ public function createCache()
213
+ {
214
+ if( !WCL_Plugin::app()->getPopulateOption('enable_cache') ) {
215
+ return 0;
216
+ }
217
+
218
+ // to exclude static pdf files
219
+ if( preg_match("/\.pdf$/i", $_SERVER["REQUEST_URI"]) ) {
220
+ return 0;
221
+ }
222
+
223
+ // to check logged-in user
224
+ if( WCL_Plugin::app()->getPopulateOption('dont_cache_for_logged_in_users') ) {
225
+ foreach((array)$_COOKIE as $cookie_key => $cookie_value) {
226
+ if( preg_match("/wordpress_logged_in/i", $cookie_key) ) {
227
+ ob_start([$this, "cdn_rewrite"]);
228
+
229
+ return 0;
230
+ }
231
+ }
232
+ }
233
+
234
+ // to exclude admin users
235
+ foreach((array)$_COOKIE as $cookie_key => $cookie_value) {
236
+ if( preg_match("/wordpress_logged_in/i", $cookie_key) ) {
237
+ $users_groups = get_users(["role" => "administrator", "fields" => ["user_login"]]);
238
+
239
+ foreach($users_groups as $user_key => $user_value) {
240
+ if( preg_match("/^" . preg_quote($user_value->user_login, "/") . "/", $cookie_value) ) {
241
+ ob_start([$this, "cdn_rewrite"]);
242
+
243
+ return 0;
244
+ }
245
+ }
246
+ }
247
+ }
248
+
249
+ // to check comment author
250
+ foreach((array)$_COOKIE as $cookie_key => $cookie_value) {
251
+ if( preg_match("/comment_author_/i", $cookie_key) ) {
252
+ ob_start([$this, "cdn_rewrite"]);
253
+
254
+ return 0;
255
+ }
256
+ }
257
+
258
+ if( isset($_COOKIE) && isset($_COOKIE['safirmobilswitcher']) ) {
259
+ ob_start([$this, "cdn_rewrite"]);
260
+
261
+ return 0;
262
+ }
263
+
264
+ if( isset($_COOKIE) && isset($_COOKIE["wptouch-pro-view"]) ) {
265
+ if( WCL_Cache_Helpers::is_wptouch_smartphone() ) {
266
+ if( $_COOKIE["wptouch-pro-view"] == "desktop" ) {
267
+ ob_start([$this, "cdn_rewrite"]);
268
+
269
+ return 0;
270
+ }
271
+ }
272
+ }
273
+
274
+ if( preg_match("/\?/", $_SERVER["REQUEST_URI"]) && !preg_match("/\/\?fdx\_switcher\=true/", $_SERVER["REQUEST_URI"]) ) { // for WP Mobile Edition
275
+ if( preg_match("/\?amp(\=1)?/i", $_SERVER["REQUEST_URI"]) ) {
276
+ //
277
+ } else if( defined('WCACHE_QUERYSTRING') && WCACHE_QUERYSTRING ) {
278
+ //
279
+ } else {
280
+ ob_start([$this, "cdn_rewrite"]);
281
+
282
+ return 0;
283
+ }
284
+ }
285
+
286
+ if( preg_match("/(" . WCL_Cache_Helpers::get_excluded_useragent() . ")/", $_SERVER['HTTP_USER_AGENT']) ) {
287
+ return 0;
288
+ }
289
+
290
+ if( isset($_SERVER['REQUEST_URI']) && preg_match("/(\/){2}$/", $_SERVER['REQUEST_URI']) ) {
291
+ return 0;
292
+ }
293
+
294
+ // to check permalink if it does not end with slash
295
+ if( isset($_SERVER['REQUEST_URI']) && preg_match("/[^\/]+\/$/", $_SERVER['REQUEST_URI']) ) {
296
+ if( !preg_match("/\/$/", get_option('permalink_structure')) ) {
297
+ return 0;
298
+ }
299
+ }
300
+
301
+ if( isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == "POST" ) {
302
+ return 0;
303
+ }
304
+
305
+ if( preg_match("/^https/i", get_option("home")) && !is_ssl() ) {
306
+ //Must be secure connection
307
+ return 0;
308
+ }
309
+
310
+ if( !preg_match("/^https/i", get_option("home")) && is_ssl() ) {
311
+ //must be normal connection
312
+ if( !WCL_Cache_Helpers::isPluginActive('really-simple-ssl/rlrsssl-really-simple-ssl.php') ) {
313
+ if( !WCL_Cache_Helpers::isPluginActive('really-simple-ssl-pro/really-simple-ssl-pro.php') ) {
314
+ if( !WCL_Cache_Helpers::isPluginActive('really-simple-ssl-on-specific-pages/really-simple-ssl-on-specific-pages.php') ) {
315
+ if( !WCL_Cache_Helpers::isPluginActive('ssl-insecure-content-fixer/ssl-insecure-content-fixer.php') ) {
316
+ if( !WCL_Cache_Helpers::isPluginActive('https-redirection/https-redirection.php') ) {
317
+ if( !WCL_Cache_Helpers::isPluginActive('better-wp-security/better-wp-security.php') ) {
318
+ return 0;
319
+ }
320
+ }
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+
327
+ if( preg_match("/www\./i", get_option("home")) && !preg_match("/www\./i", $_SERVER['HTTP_HOST']) ) {
328
+ return 0;
329
+ }
330
+
331
+ if( !preg_match("/www\./i", get_option("home")) && preg_match("/www\./i", $_SERVER['HTTP_HOST']) ) {
332
+ return 0;
333
+ }
334
+
335
+ if( $this->exclude_page() ) {
336
+ //echo "<!-- Clearfy Cache: Exclude Page -->"."\n";
337
+ return 0;
338
+ }
339
+
340
+ // http://mobiledetect.net/ does not contain the following user-agents
341
+ if( preg_match("/Nokia309|Casper_VIA/i", $_SERVER['HTTP_USER_AGENT']) ) {
342
+ return 0;
343
+ }
344
+
345
+ if( preg_match("/Empty\sUser\sAgent/i", $_SERVER['HTTP_USER_AGENT']) ) { // not to show the cache for command line
346
+ return 0;
347
+ }
348
+
349
+ //to show cache version via php if htaccess rewrite rule does not work
350
+ if( !$this->preload_user_agent && $this->cacheFilePath && (@file_exists($this->cacheFilePath . "index.html") || @file_exists($this->cacheFilePath . "index.json") || @file_exists($this->cacheFilePath . "index.xml")) ) {
351
+
352
+ $via_php = "";
353
+ if( @file_exists($this->cacheFilePath . "index.json") ) {
354
+ $file_extension = "json";
355
+
356
+ header('Content-type: application/json');
357
+ } else if( @file_exists($this->cacheFilePath . "index.xml") ) {
358
+ $file_extension = "xml";
359
+
360
+ header('Content-type: text/xml');
361
+ } else {
362
+ $file_extension = "html";
363
+ $via_php = "<!-- via php -->";
364
+ }
365
+
366
+ if( $content = @file_get_contents($this->cacheFilePath . "index." . $file_extension) ) {
367
+ if( defined('WCLEARFY_REMOVE_VIA_FOOTER_COMMENT') && WCLEARFY_REMOVE_VIA_FOOTER_COMMENT ) {
368
+ $via_php = "";
369
+ }
370
+
371
+ $content = $content . $via_php;
372
+
373
+ die($content);
374
+ }
375
+ } else {
376
+ if( WCL_Cache_Helpers::isMobile() ) {
377
+ if( class_exists("WCL_MobileCache") && WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
378
+ if( WCL_Plugin::app()->getPopulateOption('cache_mobile_theme_name') ) {
379
+ $create_cache = true;
380
+ } else if( WCL_Cache_Helpers::isPluginActive('wptouch/wptouch.php') || WCL_Cache_Helpers::isPluginActive('wptouch-pro/wptouch-pro.php') ) {
381
+ //to check that user-agent exists in wp-touch's list or not
382
+ if( WCL_Cache_Helpers::is_wptouch_smartphone() ) {
383
+ $create_cache = true;
384
+ } else {
385
+ $create_cache = false;
386
+ }
387
+ } else if( WCL_Cache_Helpers::isPluginActive('any-mobile-theme-switcher/any-mobile-theme-switcher.php') ) {
388
+ if( WCL_Cache_Helpers::is_anymobilethemeswitcher_mobile() ) {
389
+ $create_cache = true;
390
+ } else {
391
+ $create_cache = false;
392
+ }
393
+ } else {
394
+ if( (preg_match('/iPhone/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT'])) || (preg_match('/Android/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT'])) ) {
395
+ $create_cache = true;
396
+ } else {
397
+ $create_cache = false;
398
+ }
399
+ }
400
+ } else if( !WCL_Plugin::app()->getPopulateOption('cache_mobile') && !WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
401
+ $create_cache = true;
402
+ } else {
403
+ $create_cache = false;
404
+ }
405
+ } else {
406
+ $create_cache = true;
407
+ }
408
+
409
+ if( $create_cache ) {
410
+ $this->startTime = microtime(true);
411
+
412
+ add_action('wp', [$this, "detect_current_page_type"]);
413
+ add_action('get_footer', [$this, "detect_current_page_type"]);
414
+ add_action('get_footer', [$this, "wp_print_scripts_action"]);
415
+
416
+ // to exclude current page hook
417
+ add_action("wclearfy_exclude_current_page", [$this, 'exclude_current_page'], 10, 0);
418
+
419
+ ob_start([$this, "callback"]);
420
+ }
421
+ }
422
+ }
423
+
424
+ public function exclude_current_page($some = true)
425
+ {
426
+ $via = debug_backtrace();
427
+
428
+ if( isset($via) && is_array($via) ) {
429
+ foreach($via as $key => $value) {
430
+ if( $value["function"] == "wclearfy_exclude_current_page" ) {
431
+
432
+ if( defined('WCLEARFY_DEBUG') && (WCLEARFY_DEBUG === true) ) {
433
+ if( preg_match("/wp-content\/themes/", $value["file"]) ) {
434
+ $this->exclude_current_page_text = "<!-- This page has been excluded by " . basename($value["file"]) . " of the Theme -->";
435
+ } else if( preg_match("/wp-content\/plugins/", $value["file"]) ) {
436
+ $this->exclude_current_page_text = "<!-- This page has been excluded by " . basename($value["file"]) . " of " . preg_replace("/([^\/]+)\/.+/", "$1", plugin_basename($value["file"])) . " -->";
437
+ }
438
+ } else {
439
+ $this->exclude_current_page_text = "<!-- This page has been excluded -->";
440
+ }
441
+
442
+ break;
443
+ }
444
+ }
445
+ }
446
+ }
447
+
448
+ public function wp_print_scripts_action()
449
+ {
450
+ echo "<!--WCLEARFY_FOOTER_START-->";
451
+ }
452
+
453
+ public function ignored($buffer)
454
+ {
455
+ $list = [
456
+ "\/wp\-comments\-post\.php",
457
+ "\/wp\-login\.php",
458
+ "\/robots\.txt",
459
+ "\/wp\-cron\.php",
460
+ "\/wp\-content",
461
+ "\/wp\-admin",
462
+ "\/wp\-includes",
463
+ "\/index\.php",
464
+ "\/xmlrpc\.php",
465
+ "\/wp\-api\/",
466
+ "leaflet\-geojson\.php",
467
+ "\/clientarea\.php"
468
+ ];
469
+ if( WCL_Cache_Helpers::isPluginActive('woocommerce/woocommerce.php') ) {
470
+ if( $this->current_page_type != "homepage" ) {
471
+ global $post;
472
+
473
+ if( isset($post->ID) && $post->ID ) {
474
+ if( function_exists("wc_get_page_id") ) {
475
+ $woocommerce_ids = [];
476
+ array_push($woocommerce_ids, wc_get_page_id('cart'), wc_get_page_id('checkout'), wc_get_page_id('receipt'), wc_get_page_id('confirmation'), wc_get_page_id('myaccount'));
477
+
478
+ if( in_array($post->ID, $woocommerce_ids) ) {
479
+ return true;
480
+ }
481
+ }
482
+ }
483
+
484
+ array_push($list, "\/cart\/?$", "\/checkout", "\/receipt", "\/confirmation", "\/wc-api\/");
485
+ }
486
+ }
487
+
488
+ if( WCL_Cache_Helpers::isPluginActive('wp-easycart/wpeasycart.php') ) {
489
+ array_push($list, "\/cart");
490
+ }
491
+
492
+ if( WCL_Cache_Helpers::isPluginActive('easy-digital-downloads/easy-digital-downloads.php') ) {
493
+ array_push($list, "\/cart", "\/checkout");
494
+ }
495
+
496
+ if( preg_match("/" . implode("|", $list) . "/i", $_SERVER["REQUEST_URI"]) ) {
497
+ return true;
498
+ }
499
+
500
+ return false;
501
+ }
502
+
503
+ public function exclude_page($buffer = false)
504
+ {
505
+ $preg_match_rule = "";
506
+ $request_url = urldecode(trim($_SERVER["REQUEST_URI"], "/"));
507
+
508
+ $exclude_uris = WCL_Plugin::app()->getPopulateOption('cache_reject_uri');
509
+
510
+ if( !empty($exclude_uris) ) {
511
+ $exclude_uris = array_map(function ($value) {
512
+ $site_url = site_url();
513
+
514
+ $value = trim(rtrim($value));
515
+ // http://clearfy.pro/members/ -> /members/
516
+ $value = str_replace($site_url, "", $value);
517
+ // /members/(.*) -> members/(.*)
518
+ $value = preg_replace("/^\//", "", $value);
519
+ // members/ -> members
520
+ $value = untrailingslashit($value);
521
+
522
+ return $value;
523
+ }, preg_split('/\r\n|\n|\r/', $exclude_uris));
524
+ } else {
525
+ $exclude_uris = [];
526
+ }
527
+
528
+ foreach($exclude_uris as $uri) {
529
+ if( $uri === $request_url ) {
530
+ return true;
531
+ }
532
+
533
+ if( !empty($uri) && @preg_match('/' . $uri . '/i', $request_url) ) {
534
+ return true;
535
+ }
536
+ }
537
+
538
+ return false;
539
+ }
540
+
541
+ public function is_json()
542
+ {
543
+ return $this->current_page_content_type == "json" ? true : false;
544
+ }
545
+
546
+ public function is_xml()
547
+ {
548
+ return $this->current_page_content_type == "xml" ? true : false;
549
+ }
550
+
551
+ public function is_html()
552
+ {
553
+ return $this->current_page_content_type == "html" ? true : false;
554
+ }
555
+
556
+ public function set_current_page_type($buffer)
557
+ {
558
+ preg_match('/<\!--WCLEARFY_PAGE_TYPE_([a-z]+)-->/i', $buffer, $out);
559
+
560
+ $this->current_page_type = isset($out[1]) ? $out[1] : false;
561
+ }
562
+
563
+ public function set_current_page_content_type($buffer)
564
+ {
565
+ $content_type = false;
566
+ if( function_exists("headers_list") ) {
567
+ $headers = headers_list();
568
+ foreach($headers as $header) {
569
+ if( preg_match("/Content-Type\:/i", $header) ) {
570
+ $content_type = preg_replace("/Content-Type\:\s(.+)/i", "$1", $header);
571
+ }
572
+ }
573
+ }
574
+
575
+ if( preg_match("/xml/i", $content_type) ) {
576
+ $this->current_page_content_type = "xml";
577
+ } else if( preg_match("/json/i", $content_type) ) {
578
+ $this->current_page_content_type = "json";
579
+ } else {
580
+ $this->current_page_content_type = "html";
581
+ }
582
+ }
583
+
584
+ public function last_error($buffer = false)
585
+ {
586
+ if( function_exists("http_response_code") && (http_response_code() === 404) ) {
587
+ return true;
588
+ }
589
+
590
+ if( is_404() ) {
591
+ return true;
592
+ }
593
+
594
+ if( preg_match("/<body id\=\"error-page\">\s*<p>[^\>]+<\/p>\s*<\/body>/i", $buffer) ) {
595
+ return true;
596
+ }
597
+ }
598
+
599
+ public function callback($buffer)
600
+ {
601
+ $this->set_current_page_type($buffer);
602
+ $this->set_current_page_content_type($buffer);
603
+
604
+ $buffer = $this->checkShortCode($buffer);
605
+
606
+ // for Wordfence: not to cache 503 pages
607
+ if( defined('DONOTCACHEPAGE') && WCL_Cache_Helpers::isPluginActive('wordfence/wordfence.php') ) {
608
+ if( function_exists("http_response_code") && http_response_code() == 503 ) {
609
+ return $buffer . "<!-- DONOTCACHEPAGE is defined as TRUE -->";
610
+ }
611
+ }
612
+
613
+ // for iThemes Security: not to cache 403 pages
614
+ if( defined('DONOTCACHEPAGE') && WCL_Cache_Helpers::isPluginActive('better-wp-security/better-wp-security.php') ) {
615
+ if( function_exists("http_response_code") && http_response_code() == 403 ) {
616
+ return $buffer . "<!-- DONOTCACHEPAGE is defined as TRUE -->";
617
+ }
618
+ }
619
+
620
+ if( $this->exclude_page($buffer) ) {
621
+ $buffer = preg_replace('/<\!--WCLEARFY_PAGE_TYPE_[a-z]+-->/i', '', $buffer);
622
+
623
+ return $buffer;
624
+ }
625
+
626
+ $buffer = preg_replace('/<\!--WCLEARFY_PAGE_TYPE_[a-z]+-->/i', '', $buffer);
627
+
628
+ if( $this->exclude_current_page_text ) {
629
+ return $buffer . $this->exclude_current_page_text;
630
+ } else if( $this->is_json() && (!defined('WCACHE_JSON') || (defined('WCACHE_JSON') && WCACHE_JSON !== true)) ) {
631
+ return $buffer;
632
+ } else if( preg_match("/Mediapartners-Google|Google\sWireless\sTranscoder/i", $_SERVER['HTTP_USER_AGENT']) ) {
633
+ return $buffer;
634
+ } else if( is_user_logged_in() || $this->isCommenter() ) {
635
+ return $buffer;
636
+ } else if( $this->isPasswordProtected($buffer) ) {
637
+ return $buffer . "<!-- Password protected content has been detected -->";
638
+ } else if( WCL_Cache_Helpers::isWpLogin($buffer) ) {
639
+ return $buffer . "<!-- wp-login.php -->";
640
+ } else if( WCL_Cache_Helpers::hasContactForm7WithCaptcha($buffer) ) {
641
+ return $buffer . "<!-- This page was not cached because ContactForm7's captcha -->";
642
+ } else if( $this->last_error($buffer) ) {
643
+ return $buffer;
644
+ } else if( $this->ignored($buffer) ) {
645
+ return $buffer;
646
+ } else if( $this->blockCache === true ) {
647
+ return $buffer . "<!-- wclearfyNOT has been detected -->";
648
+ } else if( isset($_GET["preview"]) ) {
649
+ return $buffer . "<!-- not cached -->";
650
+ } else if( $this->checkHtml($buffer) ) {
651
+ return $buffer . "<!-- html is corrupted -->";
652
+ } else if( (function_exists("http_response_code")) && (http_response_code() == 301 || http_response_code() == 302) ) {
653
+ return $buffer;
654
+ } else if( !$this->cacheFilePath ) {
655
+ return $buffer . "<!-- permalink_structure ends with slash (/) but REQUEST_URI does not end with slash (/) -->";
656
+ } else {
657
+ $content = $buffer;
658
+
659
+ if( $this->err ) {
660
+ return $buffer . "<!-- " . $this->err . " -->";
661
+ } else {
662
+ $content = $this->cacheDate($content);
663
+ $content = str_replace("<!--WCLEARFY_FOOTER_START-->", "", $content);
664
+
665
+ $content = $this->cdn_rewrite($content);
666
+ $content = $this->fix_pre_tag($content, $buffer);
667
+
668
+ if( $this->cacheFilePath ) {
669
+ if( $this->is_html() ) {
670
+ $this->createFolder($this->cacheFilePath, $content);
671
+ do_action('wclearfy_is_cacheable_action');
672
+ } else if( $this->is_xml() ) {
673
+ if( preg_match("/<link><\/link>/", $buffer) ) {
674
+ if( preg_match("/\/feed$/", $_SERVER["REQUEST_URI"]) ) {
675
+ return $buffer . time();
676
+ }
677
+ }
678
+
679
+ $this->createFolder($this->cacheFilePath, $buffer, "xml");
680
+ do_action('wclearfy_is_cacheable_action');
681
+
682
+ return $buffer;
683
+ } else if( $this->is_json() ) {
684
+ $this->createFolder($this->cacheFilePath, $buffer, "json");
685
+ do_action('wclearfy_is_cacheable_action');
686
+
687
+ return $buffer;
688
+ }
689
+ }
690
+
691
+ return $content . "<!-- need to refresh to see cached version -->";
692
+ }
693
+ }
694
+ }
695
+
696
+ public function fix_pre_tag($content, $buffer)
697
+ {
698
+ if( preg_match("/<pre[^\>]*>/i", $buffer) ) {
699
+ preg_match_all("/<pre[^\>]*>((?!<\/pre>).)+<\/pre>/is", $buffer, $pre_buffer);
700
+ preg_match_all("/<pre[^\>]*>((?!<\/pre>).)+<\/pre>/is", $content, $pre_content);
701
+
702
+ if( isset($pre_content[0]) && isset($pre_content[0][0]) ) {
703
+ foreach($pre_content[0] as $key => $value) {
704
+ /*
705
+ location ~ / {
706
+ set $path /path/$1/index.html;
707
+ }
708
+ */
709
+ if( isset($pre_buffer[0][$key]) ) {
710
+ $pre_buffer[0][$key] = preg_replace('/\$(\d)/', '\\\$$1', $pre_buffer[0][$key]);
711
+
712
+ $content = preg_replace("/" . preg_quote($value, "/") . "/", $pre_buffer[0][$key], $content);
713
+ }
714
+ }
715
+ }
716
+ }
717
+
718
+ return $content;
719
+ }
720
+
721
+ public function cdn_rewrite($content)
722
+ {
723
+ if( $this->cdn ) {
724
+ $content = preg_replace_callback("/(srcset|src|href|data-vc-parallax-image|data-bg|data-fullurl|data-mobileurl|data-img-url|data-cvpsrc|data-cvpset|data-thumb|data-bg-url|data-large_image|data-lazyload|data-lazy|data-source-url|data-srcsmall|data-srclarge|data-srcfull|data-slide-img|data-lazy-original)\s{0,2}\=\s{0,2}[\'\"]([^\'\"]+)[\'\"]/i", [
725
+ $this,
726
+ 'cdn_replace_urls'
727
+ ], $content);
728
+
729
+ //url()
730
+ $content = preg_replace_callback("/(url)\(([^\)\>]+)\)/i", [$this, 'cdn_replace_urls'], $content);
731
+
732
+ //{"concatemoji":"http:\/\/your_url.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.7"}
733
+ $content = preg_replace_callback("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", [
734
+ $this,
735
+ 'cdn_replace_urls'
736
+ ], $content);
737
+
738
+ //<script>var loaderRandomImages=["https:\/\/www.site.com\/wp-content\/uploads\/2016\/12\/image.jpg"];</script>
739
+ $content = preg_replace_callback("/[\"\']([^\'\"]+)[\"\']\s*\:\s*[\"\']https?\:\\\\\/\\\\\/[^\"\']+[\"\']/i", [
740
+ $this,
741
+ 'cdn_replace_urls'
742
+ ], $content);
743
+
744
+ // <script>
745
+ // jsFileLocation:"//domain.com/wp-content/plugins/revslider/public/assets/js/"
746
+ // </script>
747
+ $content = preg_replace_callback("/(jsFileLocation)\s*\:[\"\']([^\"\']+)[\"\']/i", [
748
+ $this,
749
+ 'cdn_replace_urls'
750
+ ], $content);
751
+
752
+ // <form data-product_variations="[{&quot;src&quot;:&quot;//domain.com\/img.jpg&quot;}]">
753
+ // <div data-siteorigin-parallax="{&quot;backgroundUrl&quot;:&quot;https:\/\/domain.com\/wp-content\/TOR.jpg&quot;,&quot;backgroundSize&quot;:[830,467],&quot;}" data-stretch-type="full">
754
+ $content = preg_replace_callback("/(data-product_variations|data-siteorigin-parallax)\=[\"\'][^\"\']+[\"\']/i", [
755
+ $this,
756
+ 'cdn_replace_urls'
757
+ ], $content);
758
+
759
+ // <object data="https://site.com/source.swf" type="application/x-shockwave-flash"></object>
760
+ $content = preg_replace_callback("/<object[^\>]+(data)\s{0,2}\=[\'\"]([^\'\"]+)[\'\"][^\>]+>/i", [
761
+ $this,
762
+ 'cdn_replace_urls'
763
+ ], $content);
764
+ }
765
+
766
+ return $content;
767
+ }
768
+
769
+ public function get_header($content)
770
+ {
771
+ $head_first_index = strpos($content, "<head");
772
+ $head_last_index = strpos($content, "</head>");
773
+
774
+ return substr($content, $head_first_index, ($head_last_index - $head_first_index + 1));
775
+ }
776
+
777
+ public function checkHtml($buffer)
778
+ {
779
+ if( !$this->is_html() ) {
780
+ return false;
781
+ }
782
+
783
+ if( preg_match('/<html[^\>]*>/si', $buffer) && preg_match('/<body[^\>]*>/si', $buffer) ) {
784
+ return false;
785
+ }
786
+ // if(strlen($buffer) > 10){
787
+ // return false;
788
+ // }
789
+
790
+ return true;
791
+ }
792
+
793
+ public function cacheDate($buffer)
794
+ {
795
+ if( WCL_Cache_Helpers::isMobile() && class_exists("WCL_MobileCache") && WCL_Plugin::app()->getPopulateOption('cache_mobile') && WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
796
+ $comment = "<!-- Mobile: Clearfy Cache file was created in " . $this->creationTime() . " seconds, on " . date("d-m-y G:i:s", current_time('timestamp')) . " -->";
797
+ } else {
798
+ $comment = "<!-- Clearfy Cache file was created in " . $this->creationTime() . " seconds, on " . date("d-m-y G:i:s", current_time('timestamp')) . " -->";
799
+ }
800
+
801
+ if( defined('WCLEARFY_REMOVE_FOOTER_COMMENT') && WCLEARFY_REMOVE_FOOTER_COMMENT ) {
802
+ return $buffer;
803
+ } else {
804
+ return $buffer . $comment;
805
+ }
806
+ }
807
+
808
+ public function creationTime()
809
+ {
810
+ return microtime(true) - $this->startTime;
811
+ }
812
+
813
+ public function isCommenter()
814
+ {
815
+ $commenter = wp_get_current_commenter();
816
+
817
+ return isset($commenter["comment_author_email"]) && $commenter["comment_author_email"] ? true : false;
818
+ }
819
+
820
+ public function isPasswordProtected($buffer)
821
+ {
822
+ if( preg_match("/action\=[\'\"].+postpass.*[\'\"]/", $buffer) ) {
823
+ return true;
824
+ }
825
+
826
+ foreach($_COOKIE as $key => $value) {
827
+ if( preg_match("/wp\-postpass\_/", $key) ) {
828
+ return true;
829
+ }
830
+ }
831
+
832
+ return false;
833
+ }
834
+
835
+ public function create_name($list)
836
+ {
837
+ $arr = is_array($list) ? $list : [["href" => $list]];
838
+ $name = "";
839
+
840
+ foreach($arr as $tag_key => $tag_value) {
841
+ $tmp = preg_replace("/(\.css|\.js)\?.*/", "$1", $tag_value["href"]); //to remove version number
842
+ $name = $name . $tmp;
843
+ }
844
+
845
+ return base_convert(crc32($name), 20, 36);
846
+ }
847
+
848
+ public function createFolder($cachFilePath, $buffer, $extension = "html", $prefix = false)
849
+ {
850
+ $create = false;
851
+ $file_name = "index.";
852
+ $update_db_statistic = true;
853
+
854
+ if( $buffer && strlen($buffer) > 100 && preg_match("/html|xml|json/i", $extension) ) {
855
+ if( !preg_match("/^\<\!\-\-\sMobile\:\sWP\sFastest\sCache/i", $buffer) ) {
856
+ if( !preg_match("/^\<\!\-\-\sWP\sFastest\sCache/i", $buffer) ) {
857
+ $create = true;
858
+ }
859
+ }
860
+
861
+ if( $this->preload_user_agent ) {
862
+ if( file_exists($cachFilePath . "/" . "index." . $extension) ) {
863
+ $update_db_statistic = false;
864
+ @unlink($cachFilePath . "/" . "index." . $extension);
865
+ }
866
+ }
867
+ }
868
+
869
+ if( ($extension == "svg" || $extension == "woff" || $extension == "css" || $extension == "js") && $buffer && strlen($buffer) > 5 ) {
870
+ $create = true;
871
+ $file_name = base_convert(substr(time(), -6), 20, 36) . ".";
872
+ $buffer = trim($buffer);
873
+
874
+ if( $extension == "js" ) {
875
+ if( substr($buffer, -1) != ";" ) {
876
+ $buffer .= ";";
877
+ }
878
+ }
879
+ }
880
+
881
+ if( $create ) {
882
+ if( !is_user_logged_in() && !$this->isCommenter() ) {
883
+ if( !is_dir($cachFilePath) ) {
884
+ if( is_writable(WCL_Cache_Helpers::getWpContentDir()) || ((is_dir(WCL_Cache_Helpers::getWpContentDir() . "/cache")) && (is_writable(WCL_Cache_Helpers::getWpContentDir() . "/cache"))) ) {
885
+ if( @mkdir($cachFilePath, 0755, true) ) {
886
+
887
+ $buffer = (string)apply_filters('wclearfy_buffer_callback_filter', $buffer, $extension);
888
+
889
+ file_put_contents($cachFilePath . "/" . $file_name . $extension, $buffer);
890
+
891
+ if( $extension == "html" ) {
892
+ if( !file_exists(WP_CONTENT_DIR . "/cache/index.html") ) {
893
+ @file_put_contents(WP_CONTENT_DIR . "/cache/index.html", "");
894
+ }
895
+ } else {
896
+ if( !file_exists(WP_CONTENT_DIR . "/cache/wclearfy-minified/index.html") ) {
897
+ @file_put_contents(WP_CONTENT_DIR . "/cache/wclearfy-minified/index.html", "");
898
+ }
899
+ }
900
+ } else {
901
+ }
902
+ } else {
903
+
904
+ }
905
+ } else {
906
+ if( file_exists($cachFilePath . "/" . $file_name . $extension) ) {
907
+
908
+ } else {
909
+ $buffer = (string)apply_filters('wclearfy_buffer_callback_filter', $buffer, $extension);
910
+
911
+ file_put_contents($cachFilePath . "/" . $file_name . $extension, $buffer);
912
+ }
913
+ }
914
+ }
915
+ } else if( $extension == "html" ) {
916
+ $this->err = "Buffer is empty so the cache cannot be created";
917
+ }
918
+ }
919
+ }
920
+
921
+ ?>
components/cache/includes/includes/helpers.php ADDED
@@ -0,0 +1,1245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Helpers methods
4
+ *
5
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
6
+ * @copyright (c) 10.11.2020, Webcraftic
7
+ * @version 1.0
8
+ */
9
+
10
+ class WCL_Cache_Helpers {
11
+
12
+ /**
13
+ * Return if the server run on nginx
14
+ *
15
+ * @return bool
16
+ */
17
+ public static function is_nginx()
18
+ {
19
+ $is_nginx = (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false);
20
+
21
+ return $is_nginx;
22
+ }
23
+
24
+ public static function is_anymobilethemeswitcher_mobile()
25
+ {
26
+ // https://plugins.svn.wordpress.org/any-mobile-theme-switcher/tags/1.9/any-mobile-theme-switcher.php
27
+ $user_agent = $_SERVER['HTTP_USER_AGENT'];
28
+
29
+ switch( true ) {
30
+ case (preg_match('/ipad/i', $user_agent));
31
+ return true;
32
+ break;
33
+
34
+ case (preg_match('/ipod/i', $user_agent) || preg_match('/iphone/i', $user_agent));
35
+ return true;
36
+ break;
37
+
38
+ case (preg_match('/android/i', $user_agent) && preg_match('/mobile/i', $user_agent));
39
+ return true;
40
+ break;
41
+
42
+ case (preg_match('/opera mini/i', $user_agent));
43
+ return true;
44
+ break;
45
+
46
+ case (preg_match('/blackberry/i', $user_agent));
47
+ return true;
48
+ break;
49
+
50
+ case (preg_match('/(pre\/|palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i', $user_agent));
51
+ return true;
52
+ break;
53
+
54
+ case (preg_match('/(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile)/i', $user_agent));
55
+ return true;
56
+ break;
57
+
58
+ case (preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320|vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i', $user_agent));
59
+ return true;
60
+ break;
61
+ }
62
+
63
+ return false;
64
+ }
65
+
66
+ /**
67
+ * @param string $plugin
68
+ *
69
+ * @return bool
70
+ */
71
+ public static function isPluginActive($plugin)
72
+ {
73
+ return in_array($plugin, (array)get_option('active_plugins', [])) || self::isPluginActiveForNetwork($plugin);
74
+ }
75
+
76
+ /**
77
+ * @param string $plugin
78
+ *
79
+ * @return bool
80
+ */
81
+ public static function isPluginActiveForNetwork($plugin)
82
+ {
83
+ if( !is_multisite() ) {
84
+ return false;
85
+ }
86
+
87
+ $plugins = get_site_option('active_sitewide_plugins');
88
+ if( isset($plugins[$plugin]) ) {
89
+ return true;
90
+ }
91
+
92
+ return false;
93
+ }
94
+
95
+ /**
96
+ * @param false $path
97
+ *
98
+ * @return string
99
+ */
100
+ public static function getWpContentDir($path = false)
101
+ {
102
+ /*
103
+ Sample Paths;
104
+
105
+ /cache/
106
+
107
+ /cache/all/
108
+ /cache/all
109
+ /cache/all/page
110
+ /cache/all/index.html
111
+
112
+ /cache/wclearfy-minified
113
+
114
+ /cache/wclearfy-widget-cache
115
+
116
+ /cache/wclearfy-mobile-cache/
117
+ /cache/wclearfy-mobile-cache/page
118
+ /cache/wclearfy-mobile-cache/index.html
119
+
120
+ /cache/tmpWclearfy
121
+ /cache/tmpWclearfy/
122
+ /cache/tmpWclearfy/mobile_
123
+ /cache/tmpWclearfy/m
124
+ /cache/tmpWclearfy/w
125
+
126
+
127
+ /cache/testWpFc/
128
+
129
+ /cache/all/testWpFc/
130
+
131
+ /cache/wclearfy-widget-cache/
132
+ /cache/wclearfy-widget-cache
133
+ /cache/wclearfy-widget-cache/".$args["widget_id"].".html
134
+ */
135
+
136
+ if( $path ) {
137
+ if( preg_match("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", $path) ) {
138
+ //WPML language switch
139
+ //https://wpml.org/forums/topic/wpml-language-switch-wp-fastest-cache-issue/
140
+ $language_negotiation_type = apply_filters('wpml_setting', false, 'language_negotiation_type');
141
+ if( ($language_negotiation_type == 2) && self::isPluginActive('sitepress-multilingual-cms/sitepress.php') ) {
142
+ $my_home_url = apply_filters('wpml_home_url', get_option('home'));
143
+ $my_home_url = preg_replace("/https?\:\/\//i", "", $my_home_url);
144
+ $my_home_url = trim($my_home_url, "/");
145
+
146
+ $path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $my_home_url . "/$1", $path);
147
+ } else if( ($language_negotiation_type == 1) && self::isPluginActive('sitepress-multilingual-cms/sitepress.php') ) {
148
+ $my_current_lang = apply_filters('wpml_current_language', null);
149
+
150
+ if( $my_current_lang ) {
151
+ $path = preg_replace("/\/cache\/wclearfy-widget-cache\/(.+)/", "/cache/wclearfy-widget-cache/" . $my_current_lang . "-" . "$1", $path);
152
+ }
153
+ }
154
+
155
+ if( self::isPluginActive('multiple-domain-mapping-on-single-site/multidomainmapping.php') ) {
156
+ $path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
157
+ }
158
+
159
+ if( self::isPluginActive('polylang/polylang.php') ) {
160
+ $path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
161
+ }
162
+
163
+ if( self::isPluginActive('multiple-domain/multiple-domain.php') ) {
164
+ $path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
165
+ }
166
+
167
+ if( is_multisite() ) {
168
+ $path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
169
+ }
170
+ }
171
+
172
+ return WP_CONTENT_DIR . $path;
173
+ } else {
174
+ return WP_CONTENT_DIR;
175
+ }
176
+ }
177
+
178
+ public static function is_trailing_slash()
179
+ {
180
+ // no need to check if Custom Permalinks plugin is active (https://tr.wordpress.org/plugins/custom-permalinks/)
181
+ if( self::isPluginActive("custom-permalinks/custom-permalinks.php") ) {
182
+ return false;
183
+ }
184
+
185
+ if( $permalink_structure = get_option('permalink_structure') ) {
186
+ if( preg_match("/\/$/", $permalink_structure) ) {
187
+ return true;
188
+ }
189
+ }
190
+
191
+ return false;
192
+ }
193
+
194
+ public static function get_excluded_useragent()
195
+ {
196
+ return "facebookexternalhit|Twitterbot|LinkedInBot|WhatsApp|Mediatoolkitbot";
197
+ }
198
+
199
+ public static function get_mobile_browsers()
200
+ {
201
+ $mobile_browsers = [
202
+ '\bCrMo\b|CriOS|Android.*Chrome\/[.0-9]*\s(Mobile)?',
203
+ '\bDolfin\b',
204
+ 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+',
205
+ 'Skyfire',
206
+ 'Mobile\sSafari\/[.0-9]*\sEdge',
207
+ 'IEMobile|MSIEMobile',
208
+ // |Trident/[.0-9]+
209
+ 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS',
210
+ 'bolt',
211
+ 'teashark',
212
+ 'Blazer',
213
+ 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari',
214
+ 'Tizen',
215
+ 'UC.*Browser|UCWEB',
216
+ 'baiduboxapp',
217
+ 'baidubrowser',
218
+ 'DiigoBrowser',
219
+ 'Puffin',
220
+ '\bMercury\b',
221
+ 'Obigo',
222
+ 'NF-Browser',
223
+ 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
224
+ 'Android.*PaleMoon|Mobile.*PaleMoon'
225
+ ];
226
+
227
+ return $mobile_browsers;
228
+ }
229
+
230
+ public static function get_operating_systems()
231
+ {
232
+ $operating_systems = [
233
+ 'Android',
234
+ 'blackberry|\bBB10\b|rim\stablet\sos',
235
+ 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
236
+ 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
237
+ 'Windows\sCE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window\sMobile|Windows\sPhone\s[0-9.]+|WCE;',
238
+ 'Windows\sPhone\s10.0|Windows\sPhone\s8.1|Windows\sPhone\s8.0|Windows\sPhone\sOS|XBLWP7|ZuneWP7|Windows\sNT\s6\.[23]\;\sARM\;',
239
+ '\biPhone.*Mobile|\biPod|\biPad',
240
+ 'Apple-iPhone7C2',
241
+ 'MeeGo',
242
+ 'Maemo',
243
+ 'J2ME\/|\bMIDP\b|\bCLDC\b',
244
+ // '|Java/' produces bug #135
245
+ 'webOS|hpwOS',
246
+ '\bBada\b',
247
+ 'BREW'
248
+ ];
249
+
250
+ return $operating_systems;
251
+ }
252
+
253
+ public function is_amp($content)
254
+ {
255
+ $request_uri = trim($_SERVER["REQUEST_URI"], "/");
256
+
257
+ if( preg_match("/^amp/", $request_uri) || preg_match("/\/amp\//", $request_uri) || preg_match("/amp$/", $request_uri) ) {
258
+ if( preg_match("/<html[^\>]+amp[^\>]*>/i", $content) ) {
259
+ return true;
260
+ }
261
+
262
+ if( preg_match("/<html[^\>]+\⚡[^\>]*>/i", $content) ) {
263
+ return true;
264
+ }
265
+ }
266
+
267
+ return false;
268
+ }
269
+
270
+ public static function isMobile()
271
+ {
272
+ foreach(self::get_mobile_browsers() as $value) {
273
+ if( preg_match("/" . $value . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
274
+ return true;
275
+ }
276
+ }
277
+
278
+ foreach(self::get_operating_systems() as $key => $value) {
279
+ if( preg_match("/" . $value . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
280
+ return true;
281
+ }
282
+ }
283
+
284
+ if( isset($_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER']) && "true" === $_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] ) {
285
+ return true;
286
+ }
287
+
288
+ if( isset($_SERVER['HTTP_CLOUDFRONT_IS_TABLET_VIEWER']) && "true" === $_SERVER['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] ) {
289
+ return true;
290
+ }
291
+
292
+ return false;
293
+ }
294
+
295
+ public static function isWpLogin($buffer)
296
+ {
297
+ // if(preg_match("/<form[^\>]+loginform[^\>]+>((?:(?!<\/form).)+)user_login((?:(?!<\/form).)+)user_pass((?:(?!<\/form).)+)<\/form>/si", $buffer)){
298
+ // return true;
299
+ // }
300
+ if( $GLOBALS["pagenow"] == "wp-login.php" ) {
301
+ return true;
302
+ }
303
+
304
+ return false;
305
+ }
306
+
307
+ public static function hasContactForm7WithCaptcha($buffer)
308
+ {
309
+ if( is_single() || is_page() ) {
310
+ if( preg_match("/<input[^\>]+_wpcf7_captcha[^\>]+>/i", $buffer) ) {
311
+ return true;
312
+ }
313
+ }
314
+
315
+ return false;
316
+ }
317
+
318
+ public static function is_wptouch_smartphone()
319
+ {
320
+ // https://plugins.svn.wordpress.org/wptouch/tags/4.0.4/core/mobile-user-agents.php
321
+ // wptouch: ipad is accepted as a desktop so no need to create cache if user agent is ipad
322
+ // https://wordpress.org/support/topic/plugin-wptouch-wptouch-wont-display-mobile-version-on-ipad?replies=12
323
+ if( preg_match("/ipad/i", $_SERVER['HTTP_USER_AGENT']) ) {
324
+ return false;
325
+ }
326
+
327
+ $wptouch_smartphone_list = [];
328
+
329
+ $wptouch_smartphone_list[] = ['iPhone']; // iPhone
330
+ $wptouch_smartphone_list[] = ['Android', 'Mobile']; // Android devices
331
+ $wptouch_smartphone_list[] = ['BB', 'Mobile Safari']; // BB10 devices
332
+ $wptouch_smartphone_list[] = ['BlackBerry', 'Mobile Safari']; // BB 6, 7 devices
333
+ $wptouch_smartphone_list[] = ['Firefox', 'Mobile']; // Firefox OS devices
334
+ $wptouch_smartphone_list[] = ['IEMobile/11', 'Touch']; // Windows IE 11 touch devices
335
+ $wptouch_smartphone_list[] = ['IEMobile/10', 'Touch']; // Windows IE 10 touch devices
336
+ $wptouch_smartphone_list[] = ['IEMobile/9.0']; // Windows Phone OS 9
337
+ $wptouch_smartphone_list[] = ['IEMobile/8.0']; // Windows Phone OS 8
338
+ $wptouch_smartphone_list[] = ['IEMobile/7.0']; // Windows Phone OS 7
339
+ $wptouch_smartphone_list[] = ['OPiOS', 'Mobile']; // Opera Mini iOS
340
+ $wptouch_smartphone_list[] = ['Coast', 'Mobile']; // Opera Coast iOS
341
+
342
+ foreach($wptouch_smartphone_list as $key => $value) {
343
+ if( isset($value[0]) && isset($value[1]) ) {
344
+ if( preg_match("/" . preg_quote($value[0], "/") . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
345
+ if( preg_match("/" . preg_quote($value[1], "/") . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
346
+ return true;
347
+ }
348
+ }
349
+ } else if( isset($value[0]) ) {
350
+ if( preg_match("/" . preg_quote($value[0], "/") . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
351
+ return true;
352
+ }
353
+ }
354
+ }
355
+
356
+ return false;
357
+ }
358
+
359
+ public static function is_subdirectory_install()
360
+ {
361
+ if( strlen(site_url()) > strlen(home_url()) ) {
362
+ return true;
363
+ }
364
+
365
+ return false;
366
+ }
367
+
368
+ public static function getABSPATH()
369
+ {
370
+ $path = ABSPATH;
371
+ $siteUrl = site_url();
372
+ $homeUrl = home_url();
373
+ $diff = str_replace($homeUrl, "", $siteUrl);
374
+ $diff = trim($diff, "/");
375
+
376
+ $pos = strrpos($path, $diff);
377
+
378
+ if( $pos !== false ) {
379
+ $path = substr_replace($path, "", $pos, strlen($diff));
380
+ $path = trim($path, "/");
381
+ $path = "/" . $path . "/";
382
+ }
383
+
384
+ return $path;
385
+ }
386
+
387
+ public static function checkSuperCache($path, $htaccess)
388
+ {
389
+ if( self::isPluginActive('wp-super-cache/wp-cache.php') ) {
390
+ return ["WP Super Cache needs to be deactive", "error"];
391
+ } else {
392
+ @unlink($path . "wp-content/wp-cache-config.php");
393
+
394
+ $message = "";
395
+
396
+ if( is_file($path . "wp-content/wp-cache-config.php") ) {
397
+ $message .= "<br>- be sure that you removed /wp-content/wp-cache-config.php";
398
+ }
399
+
400
+ if( preg_match("/supercache/", $htaccess) ) {
401
+ $message .= "<br>- be sure that you removed the rules of super cache from the .htaccess";
402
+ }
403
+
404
+ return $message ? [
405
+ "WP Super Cache cannot remove its own remnants so please follow the steps below" . $message,
406
+ "error"
407
+ ] : "";
408
+ }
409
+
410
+ return "";
411
+ }
412
+
413
+ public static function warningIncompatible($incompatible, $alternative = false)
414
+ {
415
+ if( $alternative ) {
416
+ throw new Exception($incompatible . " <label>needs to be deactive</label><br><label>We advise</label> <a id='alternative-plugin' target='_blank' href='" . $alternative["url"] . "'>" . $alternative["name"] . "</a>");
417
+ } else {
418
+ throw new Exception($incompatible . " <label>needs to be deactive</label>");
419
+ }
420
+ }
421
+
422
+ public static function insertRewriteRule($htaccess)
423
+ {
424
+ $enable_cache = WCL_Plugin::app()->getPopulateOption('enable_cache');
425
+
426
+ if( $enable_cache ) {
427
+ $htaccess = preg_replace("/#\s?BEGIN\s?WClearfyCache.*?#\s?END\s?WClearfyCache/s", "", $htaccess);
428
+ $htaccess = self::getHtaccess() . $htaccess;
429
+ } else {
430
+ $htaccess = preg_replace("/#\s?BEGIN\s?WClearfyCache.*?#\s?END\s?WClearfyCache/s", "", $htaccess);
431
+ self::deleteCache();
432
+ }
433
+
434
+ return $htaccess;
435
+ }
436
+
437
+ public static function prefixRedirect()
438
+ {
439
+ $forceTo = "";
440
+
441
+ if( defined("WCLEARFY_DISABLE_REDIRECTION") && WCLEARFY_DISABLE_REDIRECTION ) {
442
+ return $forceTo;
443
+ }
444
+
445
+ if( preg_match("/^https:\/\//", home_url()) ) {
446
+ if( preg_match("/^https:\/\/www\./", home_url()) ) {
447
+ $forceTo = "\nRewriteCond %{HTTPS} =on" . "\n" . "RewriteCond %{HTTP_HOST} ^www." . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . "\n";
448
+ } else {
449
+ $forceTo = "\nRewriteCond %{HTTPS} =on" . "\n" . "RewriteCond %{HTTP_HOST} ^" . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . "\n";
450
+ }
451
+ } else {
452
+ if( preg_match("/^http:\/\/www\./", home_url()) ) {
453
+ $forceTo = "\nRewriteCond %{HTTP_HOST} ^" . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . "\n" . "RewriteRule ^(.*)$ " . preg_quote(home_url(), "/") . "\/$1 [R=301,L]" . "\n";
454
+ } else {
455
+ $forceTo = "\nRewriteCond %{HTTP_HOST} ^www." . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . " [NC]" . "\n" . "RewriteRule ^(.*)$ " . preg_quote(home_url(), "/") . "\/$1 [R=301,L]" . "\n";
456
+ }
457
+ }
458
+
459
+ return $forceTo;
460
+ }
461
+
462
+ public static function getHtaccess()
463
+ {
464
+ $mobile = "";
465
+ $loggedInUser = "";
466
+ $ifIsNotSecure = "";
467
+ $trailing_slash_rule = "";
468
+ $consent_cookie = "";
469
+
470
+ $language_negotiation_type = apply_filters('wpml_setting', false, 'language_negotiation_type');
471
+ if( ($language_negotiation_type == 2) && self::isPluginActive('sitepress-multilingual-cms/sitepress.php') ) {
472
+ $cache_path = '/cache/all/%{HTTP_HOST}/';
473
+ $disable_condition = true;
474
+ } else {
475
+ $cache_path = '/cache/all/';
476
+ $disable_condition = false;
477
+ }
478
+
479
+ if( isset($_POST["wpFastestCacheMobile"]) && $_POST["wpFastestCacheMobile"] == "on" ) {
480
+ $mobile = "RewriteCond %{HTTP_USER_AGENT} !^.*(" . self::getMobileUserAgents() . ").*$ [NC]" . "\n";
481
+
482
+ if( isset($_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER']) ) {
483
+ $mobile = $mobile . "RewriteCond %{HTTP_CLOUDFRONT_IS_MOBILE_VIEWER} false [NC]" . "\n";
484
+ $mobile = $mobile . "RewriteCond %{HTTP_CLOUDFRONT_IS_TABLET_VIEWER} false [NC]" . "\n";
485
+ }
486
+ }
487
+
488
+ if( isset($_POST["wpFastestCacheLoggedInUser"]) && $_POST["wpFastestCacheLoggedInUser"] == "on" ) {
489
+ $loggedInUser = "RewriteCond %{HTTP:Cookie} !wordpress_logged_in" . "\n";
490
+ }
491
+
492
+ if( !preg_match("/^https/i", get_option("home")) ) {
493
+ $ifIsNotSecure = "RewriteCond %{HTTPS} !=on";
494
+ }
495
+
496
+ if( self::is_trailing_slash() ) {
497
+ $trailing_slash_rule = "RewriteCond %{REQUEST_URI} \/$" . "\n";
498
+ } else {
499
+ $trailing_slash_rule = "RewriteCond %{REQUEST_URI} ![^\/]+\/$" . "\n";
500
+ }
501
+
502
+ $data = "# BEGIN WClearfyCache" . "\n" . "# Modified Time: " . date("d-m-y G:i:s", current_time('timestamp')) . "\n" . "<IfModule mod_rewrite.c>" . "\n" . "RewriteEngine On" . "\n" . "RewriteBase /" . "\n" . self::ruleForWpContent() . "\n" . self::prefixRedirect() . self::excludeRules() . "\n" . self::excludeAdminCookie() . "\n" . self::http_condition_rule() . "\n" . "RewriteCond %{HTTP_USER_AGENT} !(" . self::get_excluded_useragent() . ")" . "\n" . "RewriteCond %{HTTP_USER_AGENT} !(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)" . "\n" . "RewriteCond %{REQUEST_METHOD} !POST" . "\n" . $ifIsNotSecure . "\n" . "RewriteCond %{REQUEST_URI} !(\/){2}$" . "\n" . $trailing_slash_rule . "RewriteCond %{QUERY_STRING} !.+" . "\n" . $loggedInUser . $consent_cookie . "RewriteCond %{HTTP:Cookie} !comment_author_" . "\n" . //"RewriteCond %{HTTP:Cookie} !woocommerce_items_in_cart"."\n".
503
+ "RewriteCond %{HTTP:Cookie} !safirmobilswitcher=mobil" . "\n" . 'RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]' . "\n" . $mobile;
504
+
505
+ if( ABSPATH == "//" ) {
506
+ $data = $data . "RewriteCond %{DOCUMENT_ROOT}/" . basename(WP_CONTENT_DIR) . $cache_path . "$1/index.html -f" . "\n";
507
+ } else {
508
+ //WARNING: If you change the following lines, you need to update webp as well
509
+ $data = $data . "RewriteCond %{DOCUMENT_ROOT}/" . basename(WP_CONTENT_DIR) . $cache_path . "$1/index.html -f [or]" . "\n";
510
+ // to escape spaces
511
+ $tmp_WCLEARFY_WP_CONTENT_DIR = str_replace(" ", "\ ", WP_CONTENT_DIR);
512
+
513
+ $data = $data . "RewriteCond " . $tmp_WCLEARFY_WP_CONTENT_DIR . $cache_path . self::getRewriteBase(true) . "$1/index.html -f" . "\n";
514
+ }
515
+
516
+ $data = $data . 'RewriteRule ^(.*) "/' . self::getRewriteBase() . basename(WP_CONTENT_DIR) . $cache_path . self::getRewriteBase(true) . '$1/index.html" [L]' . "\n";
517
+
518
+ //RewriteRule !/ "/wp-content/cache/all/index.html" [L]
519
+
520
+ /*if( class_exists("WCL_MobileCache") && isset($this->options->wpFastestCacheMobileTheme) && $this->options->wpFastestCacheMobileTheme ) {
521
+ $wclearfy_mobile = new WCL_MobileCache();
522
+
523
+ if( $this->isPluginActive('wptouch/wptouch.php') || $this->isPluginActive('wptouch-pro/wptouch-pro.php') ) {
524
+ $wclearfy_mobile->set_wptouch(true);
525
+ } else {
526
+ $wclearfy_mobile->set_wptouch(false);
527
+ }
528
+
529
+ $data = $data . "\n\n\n" . $wclearfy_mobile->update_htaccess($data);
530
+ }*/
531
+
532
+ $data = $data . "</IfModule>" . "\n" . "<FilesMatch \"index\.(html|htm)$\">" . "\n" . "AddDefaultCharset UTF-8" . "\n" . "<ifModule mod_headers.c>" . "\n" . "FileETag None" . "\n" . "Header unset ETag" . "\n" . "Header set Cache-Control \"max-age=0, no-cache, no-store, must-revalidate\"" . "\n" . "Header set Pragma \"no-cache\"" . "\n" . "Header set Expires \"Mon, 29 Oct 1923 20:30:00 GMT\"" . "\n" . "</ifModule>" . "\n" . "</FilesMatch>" . "\n" . "# END WClearfyCache" . "\n";
533
+
534
+ if( is_multisite() ) {
535
+ return "";
536
+ } else {
537
+ return preg_replace("/\n+/", "\n", $data);
538
+ }
539
+ }
540
+
541
+ public static function http_condition_rule()
542
+ {
543
+ $http_host = preg_replace("/(http(s?)\:)?\/\/(www\d*\.)?/i", "", trim(home_url(), "/"));
544
+
545
+ if( preg_match("/\//", $http_host) ) {
546
+ $http_host = strstr($http_host, '/', true);
547
+ }
548
+
549
+ if( preg_match("/www\./", home_url()) ) {
550
+ $http_host = "www." . $http_host;
551
+ }
552
+
553
+ return "RewriteCond %{HTTP_HOST} ^" . $http_host;
554
+ }
555
+
556
+ public static function ruleForWpContent()
557
+ {
558
+ $newContentPath = str_replace(home_url(), "", content_url());
559
+ if( !preg_match("/wp-content/", $newContentPath) ) {
560
+ $newContentPath = trim($newContentPath, "/");
561
+
562
+ return "RewriteRule ^" . $newContentPath . "/cache/(.*) " . WP_CONTENT_DIR . "/cache/$1 [L]" . "\n";
563
+ }
564
+
565
+ return "";
566
+ }
567
+
568
+ public static function getRewriteBase($sub = "")
569
+ {
570
+ if( $sub && self::is_subdirectory_install() ) {
571
+ $trimedProtocol = preg_replace("/http:\/\/|https:\/\//", "", trim(home_url(), "/"));
572
+ $path = strstr($trimedProtocol, '/');
573
+
574
+ if( $path ) {
575
+ return trim($path, "/") . "/";
576
+ } else {
577
+ return "";
578
+ }
579
+ }
580
+
581
+ $url = rtrim(site_url(), "/");
582
+ preg_match("/https?:\/\/[^\/]+(.*)/", $url, $out);
583
+
584
+ if( isset($out[1]) && $out[1] ) {
585
+ $out[1] = trim($out[1], "/");
586
+
587
+ if( preg_match("/\/" . preg_quote($out[1], "/") . "\//", WP_CONTENT_DIR) ) {
588
+ return $out[1] . "/";
589
+ } else {
590
+ return "";
591
+ }
592
+ } else {
593
+ return "";
594
+ }
595
+ }
596
+
597
+ public static function singleDeleteCache($comment_id = false, $post_id = false)
598
+ {
599
+
600
+ $to_clear_parents = true;
601
+ $to_clear_feed = true;
602
+
603
+ // not to clear cache of homepage/cats/tags after ajax request by other plugins
604
+ if( isset($_POST) && isset($_POST["action"]) ) {
605
+ // kk Star Rating
606
+ if( $_POST["action"] == "kksr_ajax" ) {
607
+ $to_clear_parents = false;
608
+ }
609
+
610
+ // All In One Schema.org Rich Snippets
611
+ if( preg_match("/bsf_(update|submit)_rating/i", $_POST["action"]) ) {
612
+ $to_clear_parents = false;
613
+ }
614
+
615
+ // Yet Another Stars Rating
616
+ if( $_POST["action"] == "yasr_send_visitor_rating" ) {
617
+ $to_clear_parents = false;
618
+ $post_id = $_POST["post_id"];
619
+ }
620
+
621
+ // All In One Schema.org Rich Snippets
622
+ if( preg_match("/bsf_(update|submit)_rating/i", $_POST["action"]) ) {
623
+ $to_clear_feed = false;
624
+ }
625
+ }
626
+
627
+ if( $comment_id ) {
628
+ $comment_id = intval($comment_id);
629
+
630
+ $comment = get_comment($comment_id);
631
+
632
+ if( $comment && $comment->comment_post_ID ) {
633
+ $post_id = $comment->comment_post_ID;
634
+ }
635
+ }
636
+
637
+ if( $post_id ) {
638
+ $post_id = intval($post_id);
639
+
640
+ $permalink = urldecode(get_permalink($post_id));
641
+
642
+ //for trash contents
643
+ $permalink = rtrim($permalink, "/");
644
+ $permalink = preg_replace("/__trashed$/", "", $permalink);
645
+ //for /%postname%/%post_id% : sample-url__trashed/57595
646
+ $permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $permalink);
647
+
648
+ if( preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out) ) {
649
+ $path = self::getWpContentDir("/cache/all/") . $out[1];
650
+ $mobile_path = self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $out[1];
651
+
652
+ $files = [];
653
+
654
+ if( is_dir($path) ) {
655
+ array_push($files, $path);
656
+ }
657
+
658
+ if( is_dir($mobile_path) ) {
659
+ array_push($files, $mobile_path);
660
+ }
661
+
662
+ if( defined('WCACHE_QUERYSTRING') && WCACHE_QUERYSTRING ) {
663
+ $files_with_query_string = glob($path . "\?*");
664
+ $mobile_files_with_query_string = glob($mobile_path . "\?*");
665
+
666
+ if( is_array($files_with_query_string) && (count($files_with_query_string) > 0) ) {
667
+ $files = array_merge($files, $files_with_query_string);
668
+ }
669
+
670
+ if( is_array($mobile_files_with_query_string) && (count($mobile_files_with_query_string) > 0) ) {
671
+ $files = array_merge($files, $mobile_files_with_query_string);
672
+ }
673
+ }
674
+
675
+ if( $to_clear_feed ) {
676
+ // to clear cache of /feed
677
+ if( preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link(), $feed_out) ) {
678
+ array_push($files, self::getWpContentDir("/cache/all/") . $feed_out[1]);
679
+ }
680
+
681
+ // to clear cache of /comments/feed/
682
+ if( preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link("comments_"), $comment_feed_out) ) {
683
+ array_push($files, self::getWpContentDir("/cache/all/") . $comment_feed_out[1]);
684
+ }
685
+ }
686
+
687
+ foreach((array)$files as $file) {
688
+ self::rm_folder_recursively($file);
689
+ }
690
+ }
691
+
692
+ if( $to_clear_parents ) {
693
+ // to clear cache of homepage
694
+ self::deleteHomePageCache();
695
+
696
+ // to clear cache of author page
697
+ self::delete_author_page_cache($post_id);
698
+
699
+ // to clear sitemap cache
700
+ self::delete_sitemap_cache();
701
+
702
+ // to clear cache of cats and tags which contains the post (only first page)
703
+ global $wpdb;
704
+ $terms = $wpdb->get_results("SELECT * FROM `" . $wpdb->prefix . "term_relationships` WHERE `object_id`=" . $post_id, ARRAY_A);
705
+
706
+ foreach($terms as $term_key => $term_val) {
707
+ self::delete_cache_of_term($term_val["term_taxonomy_id"]);
708
+ }
709
+ }
710
+
711
+ self::delete_multiple_domain_mapping_cache();
712
+ }
713
+ }
714
+
715
+ public static function delete_cache_of_term($term_taxonomy_id)
716
+ {
717
+ $term = get_term_by("term_taxonomy_id", $term_taxonomy_id);
718
+
719
+ if( !$term || is_wp_error($term) ) {
720
+ return false;
721
+ }
722
+
723
+ //if(preg_match("/cat|tag|store|listing/", $term->taxonomy)){}
724
+
725
+ $url = get_term_link($term->term_id, $term->taxonomy);
726
+
727
+ if( preg_match("/^http/", $url) ) {
728
+ $path = preg_replace("/https?\:\/\/[^\/]+/i", "", $url);
729
+ $path = trim($path, "/");
730
+ $path = urldecode($path);
731
+
732
+ // to remove the cache of tag/cat
733
+ if( file_exists(self::getWpContentDir("/cache/all/") . $path . "/index.html") ) {
734
+ @unlink(self::getWpContentDir("/cache/all/") . $path . "/index.html");
735
+ }
736
+
737
+ if( file_exists(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/index.html") ) {
738
+ @unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/index.html");
739
+ }
740
+
741
+ // to remove the cache of the pages
742
+ self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $path . "/page");
743
+ self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/page");
744
+
745
+ // to remove the cache of the feeds
746
+ self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $path . "/feed");
747
+ self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/feed");
748
+ }
749
+
750
+ if( $term->parent > 0 ) {
751
+ $parent = get_term_by("id", $term->parent, $term->taxonomy);
752
+ self::delete_cache_of_term($parent->term_taxonomy_id);
753
+ }
754
+ }
755
+
756
+ public static function delete_author_page_cache($post_id)
757
+ {
758
+ $author_id = get_post_field('post_author', $post_id);
759
+ $permalink = get_author_posts_url($author_id);
760
+
761
+ if( preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out) ) {
762
+ $path = self::getWpContentDir("/cache/all/") . $out[1];
763
+ $mobile_path = self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $out[1];
764
+
765
+ self::rm_folder_recursively($path);
766
+ self::rm_folder_recursively($mobile_path);
767
+ }
768
+ }
769
+
770
+ public static function delete_sitemap_cache()
771
+ {
772
+ //to clear sitemap.xml and sitemap-(.+).xml
773
+ $files = array_merge(glob(self::getWpContentDir("/cache/all/") . "sitemap*.xml"), glob(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . "sitemap*.xml"));
774
+
775
+ foreach((array)$files as $file) {
776
+ self::rm_folder_recursively($file);
777
+ }
778
+ }
779
+
780
+ public static function deleteHomePageCache()
781
+ {
782
+ $site_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", site_url());
783
+ $home_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", home_url());
784
+
785
+ if( $site_url_path ) {
786
+ $site_url_path = trim($site_url_path, "/");
787
+
788
+ if( $site_url_path ) {
789
+ @unlink(self::getWpContentDir("/cache/all/") . $site_url_path . "/index.html");
790
+ @unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $site_url_path . "/index.html");
791
+
792
+ //to clear pagination of homepage cache
793
+ self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $site_url_path . "/page");
794
+ self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $site_url_path . "/page");
795
+ }
796
+ }
797
+
798
+ if( $home_url_path ) {
799
+ $home_url_path = trim($home_url_path, "/");
800
+
801
+ if( $home_url_path ) {
802
+ @unlink(self::getWpContentDir("/cache/all/") . $home_url_path . "/index.html");
803
+ @unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $home_url_path . "/index.html");
804
+
805
+ //to clear pagination of homepage cache
806
+ self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $home_url_path . "/page");
807
+ self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $home_url_path . "/page");
808
+ }
809
+ }
810
+
811
+ if( file_exists(self::getWpContentDir("/cache/all/index.html")) ) {
812
+ @unlink(self::getWpContentDir("/cache/all/index.html"));
813
+ }
814
+
815
+ if( file_exists(self::getWpContentDir("/cache/wclearfy-mobile-cache/index.html")) ) {
816
+ @unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/index.html"));
817
+ }
818
+
819
+ //to clear pagination of homepage cache
820
+ self::rm_folder_recursively(self::getWpContentDir("/cache/all/page"));
821
+ self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/page"));
822
+
823
+ // options-reading.php - static posts page
824
+ if( $page_for_posts_id = get_option('page_for_posts') ) {
825
+ $page_for_posts_permalink = urldecode(get_permalink($page_for_posts_id));
826
+
827
+ $page_for_posts_permalink = rtrim($page_for_posts_permalink, "/");
828
+ $page_for_posts_permalink = preg_replace("/__trashed$/", "", $page_for_posts_permalink);
829
+ //for /%postname%/%post_id% : sample-url__trashed/57595
830
+ $page_for_posts_permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $page_for_posts_permalink);
831
+
832
+ if( preg_match("/https?:\/\/[^\/]+\/(.+)/", $page_for_posts_permalink, $out) ) {
833
+ $page_for_posts_path = self::getWpContentDir("/cache/all/") . $out[1];
834
+ $page_for_posts_mobile_path = self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $out[1];
835
+
836
+ self::rm_folder_recursively($page_for_posts_path);
837
+ self::rm_folder_recursively($page_for_posts_mobile_path);
838
+ }
839
+ }
840
+ }
841
+
842
+ public static function deleteCache($minified = false)
843
+ {
844
+ $created_tmpWclearfy = false;
845
+ $cache_deleted = false;
846
+ $minifed_deleted = false;
847
+
848
+ $cache_path = self::getWpContentDir("/cache/all");
849
+ $minified_cache_path = self::getWpContentDir("/cache/wclearfy-minified");
850
+
851
+ if( class_exists("WCL_MobileCache") ) {
852
+ if( is_dir(self::getWpContentDir("/cache/wclearfy-mobile-cache")) ) {
853
+ if( is_dir(self::getWpContentDir("/cache/tmpWclearfy")) ) {
854
+ rename(self::getWpContentDir("/cache/wclearfy-mobile-cache"), self::getWpContentDir("/cache/tmpWclearfy/mobile_") . time());
855
+ } else if( @mkdir(self::getWpContentDir("/cache/tmpWclearfy"), 0755, true) ) {
856
+ rename(self::getWpContentDir("/cache/wclearfy-mobile-cache"), self::getWpContentDir("/cache/tmpWclearfy/mobile_") . time());
857
+ }
858
+ }
859
+ }
860
+
861
+ if( !is_dir(self::getWpContentDir("/cache/tmpWclearfy")) ) {
862
+ if( @mkdir(self::getWpContentDir("/cache/tmpWclearfy"), 0755, true) ) {
863
+ $created_tmpWclearfy = true;
864
+ } else {
865
+ $created_tmpWclearfy = false;
866
+ //$this->systemMessage = array("Permission of <strong>/wp-content/cache</strong> must be <strong>755</strong>", "error");
867
+ }
868
+ } else {
869
+ $created_tmpWclearfy = true;
870
+ }
871
+
872
+ //to clear widget cache path
873
+ self::deleteWidgetCache();
874
+
875
+ self::delete_multiple_domain_mapping_cache($minified);
876
+
877
+ if( is_dir($cache_path) ) {
878
+ if( @rename($cache_path, self::getWpContentDir("/cache/tmpWclearfy/") . time()) ) {
879
+ $cache_deleted = true;
880
+ }
881
+ } else {
882
+ $cache_deleted = true;
883
+ }
884
+
885
+ if( $minified ) {
886
+ if( is_dir($minified_cache_path) ) {
887
+ if( @rename($minified_cache_path, self::getWpContentDir("/cache/tmpWclearfy/m") . time()) ) {
888
+
889
+ $minifed_deleted = true;
890
+ }
891
+ } else {
892
+ $minifed_deleted = true;
893
+ }
894
+ } else {
895
+ $minifed_deleted = true;
896
+ }
897
+
898
+ if( $created_tmpWclearfy && $cache_deleted && $minifed_deleted ) {
899
+ do_action('wclearfy_delete_cache');
900
+
901
+ self::rm_folder_recursively(self::getWpContentDir("/cache/tmpWclearfy"));
902
+
903
+ return true;
904
+ } else {
905
+ // ошибка
906
+ }
907
+ }
908
+
909
+ public static function delete_multiple_domain_mapping_cache($minified = false)
910
+ {
911
+ //https://wordpress.org/plugins/multiple-domain-mapping-on-single-site/
912
+ if( self::isPluginActive("multiple-domain-mapping-on-single-site/multidomainmapping.php") ) {
913
+ $multiple_arr = get_option('falke_mdm_mappings');
914
+
915
+ if( isset($multiple_arr) && isset($multiple_arr["mappings"]) && isset($multiple_arr["mappings"][0]) ) {
916
+ foreach($multiple_arr["mappings"] as $mapping_key => $mapping_value) {
917
+ if( $minified ) {
918
+ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all\/)/", "/cache/" . $mapping_value["domain"] . "/", self::getWpContentDir("/cache/all/"));
919
+
920
+ if( is_dir($mapping_domain_path) ) {
921
+ if( @rename($mapping_domain_path, self::getWpContentDir("/cache/tmpWclearfy/") . $mapping_value["domain"] . "_" . time()) ) {
922
+
923
+ }
924
+ }
925
+ } else {
926
+ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all)/", "/cache/" . $mapping_value["domain"] . "/all", self::getWpContentDir("/cache/all/index.html"));
927
+
928
+ @unlink($mapping_domain_path);
929
+ }
930
+ }
931
+ }
932
+ }
933
+ }
934
+
935
+ public static function deleteWidgetCache()
936
+ {
937
+ $widget_cache_path = self::getWpContentDir("/cache/wclearfy-widget-cache");
938
+
939
+ if( is_dir($widget_cache_path) ) {
940
+ if( !is_dir(self::getWpContentDir("/cache/tmpWclearfy")) ) {
941
+ if( @mkdir(self::getWpContentDir("/cache/tmpWclearfy"), 0755, true) ) {
942
+ //tmpWclearfy has been created
943
+ }
944
+ }
945
+
946
+ if( @rename($widget_cache_path, self::getWpContentDir("/cache/tmpWclearfy/w") . time()) ) {
947
+ //DONE
948
+ }
949
+ }
950
+ }
951
+
952
+ public static function to_move_gtranslate_rules($htaccess)
953
+ {
954
+ preg_match("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", $htaccess, $gtranslate);
955
+
956
+ if( isset($gtranslate[0]) ) {
957
+ $htaccess = preg_replace("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", "", $htaccess);
958
+ $htaccess = $gtranslate[0] . "\n" . $htaccess;
959
+ }
960
+
961
+ return $htaccess;
962
+ }
963
+
964
+ public static function getMobileUserAgents()
965
+ {
966
+ return implode("|", self::get_mobile_browsers()) . "|" . implode("|", self::get_operating_systems());
967
+ }
968
+
969
+ public static function rm_folder_recursively($dir, $i = 1)
970
+ {
971
+ if( is_dir($dir) ) {
972
+ $files = @scandir($dir);
973
+ foreach((array)$files as $file) {
974
+ if( $i > 50 && !preg_match("/wp-fastest-cache-premium/i", $dir) ) {
975
+ return true;
976
+ } else {
977
+ $i++;
978
+ }
979
+ if( '.' === $file || '..' === $file ) {
980
+ continue;
981
+ }
982
+ if( is_dir("$dir/$file") ) {
983
+ self::rm_folder_recursively("$dir/$file", $i);
984
+ } else {
985
+ if( file_exists("$dir/$file") ) {
986
+ @unlink("$dir/$file");
987
+ }
988
+ }
989
+ }
990
+ }
991
+
992
+ if( is_dir($dir) ) {
993
+ $files_tmp = @scandir($dir);
994
+
995
+ if( !isset($files_tmp[2]) ) {
996
+ @rmdir($dir);
997
+ }
998
+ }
999
+
1000
+ return true;
1001
+ }
1002
+
1003
+ public static function excludeAdminCookie()
1004
+ {
1005
+ $rules = "";
1006
+ $users_groups = array_chunk(get_users(["role" => "administrator", "fields" => ["user_login"]]), 5);
1007
+
1008
+ foreach($users_groups as $group_key => $group) {
1009
+ $tmp_users = "";
1010
+ $tmp_rule = "";
1011
+
1012
+ foreach($group as $key => $value) {
1013
+ if( $tmp_users ) {
1014
+ $tmp_users = $tmp_users . "|" . sanitize_user(wp_unslash($value->user_login), true);
1015
+ } else {
1016
+ $tmp_users = sanitize_user(wp_unslash($value->user_login), true);
1017
+ }
1018
+
1019
+ // to replace spaces with \s
1020
+ $tmp_users = preg_replace("/\s/", "\s", $tmp_users);
1021
+
1022
+ if( !next($group) ) {
1023
+ $tmp_rule = "RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=" . $tmp_users;
1024
+ }
1025
+ }
1026
+
1027
+ if( $rules ) {
1028
+ $rules = $rules . "\n" . $tmp_rule;
1029
+ } else {
1030
+ $rules = $tmp_rule;
1031
+ }
1032
+ }
1033
+
1034
+ return "# Start_WCLEARFY_Exclude_Admin_Cookie\n" . $rules . "\n# End_WCLEARFY_Exclude_Admin_Cookie\n";
1035
+ }
1036
+
1037
+ public static function excludeRules()
1038
+ {
1039
+ $uris = WCL_Plugin::app()->getPopulateOption('cache_reject_uri');
1040
+
1041
+ if( !empty($uris) ) {
1042
+ $uris = array_map(function ($value) {
1043
+ $site_url = site_url();
1044
+
1045
+ $value = trim(rtrim($value));
1046
+ // http://clearfy.pro/members/ -> /members/
1047
+ $value = str_replace($site_url, "", $value);
1048
+ // /members/(.*) -> members/(.*)
1049
+ $value = preg_replace("/^\//", "", $value);
1050
+ // members/ -> members
1051
+ $value = untrailingslashit($value);
1052
+
1053
+ if( empty($value) ) {
1054
+ return "RewriteCond %{REQUEST_URI} !^/$ [NC]";
1055
+ }
1056
+
1057
+ return "RewriteCond %{REQUEST_URI} !^/" . $value . " [NC]";
1058
+ }, preg_split('/\r\n|\n|\r/', $uris));
1059
+ } else {
1060
+ $uris = [];
1061
+ }
1062
+
1063
+ return "# Start WCLEARFY Exclude\n" . implode("\n", $uris) . "\n# End WCLEARFY Exclude\n";
1064
+ }
1065
+
1066
+
1067
+ public static function modifyHtaccess()
1068
+ {
1069
+ $path = ABSPATH;
1070
+ if( self::is_subdirectory_install() ) {
1071
+ $path = self::getABSPATH();
1072
+ }
1073
+
1074
+ // if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"])){
1075
+ // return array("The plugin does not work with Microsoft IIS. Only with Apache", "error");
1076
+ // }
1077
+
1078
+ // if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){
1079
+ // return array("The plugin does not work with Nginx. Only with Apache", "error");
1080
+ // }
1081
+
1082
+ if( !file_exists($path . ".htaccess") ) {
1083
+ if( isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && (preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"]) || preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])) ) {
1084
+ //
1085
+ } else {
1086
+ throw new Exception("<label>.htaccess was not found</label> <a target='_blank' href='http://clearfy.com/docs/htaccess-was-not-found/'>Read More</a>", 98);
1087
+ }
1088
+ }
1089
+
1090
+ if( self::isPluginActive('wp-postviews/wp-postviews.php') ) {
1091
+ $wp_postviews_options = get_option("views_options");
1092
+ $wp_postviews_options["use_ajax"] = true;
1093
+ update_option("views_options", $wp_postviews_options);
1094
+
1095
+ if( !WP_CACHE ) {
1096
+ if( $wp_config = @file_get_contents(ABSPATH . "wp-config.php") ) {
1097
+ $wp_config = str_replace("\$table_prefix", "define('WP_CACHE', true);\n\$table_prefix", $wp_config);
1098
+
1099
+ if( !@file_put_contents(ABSPATH . "wp-config.php", $wp_config) ) {
1100
+ throw new Exception("define('WP_CACHE', true); is needed to be added into wp-config.php", 99);
1101
+ }
1102
+ } else {
1103
+ throw new Exception("define('WP_CACHE', true); is needed to be added into wp-config.php", 99);
1104
+ }
1105
+ }
1106
+ }
1107
+
1108
+ $htaccess = @file_get_contents($path . ".htaccess");
1109
+
1110
+ // if(defined('DONOTCACHEPAGE')){
1111
+ // return array("DONOTCACHEPAGE <label>constant is defined as TRUE. It must be FALSE</label>", "error");
1112
+ // }else
1113
+
1114
+ if( !get_option('permalink_structure') ) {
1115
+ throw new Exception("You have to set <strong><u><a href='" . admin_url() . "options-permalink.php" . "'>permalinks</a></u></strong>", 100);
1116
+ } else if( $res = self::checkSuperCache($path, $htaccess) ) {
1117
+ return $res;
1118
+ } else if( self::isPluginActive('fast-velocity-minify/fvm.php') ) {
1119
+ throw new Exception("Fast Velocity Minify needs to be deactivated", 101);
1120
+ } else if( self::isPluginActive('far-future-expiration/far-future-expiration.php') ) {
1121
+ throw new Exception("Far Future Expiration Plugin needs to be deactivated", 102);
1122
+ } else if( self::isPluginActive('sg-cachepress/sg-cachepress.php') ) {
1123
+ throw new Exception("SG Optimizer needs to be deactived", 103);
1124
+ } else if( self::isPluginActive('adrotate/adrotate.php') || self::isPluginActive('adrotate-pro/adrotate.php') ) {
1125
+ //return self::warningIncompatible("AdRotate");
1126
+ throw new Exception("AdRotate needs to be deactived", 104);
1127
+ } else if( self::isPluginActive('mobilepress/mobilepress.php') ) {
1128
+ /*return self::warningIncompatible("MobilePress", array(
1129
+ "name" => "WPtouch Mobile",
1130
+ "url" => "https://wordpress.org/plugins/wptouch/"
1131
+ ));*/
1132
+ throw new Exception("MobilePress needs to be deactived", 105);
1133
+ } else if( self::isPluginActive('speed-booster-pack/speed-booster-pack.php') ) {
1134
+ throw new Exception("Speed Booster Pack needs to be deactivated<br>", 106);
1135
+ } else if( self::isPluginActive('wp-performance-score-booster/wp-performance-score-booster.php') ) {
1136
+ throw new Exception("WP Performance Score Booster needs to be deactivated<br>This plugin has aldready Gzip, Leverage Browser Caching features", 107);
1137
+ } else if( self::isPluginActive('bwp-minify/bwp-minify.php') ) {
1138
+ throw new Exception("Better WordPress Minify needs to be deactivated<br>This plugin has aldready Minify feature", 108);
1139
+ } else if( self::isPluginActive('check-and-enable-gzip-compression/richards-toolbox.php') ) {
1140
+ throw new Exception("Check and Enable GZIP compression needs to be deactivated<br>This plugin has aldready Gzip feature", 109);
1141
+ } else if( self::isPluginActive('gzippy/gzippy.php') ) {
1142
+ throw new Exception("GZippy needs to be deactivated<br>This plugin has aldready Gzip feature", 110);
1143
+ } else if( self::isPluginActive('gzip-ninja-speed-compression/gzip-ninja-speed.php') ) {
1144
+ throw new Exception("GZip Ninja Speed Compression needs to be deactivated<br>This plugin has aldready Gzip feature", 111);
1145
+ } else if( self::isPluginActive('wordpress-gzip-compression/ezgz.php') ) {
1146
+ throw new Exception("WordPress Gzip Compression needs to be deactivated<br>This plugin has aldready Gzip feature", 112);
1147
+ } else if( self::isPluginActive('filosofo-gzip-compression/filosofo-gzip-compression.php') ) {
1148
+ throw new Exception("GZIP Output needs to be deactivated<br>This plugin has aldready Gzip feature", 113);
1149
+ } else if( self::isPluginActive('head-cleaner/head-cleaner.php') ) {
1150
+ throw new Exception("Head Cleaner needs to be deactivated", 114);
1151
+ } else if( self::isPluginActive('far-future-expiry-header/far-future-expiration.php') ) {
1152
+ throw new Exception("Far Future Expiration Plugin needs to be deactivated", 115);
1153
+ } else if( is_writable($path . ".htaccess") ) {
1154
+ $htaccess = apply_filters('wclearfy/cache/htaccess_rules', $htaccess);
1155
+
1156
+ $htaccess = self::insertRewriteRule($htaccess);
1157
+ $htaccess = self::to_move_gtranslate_rules($htaccess);
1158
+
1159
+ file_put_contents($path . ".htaccess", $htaccess);
1160
+ }
1161
+
1162
+ return false;
1163
+ }
1164
+
1165
+
1166
+ /**
1167
+ * Returns the home URL, without WPML filters if the plugin is active
1168
+ *
1169
+ * @param string $path Path to add to the home URL.
1170
+ *
1171
+ * @return string
1172
+ */
1173
+ public static function get_home_url($path = '')
1174
+ {
1175
+ static $home_url = [];
1176
+
1177
+ if( isset($home_url[$path]) ) {
1178
+ return $home_url[$path];
1179
+ }
1180
+
1181
+ $home_url[$path] = home_url($path);
1182
+
1183
+ return $home_url[$path];
1184
+ }
1185
+
1186
+ /**
1187
+ * Get the name of the "home directory", in case the home URL is not at the domain's root.
1188
+ * It can be seen like the `RewriteBase` from the .htaccess file, but without the trailing slash.
1189
+ *
1190
+ * @return string
1191
+ */
1192
+ public static function get_home_dirname()
1193
+ {
1194
+ static $home_root;
1195
+
1196
+ if( isset($home_root) ) {
1197
+ return $home_root;
1198
+ }
1199
+
1200
+ $home_root = wp_parse_url(self::get_main_home_url());
1201
+
1202
+ if( !empty($home_root['path']) ) {
1203
+ $home_root = '/' . trim($home_root['path'], '/');
1204
+ $home_root = rtrim($home_root, '/');
1205
+ } else {
1206
+ $home_root = '';
1207
+ }
1208
+
1209
+ return $home_root;
1210
+ }
1211
+
1212
+ /**
1213
+ * Get the URL of the site's root. It corresponds to the main site's home page URL.
1214
+ *
1215
+ * @return string
1216
+ * @author Grégory Viguier
1217
+ *
1218
+ * @since 3.1.1
1219
+ */
1220
+ public static function get_main_home_url()
1221
+ {
1222
+ static $root_url;
1223
+
1224
+ if( isset($root_url) ) {
1225
+ return $root_url;
1226
+ }
1227
+
1228
+ if( !is_multisite() || is_main_site() ) {
1229
+ $root_url = self::get_home_url('/');
1230
+
1231
+ return $root_url;
1232
+ }
1233
+
1234
+ $current_network = get_network();
1235
+
1236
+ if( $current_network ) {
1237
+ $root_url = set_url_scheme('https://' . $current_network->domain . $current_network->path);
1238
+ $root_url = trailingslashit($root_url);
1239
+ } else {
1240
+ $root_url = self::get_home_url('/');
1241
+ }
1242
+
1243
+ return $root_url;
1244
+ }
1245
+ }
components/cache/includes/includes/index.html ADDED
@@ -0,0 +1 @@
 
1
+ Silence is golden.
components/cache/includes/includes/todo_cdn.php ADDED
@@ -0,0 +1,462 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class CdnWCLEARFY{
3
+ public static function cloudflare_clear_cache($email = false, $key = false, $zoneid = false){
4
+ if(!$email && !$key && !$zoneid){
5
+ if($cdn_values = get_option("WClearfyCacheCDN")){
6
+ $std_obj = json_decode($cdn_values);
7
+
8
+ foreach ($std_obj as $key => $value) {
9
+ if($value->id == "cloudflare"){
10
+ $email = $value->cdnurl;
11
+ $key = $value->originurl;
12
+ break;
13
+ }
14
+ }
15
+
16
+ if($email && $key){
17
+ $zone = self::cloudflare_get_zone_id($email, $key, false);
18
+
19
+ if($zone["success"]){
20
+ $zoneid = $zone["zoneid"];
21
+ }
22
+ }
23
+ }
24
+ }
25
+
26
+ if($email && $key && $zoneid){
27
+ $header = array("method" => "DELETE",
28
+ 'headers' => array(
29
+ "X-Auth-Email" => $email,
30
+ "X-Auth-Key" => $key,
31
+ "Content-Type" => "application/json"
32
+ ),
33
+ "body" => '{"purge_everything":true}'
34
+ );
35
+
36
+ $response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/purge_cache', $header);
37
+ }
38
+ }
39
+
40
+ public static function cloudflare_disable_rocket_loader($email = false, $key = false, $zoneid = false){
41
+ if($email && $key && $zoneid){
42
+ $header = array("method" => "PATCH",
43
+ 'timeout' => 10,
44
+ 'headers' => array(
45
+ "X-Auth-Email" => $email,
46
+ "X-Auth-Key" => $key,
47
+ "Content-Type" => "application/json"
48
+ ),
49
+ 'body' => '{"value":"off"}'
50
+ );
51
+
52
+ $response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/rocket_loader', $header);
53
+
54
+ if(!$response || is_wp_error($response)){
55
+ return array("success" => false, "error_message" => "Unable to disable rocket loader option");
56
+ }else{
57
+ $body = json_decode(wp_remote_retrieve_body($response));
58
+
59
+ if($body->success){
60
+ return array("success" => true);
61
+ }else if(isset($body->errors) && isset($body->errors[0])){
62
+ return array("success" => false, "error_message" => $body->errors[0]->message);
63
+ }else{
64
+ return array("success" => false, "error_message" => "Unknown error: 101");
65
+ }
66
+ }
67
+
68
+ return array("success" => false, "error_message" => "Unknown error");
69
+ }
70
+ }
71
+
72
+
73
+ public static function cloudflare_set_browser_caching($email = false, $key = false, $zoneid = false){
74
+ if($email && $key && $zoneid){
75
+ $header = array("method" => "PATCH",
76
+ 'timeout' => 10,
77
+ 'headers' => array(
78
+ "X-Auth-Email" => $email,
79
+ "X-Auth-Key" => $key,
80
+ "Content-Type" => "application/json"
81
+ ),
82
+ 'body' => '{"value":16070400}'
83
+ );
84
+
85
+ $response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/browser_cache_ttl', $header);
86
+
87
+ if(!$response || is_wp_error($response)){
88
+ return array("success" => false, "error_message" => "Unable to set the browser caching option");
89
+ }else{
90
+ $body = json_decode(wp_remote_retrieve_body($response));
91
+
92
+ if($body->success){
93
+ return array("success" => true);
94
+ }else if(isset($body->errors) && isset($body->errors[0])){
95
+ return array("success" => false, "error_message" => $body->errors[0]->message);
96
+ }else{
97
+ return array("success" => false, "error_message" => "Unknown error: 101");
98
+ }
99
+ }
100
+
101
+ return array("success" => false, "error_message" => "Unknown error");
102
+ }
103
+ }
104
+
105
+ public static function cloudflare_disable_minify($email = false, $key = false, $zoneid = false){
106
+ if($email && $key && $zoneid){
107
+ $header = array("method" => "PATCH",
108
+ 'timeout' => 10,
109
+ 'headers' => array(
110
+ "X-Auth-Email" => $email,
111
+ "X-Auth-Key" => $key,
112
+ "Content-Type" => "application/json"
113
+ ),
114
+ 'body' => '{"value":{"css":"off","html":"off","js":"off"}}'
115
+ );
116
+
117
+ $response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/minify', $header);
118
+
119
+ if(!$response || is_wp_error($response)){
120
+ return array("success" => false, "error_message" => "Unable to disable minify options");
121
+ }else{
122
+ $body = json_decode(wp_remote_retrieve_body($response));
123
+
124
+ if($body->success){
125
+ return array("success" => true);
126
+ }else if(isset($body->errors) && isset($body->errors[0])){
127
+ return array("success" => false, "error_message" => $body->errors[0]->message);
128
+ }else{
129
+ return array("success" => false, "error_message" => "Unknown error: 101");
130
+ }
131
+ }
132
+
133
+ return array("success" => false, "error_message" => "Unknown error");
134
+ }else{
135
+ wp_die("bad request");
136
+ }
137
+ }
138
+
139
+ public static function cloudflare_get_zone_id($email = false, $key = false){
140
+ $hostname = preg_replace("/^(https?\:\/\/)?(www\d*\.)?/", "", $_SERVER["HTTP_HOST"]);
141
+
142
+ if(function_exists("idn_to_utf8")){
143
+ $hostname = idn_to_utf8($hostname);
144
+ }
145
+
146
+ $header = array("method" => "GET",
147
+ 'headers' => array(
148
+ "X-Auth-Email" => $email,
149
+ "X-Auth-Key" => $key,
150
+ "Content-Type" => "application/json"
151
+ ),
152
+ );
153
+
154
+ /*
155
+ status=active has been removed because status may be "pending"
156
+ */
157
+ $response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/?page=1&per_page=1000', $header);
158
+
159
+ if(!$response || is_wp_error($response)){
160
+ $res = array("success" => false, "error_message" => $response->get_error_message());
161
+ }else{
162
+ $zone = json_decode(wp_remote_retrieve_body($response));
163
+
164
+ if(isset($zone->errors) && isset($zone->errors[0])){
165
+ $res = array("success" => false, "error_message" => $zone->errors[0]->message);
166
+ }else{
167
+ if(isset($zone->result) && isset($zone->result[0])){
168
+ foreach ($zone->result as $zone_key => $zone_value) {
169
+ if(preg_match("/".$zone_value->name."/", $hostname)){
170
+ $res = array("success" => true,
171
+ "zoneid" => $zone_value->id,
172
+ "plan" => $zone_value->plan->legacy_id);
173
+ }
174
+ }
175
+
176
+ if(!$res["success"]){
177
+ $res = array("success" => false, "error_message" => "No zone name ".$hostname);
178
+ }
179
+ }else{
180
+ $res = array("success" => false, "error_message" => "There is no zone");
181
+ }
182
+ }
183
+ }
184
+
185
+ return $res;
186
+ }
187
+
188
+ public static function cloudflare_remove_webp(){
189
+ $path = ABSPATH.".htaccess";
190
+
191
+ if(file_exists($path)){
192
+ if(is_writable($path)){
193
+ $htaccess = file_get_contents($path);
194
+ $htaccess = preg_replace("/#\s?BEGIN\s?WEBPWClearfyCache.*?#\s?END\s?WEBPWClearfyCache/s", "", $htaccess);
195
+
196
+ file_put_contents($path, $htaccess);
197
+ }
198
+ }
199
+ }
200
+
201
+
202
+ public static function cloudflare_change_settings(){
203
+ //admin OR author OR editor
204
+ if(current_user_can('manage_options') || current_user_can('delete_published_posts') || current_user_can('edit_published_posts')){
205
+ if(isset($_GET["url"]) && isset($_GET["origin_url"])){
206
+ $email = $_GET["url"];
207
+ $key = $_GET["origin_url"];
208
+ }
209
+
210
+ $zone = CdnWCLEARFY::cloudflare_get_zone_id($email, $key);
211
+
212
+ if($zone["success"]){
213
+
214
+ $minify = CdnWCLEARFY::cloudflare_disable_minify($email, $key, $zone["zoneid"]);
215
+ $rocket_loader = CdnWCLEARFY::cloudflare_disable_rocket_loader($email, $key, $zone["zoneid"]);
216
+ $purge_cache = CdnWCLEARFY::cloudflare_clear_cache($email, $key, $zone["zoneid"]);
217
+ $browser_caching = CdnWCLEARFY::cloudflare_set_browser_caching($email, $key, $zone["zoneid"]);
218
+
219
+ if($zone["plan"] == "free"){
220
+ CdnWCLEARFY::cloudflare_remove_webp();;
221
+ }
222
+
223
+
224
+ if($minify["success"]){
225
+ if($rocket_loader["success"]){
226
+ if($browser_caching["success"]){
227
+ $res = array("success" => true);
228
+ }else{
229
+ $res = array("success" => false, "error_message" => $browser_caching["error_message"]);
230
+ }
231
+ }else{
232
+ $res = array("success" => false, "error_message" => $rocket_loader["error_message"]);
233
+ }
234
+ }else{
235
+ $res = array("success" => false, "error_message" => $minify["error_message"]);
236
+ }
237
+ }else{
238
+ $res = $zone;
239
+ }
240
+
241
+ wp_send_json($res);
242
+ }else{
243
+ wp_die("Must be admin");
244
+ }
245
+ }
246
+
247
+ public static function check_url(){
248
+ if(current_user_can('manage_options')){
249
+ if(isset($_GET["type"]) && $_GET["type"] == "cloudflare"){
250
+ CdnWCLEARFY::cloudflare_change_settings();
251
+ }
252
+
253
+ if(preg_match("/wp\.com/", $_GET["url"]) || $_GET["url"] == "random"){
254
+ wp_send_json(array("success" => true));
255
+ }
256
+
257
+ $host = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
258
+ $_GET["url"] = esc_url_raw($_GET["url"]);
259
+
260
+ if(!preg_match("/^http/", $_GET["url"])){
261
+ $_GET["url"] = "http://".$_GET["url"];
262
+ }
263
+
264
+ if(preg_match("/^https/i", site_url()) && preg_match("/^https/i", home_url())){
265
+ $_GET["url"] = preg_replace("/http\:\/\//i", "https://", $_GET["url"]);
266
+ }
267
+
268
+ $response = wp_remote_get($_GET["url"], array('timeout' => 20, 'user-agent' => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:64.0) Gecko/20100101 Firefox/64.0"));
269
+
270
+ $header = wp_remote_retrieve_headers($response);
271
+
272
+ if ( !$response || is_wp_error( $response ) ) {
273
+ $res = array("success" => false, "error_message" => $response->get_error_message());
274
+
275
+ if($response->get_error_code() == "http_request_failed"){
276
+ if($response->get_error_message() == "Failure when receiving data from the peer"){
277
+ $res = array("success" => true);
278
+ }else if(preg_match("/cURL\serror\s60/i", $response->get_error_message())){
279
+ //cURL error 60: SSL: no alternative certificate subject name matches target host name
280
+ $res = array("success" => false, "error_message" => "<a href='https://www.wpfastestcache.com/warnings/how-to-use-cdn-on-ssl-sites/' target='_blank'>Please Read: https://www.wpfastestcache.com/warnings/how-to-use-cdn-on-ssl-sites/</a>");
281
+ }else if(preg_match("/cURL\serror\s6/i", $response->get_error_message())){
282
+ //cURL error 6: Couldn't resolve host
283
+ if(preg_match("/".preg_quote($host, "/")."/i", $_GET["url"])){
284
+ $res = array("success" => true);
285
+ }
286
+ }
287
+ }
288
+ }else{
289
+ $response_code = wp_remote_retrieve_response_code( $response );
290
+ if($response_code == 200){
291
+ $res = array("success" => true);
292
+ }else{
293
+ if(method_exists($response, "get_error_message")){
294
+ $res = array("success" => false, "error_message" => $response->get_error_message());
295
+ }else{
296
+ $res = array("success" => false, "error_message" => wp_remote_retrieve_response_message($response));
297
+ }
298
+
299
+ if(isset($header["server"]) && preg_match("/squid/i", $header["server"])){
300
+ $res = array("success" => true);
301
+ }
302
+
303
+ if(($response_code == 401) && (preg_match("/res\.cloudinary\.com/i", $_GET["url"]))){
304
+ $res = array("success" => true);
305
+ }
306
+
307
+ if(($response_code == 403) && (preg_match("/stackpathdns\.com/i", $_GET["url"]))){
308
+ $res = array("success" => true);
309
+ }
310
+
311
+ if(($response_code == 403) && (preg_match("/cloudfront\.net/i", $_GET["url"]))){
312
+ $res = array("success" => false, "error_message" => "<a href='https://www.wpfastestcache.com/warnings/amazon-s3-cloudfront-access-denied-403-forbidden/' target='_blank'>Please Read: https://www.wpfastestcache.com/warnings/amazon-s3-cloudfront-access-denied-403-forbidden</a>");
313
+ }
314
+ }
315
+ }
316
+
317
+ wp_send_json($res);
318
+ }else{
319
+ wp_die("Must be admin");
320
+ }
321
+ }
322
+
323
+ public static function cdn_options(){
324
+ if(current_user_can('manage_options')){
325
+ $cdn_values = get_option("WClearfyCacheCDN");
326
+ if($cdn_values){
327
+ echo $cdn_values;
328
+ }else{
329
+ echo json_encode(array("success" => false));
330
+ }
331
+ exit;
332
+ }else{
333
+ wp_die("Must be admin");
334
+ }
335
+ }
336
+
337
+ public static function remove_cdn_integration(){
338
+ if(current_user_can('manage_options')){
339
+ $cdn_values = get_option("WClearfyCacheCDN");
340
+
341
+ if($cdn_values){
342
+ $std_obj = json_decode($cdn_values);
343
+ $cdn_values_arr = array();
344
+
345
+ if(is_array($std_obj)){
346
+ $cdn_values_arr = $std_obj;
347
+ }else{
348
+ array_push($cdn_values_arr, $std_obj);
349
+ }
350
+
351
+ foreach ($cdn_values_arr as $cdn_key => $cdn_value) {
352
+ if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){
353
+ $cdn_value->id = "other";
354
+ }
355
+
356
+ if($cdn_value->id == $_POST["id"]){
357
+ unset($cdn_values_arr[$cdn_key]);
358
+ }
359
+ }
360
+
361
+ $cdn_values_arr = array_values($cdn_values_arr);
362
+ }
363
+
364
+ if(count($cdn_values_arr) > 0){
365
+ update_option("WClearfyCacheCDN", json_encode($cdn_values_arr));
366
+ }else{
367
+ delete_option("WClearfyCacheCDN");
368
+ }
369
+
370
+ echo json_encode(array("success" => true));
371
+ exit;
372
+ }else{
373
+ wp_die("Must be admin");
374
+ }
375
+ }
376
+
377
+ public static function cdn_template(){
378
+ if(current_user_can('manage_options')){
379
+ if($_POST["id"] == "maxcdn"){
380
+ $path = WCLEARFY_MAIN_PATH."templates/cdn/maxcdn.php";
381
+ }else if($_POST["id"] == "other"){
382
+ $path = WCLEARFY_MAIN_PATH."templates/cdn/other.php";
383
+ }else if($_POST["id"] == "photon"){
384
+ $path = WCLEARFY_MAIN_PATH."templates/cdn/photon.php";
385
+ }else if($_POST["id"] == "cloudflare"){
386
+ $path = WCLEARFY_MAIN_PATH."templates/cdn/cloudflare.php";
387
+ }else{
388
+ die("Wrong cdn");
389
+ }
390
+
391
+
392
+ ob_start();
393
+ include_once($path);
394
+ $content = ob_get_contents();
395
+ ob_end_clean();
396
+
397
+ $res = array("success" => false, "content" => "");
398
+
399
+ if($data = @file_get_contents($path)){
400
+ $res["success"] = true;
401
+ $res["content"] = $content;
402
+ }
403
+
404
+ echo json_encode($res);
405
+ exit;
406
+ }else{
407
+ wp_die("Must be admin");
408
+ }
409
+ }
410
+
411
+ public static function save_cdn_integration(){
412
+ if(current_user_can('manage_options')){
413
+ if(isset($_POST) && isset($_POST["values"])){
414
+ foreach ($_POST["values"] as $val_key => &$val_value) {
415
+ $val_value = sanitize_text_field($val_value);
416
+ }
417
+ }
418
+
419
+ if($data = get_option("WClearfyCacheCDN")){
420
+ $cdn_exist = false;
421
+ $arr = json_decode($data);
422
+
423
+ if(is_array($arr)){
424
+ foreach ($arr as $cdn_key => &$cdn_value) {
425
+ if($cdn_value->id == $_POST["values"]["id"]){
426
+ $cdn_value = $_POST["values"];
427
+ $cdn_exist = true;
428
+ }
429
+ }
430
+
431
+ if(!$cdn_exist){
432
+ array_push($arr, $_POST["values"]);
433
+ }
434
+
435
+ update_option("WClearfyCacheCDN", json_encode($arr));
436
+ }else{
437
+ $tmp_arr = array();
438
+
439
+ if($arr->id == $_POST["values"]["id"]){
440
+ array_push($tmp_arr, $_POST["values"]);
441
+ }else{
442
+ array_push($tmp_arr, $arr);
443
+ array_push($tmp_arr, $_POST["values"]);
444
+ }
445
+
446
+ update_option("WClearfyCacheCDN", json_encode($tmp_arr));
447
+ }
448
+ }else{
449
+ $arr = array();
450
+ array_push($arr, $_POST["values"]);
451
+
452
+ add_option("WClearfyCacheCDN", json_encode($arr), null, "yes");
453
+ }
454
+ echo json_encode(array("success" => true));
455
+ exit;
456
+ }else{
457
+ wp_die("Must be admin");
458
+ }
459
+ }
460
+
461
+ }
462
+ ?>
components/cache/includes/index.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php
2
+ // Silence is golden.
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_448_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_451_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\Factory_Templates_101\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -52,9 +52,9 @@ class WbcrCmp_CommentsPage extends WBCR\Factory_Templates_101\Pages\PageBase {
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
- * @param \Wbcr_Factory449_Plugin $plugin
56
  */
57
- public function __construct( Wbcr_Factory449_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\Factory_Templates_105\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
+ * @param \Wbcr_Factory452_Plugin $plugin
56
  */
57
+ public function __construct( Wbcr_Factory452_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\Factory_Templates_101\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -66,9 +66,9 @@ class WbcrCmp_DeleteCommentsPage extends WBCR\Factory_Templates_101\Pages\PageBa
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
- * @param \Wbcr_Factory449_Plugin $plugin
70
  */
71
- public function __construct( Wbcr_Factory449_Plugin $plugin ) {
72
  $this->menu_title = __( 'Comments cleaner', 'comments-plus' );
73
 
74
  parent::__construct( $plugin );
@@ -78,10 +78,10 @@ class WbcrCmp_DeleteCommentsPage extends WBCR\Factory_Templates_101\Pages\PageBa
78
  * {@inheritDoc}
79
  *
80
  * @param $notices
81
- * @param Wbcr_Factory449_Plugin $plugin
82
  *
83
  * @return array
84
- * @see libs\factory\pages\themplates\FactoryPages448_ImpressiveThemplate
85
  */
86
  public function getActionNotices( $notices ) {
87
 
@@ -200,7 +200,7 @@ class WbcrCmp_DeleteCommentsPage extends WBCR\Factory_Templates_101\Pages\PageBa
200
  /**
201
  * Prints the content of the page
202
  *
203
- * @see libs\factory\pages\themplates\FactoryPages448_ImpressiveThemplate
204
  */
205
  public function showPageContent() {
206
  $stats = $this->getStats();
16
  *
17
  * @copyright (c) 2018 Webraftic Ltd
18
  */
19
+ class WbcrCmp_DeleteCommentsPage extends WBCR\Factory_Templates_105\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
+ * @param \Wbcr_Factory452_Plugin $plugin
70
  */
71
+ public function __construct( Wbcr_Factory452_Plugin $plugin ) {
72
  $this->menu_title = __( 'Comments cleaner', 'comments-plus' );
73
 
74
  parent::__construct( $plugin );
78
  * {@inheritDoc}
79
  *
80
  * @param $notices
81
+ * @param Wbcr_Factory452_Plugin $plugin
82
  *
83
  * @return array
84
+ * @see libs\factory\pages\themplates\FactoryPages451_ImpressiveThemplate
85
  */
86
  public function getActionNotices( $notices ) {
87
 
200
  /**
201
  * Prints the content of the page
202
  *
203
+ * @see libs\factory\pages\themplates\FactoryPages451_ImpressiveThemplate
204
  */
205
  public function showPageContent() {
206
  $stats = $this->getStats();
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_449_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_449', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_446', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_448', 'admin'),
74
- array('libs/factory/clearfy', 'factory_templates_101', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_127', 'admin')
76
  )
77
  );
78
 
79
- $wcm_compatibility = new Wbcr_Factory449_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_452_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_449', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_451', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_templates_105', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_129', 'admin')
76
  )
77
  );
78
 
79
+ $wcm_compatibility = new Wbcr_Factory452_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_Factory449_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory449_Plugin
18
  */
19
  private static $app;
20
 
@@ -59,7 +59,7 @@ class WCM_Plugin extends Wbcr_Factory449_Plugin {
59
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
60
  * классам.
61
  *
62
- * @return \Wbcr_Factory449_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_Factory452_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory452_Plugin
18
  */
19
  private static $app;
20
 
59
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
60
  * классам.
61
  *
62
+ * @return \Wbcr_Factory452_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\Factory_Templates_101\Configurate {
16
 
17
  private $modified_types = [];
18
 
19
  /**
20
- * @param Wbcr_Factory449_Plugin $plugin
21
  */
22
- public function __construct( Wbcr_Factory449_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\Factory_Templates_105\Configurate {
16
 
17
  private $modified_types = [];
18
 
19
  /**
20
+ * @param Wbcr_Factory452_Plugin $plugin
21
  */
22
+ public function __construct( Wbcr_Factory452_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_Factory449_Activator
9
  * @version 1.0
10
  */
11
 
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WCTR_Activation extends Wbcr_Factory449_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_Factory452_Activator
9
  * @version 1.0
10
  */
11
 
14
  exit;
15
  }
16
 
17
+ class WCTR_Activation extends Wbcr_Factory452_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_448_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_451_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\Factory_Templates_101\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -59,9 +59,9 @@ class WCTR_CyrliteraPage extends WBCR\Factory_Templates_101\Pages\PageBase {
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
- * @param \Wbcr_Factory449_Plugin $plugin
63
  */
64
- public function __construct( Wbcr_Factory449_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\Factory_Templates_101\Pages\PageBase {
203
  }
204
 
205
  /**
206
- * @param $html_builder Wbcr_FactoryForms446_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\Factory_Templates_105\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
59
  *
60
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
  *
62
+ * @param \Wbcr_Factory452_Plugin $plugin
63
  */
64
+ public function __construct( Wbcr_Factory452_Plugin $plugin ) {
65
  $this->menu_title = __( 'Cyrlitera', 'cyrlitera' );
66
 
67
  if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
203
  }
204
 
205
  /**
206
+ * @param $html_builder Wbcr_FactoryForms449_Html
207
  */
208
  public function rollbackButton( $html_builder ) {
209
  $form_name = $html_builder->getFormName();
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_449_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_449', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_446', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_448', 'admin'),
74
- array('libs/factory/clearfy', 'factory_templates_101', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_127', 'admin')
76
  )
77
  );
78
 
79
- $wctr_compatibility = new Wbcr_Factory449_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_452_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_449', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_451', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_templates_105', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_129', 'admin')
76
  )
77
  );
78
 
79
+ $wctr_compatibility = new Wbcr_Factory452_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_Factory449_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory449_Plugin
18
  */
19
  private static $app;
20
 
@@ -57,7 +57,7 @@ class WCTR_Plugin extends Wbcr_Factory449_Plugin {
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
- * @return \Wbcr_Factory449_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_Factory452_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory452_Plugin
18
  */
19
  private static $app;
20
 
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
+ * @return \Wbcr_Factory452_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\Factory_Templates_101\Configurate {
16
 
17
  public function registerActionsAndFilters() {
18
 
@@ -235,7 +235,7 @@ class WCTR_ConfigurateCyrlitera extends WBCR\Factory_Templates_101\Configurate {
235
  * Перенаправление со старых url, которые были уже преобразованы
236
  */
237
  public function redirectFromOldUrls() {
238
- if ( ! WBCR\Factory_Templates_101\Helpers::isPermalink() ) {
239
  return;
240
  }
241
  $is404 = is_404();
12
  exit;
13
  }
14
 
15
+ class WCTR_ConfigurateCyrlitera extends WBCR\Factory_Templates_105\Configurate {
16
 
17
  public function registerActionsAndFilters() {
18
 
235
  * Перенаправление со старых url, которые были уже преобразованы
236
  */
237
  public function redirectFromOldUrls() {
238
+ if ( ! WBCR\Factory_Templates_105\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_Factory449_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_Factory452_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_448_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_451_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\Factory_Templates_101\Pages\PageBase {
23
 
24
  /**
25
  * Requests assets (js and css) for the page.
26
  *
27
- * @param Wbcr_Factory449_ScriptList $scripts
28
- * @param Wbcr_Factory449_StyleList $styles
29
  *
30
  * @return void
31
- * @see Wbcr_FactoryPages448_AdminPage
32
  *
33
  */
34
  public function assets( $scripts, $styles ) {
19
  exit;
20
  }
21
 
22
+ class WDN_Page extends WBCR\Factory_Templates_105\Pages\PageBase {
23
 
24
  /**
25
  * Requests assets (js and css) for the page.
26
  *
27
+ * @param Wbcr_Factory452_ScriptList $scripts
28
+ * @param Wbcr_Factory452_StyleList $styles
29
  *
30
  * @return void
31
+ * @see Wbcr_FactoryPages451_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_FactoryPages448_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_FactoryForms446_Html
207
  *
208
  * @since 1.0
209
  *
176
  * с настройками этого плагина, потому что это ухудшает юзабилити.
177
  *
178
  * @param array $form Массив с группой настроек, страницы "Дополнительно" в плагине Clearfy
179
+ * @param Wbcr_FactoryPages451_ImpressiveThemplate $page Экземпляр страницы
180
  *
181
  * @return mixed Отсортированный массив с группой опций
182
  */
203
  * Эта модикация является не стандартной, поэтому мы не можете реалировать ее
204
  * через фреймворк.
205
  *
206
+ * @param @param $html_builder Wbcr_FactoryForms449_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_Factory449_ScriptList $scripts
67
- * @param Wbcr_Factory449_StyleList $styles
68
  *
69
  * @return void
70
- * @see Wbcr_FactoryPages448_AdminPage
71
  *
72
  */
73
  public function assets( $scripts, $styles ) {
63
  /**
64
  * Requests assets (js and css) for the page.
65
  *
66
+ * @param Wbcr_Factory452_ScriptList $scripts
67
+ * @param Wbcr_Factory452_StyleList $styles
68
  *
69
  * @return void
70
+ * @see Wbcr_FactoryPages451_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_Factory449_ScriptList $scripts
65
- * @param Wbcr_Factory449_StyleList $styles
66
  *
67
  * @return void
68
- * @see Wbcr_FactoryPages448_AdminPage
69
  *
70
  */
71
  public function assets( $scripts, $styles ) {
61
  /**
62
  * Requests assets (js and css) for the page.
63
  *
64
+ * @param Wbcr_Factory452_ScriptList $scripts
65
+ * @param Wbcr_Factory452_StyleList $styles
66
  *
67
  * @return void
68
+ * @see Wbcr_FactoryPages451_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\Factory_Templates_101\Pages\License {
17
 
18
  /**
19
  * {@inheritdoc}
@@ -36,12 +36,12 @@ class WDN_LicensePage extends WBCR\Factory_Templates_101\Pages\License {
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
- * @param \Wbcr_Factory449_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
- public function __construct( Wbcr_Factory449_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\Factory_Templates_105\Pages\License {
17
 
18
  /**
19
  * {@inheritdoc}
36
  /**
37
  * WCL_LicensePage constructor.
38
  *
39
+ * @param \Wbcr_Factory452_Plugin $plugin
40
  *
41
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
42
  *
43
  */
44
+ public function __construct( Wbcr_Factory452_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_Factory449_ScriptList $scripts
63
- * @param Wbcr_Factory449_StyleList $styles
64
  *
65
  * @return void
66
- * @see Wbcr_FactoryPages448_AdminPage
67
  *
68
  */
69
  public function assets( $scripts, $styles ) {
59
  /**
60
  * Requests assets (js and css) for the page.
61
  *
62
+ * @param Wbcr_Factory452_ScriptList $scripts
63
+ * @param Wbcr_Factory452_StyleList $styles
64
  *
65
  * @return void
66
+ * @see Wbcr_FactoryPages451_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_Factory449_Plugin $plugin
70
  */
71
- public function __construct( Wbcr_Factory449_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_Factory449_ScriptList $scripts
92
- * @param Wbcr_Factory449_StyleList $styles
93
  *
94
  * @return void
95
- * @see Wbcr_FactoryPages448_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_448')
126
  );*/
127
 
128
  return $notices;
66
 
67
 
68
  /**
69
+ * @param Wbcr_Factory452_Plugin $plugin
70
  */
71
+ public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
92
+ * @param Wbcr_Factory452_StyleList $styles
93
  *
94
  * @return void
95
+ * @see Wbcr_FactoryPages451_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_451')
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_449_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_449', 'admin'),
89
- array('libs/factory/forms', 'factory_forms_446', 'admin'),
90
- array('libs/factory/pages', 'factory_pages_448', 'admin'),
91
- array('libs/factory/clearfy', 'factory_templates_101', 'all'),
92
- array('libs/factory/freemius', 'factory_freemius_137', 'all'),
93
- array('libs/factory/adverts', 'factory_adverts_127', 'admin'),
94
- //array('libs/factory/logger', 'factory_logger_114', 'all')
95
  )
96
  );
97
 
98
- $wdan_compatibility = new Wbcr_Factory449_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_452_VERSION
12
  */
13
 
14
  /**
85
 
86
  // FRAMEWORK MODULES
87
  'load_factory_modules' => array(
88
+ array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
89
+ array('libs/factory/forms', 'factory_forms_449', 'admin'),
90
+ array('libs/factory/pages', 'factory_pages_451', 'admin'),
91
+ array('libs/factory/clearfy', 'factory_templates_105', 'all'),
92
+ array('libs/factory/freemius', 'factory_freemius_139', 'all'),
93
+ array('libs/factory/adverts', 'factory_adverts_129', 'admin'),
94
+ //array('libs/factory/logger', 'factory_logger_117', 'all')
95
  )
96
  );
97
 
98
+ $wdan_compatibility = new Wbcr_Factory452_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_127\Base;
13
 
14
  if ( ! defined( 'ABSPATH' ) ) {
15
  exit;
16
  }
17
 
18
- class WDN_Plugin extends Wbcr_Factory449_Plugin {
19
 
20
  /**
21
- * @var Wbcr_Factory449_Plugin
22
  */
23
  private static $app;
24
  private $plugin_data;
@@ -44,7 +44,7 @@ class WDN_Plugin extends Wbcr_Factory449_Plugin {
44
  }
45
 
46
  /**
47
- * @return Wbcr_Factory449_Plugin
48
  */
49
  public static function app() {
50
  return self::$app;
9
  */
10
 
11
  // Exit if accessed directly
12
+ //use WBCR\Factory_Adverts_129\Base;
13
 
14
  if ( ! defined( 'ABSPATH' ) ) {
15
  exit;
16
  }
17
 
18
+ class WDN_Plugin extends Wbcr_Factory452_Plugin {
19
 
20
  /**
21
+ * @var Wbcr_Factory452_Plugin
22
  */
23
  private static $app;
24
  private $plugin_data;
44
  }
45
 
46
  /**
47
+ * @return Wbcr_Factory452_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\Factory_Templates_101\Configurate {
19
 
20
  public function registerActionsAndFilters() {
21
  if ( is_admin() ) {
15
  exit;
16
  }
17
 
18
+ class WDN_ConfigHideNotices extends WBCR\Factory_Templates_105\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_Factory449_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_Factory452_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 Factory449_Activator
9
  * @version 1.0
10
  */
11
 
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WGA_Activation extends Wbcr_Factory449_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 Factory452_Activator
9
  * @version 1.0
10
  */
11
 
14
  exit;
15
  }
16
 
17
+ class WGA_Activation extends Wbcr_Factory452_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_FactoryPages448_ImpressiveThemplate $page
25
  *
26
- * @param Wbcr_Factory449_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_FactoryPages451_ImpressiveThemplate $page
25
  *
26
+ * @param Wbcr_Factory452_Plugin $plugin
27
  *
28
  * @return void
29
  * @since 3.0.1
components/ga-cache/admin/options.php CHANGED
@@ -151,7 +151,7 @@ function wbcr_ga_get_plugin_options()
151
 
152
  /**
153
  * @param $form
154
- * @param $page Wbcr_FactoryPages448_ImpressiveThemplate
155
  *
156
  * @return mixed
157
  */
151
 
152
  /**
153
  * @param $form
154
+ * @param $page Wbcr_FactoryPages451_ImpressiveThemplate
155
  *
156
  * @return mixed
157
  */
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\Factory_Templates_101\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -48,9 +48,9 @@ class WGA_CachePage extends WBCR\Factory_Templates_101\Pages\PageBase {
48
  public $show_right_sidebar_in_options = true;
49
 
50
  /**
51
- * @param Wbcr_Factory449_Plugin $plugin
52
  */
53
- public function __construct( Wbcr_Factory449_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\Factory_Templates_105\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
48
  public $show_right_sidebar_in_options = true;
49
 
50
  /**
51
+ * @param Wbcr_Factory452_Plugin $plugin
52
  */
53
+ public function __construct( Wbcr_Factory452_Plugin $plugin ) {
54
  $this->menu_title = __( 'Local Google Analytics', 'simple-google-analytics' );
55
 
56
  if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
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_Factory449_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory449_Plugin
18
  */
19
  private static $app;
20
 
@@ -59,7 +59,7 @@ class WGA_Plugin extends Wbcr_Factory449_Plugin {
59
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
60
  * классам.
61
  *
62
- * @return \Wbcr_Factory449_Plugin|\WGA_Plugin
63
  */
64
  public static function app()
65
  {
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_Factory452_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory452_Plugin
18
  */
19
  private static $app;
20
 
59
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
60
  * классам.
61
  *
62
+ * @return \Wbcr_Factory452_Plugin|\WGA_Plugin
63
  */
64
  public static function app()
65
  {
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\Factory_Templates_101\Configurate {
16
 
17
 
18
  public function registerActionsAndFilters() {
12
  exit;
13
  }
14
 
15
+ class WGA_ConfigGACache extends WBCR\Factory_Templates_105\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_Factory449_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_Factory452_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_449', 'admin'),
71
- array('libs/factory/forms', 'factory_forms_446', 'admin'),
72
- array('libs/factory/pages', 'factory_pages_448', 'admin'),
73
- array('libs/factory/clearfy', 'factory_templates_101', 'all'),
74
- array('libs/factory/adverts', 'factory_adverts_127', 'admin')
75
  )
76
  );
77
 
78
- $wga_compatibility = new Wbcr_Factory449_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_453', 'admin'),
71
+ array('libs/factory/forms', 'factory_forms_449', 'admin'),
72
+ array('libs/factory/pages', 'factory_pages_451', 'admin'),
73
+ array('libs/factory/clearfy', 'factory_templates_105', 'all'),
74
+ array('libs/factory/adverts', 'factory_adverts_129', 'admin')
75
  )
76
  );
77
 
78
+ $wga_compatibility = new Wbcr_Factory452_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\Factory_Templates_101\Pages\PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
@@ -52,9 +52,9 @@ class WHTM_SettingsPage extends WBCR\Factory_Templates_101\Pages\PageBase {
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
- * @param \Wbcr_Factory449_Plugin $plugin
56
  */
57
- public function __construct( Wbcr_Factory449_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\Factory_Templates_105\Pages\PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
52
  *
53
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
54
  *
55
+ * @param \Wbcr_Factory452_Plugin $plugin
56
  */
57
+ public function __construct( Wbcr_Factory452_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_449_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_449', 'admin' ),
63
- array( 'libs/factory/forms', 'factory_forms_446', 'admin' ),
64
- array( 'libs/factory/pages', 'factory_pages_448', 'admin' ),
65
- array( 'libs/factory/clearfy', 'factory_templates_101', 'all' ),
66
- array( 'libs/factory/adverts', 'factory_adverts_127', 'admin')
67
  )
68
  );
69
 
70
- $whtml_compatibility = new Wbcr_Factory449_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_452_VERSION
12
  */
13
 
14
  /*
59
 
60
  // FRAMEWORK MODULES
61
  'load_factory_modules' => array(
62
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_453', 'admin' ),
63
+ array( 'libs/factory/forms', 'factory_forms_449', 'admin' ),
64
+ array( 'libs/factory/pages', 'factory_pages_451', 'admin' ),
65
+ array( 'libs/factory/clearfy', 'factory_templates_105', 'all' ),
66
+ array( 'libs/factory/adverts', 'factory_adverts_129', 'admin')
67
  )
68
  );
69
 
70
+ $whtml_compatibility = new Wbcr_Factory452_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_Factory449_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory449_Plugin
21
  */
22
  private static $app;
23
 
@@ -53,7 +53,7 @@ class WHTM_Plugin extends Wbcr_Factory449_Plugin {
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
- * @return \Wbcr_Factory449_Plugin|\WCM_Plugin
57
  */
58
  public static function app() {
59
  return self::$app;
13
  }
14
 
15
 
16
+ class WHTM_Plugin extends Wbcr_Factory452_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
+ * @var Wbcr_Factory452_Plugin
21
  */
22
  private static $app;
23
 
53
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
54
  * классам.
55
  *
56
+ * @return \Wbcr_Factory452_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\Factory_Templates_101\Pages\PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
@@ -50,12 +50,12 @@ class WMAC_MinifyAndCombineSettingsPage extends WBCR\Factory_Templates_101\Pages
50
  /**
51
  * WMAC_MinifyAndCombineSettingsPage constructor.
52
  *
53
- * @param \Wbcr_Factory449_Plugin $plugin
54
  *
55
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
56
  *
57
  */
58
- public function __construct(Wbcr_Factory449_Plugin $plugin)
59
  {
60
  $this->menu_title = __('Optimize CSS & JS', 'minify-and-combine');
61
  $this->page_menu_short_description = __('Optimize CSS & JS', 'minify-and-combine');
@@ -85,11 +85,11 @@ class WMAC_MinifyAndCombineSettingsPage extends WBCR\Factory_Templates_101\Pages
85
  /**
86
  * Requests assets (js and css) for the page.
87
  *
88
- * @param Wbcr_Factory449_ScriptList $scripts
89
- * @param Wbcr_Factory449_StyleList $styles
90
  *
91
  * @return void
92
- * @see Wbcr_FactoryPages448_AdminPage
93
  *
94
  */
95
  public function assets($scripts, $styles)
@@ -483,7 +483,7 @@ This can be fully automated for different types of pages with the Мinify And Co
483
  /**
484
  * @since 1.1.1 - является устаревшим
485
  */
486
- return wbcr_factory_449_apply_filters_deprecated('wbcr_mac_settings_form_options', [$formOptions], '1.1.1', 'wmac/pages/settings_form_options');
487
  }
488
 
489
  public function cacheInfo()
9
  *
10
  * @since 1.0.0
11
  */
12
+ class WMAC_MinifyAndCombineSettingsPage extends WBCR\Factory_Templates_105\Pages\PageBase {
13
 
14
  /**
15
  * {@inheritDoc}
50
  /**
51
  * WMAC_MinifyAndCombineSettingsPage constructor.
52
  *
53
+ * @param \Wbcr_Factory452_Plugin $plugin
54
  *
55
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
56
  *
57
  */
58
+ public function __construct(Wbcr_Factory452_Plugin $plugin)
59
  {
60
  $this->menu_title = __('Optimize CSS & JS', 'minify-and-combine');
61
  $this->page_menu_short_description = __('Optimize CSS & JS', 'minify-and-combine');
85
  /**
86
  * Requests assets (js and css) for the page.
87
  *
88
+ * @param Wbcr_Factory452_ScriptList $scripts
89
+ * @param Wbcr_Factory452_StyleList $styles
90
  *
91
  * @return void
92
+ * @see Wbcr_FactoryPages451_AdminPage
93
  *
94
  */
95
  public function assets($scripts, $styles)
483
  /**
484
  * @since 1.1.1 - является устаревшим
485
  */
486
+ return wbcr_factory_452_apply_filters_deprecated('wbcr_mac_settings_form_options', [$formOptions], '1.1.1', 'wmac/pages/settings_form_options');
487
  }
488
 
489
  public function cacheInfo()
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_Factory449_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory449_Plugin
21
  */
22
  private static $app;
23
 
@@ -56,7 +56,7 @@ class WMAC_Plugin extends Wbcr_Factory449_Plugin {
56
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
57
  * классам.
58
  *
59
- * @return \Wbcr_Factory449_Plugin|\WCM_Plugin
60
  */
61
  public static function app()
62
  {
13
  }
14
 
15
 
16
+ class WMAC_Plugin extends Wbcr_Factory452_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
+ * @var Wbcr_Factory452_Plugin
21
  */
22
  private static $app;
23
 
56
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
57
  * классам.
58
  *
59
+ * @return \Wbcr_Factory452_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', [ 'WBCR\Factory_Templates_101\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', [ 'WBCR\Factory_Templates_105\Helpers', 'flushPageCache' ], 10, 0 );
389
  }
390
 
391
  // Warm cache (part of speedupper)!
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_449_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_449', 'admin' ),
63
- array( 'libs/factory/forms', 'factory_forms_446', 'admin' ),
64
- array( 'libs/factory/pages', 'factory_pages_448', 'admin' ),
65
- array( 'libs/factory/clearfy', 'factory_templates_101', 'all' ),
66
- array( 'libs/factory/adverts', 'factory_adverts_127', 'admin')
67
  )
68
  );
69
 
70
- $wmac_compatibility = new Wbcr_Factory449_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_452_VERSION
12
  */
13
 
14
  /*
59
 
60
  // FRAMEWORK MODULES
61
  'load_factory_modules' => array(
62
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_453', 'admin' ),
63
+ array( 'libs/factory/forms', 'factory_forms_449', 'admin' ),
64
+ array( 'libs/factory/pages', 'factory_pages_451', 'admin' ),
65
+ array( 'libs/factory/clearfy', 'factory_templates_105', 'all' ),
66
+ array( 'libs/factory/adverts', 'factory_adverts_129', 'admin')
67
  )
68
  );
69
 
70
+ $wmac_compatibility = new Wbcr_Factory452_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 Factory449_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_Factory449_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 Factory452_Activator
9
  */
10
 
11
  // Exit if accessed directly
13
  exit;
14
  }
15
 
16
+ class WUPM_Activation extends Wbcr_Factory452_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_templates_101.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
63
  }
64
  return false;
65
  }
66
 
67
- /*var noticeId = $.wbcr_factory_templates_101.app.showNotice('Settings successfully updated', 'success');
68
 
69
  setTimeout(function() {
70
- $.wbcr_factory_templates_101.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_templates_101.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_templates_105.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
63
  }
64
  return false;
65
  }
66
 
67
+ /*var noticeId = $.wbcr_factory_templates_105.app.showNotice('Settings successfully updated', 'success');
68
 
69
  setTimeout(function() {
70
+ $.wbcr_factory_templates_105.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_templates_105.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_448_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_451_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_Factory449_Plugin $plugin ) {
18
  $this->plugin = $plugin;
19
  $this->load();
20
  }
14
  protected $is_disable_translation_updates;
15
 
16
 
17
+ function __construct( Wbcr_Factory452_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\Factory_Templates_101\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
@@ -66,9 +66,9 @@ class WUPM_AdvancedPage extends WBCR\Factory_Templates_101\Pages\PageBase {
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
- * @param \Wbcr_Factory449_Plugin $plugin
70
  */
71
- public function __construct( Wbcr_Factory449_Plugin $plugin ) {
72
  $this->menu_title = __( 'Advanced', 'webcraftic-updates-manager' );
73
 
74
  parent::__construct( $plugin );
@@ -79,8 +79,8 @@ class WUPM_AdvancedPage extends WBCR\Factory_Templates_101\Pages\PageBase {
79
  *
80
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
81
  *
82
- * @param \Wbcr_Factory449_ScriptList $scripts
83
- * @param \Wbcr_Factory449_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\Factory_Templates_105\Pages\PageBase {
20
 
21
  /**
22
  * {@inheritDoc}
66
  *
67
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
68
  *
69
+ * @param \Wbcr_Factory452_Plugin $plugin
70
  */
71
+ public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
83
+ * @param \Wbcr_Factory452_StyleList $styles
84
  */
85
  public function assets( $scripts, $styles ) {
86
  parent::assets( $scripts, $styles );
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\Factory_Templates_101\Pages\PageBase {
20
 
21
  /**
22
  *{@inheritDoc}
@@ -83,9 +83,9 @@ class WUPM_PluginsPage extends WBCR\Factory_Templates_101\Pages\PageBase {
83
  *
84
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
85
  *
86
- * @param \Wbcr_Factory449_Plugin $plugin
87
  */
88
- public function __construct( Wbcr_Factory449_Plugin $plugin ) {
89
  $this->menu_title = __( 'Plugins', 'webcraftic-updates-manager' );
90
 
91
  parent::__construct( $plugin );
@@ -121,8 +121,8 @@ class WUPM_PluginsPage extends WBCR\Factory_Templates_101\Pages\PageBase {
121
  *
122
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
123
  *
124
- * @param \Wbcr_Factory449_ScriptList $scripts
125
- * @param \Wbcr_Factory449_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\Factory_Templates_105\Pages\PageBase {
20
 
21
  /**
22
  *{@inheritDoc}
83
  *
84
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
85
  *
86
+ * @param \Wbcr_Factory452_Plugin $plugin
87
  */
88
+ public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
125
+ * @param \Wbcr_Factory452_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\Factory_Templates_101\Pages\PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
@@ -85,9 +85,9 @@ class WUPM_ThemesPage extends WBCR\Factory_Templates_101\Pages\PageBase {
85
  private $themes_update_filters = [];
86
 
87
  /**
88
- * @param Wbcr_Factory449_Plugin $plugin
89
  */
90
- public function __construct( Wbcr_Factory449_Plugin $plugin ) {
91
  $this->menu_title = __( 'Themes', 'webcraftic-updates-manager' );
92
 
93
  parent::__construct( $plugin );
@@ -123,7 +123,7 @@ class WUPM_ThemesPage extends WBCR\Factory_Templates_101\Pages\PageBase {
123
  *
124
  * @since 1.0.0
125
  * @return void
126
- * @see FactoryPages448_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\Factory_Templates_105\Pages\PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
85
  private $themes_update_filters = [];
86
 
87
  /**
88
+ * @param Wbcr_Factory452_Plugin $plugin
89
  */
90
+ public function __construct( Wbcr_Factory452_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 FactoryPages451_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\Factory_Templates_101\Pages\PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
@@ -51,9 +51,9 @@ class WUPM_UpdatesPage extends WBCR\Factory_Templates_101\Pages\PageBase {
51
  *
52
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
53
  *
54
- * @param \Wbcr_Factory449_Plugin $plugin
55
  */
56
- public function __construct( Wbcr_Factory449_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\Factory_Templates_101\Pages\PageBase {
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com> *
88
  *
89
- * @param \Wbcr_Factory449_ScriptList $scripts
90
- * @param \Wbcr_Factory449_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\Factory_Templates_105\Pages\PageBase {
19
 
20
  /**
21
  * {@inheritDoc}
51
  *
52
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
53
  *
54
+ * @param \Wbcr_Factory452_Plugin $plugin
55
  */
56
+ public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
90
+ * @param \Wbcr_Factory452_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_Factory449_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
- * @var Wbcr_Factory449_Plugin
18
  */
19
  private static $app;
20
 
@@ -57,7 +57,7 @@ class WUPM_Plugin extends Wbcr_Factory449_Plugin {
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
- * @return \Wbcr_Factory449_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_Factory452_Plugin {
14
 
15
  /**
16
  * @see self::app()
17
+ * @var Wbcr_Factory452_Plugin
18
  */
19
  private static $app;
20
 
57
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
58
  * классам.
59
  *
60
+ * @return \Wbcr_Factory452_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\Factory_Templates_101\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\Factory_Templates_105\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_Factory449_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_Factory452_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_449_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_449', 'admin'),
72
- array('libs/factory/forms', 'factory_forms_446', 'admin'),
73
- array('libs/factory/pages', 'factory_pages_448', 'admin'),
74
- array('libs/factory/clearfy', 'factory_templates_101', 'all'),
75
- array('libs/factory/adverts', 'factory_adverts_127', 'admin')
76
  )
77
  );
78
 
79
- $wupm_compatibility = new Wbcr_Factory449_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_452_VERSION
12
  */
13
 
14
  // Exit if accessed directly
68
 
69
  // FRAMEWORK MODULES
70
  'load_factory_modules' => array(
71
+ array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
72
+ array('libs/factory/forms', 'factory_forms_449', 'admin'),
73
+ array('libs/factory/pages', 'factory_pages_451', 'admin'),
74
+ array('libs/factory/clearfy', 'factory_templates_105', 'all'),
75
+ array('libs/factory/adverts', 'factory_adverts_129', 'admin')
76
  )
77
  );
78
 
79
+ $wupm_compatibility = new Wbcr_Factory452_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
@@ -105,7 +105,7 @@ function wbcr_clr_admin_bar_menu($wp_admin_bar)
105
  * @since 1.1.3 - добавлен
106
  * @since 1.1.4 - является устаревшим
107
  */
108
- $menu_items = wbcr_factory_449_apply_filters_deprecated('wbcr_clearfy_admin_bar_menu_items', [$menu_items], '1.4.0', 'wbcr/clearfy/adminbar_menu_items');
109
 
110
  /**
111
  * @since 1.1.3 - добавлен
105
  * @since 1.1.3 - добавлен
106
  * @since 1.1.4 - является устаревшим
107
  */
108
+ $menu_items = wbcr_factory_452_apply_filters_deprecated('wbcr_clearfy_admin_bar_menu_items', [$menu_items], '1.4.0', 'wbcr/clearfy/adminbar_menu_items');
109
 
110
  /**
111
  * @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_Factory449_Plugin {
16
 
17
  /**
18
  * @see self::app()
19
- * @var Wbcr_Factory449_Plugin
20
  */
21
  private static $app;
22
 
@@ -28,7 +28,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
28
  * Подробнее о свойстве $app см. self::app()
29
  *
30
  * @param string $plugin_path
31
- * @param array $data
32
  *
33
  * @throws Exception
34
  */
@@ -75,7 +75,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
75
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
76
  * классам.
77
  *
78
- * @return \Wbcr_Factory449_Plugin|\WCL_Plugin
79
  */
80
  public static function app()
81
  {
@@ -138,6 +138,15 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
138
  unset($load_components['assets_manager']);
139
  }
140
 
 
 
 
 
 
 
 
 
 
141
  // Выполнить код до загрузки и инициализации компонентов
142
  // ----------------------------------------------------------
143
  if( is_plugin_active('wp-rocket/wp-rocket.php') ) {
@@ -181,7 +190,6 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
181
  private function register_pages()
182
  {
183
  require_once(WCL_PLUGIN_DIR . '/admin/pages/class-page.php');
184
- require_once(WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
185
 
186
  try {
187
  $this->registerPage('WCL_Setup', WCL_PLUGIN_DIR . '/admin/pages/setup/class-pages-setup.php');
@@ -189,10 +197,6 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
189
  $this->registerPage('WCL_AdvancedPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-advanced.php');
190
  $this->registerPage('WCL_PerformancePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance.php');
191
 
192
- if( !($this->premium->is_activate() && $this->premium->is_install_package() && WCL_Plugin::app()->isActivateComponent('cache')) ) {
193
- $this->registerPage('WCL_CachePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
194
- }
195
-
196
  //$this->registerPage('WCL_PerformanceGooglePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-google.php');
197
  $this->registerPage('WCL_ComponentsPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-components.php');
198
  $this->registerPage('WCL_SeoPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-seo.php');
@@ -315,7 +319,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
315
  * @param $slug
316
  * param $premium
317
  *
318
- * @return \WBCR\Factory_449\Components\Install_Button
319
  */
320
  public function getInstallComponentsButton($component_type, $slug)
321
  {
@@ -328,7 +332,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
328
  * @param $component_type
329
  * @param $slug
330
  *
331
- * @return \WBCR\Factory_449\Components\Delete_Button
332
  */
333
  public function getDeleteComponentsButton($component_type, $slug)
334
  {
12
  exit;
13
  }
14
 
15
+ class WCL_Plugin extends Wbcr_Factory452_Plugin {
16
 
17
  /**
18
  * @see self::app()
19
+ * @var Wbcr_Factory452_Plugin
20
  */
21
  private static $app;
22
 
28
  * Подробнее о свойстве $app см. self::app()
29
  *
30
  * @param string $plugin_path
31
+ * @param array $data
32
  *
33
  * @throws Exception
34
  */
75
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
76
  * классам.
77
  *
78
+ * @return \Wbcr_Factory452_Plugin|\WCL_Plugin
79
  */
80
  public static function app()
81
  {
138
  unset($load_components['assets_manager']);
139
  }
140
 
141
+ // Выполнить код до загрузки и инициализации компонентов
142
+ // ----------------------------------------------------------
143
+ if( $this->premium->is_install_package() ) {
144
+ $package = $this->premium->get_package_data();
145
+ if( version_compare($package['version'], "1.4.3", "<") ) {
146
+ unset($load_components['cache']);
147
+ }
148
+ }
149
+
150
  // Выполнить код до загрузки и инициализации компонентов
151
  // ----------------------------------------------------------
152
  if( is_plugin_active('wp-rocket/wp-rocket.php') ) {
190
  private function register_pages()
191
  {
192
  require_once(WCL_PLUGIN_DIR . '/admin/pages/class-page.php');
 
193
 
194
  try {
195
  $this->registerPage('WCL_Setup', WCL_PLUGIN_DIR . '/admin/pages/setup/class-pages-setup.php');
197
  $this->registerPage('WCL_AdvancedPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-advanced.php');
198
  $this->registerPage('WCL_PerformancePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance.php');
199
 
 
 
 
 
200
  //$this->registerPage('WCL_PerformanceGooglePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-google.php');
201
  $this->registerPage('WCL_ComponentsPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-components.php');
202
  $this->registerPage('WCL_SeoPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-seo.php');
319
  * @param $slug
320
  * param $premium
321
  *
322
+ * @return \WBCR\Factory_452\Components\Install_Button
323
  */
324
  public function getInstallComponentsButton($component_type, $slug)
325
  {
332
  * @param $component_type
333
  * @param $slug
334
  *
335
+ * @return \WBCR\Factory_452\Components\Delete_Button
336
  */
337
  public function getDeleteComponentsButton($component_type, $slug)
338
  {
includes/classes/3rd-party/boot.php CHANGED
@@ -7,7 +7,7 @@
7
  * @version 1.0
8
  */
9
 
10
- add_filter('wbcr_factory_449_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_452_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms449_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_FactoryForms449_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_FactoryForms449_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\Factory_Templates_101\Configurate {
15
 
16
  /**
17
  * @param WCL_Plugin $plugin
11
  exit;
12
  }
13
 
14
+ class WCL_ConfigAdvanced extends WBCR\Factory_Templates_105\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\Factory_Templates_101\Configurate {
16
 
17
  /**
18
  * @param WCL_Plugin $plugin
12
  exit;
13
  }
14
 
15
+ class WCL_ConfigGooglePerformance extends WBCR\Factory_Templates_105\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\Factory_Templates_101\Configurate {
16
 
17
  /**
18
  * @param WCL_Plugin $plugin
12
  exit;
13
  }
14
 
15
+ class WCL_ConfigPerformance extends WBCR\Factory_Templates_105\Configurate {
16
 
17
  /**
18
  * @param WCL_Plugin $plugin
includes/classes/class.configurate-privacy.php CHANGED
@@ -13,7 +13,7 @@ if( !defined('ABSPATH') ) {
13
  exit;
14
  }
15
 
16
- class WCL_ConfigPrivacy extends WBCR\Factory_Templates_101\Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
13
  exit;
14
  }
15
 
16
+ class WCL_ConfigPrivacy extends WBCR\Factory_Templates_105\Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
includes/classes/class.configurate-security.php CHANGED
@@ -11,7 +11,7 @@
11
  exit;
12
  }
13
 
14
- class WCL_ConfigSecurity extends WBCR\Factory_Templates_101\Configurate {
15
 
16
  /**
17
  * @param WCL_Plugin $plugin
11
  exit;
12
  }
13
 
14
+ class WCL_ConfigSecurity extends WBCR\Factory_Templates_105\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\Factory_Templates_101\Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
13
  exit;
14
  }
15
 
16
+ class WCL_ConfigSeo extends WBCR\Factory_Templates_105\Configurate {
17
 
18
  /**
19
  * @param WCL_Plugin $plugin
includes/helpers.php CHANGED
@@ -12,7 +12,7 @@ if( !defined('ABSPATH') ) {
12
  exit;
13
  }
14
 
15
- class WCL_Helper extends WBCR\Factory_Templates_101\Helpers {
16
 
17
  public static function array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
18
  {
12
  exit;
13
  }
14
 
15
+ class WCL_Helper extends WBCR\Factory_Templates_105\Helpers {
16
 
17
  public static function array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
18
  {
libs/factory/adverts/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Adverts_127\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -20,31 +20,31 @@ if( !defined('ABSPATH') ) {
20
  exit;
21
  }
22
 
23
- if( defined('FACTORY_ADVERTS_127_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
- define('FACTORY_ADVERTS_127_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
- define('FACTORY_ADVERTS_127_VERSION', '1.2.7');
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
- load_plugin_textdomain('wbcr_factory_adverts_127', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
- define('FACTORY_ADVERTS_127_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
- define('FACTORY_ADVERTS_127_URL', plugins_url(null, __FILE__));
41
 
42
- require_once(FACTORY_ADVERTS_127_DIR . '/includes/class-rest-request.php');
43
- require_once(FACTORY_ADVERTS_127_DIR . '/includes/class-base.php');
44
 
45
  /**
46
- * @param Wbcr_Factory449_Plugin $plugin
47
  */
48
- add_action('wbcr_factory_adverts_127_plugin_created', function ($plugin) {
49
- $plugin->set_adverts_manager("WBCR\Factory_Adverts_127\Base");
50
  });
1
  <?php
2
 
3
+ use WBCR\Factory_Adverts_129\Base;
4
 
5
  /**
6
  * Factory Adverts
20
  exit;
21
  }
22
 
23
+ if( defined('FACTORY_ADVERTS_129_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
+ define('FACTORY_ADVERTS_129_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
+ define('FACTORY_ADVERTS_129_VERSION', '1.2.9');
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
+ load_plugin_textdomain('wbcr_factory_adverts_129', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
+ define('FACTORY_ADVERTS_129_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
+ define('FACTORY_ADVERTS_129_URL', plugins_url(null, __FILE__));
41
 
42
+ require_once(FACTORY_ADVERTS_129_DIR . '/includes/class-rest-request.php');
43
+ require_once(FACTORY_ADVERTS_129_DIR . '/includes/class-base.php');
44
 
45
  /**
46
+ * @param Wbcr_Factory452_Plugin $plugin
47
  */
48
+ add_action('wbcr_factory_adverts_129_plugin_created', function ($plugin) {
49
+ $plugin->set_adverts_manager("WBCR\Factory_Adverts_129\Base");
50
  });
libs/factory/adverts/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_127;
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_Factory449_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_127\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_Factory449_Plugin $plugin
86
  */
87
- public function __construct( \Wbcr_Factory449_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_127_DIR . '/includes/class-dashboard-widget.php';
261
  new Dashboard_Widget( $this->plugin, $content );
262
  }
263
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_129;
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_Factory452_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_129\Creative_Motion_API
57
  */
58
  private $api;
59
 
82
  *
83
  * @since 1.0.0 Added
84
  *
85
+ * @param \Wbcr_Factory452_Plugin $plugin
86
  */
87
+ public function __construct( \Wbcr_Factory452_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_129_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_127;
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_Factory449_Plugin
39
  */
40
  private $plugin;
41
 
@@ -46,10 +46,10 @@ class Dashboard_Widget {
46
  *
47
  * @since 1.0.0 Added
48
  *
49
- * @param \Wbcr_Factory449_Plugin $plugin
50
  * @param string $content
51
  */
52
- public function __construct( \Wbcr_Factory449_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_129;
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_Factory452_Plugin
39
  */
40
  private $plugin;
41
 
46
  *
47
  * @since 1.0.0 Added
48
  *
49
+ * @param \Wbcr_Factory452_Plugin $plugin
50
  * @param string $content
51
  */
52
+ public function __construct( \Wbcr_Factory452_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_127;
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_Factory449_Plugin
69
  */
70
  private $plugin;
71
 
@@ -75,11 +75,11 @@ class Creative_Motion_API {
75
  *
76
  * Variable initialization.
77
  *
78
- * @param \Wbcr_Factory449_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
81
  */
82
- public function __construct(\Wbcr_Factory449_Plugin $plugin)
83
  {
84
  $this->plugin = $plugin;
85
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_129;
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_Factory452_Plugin
69
  */
70
  private $plugin;
71
 
75
  *
76
  * Variable initialization.
77
  *
78
+ * @param \Wbcr_Factory452_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
81
  */
82
+ public function __construct(\Wbcr_Factory452_Plugin $plugin)
83
  {
84
  $this->plugin = $plugin;
85
  }
libs/factory/adverts/langs/{wbcr_factory_adverts_127-ru_RU.mo → wbcr_factory_adverts_129-ru_RU.mo} RENAMED
File without changes
libs/factory/adverts/langs/{wbcr_factory_adverts_127-ru_RU.po → wbcr_factory_adverts_129-ru_RU.po} RENAMED
File without changes
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-449 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-449 .factory-accordion-item{display:none}.factory-bootstrap-449 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-449 .factory-accordion>h3.active:hover{cursor:default}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-453 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-453 .factory-accordion-item{display:none}.factory-bootstrap-453 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-453 .factory-accordion>h3.active:hover{cursor:default}
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .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-449 .btn-primary:disabled,.factory-bootstrap-449 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-449 .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-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .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-449 .btn-primary:disabled,.factory-bootstrap-449 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-449 .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-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,18 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 article,.factory-bootstrap-449 aside,.factory-bootstrap-449 details,.factory-bootstrap-449 figcaption,.factory-bootstrap-449 figure,.factory-bootstrap-449 footer,.factory-bootstrap-449 header,.factory-bootstrap-449 hgroup,.factory-bootstrap-449 main,.factory-bootstrap-449 nav,.factory-bootstrap-449 section,.factory-bootstrap-449 summary{display:block}.factory-bootstrap-449 audio,.factory-bootstrap-449 canvas,.factory-bootstrap-449 video{display:inline-block}.factory-bootstrap-449 audio:not([controls]){display:none;height:0}.factory-bootstrap-449 [hidden],.factory-bootstrap-449 template{display:none}.factory-bootstrap-449 body{margin:0}.factory-bootstrap-449 a{background:0 0}.factory-bootstrap-449 a:focus{outline:thin dotted}.factory-bootstrap-449 a:active,.factory-bootstrap-449 a:hover{outline:0}.factory-bootstrap-449 h1{margin:.67em 0}.factory-bootstrap-449 b,.factory-bootstrap-449 strong{font-weight:700}.factory-bootstrap-449 dfn{font-style:italic}.factory-bootstrap-449 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-449 mark{color:#000;background:#ff0}.factory-bootstrap-449 code,.factory-bootstrap-449 kbd,.factory-bootstrap-449 pre,.factory-bootstrap-449 samp{font-size:1em}.factory-bootstrap-449 pre{white-space:pre-wrap}.factory-bootstrap-449 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-449 sub,.factory-bootstrap-449 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-449 sup{top:-.5em}.factory-bootstrap-449 sub{bottom:-.25em}.factory-bootstrap-449 img{border:0}.factory-bootstrap-449 svg:not(:root){overflow:hidden}.factory-bootstrap-449 figure{margin:0}.factory-bootstrap-449 button,.factory-bootstrap-449 input,.factory-bootstrap-449 select,.factory-bootstrap-449 textarea{margin:0}.factory-bootstrap-449 button,.factory-bootstrap-449 select{text-transform:none}.factory-bootstrap-449 select{padding-right:4px!important}.factory-bootstrap-449 button,.factory-bootstrap-449 input[type=reset],.factory-bootstrap-449 input[type=submit],html .factory-bootstrap-449 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-449 button[disabled],html .factory-bootstrap-449 input[disabled]{cursor:default}.factory-bootstrap-449 input[type=checkbox],.factory-bootstrap-449 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-449 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-449 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-449 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-449 button::-moz-focus-inner,.factory-bootstrap-449 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-449 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-449 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-449 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-449 a,.factory-bootstrap-449 a:visited{text-decoration:underline}.factory-bootstrap-449 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-449 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-449 a[href^="javascript:"]:after,.factory-bootstrap-449 a[href^="#"]:after{content:""}.factory-bootstrap-449 blockquote,.factory-bootstrap-449 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-449 thead{display:table-header-group}.factory-bootstrap-449 img,.factory-bootstrap-449 tr{page-break-inside:avoid}.factory-bootstrap-449 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-449 h2,.factory-bootstrap-449 h3,.factory-bootstrap-449 p{orphans:3;widows:3}.factory-bootstrap-449 h2,.factory-bootstrap-449 h3{page-break-after:avoid}.factory-bootstrap-449 select{background:#fff!important}.factory-bootstrap-449 .navbar{display:none}.factory-bootstrap-449 .table td,.factory-bootstrap-449 .table th{background-color:#fff!important}.factory-bootstrap-449 .btn>.caret,.factory-bootstrap-449 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-449 .label{border:1px solid #000}.factory-bootstrap-449 .table{border-collapse:collapse!important}.factory-bootstrap-449 .table-bordered td,.factory-bootstrap-449 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-449 *,.factory-bootstrap-449 :after,.factory-bootstrap-449 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-449{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-449 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-449 button,.factory-bootstrap-449 input,.factory-bootstrap-449 select,.factory-bootstrap-449 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-449 img{vertical-align:middle}.factory-bootstrap-449 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-449 .img-rounded{border-radius:6px}.factory-bootstrap-449 .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-449 .img-circle{border-radius:50%}.factory-bootstrap-449 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-449 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-449 .h1,.factory-bootstrap-449 .h2,.factory-bootstrap-449 .h3,.factory-bootstrap-449 .h4,.factory-bootstrap-449 .h5,.factory-bootstrap-449 .h6,.factory-bootstrap-449 h1,.factory-bootstrap-449 h2,.factory-bootstrap-449 h3,.factory-bootstrap-449 h4,.factory-bootstrap-449 h5,.factory-bootstrap-449 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-449 .h1 .small,.factory-bootstrap-449 .h1 small,.factory-bootstrap-449 .h2 .small,.factory-bootstrap-449 .h2 small,.factory-bootstrap-449 .h3 .small,.factory-bootstrap-449 .h3 small,.factory-bootstrap-449 .h4 .small,.factory-bootstrap-449 .h4 small,.factory-bootstrap-449 .h5 .small,.factory-bootstrap-449 .h5 small,.factory-bootstrap-449 .h6 .small,.factory-bootstrap-449 .h6 small,.factory-bootstrap-449 h1 .small,.factory-bootstrap-449 h1 small,.factory-bootstrap-449 h2 .small,.factory-bootstrap-449 h2 small,.factory-bootstrap-449 h3 .small,.factory-bootstrap-449 h3 small,.factory-bootstrap-449 h4 .small,.factory-bootstrap-449 h4 small,.factory-bootstrap-449 h5 .small,.factory-bootstrap-449 h5 small,.factory-bootstrap-449 h6 .small,.factory-bootstrap-449 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-449 h1,.factory-bootstrap-449 h2,.factory-bootstrap-449 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-449 h1 .small,.factory-bootstrap-449 h1 small,.factory-bootstrap-449 h2 .small,.factory-bootstrap-449 h2 small,.factory-bootstrap-449 h3 .small,.factory-bootstrap-449 h3 small{font-size:65%}.factory-bootstrap-449 h4,.factory-bootstrap-449 h5,.factory-bootstrap-449 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-449 h4 .small,.factory-bootstrap-449 h4 small,.factory-bootstrap-449 h5 .small,.factory-bootstrap-449 h5 small,.factory-bootstrap-449 h6 .small,.factory-bootstrap-449 h6 small{font-size:75%}.factory-bootstrap-449 .h1,.factory-bootstrap-449 h1{font-size:36px}.factory-bootstrap-449 .h2,.factory-bootstrap-449 h2{font-size:30px}.factory-bootstrap-449 .h3,.factory-bootstrap-449 h3{font-size:24px}.factory-bootstrap-449 .h4,.factory-bootstrap-449 h4{font-size:18px}.factory-bootstrap-449 .h5,.factory-bootstrap-449 h5{font-size:14px}.factory-bootstrap-449 .h6,.factory-bootstrap-449 h6{font-size:12px}.factory-bootstrap-449 p{margin:0 0 10px}.factory-bootstrap-449 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-449 .small,.factory-bootstrap-449 small{font-size:85%}.factory-bootstrap-449 cite{font-style:normal}.factory-bootstrap-449 .text-muted{color:#999}.factory-bootstrap-449 .text-primary{color:#428bca}.factory-bootstrap-449 .text-primary:hover{color:#3071a9}.factory-bootstrap-449 .text-warning{color:#8a6d3b}.factory-bootstrap-449 .text-warning:hover{color:#66512c}.factory-bootstrap-449 .text-danger{color:#a94442}.factory-bootstrap-449 .text-danger:hover{color:#843534}.factory-bootstrap-449 .text-success{color:#3c763d}.factory-bootstrap-449 .text-success:hover{color:#2b542c}.factory-bootstrap-449 .text-info{color:#31708f}.factory-bootstrap-449 .text-info:hover{color:#245269}.factory-bootstrap-449 .text-left{text-align:left}.factory-bootstrap-449 .text-right{text-align:right}.factory-bootstrap-449 .text-center{text-align:center}.factory-bootstrap-449 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-449 ol,.factory-bootstrap-449 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-449 ol ol,.factory-bootstrap-449 ol ul,.factory-bootstrap-449 ul ol,.factory-bootstrap-449 ul ul{margin-bottom:0}.factory-bootstrap-449 .list-inline,.factory-bootstrap-449 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-449 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-449 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-449 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-449 dd,.factory-bootstrap-449 dt{line-height:1.428571429}.factory-bootstrap-449 dt{font-weight:700}.factory-bootstrap-449 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-449 abbr[data-original-title],.factory-bootstrap-449 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-449 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-449 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-449 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-449 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-449 blockquote .small,.factory-bootstrap-449 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-449 blockquote .small:before,.factory-bootstrap-449 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-449 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-449 blockquote.pull-right .small,.factory-bootstrap-449 blockquote.pull-right p,.factory-bootstrap-449 blockquote.pull-right small{text-align:right}.factory-bootstrap-449 blockquote.pull-right .small:before,.factory-bootstrap-449 blockquote.pull-right small:before{content:''}.factory-bootstrap-449 blockquote.pull-right .small:after,.factory-bootstrap-449 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-449 blockquote:after,.factory-bootstrap-449 blockquote:before{content:""}.factory-bootstrap-449 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-449 code,.factory-bootstrap-449 kbd,.factory-bootstrap-449 pre,.factory-bootstrap-449 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-449 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-449 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-449 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-449 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-449 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-449 .container:after,.factory-bootstrap-449 .container:before{display:table;content:" "}.factory-bootstrap-449 .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-449 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-449 .row:after,.factory-bootstrap-449 .row:before{display:table;content:" "}.factory-bootstrap-449 .row:after{clear:both}.factory-bootstrap-449 .col-lg-1,.factory-bootstrap-449 .col-lg-10,.factory-bootstrap-449 .col-lg-11,.factory-bootstrap-449 .col-lg-12,.factory-bootstrap-449 .col-lg-2,.factory-bootstrap-449 .col-lg-3,.factory-bootstrap-449 .col-lg-4,.factory-bootstrap-449 .col-lg-5,.factory-bootstrap-449 .col-lg-6,.factory-bootstrap-449 .col-lg-7,.factory-bootstrap-449 .col-lg-8,.factory-bootstrap-449 .col-lg-9,.factory-bootstrap-449 .col-md-1,.factory-bootstrap-449 .col-md-10,.factory-bootstrap-449 .col-md-11,.factory-bootstrap-449 .col-md-12,.factory-bootstrap-449 .col-md-2,.factory-bootstrap-449 .col-md-3,.factory-bootstrap-449 .col-md-4,.factory-bootstrap-449 .col-md-5,.factory-bootstrap-449 .col-md-6,.factory-bootstrap-449 .col-md-7,.factory-bootstrap-449 .col-md-8,.factory-bootstrap-449 .col-md-9,.factory-bootstrap-449 .col-sm-1,.factory-bootstrap-449 .col-sm-10,.factory-bootstrap-449 .col-sm-11,.factory-bootstrap-449 .col-sm-12,.factory-bootstrap-449 .col-sm-2,.factory-bootstrap-449 .col-sm-3,.factory-bootstrap-449 .col-sm-4,.factory-bootstrap-449 .col-sm-5,.factory-bootstrap-449 .col-sm-6,.factory-bootstrap-449 .col-sm-7,.factory-bootstrap-449 .col-sm-8,.factory-bootstrap-449 .col-sm-9,.factory-bootstrap-449 .col-xs-1,.factory-bootstrap-449 .col-xs-10,.factory-bootstrap-449 .col-xs-11,.factory-bootstrap-449 .col-xs-12,.factory-bootstrap-449 .col-xs-2,.factory-bootstrap-449 .col-xs-3,.factory-bootstrap-449 .col-xs-4,.factory-bootstrap-449 .col-xs-5,.factory-bootstrap-449 .col-xs-6,.factory-bootstrap-449 .col-xs-7,.factory-bootstrap-449 .col-xs-8,.factory-bootstrap-449 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-449 .col-xs-1,.factory-bootstrap-449 .col-xs-10,.factory-bootstrap-449 .col-xs-11,.factory-bootstrap-449 .col-xs-12,.factory-bootstrap-449 .col-xs-2,.factory-bootstrap-449 .col-xs-3,.factory-bootstrap-449 .col-xs-4,.factory-bootstrap-449 .col-xs-5,.factory-bootstrap-449 .col-xs-6,.factory-bootstrap-449 .col-xs-7,.factory-bootstrap-449 .col-xs-8,.factory-bootstrap-449 .col-xs-9{float:left}.factory-bootstrap-449 .col-xs-12{width:100%}.factory-bootstrap-449 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-449 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-449 .col-xs-9{width:75%}.factory-bootstrap-449 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-449 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-449 .col-xs-6{width:50%}.factory-bootstrap-449 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-449 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-449 .col-xs-3{width:25%}.factory-bootstrap-449 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-449 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-449 .col-xs-pull-12{right:100%}.factory-bootstrap-449 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-449 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-449 .col-xs-pull-9{right:75%}.factory-bootstrap-449 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-449 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-449 .col-xs-pull-6{right:50%}.factory-bootstrap-449 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-449 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-449 .col-xs-pull-3{right:25%}.factory-bootstrap-449 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-449 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-449 .col-xs-pull-0{right:0}.factory-bootstrap-449 .col-xs-push-12{left:100%}.factory-bootstrap-449 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-449 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-449 .col-xs-push-9{left:75%}.factory-bootstrap-449 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-449 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-449 .col-xs-push-6{left:50%}.factory-bootstrap-449 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-449 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-449 .col-xs-push-3{left:25%}.factory-bootstrap-449 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-449 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-449 .col-xs-push-0{left:0}.factory-bootstrap-449 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-449 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-449 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-449 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-449 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-449 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-449 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-449 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-449 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-449 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-449 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-449 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-449 .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-449 table{max-width:100%;background-color:transparent}.factory-bootstrap-449 th{text-align:left}.factory-bootstrap-449 .table{width:100%;margin-bottom:20px}.factory-bootstrap-449 .table>tbody>tr>td,.factory-bootstrap-449 .table>tbody>tr>th,.factory-bootstrap-449 .table>tfoot>tr>td,.factory-bootstrap-449 .table>tfoot>tr>th,.factory-bootstrap-449 .table>thead>tr>td,.factory-bootstrap-449 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-449 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-449 .table>caption+thead>tr:first-child>td,.factory-bootstrap-449 .table>caption+thead>tr:first-child>th,.factory-bootstrap-449 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-449 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-449 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-449 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-449 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-449 .table .table{background-color:#fff}.factory-bootstrap-449 .table-condensed>tbody>tr>td,.factory-bootstrap-449 .table-condensed>tbody>tr>th,.factory-bootstrap-449 .table-condensed>tfoot>tr>td,.factory-bootstrap-449 .table-condensed>tfoot>tr>th,.factory-bootstrap-449 .table-condensed>thead>tr>td,.factory-bootstrap-449 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-449 .table-bordered,.factory-bootstrap-449 .table-bordered>tbody>tr>td,.factory-bootstrap-449 .table-bordered>tbody>tr>th,.factory-bootstrap-449 .table-bordered>tfoot>tr>td,.factory-bootstrap-449 .table-bordered>tfoot>tr>th,.factory-bootstrap-449 .table-bordered>thead>tr>td,.factory-bootstrap-449 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-449 .table-bordered>thead>tr>td,.factory-bootstrap-449 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-449 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-449 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-449 .table-hover>tbody>tr:hover>td,.factory-bootstrap-449 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-449 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-449 table td[class*=col-],.factory-bootstrap-449 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-449 .table>tbody>.active>td,.factory-bootstrap-449 .table>tbody>.active>th,.factory-bootstrap-449 .table>tbody>tr>.active,.factory-bootstrap-449 .table>tfoot>.active>td,.factory-bootstrap-449 .table>tfoot>.active>th,.factory-bootstrap-449 .table>tfoot>tr>.active,.factory-bootstrap-449 .table>thead>.active>td,.factory-bootstrap-449 .table>thead>.active>th,.factory-bootstrap-449 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-449 .table-hover>tbody>.active:hover>td,.factory-bootstrap-449 .table-hover>tbody>.active:hover>th,.factory-bootstrap-449 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-449 .table>tbody>.success>td,.factory-bootstrap-449 .table>tbody>.success>th,.factory-bootstrap-449 .table>tbody>tr>.success,.factory-bootstrap-449 .table>tfoot>.success>td,.factory-bootstrap-449 .table>tfoot>.success>th,.factory-bootstrap-449 .table>tfoot>tr>.success,.factory-bootstrap-449 .table>thead>.success>td,.factory-bootstrap-449 .table>thead>.success>th,.factory-bootstrap-449 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-449 .table-hover>tbody>.success:hover>td,.factory-bootstrap-449 .table-hover>tbody>.success:hover>th,.factory-bootstrap-449 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-449 .table>tbody>.danger>td,.factory-bootstrap-449 .table>tbody>.danger>th,.factory-bootstrap-449 .table>tbody>tr>.danger,.factory-bootstrap-449 .table>tfoot>.danger>td,.factory-bootstrap-449 .table>tfoot>.danger>th,.factory-bootstrap-449 .table>tfoot>tr>.danger,.factory-bootstrap-449 .table>thead>.danger>td,.factory-bootstrap-449 .table>thead>.danger>th,.factory-bootstrap-449 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-449 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-449 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-449 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-449 .table>tbody>.warning>td,.factory-bootstrap-449 .table>tbody>.warning>th,.factory-bootstrap-449 .table>tbody>tr>.warning,.factory-bootstrap-449 .table>tfoot>.warning>td,.factory-bootstrap-449 .table>tfoot>.warning>th,.factory-bootstrap-449 .table>tfoot>tr>.warning,.factory-bootstrap-449 .table>thead>.warning>td,.factory-bootstrap-449 .table>thead>.warning>th,.factory-bootstrap-449 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-449 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-449 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-449 .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-449 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-449 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-449 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-449 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-449 input[type=checkbox],.factory-bootstrap-449 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-449 input[type=file]{display:block}.factory-bootstrap-449 select[multiple],.factory-bootstrap-449 select[size]{height:auto}.factory-bootstrap-449 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-449 input[type=checkbox]:focus,.factory-bootstrap-449 input[type=file]:focus,.factory-bootstrap-449 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-449 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-449 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-449 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-449 .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-449 .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-449 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-449 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-449 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-449 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-449 .form-control[disabled],.factory-bootstrap-449 .form-control[readonly],.factory-bootstrap-449 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-449 textarea.form-control{height:auto}.factory-bootstrap-449 .form-group{margin-bottom:15px}.factory-bootstrap-449 .checkbox,.factory-bootstrap-449 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-449 .checkbox label,.factory-bootstrap-449 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-449 .checkbox input[type=checkbox],.factory-bootstrap-449 .checkbox-inline input[type=checkbox],.factory-bootstrap-449 .radio input[type=radio],.factory-bootstrap-449 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-449 .checkbox+.checkbox,.factory-bootstrap-449 .radio+.radio{margin-top:-5px}.factory-bootstrap-449 .checkbox-inline,.factory-bootstrap-449 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-449 .checkbox-inline+.checkbox-inline,.factory-bootstrap-449 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-449 .checkbox-inline[disabled],.factory-bootstrap-449 .checkbox[disabled],.factory-bootstrap-449 .radio-inline[disabled],.factory-bootstrap-449 .radio[disabled],.factory-bootstrap-449 fieldset[disabled] .checkbox,.factory-bootstrap-449 fieldset[disabled] .checkbox-inline,.factory-bootstrap-449 fieldset[disabled] .radio,.factory-bootstrap-449 fieldset[disabled] .radio-inline,.factory-bootstrap-449 fieldset[disabled] input[type=checkbox],.factory-bootstrap-449 fieldset[disabled] input[type=radio],.factory-bootstrap-449 input[type=checkbox][disabled],.factory-bootstrap-449 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-449 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-449 textarea.input-sm{height:auto}.factory-bootstrap-449 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-449 textarea.input-lg{height:auto}.factory-bootstrap-449 .has-warning .checkbox,.factory-bootstrap-449 .has-warning .checkbox-inline,.factory-bootstrap-449 .has-warning .control-label,.factory-bootstrap-449 .has-warning .help-block,.factory-bootstrap-449 .has-warning .radio,.factory-bootstrap-449 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-449 .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-449 .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-449 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-449 .has-error .checkbox,.factory-bootstrap-449 .has-error .checkbox-inline,.factory-bootstrap-449 .has-error .control-label,.factory-bootstrap-449 .has-error .help-block,.factory-bootstrap-449 .has-error .radio,.factory-bootstrap-449 .has-error .radio-inline{color:#a94442}.factory-bootstrap-449 .controls{display:block}.factory-bootstrap-449 .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-449 .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-449 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-449 .has-success .checkbox,.factory-bootstrap-449 .has-success .checkbox-inline,.factory-bootstrap-449 .has-success .control-label,.factory-bootstrap-449 .has-success .help-block,.factory-bootstrap-449 .has-success .radio,.factory-bootstrap-449 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-449 .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-449 .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-449 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-449 .form-control-static{margin-bottom:0}.factory-bootstrap-449 .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-449 .form-horizontal .checkbox,.factory-bootstrap-449 .form-horizontal .checkbox-inline,.factory-bootstrap-449 .form-horizontal .control-label,.factory-bootstrap-449 .form-horizontal .radio,.factory-bootstrap-449 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-449 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-449 .form-horizontal .checkbox,.factory-bootstrap-449 .form-horizontal .radio{min-height:27px}.factory-bootstrap-449 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-449 .form-horizontal .form-group:after,.factory-bootstrap-449 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-449 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-449 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-449 .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-449 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-449 .btn{text-decoration:none}.factory-bootstrap-449 .btn:focus,.factory-bootstrap-449 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-449 .btn.disabled,.factory-bootstrap-449 .btn[disabled],.factory-bootstrap-449 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active,.factory-bootstrap-449 .btn-default:focus,.factory-bootstrap-449 .btn-default:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-449 .btn-default.disabled,.factory-bootstrap-449 .btn-default.disabled.active,.factory-bootstrap-449 .btn-default.disabled:active,.factory-bootstrap-449 .btn-default.disabled:focus,.factory-bootstrap-449 .btn-default.disabled:hover,.factory-bootstrap-449 .btn-default[disabled],.factory-bootstrap-449 .btn-default[disabled].active,.factory-bootstrap-449 .btn-default[disabled]:active,.factory-bootstrap-449 .btn-default[disabled]:focus,.factory-bootstrap-449 .btn-default[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-default,.factory-bootstrap-449 fieldset[disabled] .btn-default.active,.factory-bootstrap-449 fieldset[disabled] .btn-default:active,.factory-bootstrap-449 fieldset[disabled] .btn-default:focus,.factory-bootstrap-449 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-449 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active,.factory-bootstrap-449 .btn-primary:focus,.factory-bootstrap-449 .btn-primary:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-449 .btn-primary.disabled,.factory-bootstrap-449 .btn-primary.disabled.active,.factory-bootstrap-449 .btn-primary.disabled:active,.factory-bootstrap-449 .btn-primary.disabled:focus,.factory-bootstrap-449 .btn-primary.disabled:hover,.factory-bootstrap-449 .btn-primary[disabled],.factory-bootstrap-449 .btn-primary[disabled].active,.factory-bootstrap-449 .btn-primary[disabled]:active,.factory-bootstrap-449 .btn-primary[disabled]:focus,.factory-bootstrap-449 .btn-primary[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-primary,.factory-bootstrap-449 fieldset[disabled] .btn-primary.active,.factory-bootstrap-449 fieldset[disabled] .btn-primary:active,.factory-bootstrap-449 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-449 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-449 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-449 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .btn-warning:active,.factory-bootstrap-449 .btn-warning:focus,.factory-bootstrap-449 .btn-warning:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .btn-warning:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-449 .btn-warning.disabled,.factory-bootstrap-449 .btn-warning.disabled.active,.factory-bootstrap-449 .btn-warning.disabled:active,.factory-bootstrap-449 .btn-warning.disabled:focus,.factory-bootstrap-449 .btn-warning.disabled:hover,.factory-bootstrap-449 .btn-warning[disabled],.factory-bootstrap-449 .btn-warning[disabled].active,.factory-bootstrap-449 .btn-warning[disabled]:active,.factory-bootstrap-449 .btn-warning[disabled]:focus,.factory-bootstrap-449 .btn-warning[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-warning,.factory-bootstrap-449 fieldset[disabled] .btn-warning.active,.factory-bootstrap-449 fieldset[disabled] .btn-warning:active,.factory-bootstrap-449 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-449 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-449 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-449 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active,.factory-bootstrap-449 .btn-success:focus,.factory-bootstrap-449 .btn-success:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-449 .btn-success.disabled,.factory-bootstrap-449 .btn-success.disabled.active,.factory-bootstrap-449 .btn-success.disabled:active,.factory-bootstrap-449 .btn-success.disabled:focus,.factory-bootstrap-449 .btn-success.disabled:hover,.factory-bootstrap-449 .btn-success[disabled],.factory-bootstrap-449 .btn-success[disabled].active,.factory-bootstrap-449 .btn-success[disabled]:active,.factory-bootstrap-449 .btn-success[disabled]:focus,.factory-bootstrap-449 .btn-success[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-success,.factory-bootstrap-449 fieldset[disabled] .btn-success.active,.factory-bootstrap-449 fieldset[disabled] .btn-success:active,.factory-bootstrap-449 fieldset[disabled] .btn-success:focus,.factory-bootstrap-449 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-449 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-449 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active,.factory-bootstrap-449 .btn-info:focus,.factory-bootstrap-449 .btn-info:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-449 .btn-info.disabled,.factory-bootstrap-449 .btn-info.disabled.active,.factory-bootstrap-449 .btn-info.disabled:active,.factory-bootstrap-449 .btn-info.disabled:focus,.factory-bootstrap-449 .btn-info.disabled:hover,.factory-bootstrap-449 .btn-info[disabled],.factory-bootstrap-449 .btn-info[disabled].active,.factory-bootstrap-449 .btn-info[disabled]:active,.factory-bootstrap-449 .btn-info[disabled]:focus,.factory-bootstrap-449 .btn-info[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-info,.factory-bootstrap-449 fieldset[disabled] .btn-info.active,.factory-bootstrap-449 fieldset[disabled] .btn-info:active,.factory-bootstrap-449 fieldset[disabled] .btn-info:focus,.factory-bootstrap-449 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-449 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-449 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-449 .btn-link,.factory-bootstrap-449 .btn-link:active,.factory-bootstrap-449 .btn-link[disabled],.factory-bootstrap-449 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-449 .btn-link,.factory-bootstrap-449 .btn-link:active,.factory-bootstrap-449 .btn-link:focus,.factory-bootstrap-449 .btn-link:hover{border-color:transparent}.factory-bootstrap-449 .btn-link:focus,.factory-bootstrap-449 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-449 .btn-link[disabled]:focus,.factory-bootstrap-449 .btn-link[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-link:focus,.factory-bootstrap-449 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-449 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-449 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-449 input[type=button].btn-block,.factory-bootstrap-449 input[type=reset].btn-block,.factory-bootstrap-449 input[type=submit].btn-block{width:100%}.factory-bootstrap-449 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-449 .fade.in{opacity:1}.factory-bootstrap-449 .collapse{display:none}.factory-bootstrap-449 .collapse.in{display:block}.factory-bootstrap-449 .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-449 .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-449 .glyphicon:empty{width:1em}.factory-bootstrap-449 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-449 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-449 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-449 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-449 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-449 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-449 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-449 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-449 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-449 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-449 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-449 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-449 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-449 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-449 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-449 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-449 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-449 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-449 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-449 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-449 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-449 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-449 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-449 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-449 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-449 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-449 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-449 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-449 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-449 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-449 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-449 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-449 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-449 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-449 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-449 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-449 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-449 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-449 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-449 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-449 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-449 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-449 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-449 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-449 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-449 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-449 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-449 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-449 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-449 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-449 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-449 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-449 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-449 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-449 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-449 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-449 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-449 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-449 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-449 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-449 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-449 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-449 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-449 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-449 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-449 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-449 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-449 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-449 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-449 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-449 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-449 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-449 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-449 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-449 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-449 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-449 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-449 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-449 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-449 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-449 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-449 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-449 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-449 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-449 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-449 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-449 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-449 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-449 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-449 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-449 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-449 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-449 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-449 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-449 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-449 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-449 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-449 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-449 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-449 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-449 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-449 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-449 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-449 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-449 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-449 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-449 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-449 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-449 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-449 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-449 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-449 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-449 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-449 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-449 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-449 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-449 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-449 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-449 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-449 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-449 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-449 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-449 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-449 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-449 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-449 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-449 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-449 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-449 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-449 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-449 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-449 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-449 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-449 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-449 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-449 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-449 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-449 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-449 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-449 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-449 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-449 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-449 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-449 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-449 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-449 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-449 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-449 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-449 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-449 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-449 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-449 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-449 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-449 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-449 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-449 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-449 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-449 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-449 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-449 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-449 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-449 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-449 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-449 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-449 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-449 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-449 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-449 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-449 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-449 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-449 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-449 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-449 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-449 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-449 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-449 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-449 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-449 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-449 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-449 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-449 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-449 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-449 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-449 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-449 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-449 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-449 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-449 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-449 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-449 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-449 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-449 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-449 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-449 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-449 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-449 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-449 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-449 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-449 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-449 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-449 .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-449 .dropdown{position:relative}.factory-bootstrap-449 .dropdown-toggle:focus{outline:0}.factory-bootstrap-449 .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-449 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-449 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-449 .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-449 .dropdown-menu>li>a:focus,.factory-bootstrap-449 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-449 .dropdown-menu>.active>a,.factory-bootstrap-449 .dropdown-menu>.active>a:focus,.factory-bootstrap-449 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-449 .dropdown-menu>.disabled>a,.factory-bootstrap-449 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-449 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-449 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-449 .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-449 .open>.dropdown-menu{display:block}.factory-bootstrap-449 .open>a{outline:0}.factory-bootstrap-449 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-449 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-449 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-449 .dropup .caret,.factory-bootstrap-449 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-449 .dropup .dropdown-menu,.factory-bootstrap-449 .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-449 .btn-group,.factory-bootstrap-449 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-449 .btn-group-vertical>.btn,.factory-bootstrap-449 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-449 .btn-group-vertical>.btn.active,.factory-bootstrap-449 .btn-group-vertical>.btn:active,.factory-bootstrap-449 .btn-group-vertical>.btn:focus,.factory-bootstrap-449 .btn-group-vertical>.btn:hover,.factory-bootstrap-449 .btn-group>.btn.active,.factory-bootstrap-449 .btn-group>.btn:active,.factory-bootstrap-449 .btn-group>.btn:focus,.factory-bootstrap-449 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-449 .btn-group-vertical>.btn:focus,.factory-bootstrap-449 .btn-group>.btn:focus{outline:0}.factory-bootstrap-449 .btn-group .btn+.btn,.factory-bootstrap-449 .btn-group .btn+.btn-group,.factory-bootstrap-449 .btn-group .btn-group+.btn,.factory-bootstrap-449 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-449 .btn-toolbar:after,.factory-bootstrap-449 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-449 .btn-toolbar:after{clear:both}.factory-bootstrap-449 .btn-toolbar .btn-group{float:left}.factory-bootstrap-449 .btn-toolbar>.btn+.btn,.factory-bootstrap-449 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-449 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-449 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-449 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-449 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-449 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-449 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-449 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .btn-group>.btn-group{float:left}.factory-bootstrap-449 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-449 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-449 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-449 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .btn-group .dropdown-toggle:active,.factory-bootstrap-449 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-449 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-449 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-449 .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-449 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-449 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-449 .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-449 .btn .caret{margin-left:0}.factory-bootstrap-449 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-449 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-449 .btn-group-vertical>.btn,.factory-bootstrap-449 .btn-group-vertical>.btn-group,.factory-bootstrap-449 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-449 .btn-group-vertical>.btn-group:after,.factory-bootstrap-449 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-449 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-449 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-449 .btn-group-vertical>.btn+.btn,.factory-bootstrap-449 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-449 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-449 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-449 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-449 .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-449 .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-449 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-449 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-449 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-449 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-449 .btn-group-justified>.btn,.factory-bootstrap-449 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-449 .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-449 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-449 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-449 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-449 .input-group-lg>.form-control,.factory-bootstrap-449 .input-group-lg>.input-group-addon,.factory-bootstrap-449 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 select.input-group-lg>.form-control,.factory-bootstrap-449 select.input-group-lg>.input-group-addon,.factory-bootstrap-449 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-449 textarea.input-group-lg>.form-control,.factory-bootstrap-449 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-449 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-449 .input-group-sm>.form-control,.factory-bootstrap-449 .input-group-sm>.input-group-addon,.factory-bootstrap-449 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 select.input-group-sm>.form-control,.factory-bootstrap-449 select.input-group-sm>.input-group-addon,.factory-bootstrap-449 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-449 textarea.input-group-sm>.form-control,.factory-bootstrap-449 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-449 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-449 .input-group .form-control,.factory-bootstrap-449 .input-group-addon,.factory-bootstrap-449 .input-group-btn{display:table-cell}.factory-bootstrap-449 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-449 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-449 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-449 .input-group-addon,.factory-bootstrap-449 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-449 .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-449 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-449 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-449 .input-group-addon input[type=checkbox],.factory-bootstrap-449 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-449 .input-group .form-control:first-child,.factory-bootstrap-449 .input-group-addon:first-child,.factory-bootstrap-449 .input-group-btn:first-child>.btn,.factory-bootstrap-449 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-449 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-449 .input-group-addon:first-child{border-right:0}.factory-bootstrap-449 .input-group .form-control:last-child,.factory-bootstrap-449 .input-group-addon:last-child,.factory-bootstrap-449 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-449 .input-group-btn:last-child>.btn,.factory-bootstrap-449 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .input-group-addon:last-child{border-left:0}.factory-bootstrap-449 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-449 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-449 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-449 .input-group-btn>.btn{position:relative}.factory-bootstrap-449 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-449 .input-group-btn>.btn:active,.factory-bootstrap-449 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-449 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-449 .nav:after,.factory-bootstrap-449 .nav:before{display:table;content:" "}.factory-bootstrap-449 .nav:after{clear:both}.factory-bootstrap-449 .nav>li{position:relative;display:block}.factory-bootstrap-449 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-449 .nav>li>a:focus,.factory-bootstrap-449 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-449 .nav>li.disabled>a{color:#999}.factory-bootstrap-449 .nav>li.disabled>a:focus,.factory-bootstrap-449 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-449 .nav .open>a,.factory-bootstrap-449 .nav .open>a:focus,.factory-bootstrap-449 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-449 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-449 .nav>li>a>img{max-width:none}.factory-bootstrap-449 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-449 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-449 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-449 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-449 .nav-tabs>li.active>a,.factory-bootstrap-449 .nav-tabs>li.active>a:focus,.factory-bootstrap-449 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-449 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-449 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-449 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-449 .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-449 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-449 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-449 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-449 .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-449 .nav-pills>li{float:left}.factory-bootstrap-449 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-449 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-449 .nav-pills>li.active>a,.factory-bootstrap-449 .nav-pills>li.active>a:focus,.factory-bootstrap-449 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-449 .nav-stacked>li{float:none}.factory-bootstrap-449 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-449 .nav-justified{width:100%}.factory-bootstrap-449 .nav-justified>li{float:none}.factory-bootstrap-449 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-449 .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-449 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-449 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-449 .nav-tabs-justified>.active>a,.factory-bootstrap-449 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-449 .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-449 .tab-content>.tab-pane{display:none}.factory-bootstrap-449 .tab-content>.active{display:block}.factory-bootstrap-449 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-449 .navbar:after,.factory-bootstrap-449 .navbar:before{display:table;content:" "}.factory-bootstrap-449 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-449 .navbar-header:after,.factory-bootstrap-449 .navbar-header:before{display:table;content:" "}.factory-bootstrap-449 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-449 .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-449 .navbar-collapse:after,.factory-bootstrap-449 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-449 .navbar-collapse:after{clear:both}.factory-bootstrap-449 .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-449 .container>.navbar-collapse,.factory-bootstrap-449 .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-449 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-449 .navbar-fixed-bottom,.factory-bootstrap-449 .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-449 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-449 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-449 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-449 .navbar-brand:focus,.factory-bootstrap-449 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-449 .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-449 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-449 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-449 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-449 .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-449 .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-449 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-449 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-449 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-449 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-449 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-449 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-449 .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-449 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-449 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-449 .navbar-default .navbar-brand:focus,.factory-bootstrap-449 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-449 .navbar-default .navbar-nav>li>a,.factory-bootstrap-449 .navbar-default .navbar-text{color:#777}.factory-bootstrap-449 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-449 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-449 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-449 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-449 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-449 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-449 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-449 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-449 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-449 .navbar-default .navbar-toggle:focus,.factory-bootstrap-449 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-449 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-449 .navbar-default .navbar-collapse,.factory-bootstrap-449 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-449 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-449 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-449 .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-449 .navbar-default .navbar-link{color:#777}.factory-bootstrap-449 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-449 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-449 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-449 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-449 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-449 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-449 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-449 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-449 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-449 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-449 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-449 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-449 .navbar-inverse .navbar-collapse,.factory-bootstrap-449 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-449 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-449 .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-449 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-449 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-449 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-449 .breadcrumb>li{display:inline-block}.factory-bootstrap-449 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-449 .breadcrumb>.active{color:#999}.factory-bootstrap-449 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-449 .pagination>li{display:inline}.factory-bootstrap-449 .pagination>li>a,.factory-bootstrap-449 .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-449 .pagination>li:first-child>a,.factory-bootstrap-449 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-449 .pagination>li:last-child>a,.factory-bootstrap-449 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-449 .pagination>li>a:focus,.factory-bootstrap-449 .pagination>li>a:hover,.factory-bootstrap-449 .pagination>li>span:focus,.factory-bootstrap-449 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-449 .pagination>.disabled>a,.factory-bootstrap-449 .pagination>.disabled>a:focus,.factory-bootstrap-449 .pagination>.disabled>a:hover,.factory-bootstrap-449 .pagination>.disabled>span,.factory-bootstrap-449 .pagination>.disabled>span:focus,.factory-bootstrap-449 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-449 .pagination-lg>li>a,.factory-bootstrap-449 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-449 .pagination-lg>li:first-child>a,.factory-bootstrap-449 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-449 .pagination-lg>li:last-child>a,.factory-bootstrap-449 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-449 .pagination-sm>li>a,.factory-bootstrap-449 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-449 .pagination-sm>li:first-child>a,.factory-bootstrap-449 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-449 .pagination-sm>li:last-child>a,.factory-bootstrap-449 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-449 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-449 .pager:after,.factory-bootstrap-449 .pager:before{display:table;content:" "}.factory-bootstrap-449 .pager:after{clear:both}.factory-bootstrap-449 .pager li{display:inline}.factory-bootstrap-449 .pager li>a,.factory-bootstrap-449 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-449 .pager li>a:focus,.factory-bootstrap-449 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-449 .pager .next>a,.factory-bootstrap-449 .pager .next>span{float:right}.factory-bootstrap-449 .pager .previous>a,.factory-bootstrap-449 .pager .previous>span{float:left}.factory-bootstrap-449 .pager .disabled>a,.factory-bootstrap-449 .pager .disabled>a:focus,.factory-bootstrap-449 .pager .disabled>a:hover,.factory-bootstrap-449 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-449 .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-449 .label[href]:focus,.factory-bootstrap-449 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-449 .label:empty{display:none}.factory-bootstrap-449 .btn .label{position:relative;top:-1px}.factory-bootstrap-449 .label-default{background-color:#999}.factory-bootstrap-449 .label-default[href]:focus,.factory-bootstrap-449 .label-default[href]:hover{background-color:gray}.factory-bootstrap-449 .label-primary{background-color:#428bca}.factory-bootstrap-449 .label-primary[href]:focus,.factory-bootstrap-449 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-449 .label-success{background-color:#5cb85c}.factory-bootstrap-449 .label-success[href]:focus,.factory-bootstrap-449 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-449 .label-info{background-color:#5bc0de}.factory-bootstrap-449 .label-info[href]:focus,.factory-bootstrap-449 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-449 .label-warning{background-color:#f0ad4e}.factory-bootstrap-449 .label-warning[href]:focus,.factory-bootstrap-449 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-449 .label-danger{background-color:#d9534f}.factory-bootstrap-449 .label-danger[href]:focus,.factory-bootstrap-449 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-449 .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-449 .badge:empty{display:none}.factory-bootstrap-449 .btn .badge{position:relative;top:-1px}.factory-bootstrap-449 a.badge:focus,.factory-bootstrap-449 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-449 .nav-pills>.active>a>.badge,.factory-bootstrap-449 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-449 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-449 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-449 .jumbotron .h1,.factory-bootstrap-449 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-449 .jumbotron p{line-height:1.4}.factory-bootstrap-449 .container .jumbotron{border-radius:6px}.factory-bootstrap-449 .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-449 .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-449 .thumbnail a>img,.factory-bootstrap-449 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-449 a.thumbnail.active,.factory-bootstrap-449 a.thumbnail:focus,.factory-bootstrap-449 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-449 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-449 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-449 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-449 .alert .alert-link{font-weight:700}.factory-bootstrap-449 .alert>p,.factory-bootstrap-449 .alert>ul{margin-bottom:0}.factory-bootstrap-449 .alert>p+p{margin-top:5px}.factory-bootstrap-449 .alert-dismissable{padding-right:35px}.factory-bootstrap-449 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-449 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-449 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-449 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-449 .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-449 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-449 .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-449 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-449 .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-449 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-449 .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-449 .media,.factory-bootstrap-449 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-449 .media,.factory-bootstrap-449 .media .media{margin-top:15px}.factory-bootstrap-449 .media:first-child{margin-top:0}.factory-bootstrap-449 .media-object{display:block}.factory-bootstrap-449 .media-heading{margin:0 0 5px}.factory-bootstrap-449 .media>.pull-left{margin-right:10px}.factory-bootstrap-449 .media>.pull-right{margin-left:10px}.factory-bootstrap-449 .media-list{padding-left:0;list-style:none}.factory-bootstrap-449 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-449 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-449 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-449 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-449 .list-group-item>.badge{float:right}.factory-bootstrap-449 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-449 a.list-group-item{color:#555}.factory-bootstrap-449 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-449 a.list-group-item:focus,.factory-bootstrap-449 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-449 a.list-group-item.active,.factory-bootstrap-449 a.list-group-item.active:focus,.factory-bootstrap-449 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-449 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-449 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-449 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-449 a.list-group-item.active .list-group-item-text,.factory-bootstrap-449 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-449 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-449 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-449 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-449 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-449 .panel-body{padding:15px}.factory-bootstrap-449 .panel-body:after,.factory-bootstrap-449 .panel-body:before{display:table;content:" "}.factory-bootstrap-449 .panel-body:after{clear:both}.factory-bootstrap-449 .panel>.list-group{margin-bottom:0}.factory-bootstrap-449 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-449 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-449 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-449 .panel>.table,.factory-bootstrap-449 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-449 .panel>.panel-body+.table,.factory-bootstrap-449 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-449 .panel>.table>tbody:first-child td,.factory-bootstrap-449 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-449 .panel>.table-bordered,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-449 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-449 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-449 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-449 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-449 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-449 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-449 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-449 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-449 .panel-title>a{color:inherit}.factory-bootstrap-449 .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-449 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-449 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-449 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-449 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-449 .panel-group .panel-footer{border-top:0}.factory-bootstrap-449 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-449 .panel-default{border-color:#ddd}.factory-bootstrap-449 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-449 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-449 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-449 .panel-primary{border-color:#428bca}.factory-bootstrap-449 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-449 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-449 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-449 .panel-success{border-color:#d6e9c6}.factory-bootstrap-449 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-449 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-449 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-449 .panel-warning{border-color:#faebcc}.factory-bootstrap-449 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-449 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-449 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-449 .panel-danger{border-color:#ebccd1}.factory-bootstrap-449 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-449 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-449 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-449 .panel-info{border-color:#bce8f1}.factory-bootstrap-449 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-449 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-449 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-449 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-449 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-449 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-449 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-449 .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-449 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-449 .close:focus,.factory-bootstrap-449 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-449 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-449 .modal-open{overflow:hidden}.factory-bootstrap-449 .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-449 .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-449 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-449 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-449 .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-449 .modal-backdrop,.factory-bootstrap-449-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-449 .modal-backdrop.fade,.factory-bootstrap-449-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-449 .modal-backdrop.in,.factory-bootstrap-449-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-449 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-449 .modal-header .close{margin-top:-2px}.factory-bootstrap-449 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-449 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-449 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-449 .modal-footer:after,.factory-bootstrap-449 .modal-footer:before{display:table;content:" "}.factory-bootstrap-449 .modal-footer:after{clear:both}.factory-bootstrap-449 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-449 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-449 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-449 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-449 .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-449 .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-449 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-449 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-449 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-449 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-449 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-449 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-449 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-449 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-449 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-449 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-449 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-449 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-449 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-449 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-449 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-449 .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-449 .popover.top{margin-top:-10px}.factory-bootstrap-449 .popover.right{margin-left:10px}.factory-bootstrap-449 .popover.bottom{margin-top:10px}.factory-bootstrap-449 .popover.left{margin-left:-10px}.factory-bootstrap-449 .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-449 .popover-content{padding:9px 14px}.factory-bootstrap-449 .popover .arrow,.factory-bootstrap-449 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-449 .popover .arrow{border-width:11px}.factory-bootstrap-449 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-449 .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-449 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-449 .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-449 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-449 .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-449 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-449 .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-449 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-449 .carousel{position:relative}.factory-bootstrap-449 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-449 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-449 .carousel-inner>.item>a>img,.factory-bootstrap-449 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-449 .carousel-inner>.active,.factory-bootstrap-449 .carousel-inner>.next,.factory-bootstrap-449 .carousel-inner>.prev{display:block}.factory-bootstrap-449 .carousel-inner>.active{left:0}.factory-bootstrap-449 .carousel-inner>.next,.factory-bootstrap-449 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-449 .carousel-inner>.next{left:100%}.factory-bootstrap-449 .carousel-inner>.prev{left:-100%}.factory-bootstrap-449 .carousel-inner>.next.left,.factory-bootstrap-449 .carousel-inner>.prev.right{left:0}.factory-bootstrap-449 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-449 .carousel-inner>.active.right{left:100%}.factory-bootstrap-449 .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-449 .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-449 .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-449 .carousel-control:focus,.factory-bootstrap-449 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-449 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-449 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-449 .carousel-control .icon-next,.factory-bootstrap-449 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-449 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-449 .carousel-control .icon-prev{left:50%}.factory-bootstrap-449 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-449 .carousel-control .icon-next{right:50%}.factory-bootstrap-449 .carousel-control .icon-next,.factory-bootstrap-449 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-449 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-449 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-449 .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-449 .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-449 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-449 .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-449 .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-449 .clearfix:after,.factory-bootstrap-449 .clearfix:before{display:table;content:" "}.factory-bootstrap-449 .clearfix:after{clear:both}.factory-bootstrap-449 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-449 .pull-right{float:right!important}.factory-bootstrap-449 .pull-left{float:left!important}.factory-bootstrap-449 .hide{display:none!important}.factory-bootstrap-449 .show{display:block!important}.factory-bootstrap-449 .invisible{visibility:hidden}.factory-bootstrap-449 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-449 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-449 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-449 .visible-lg,.factory-bootstrap-449 .visible-md,.factory-bootstrap-449 .visible-sm,.factory-bootstrap-449 .visible-xs,.factory-bootstrap-449 td.visible-lg,.factory-bootstrap-449 td.visible-md,.factory-bootstrap-449 td.visible-sm,.factory-bootstrap-449 td.visible-xs,.factory-bootstrap-449 th.visible-lg,.factory-bootstrap-449 th.visible-md,.factory-bootstrap-449 th.visible-sm,.factory-bootstrap-449 th.visible-xs,.factory-bootstrap-449 tr.visible-lg,.factory-bootstrap-449 tr.visible-md,.factory-bootstrap-449 tr.visible-sm,.factory-bootstrap-449 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-449 .hidden-xs{display:block!important}.factory-bootstrap-449 table.hidden-xs{display:table}.factory-bootstrap-449 tr.hidden-xs{display:table-row!important}.factory-bootstrap-449 td.hidden-xs,.factory-bootstrap-449 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-449 .hidden-sm{display:block!important}.factory-bootstrap-449 table.hidden-sm{display:table}.factory-bootstrap-449 tr.hidden-sm{display:table-row!important}.factory-bootstrap-449 td.hidden-sm,.factory-bootstrap-449 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-449 .hidden-md{display:block!important}.factory-bootstrap-449 table.hidden-md{display:table}.factory-bootstrap-449 tr.hidden-md{display:table-row!important}.factory-bootstrap-449 td.hidden-md,.factory-bootstrap-449 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-449 .hidden-lg{display:block!important}.factory-bootstrap-449 table.hidden-lg{display:table}.factory-bootstrap-449 tr.hidden-lg{display:table-row!important}.factory-bootstrap-449 td.hidden-lg,.factory-bootstrap-449 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-449 .hidden-lg.hidden-xs,.factory-bootstrap-449 td.hidden-lg.hidden-xs,.factory-bootstrap-449 th.hidden-lg.hidden-xs,.factory-bootstrap-449 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-449 .hidden-lg.hidden-sm,.factory-bootstrap-449 td.hidden-lg.hidden-sm,.factory-bootstrap-449 th.hidden-lg.hidden-sm,.factory-bootstrap-449 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-449 .hidden-lg.hidden-md,.factory-bootstrap-449 td.hidden-lg.hidden-md,.factory-bootstrap-449 th.hidden-lg.hidden-md,.factory-bootstrap-449 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-449 .hidden-lg,.factory-bootstrap-449 td.hidden-lg,.factory-bootstrap-449 th.hidden-lg,.factory-bootstrap-449 tr.hidden-lg{display:none!important}}.factory-bootstrap-449 .visible-print,.factory-bootstrap-449 td.visible-print,.factory-bootstrap-449 th.visible-print,.factory-bootstrap-449 tr.visible-print{display:none!important}@media print{.factory-bootstrap-449 .visible-print{display:block!important}.factory-bootstrap-449 table.visible-print{display:table}.factory-bootstrap-449 tr.visible-print{display:table-row!important}.factory-bootstrap-449 td.visible-print,.factory-bootstrap-449 th.visible-print{display:table-cell!important}.factory-bootstrap-449 .hidden-print,.factory-bootstrap-449 td.hidden-print,.factory-bootstrap-449 th.hidden-print,.factory-bootstrap-449 tr.hidden-print{display:none!important}}/*!
12
- * Factory Default Bootstrap Theme
13
- *
14
- * The code is based on Bootstrap v2.1.1
15
- *
16
- * Bootstrap v3.0.3 (http://getbootstrap.com)
17
- * Copyright 2013 Twitter, Inc.
18
- * Licensed under http://www.apache.org/licenses/LICENSE-2.0
19
- *
20
- * @author Paul Kashtanoff <paul@byonepress.com>
21
- * @copyright (c) 2013, OnePress Ltd
22
- *
23
- * @package factory-bootstrap
24
- * @since 1.0.0
25
- */.factory-bootstrap-449 .btn-danger,.factory-bootstrap-449 .btn-default,.factory-bootstrap-449 .btn-info,.factory-bootstrap-449 .btn-primary,.factory-bootstrap-449 .btn-success,.factory-bootstrap-449 .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-449 .btn-danger.active,.factory-bootstrap-449 .btn-danger:active,.factory-bootstrap-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active,.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active,.factory-bootstrap-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active,.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active,.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .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-449 .btn.active,.factory-bootstrap-449 .btn:active{background-image:none}.factory-bootstrap-449 .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-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-449 .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-449 .btn-gold:focus,.factory-bootstrap-449 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-449 .btn-gold.active,.factory-bootstrap-449 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-449 .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-449 .btn-success:focus,.factory-bootstrap-449 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-449 .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-449 .btn-warning:focus,.factory-bootstrap-449 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-449 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-449 .btn-danger.active,.factory-bootstrap-449 .btn-danger:active,.factory-bootstrap-449 .btn-danger:focus,.factory-bootstrap-449 .btn-danger:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-449 .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-449 .btn-info:focus,.factory-bootstrap-449 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-449 .img-thumbnail,.factory-bootstrap-449 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-449 .dropdown-menu>li>a:focus,.factory-bootstrap-449 .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-449 .dropdown-menu>.active>a,.factory-bootstrap-449 .dropdown-menu>.active>a:focus,.factory-bootstrap-449 .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-449 .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-449 .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-449 .navbar-brand,.factory-bootstrap-449 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-449 .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-449 .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-449 .navbar-inverse .navbar-brand,.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-449 .navbar-fixed-bottom,.factory-bootstrap-449 .navbar-fixed-top,.factory-bootstrap-449 .navbar-static-top{border-radius:0}.factory-bootstrap-449 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-449 .alert .actions{padding-top:10px}.factory-bootstrap-449 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-449 .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-449 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-449 .alert-normal,.factory-bootstrap-449 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-449 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-449 .alert-danger a:not(.btn),.factory-bootstrap-449 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .list-group-item.active,.factory-bootstrap-449 .list-group-item.active:focus,.factory-bootstrap-449 .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-449 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-449 .factory-hidden{display:none}.factory-bootstrap-449 .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}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 article,.factory-bootstrap-453 aside,.factory-bootstrap-453 details,.factory-bootstrap-453 figcaption,.factory-bootstrap-453 figure,.factory-bootstrap-453 footer,.factory-bootstrap-453 header,.factory-bootstrap-453 hgroup,.factory-bootstrap-453 main,.factory-bootstrap-453 nav,.factory-bootstrap-453 section,.factory-bootstrap-453 summary{display:block}.factory-bootstrap-453 audio,.factory-bootstrap-453 canvas,.factory-bootstrap-453 video{display:inline-block}.factory-bootstrap-453 audio:not([controls]){display:none;height:0}.factory-bootstrap-453 [hidden],.factory-bootstrap-453 template{display:none}.factory-bootstrap-453 body{margin:0}.factory-bootstrap-453 a{background:0 0}.factory-bootstrap-453 a:focus{outline:thin dotted}.factory-bootstrap-453 a:active,.factory-bootstrap-453 a:hover{outline:0}.factory-bootstrap-453 h1{margin:.67em 0}.factory-bootstrap-453 b,.factory-bootstrap-453 strong{font-weight:700}.factory-bootstrap-453 dfn{font-style:italic}.factory-bootstrap-453 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-453 mark{color:#000;background:#ff0}.factory-bootstrap-453 code,.factory-bootstrap-453 kbd,.factory-bootstrap-453 pre,.factory-bootstrap-453 samp{font-size:1em}.factory-bootstrap-453 pre{white-space:pre-wrap}.factory-bootstrap-453 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-453 sub,.factory-bootstrap-453 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-453 sup{top:-.5em}.factory-bootstrap-453 sub{bottom:-.25em}.factory-bootstrap-453 img{border:0}.factory-bootstrap-453 svg:not(:root){overflow:hidden}.factory-bootstrap-453 figure{margin:0}.factory-bootstrap-453 button,.factory-bootstrap-453 input,.factory-bootstrap-453 select,.factory-bootstrap-453 textarea{margin:0}.factory-bootstrap-453 button,.factory-bootstrap-453 select{text-transform:none}.factory-bootstrap-453 select{padding-right:4px!important}.factory-bootstrap-453 button,.factory-bootstrap-453 input[type=reset],.factory-bootstrap-453 input[type=submit],html .factory-bootstrap-453 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-453 button[disabled],html .factory-bootstrap-453 input[disabled]{cursor:default}.factory-bootstrap-453 input[type=checkbox],.factory-bootstrap-453 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-453 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-453 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-453 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-453 button::-moz-focus-inner,.factory-bootstrap-453 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-453 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-453 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-453 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-453 a,.factory-bootstrap-453 a:visited{text-decoration:underline}.factory-bootstrap-453 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-453 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-453 a[href^="javascript:"]:after,.factory-bootstrap-453 a[href^="#"]:after{content:""}.factory-bootstrap-453 blockquote,.factory-bootstrap-453 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-453 thead{display:table-header-group}.factory-bootstrap-453 img,.factory-bootstrap-453 tr{page-break-inside:avoid}.factory-bootstrap-453 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-453 h2,.factory-bootstrap-453 h3,.factory-bootstrap-453 p{orphans:3;widows:3}.factory-bootstrap-453 h2,.factory-bootstrap-453 h3{page-break-after:avoid}.factory-bootstrap-453 select{background:#fff!important}.factory-bootstrap-453 .navbar{display:none}.factory-bootstrap-453 .table td,.factory-bootstrap-453 .table th{background-color:#fff!important}.factory-bootstrap-453 .btn>.caret,.factory-bootstrap-453 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-453 .label{border:1px solid #000}.factory-bootstrap-453 .table{border-collapse:collapse!important}.factory-bootstrap-453 .table-bordered td,.factory-bootstrap-453 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-453 *,.factory-bootstrap-453 :after,.factory-bootstrap-453 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-453{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-453 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-453 button,.factory-bootstrap-453 input,.factory-bootstrap-453 select,.factory-bootstrap-453 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-453 img{vertical-align:middle}.factory-bootstrap-453 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-453 .img-rounded{border-radius:6px}.factory-bootstrap-453 .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-453 .img-circle{border-radius:50%}.factory-bootstrap-453 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-453 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-453 .h1,.factory-bootstrap-453 .h2,.factory-bootstrap-453 .h3,.factory-bootstrap-453 .h4,.factory-bootstrap-453 .h5,.factory-bootstrap-453 .h6,.factory-bootstrap-453 h1,.factory-bootstrap-453 h2,.factory-bootstrap-453 h3,.factory-bootstrap-453 h4,.factory-bootstrap-453 h5,.factory-bootstrap-453 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-453 .h1 .small,.factory-bootstrap-453 .h1 small,.factory-bootstrap-453 .h2 .small,.factory-bootstrap-453 .h2 small,.factory-bootstrap-453 .h3 .small,.factory-bootstrap-453 .h3 small,.factory-bootstrap-453 .h4 .small,.factory-bootstrap-453 .h4 small,.factory-bootstrap-453 .h5 .small,.factory-bootstrap-453 .h5 small,.factory-bootstrap-453 .h6 .small,.factory-bootstrap-453 .h6 small,.factory-bootstrap-453 h1 .small,.factory-bootstrap-453 h1 small,.factory-bootstrap-453 h2 .small,.factory-bootstrap-453 h2 small,.factory-bootstrap-453 h3 .small,.factory-bootstrap-453 h3 small,.factory-bootstrap-453 h4 .small,.factory-bootstrap-453 h4 small,.factory-bootstrap-453 h5 .small,.factory-bootstrap-453 h5 small,.factory-bootstrap-453 h6 .small,.factory-bootstrap-453 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-453 h1,.factory-bootstrap-453 h2,.factory-bootstrap-453 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-453 h1 .small,.factory-bootstrap-453 h1 small,.factory-bootstrap-453 h2 .small,.factory-bootstrap-453 h2 small,.factory-bootstrap-453 h3 .small,.factory-bootstrap-453 h3 small{font-size:65%}.factory-bootstrap-453 h4,.factory-bootstrap-453 h5,.factory-bootstrap-453 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-453 h4 .small,.factory-bootstrap-453 h4 small,.factory-bootstrap-453 h5 .small,.factory-bootstrap-453 h5 small,.factory-bootstrap-453 h6 .small,.factory-bootstrap-453 h6 small{font-size:75%}.factory-bootstrap-453 .h1,.factory-bootstrap-453 h1{font-size:36px}.factory-bootstrap-453 .h2,.factory-bootstrap-453 h2{font-size:30px}.factory-bootstrap-453 .h3,.factory-bootstrap-453 h3{font-size:24px}.factory-bootstrap-453 .h4,.factory-bootstrap-453 h4{font-size:18px}.factory-bootstrap-453 .h5,.factory-bootstrap-453 h5{font-size:14px}.factory-bootstrap-453 .h6,.factory-bootstrap-453 h6{font-size:12px}.factory-bootstrap-453 p{margin:0 0 10px}.factory-bootstrap-453 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-453 .small,.factory-bootstrap-453 small{font-size:85%}.factory-bootstrap-453 cite{font-style:normal}.factory-bootstrap-453 .text-muted{color:#999}.factory-bootstrap-453 .text-primary{color:#428bca}.factory-bootstrap-453 .text-primary:hover{color:#3071a9}.factory-bootstrap-453 .text-warning{color:#8a6d3b}.factory-bootstrap-453 .text-warning:hover{color:#66512c}.factory-bootstrap-453 .text-danger{color:#a94442}.factory-bootstrap-453 .text-danger:hover{color:#843534}.factory-bootstrap-453 .text-success{color:#3c763d}.factory-bootstrap-453 .text-success:hover{color:#2b542c}.factory-bootstrap-453 .text-info{color:#31708f}.factory-bootstrap-453 .text-info:hover{color:#245269}.factory-bootstrap-453 .text-left{text-align:left}.factory-bootstrap-453 .text-right{text-align:right}.factory-bootstrap-453 .text-center{text-align:center}.factory-bootstrap-453 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-453 ol,.factory-bootstrap-453 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-453 ol ol,.factory-bootstrap-453 ol ul,.factory-bootstrap-453 ul ol,.factory-bootstrap-453 ul ul{margin-bottom:0}.factory-bootstrap-453 .list-inline,.factory-bootstrap-453 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-453 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-453 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-453 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-453 dd,.factory-bootstrap-453 dt{line-height:1.428571429}.factory-bootstrap-453 dt{font-weight:700}.factory-bootstrap-453 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-453 abbr[data-original-title],.factory-bootstrap-453 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-453 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-453 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-453 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-453 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-453 blockquote .small,.factory-bootstrap-453 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-453 blockquote .small:before,.factory-bootstrap-453 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-453 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-453 blockquote.pull-right .small,.factory-bootstrap-453 blockquote.pull-right p,.factory-bootstrap-453 blockquote.pull-right small{text-align:right}.factory-bootstrap-453 blockquote.pull-right .small:before,.factory-bootstrap-453 blockquote.pull-right small:before{content:''}.factory-bootstrap-453 blockquote.pull-right .small:after,.factory-bootstrap-453 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-453 blockquote:after,.factory-bootstrap-453 blockquote:before{content:""}.factory-bootstrap-453 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-453 code,.factory-bootstrap-453 kbd,.factory-bootstrap-453 pre,.factory-bootstrap-453 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-453 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-453 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-453 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-453 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-453 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-453 .container:after,.factory-bootstrap-453 .container:before{display:table;content:" "}.factory-bootstrap-453 .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-453 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-453 .row:after,.factory-bootstrap-453 .row:before{display:table;content:" "}.factory-bootstrap-453 .row:after{clear:both}.factory-bootstrap-453 .col-lg-1,.factory-bootstrap-453 .col-lg-10,.factory-bootstrap-453 .col-lg-11,.factory-bootstrap-453 .col-lg-12,.factory-bootstrap-453 .col-lg-2,.factory-bootstrap-453 .col-lg-3,.factory-bootstrap-453 .col-lg-4,.factory-bootstrap-453 .col-lg-5,.factory-bootstrap-453 .col-lg-6,.factory-bootstrap-453 .col-lg-7,.factory-bootstrap-453 .col-lg-8,.factory-bootstrap-453 .col-lg-9,.factory-bootstrap-453 .col-md-1,.factory-bootstrap-453 .col-md-10,.factory-bootstrap-453 .col-md-11,.factory-bootstrap-453 .col-md-12,.factory-bootstrap-453 .col-md-2,.factory-bootstrap-453 .col-md-3,.factory-bootstrap-453 .col-md-4,.factory-bootstrap-453 .col-md-5,.factory-bootstrap-453 .col-md-6,.factory-bootstrap-453 .col-md-7,.factory-bootstrap-453 .col-md-8,.factory-bootstrap-453 .col-md-9,.factory-bootstrap-453 .col-sm-1,.factory-bootstrap-453 .col-sm-10,.factory-bootstrap-453 .col-sm-11,.factory-bootstrap-453 .col-sm-12,.factory-bootstrap-453 .col-sm-2,.factory-bootstrap-453 .col-sm-3,.factory-bootstrap-453 .col-sm-4,.factory-bootstrap-453 .col-sm-5,.factory-bootstrap-453 .col-sm-6,.factory-bootstrap-453 .col-sm-7,.factory-bootstrap-453 .col-sm-8,.factory-bootstrap-453 .col-sm-9,.factory-bootstrap-453 .col-xs-1,.factory-bootstrap-453 .col-xs-10,.factory-bootstrap-453 .col-xs-11,.factory-bootstrap-453 .col-xs-12,.factory-bootstrap-453 .col-xs-2,.factory-bootstrap-453 .col-xs-3,.factory-bootstrap-453 .col-xs-4,.factory-bootstrap-453 .col-xs-5,.factory-bootstrap-453 .col-xs-6,.factory-bootstrap-453 .col-xs-7,.factory-bootstrap-453 .col-xs-8,.factory-bootstrap-453 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-453 .col-xs-1,.factory-bootstrap-453 .col-xs-10,.factory-bootstrap-453 .col-xs-11,.factory-bootstrap-453 .col-xs-12,.factory-bootstrap-453 .col-xs-2,.factory-bootstrap-453 .col-xs-3,.factory-bootstrap-453 .col-xs-4,.factory-bootstrap-453 .col-xs-5,.factory-bootstrap-453 .col-xs-6,.factory-bootstrap-453 .col-xs-7,.factory-bootstrap-453 .col-xs-8,.factory-bootstrap-453 .col-xs-9{float:left}.factory-bootstrap-453 .col-xs-12{width:100%}.factory-bootstrap-453 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-453 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-453 .col-xs-9{width:75%}.factory-bootstrap-453 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-453 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-453 .col-xs-6{width:50%}.factory-bootstrap-453 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-453 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-453 .col-xs-3{width:25%}.factory-bootstrap-453 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-453 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-453 .col-xs-pull-12{right:100%}.factory-bootstrap-453 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-453 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-453 .col-xs-pull-9{right:75%}.factory-bootstrap-453 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-453 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-453 .col-xs-pull-6{right:50%}.factory-bootstrap-453 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-453 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-453 .col-xs-pull-3{right:25%}.factory-bootstrap-453 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-453 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-453 .col-xs-pull-0{right:0}.factory-bootstrap-453 .col-xs-push-12{left:100%}.factory-bootstrap-453 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-453 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-453 .col-xs-push-9{left:75%}.factory-bootstrap-453 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-453 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-453 .col-xs-push-6{left:50%}.factory-bootstrap-453 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-453 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-453 .col-xs-push-3{left:25%}.factory-bootstrap-453 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-453 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-453 .col-xs-push-0{left:0}.factory-bootstrap-453 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-453 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-453 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-453 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-453 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-453 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-453 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-453 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-453 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-453 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-453 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-453 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-453 .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-453 table{max-width:100%;background-color:transparent}.factory-bootstrap-453 th{text-align:left}.factory-bootstrap-453 .table{width:100%;margin-bottom:20px}.factory-bootstrap-453 .table>tbody>tr>td,.factory-bootstrap-453 .table>tbody>tr>th,.factory-bootstrap-453 .table>tfoot>tr>td,.factory-bootstrap-453 .table>tfoot>tr>th,.factory-bootstrap-453 .table>thead>tr>td,.factory-bootstrap-453 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-453 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-453 .table>caption+thead>tr:first-child>td,.factory-bootstrap-453 .table>caption+thead>tr:first-child>th,.factory-bootstrap-453 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-453 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-453 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-453 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-453 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-453 .table .table{background-color:#fff}.factory-bootstrap-453 .table-condensed>tbody>tr>td,.factory-bootstrap-453 .table-condensed>tbody>tr>th,.factory-bootstrap-453 .table-condensed>tfoot>tr>td,.factory-bootstrap-453 .table-condensed>tfoot>tr>th,.factory-bootstrap-453 .table-condensed>thead>tr>td,.factory-bootstrap-453 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-453 .table-bordered,.factory-bootstrap-453 .table-bordered>tbody>tr>td,.factory-bootstrap-453 .table-bordered>tbody>tr>th,.factory-bootstrap-453 .table-bordered>tfoot>tr>td,.factory-bootstrap-453 .table-bordered>tfoot>tr>th,.factory-bootstrap-453 .table-bordered>thead>tr>td,.factory-bootstrap-453 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-453 .table-bordered>thead>tr>td,.factory-bootstrap-453 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-453 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-453 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-453 .table-hover>tbody>tr:hover>td,.factory-bootstrap-453 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-453 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-453 table td[class*=col-],.factory-bootstrap-453 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-453 .table>tbody>.active>td,.factory-bootstrap-453 .table>tbody>.active>th,.factory-bootstrap-453 .table>tbody>tr>.active,.factory-bootstrap-453 .table>tfoot>.active>td,.factory-bootstrap-453 .table>tfoot>.active>th,.factory-bootstrap-453 .table>tfoot>tr>.active,.factory-bootstrap-453 .table>thead>.active>td,.factory-bootstrap-453 .table>thead>.active>th,.factory-bootstrap-453 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-453 .table-hover>tbody>.active:hover>td,.factory-bootstrap-453 .table-hover>tbody>.active:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-453 .table>tbody>.success>td,.factory-bootstrap-453 .table>tbody>.success>th,.factory-bootstrap-453 .table>tbody>tr>.success,.factory-bootstrap-453 .table>tfoot>.success>td,.factory-bootstrap-453 .table>tfoot>.success>th,.factory-bootstrap-453 .table>tfoot>tr>.success,.factory-bootstrap-453 .table>thead>.success>td,.factory-bootstrap-453 .table>thead>.success>th,.factory-bootstrap-453 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-453 .table-hover>tbody>.success:hover>td,.factory-bootstrap-453 .table-hover>tbody>.success:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-453 .table>tbody>.danger>td,.factory-bootstrap-453 .table>tbody>.danger>th,.factory-bootstrap-453 .table>tbody>tr>.danger,.factory-bootstrap-453 .table>tfoot>.danger>td,.factory-bootstrap-453 .table>tfoot>.danger>th,.factory-bootstrap-453 .table>tfoot>tr>.danger,.factory-bootstrap-453 .table>thead>.danger>td,.factory-bootstrap-453 .table>thead>.danger>th,.factory-bootstrap-453 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-453 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-453 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-453 .table>tbody>.warning>td,.factory-bootstrap-453 .table>tbody>.warning>th,.factory-bootstrap-453 .table>tbody>tr>.warning,.factory-bootstrap-453 .table>tfoot>.warning>td,.factory-bootstrap-453 .table>tfoot>.warning>th,.factory-bootstrap-453 .table>tfoot>tr>.warning,.factory-bootstrap-453 .table>thead>.warning>td,.factory-bootstrap-453 .table>thead>.warning>th,.factory-bootstrap-453 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-453 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-453 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-453 .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-453 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-453 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-453 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-453 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-453 input[type=checkbox],.factory-bootstrap-453 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-453 input[type=file]{display:block}.factory-bootstrap-453 select[multiple],.factory-bootstrap-453 select[size]{height:auto}.factory-bootstrap-453 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-453 input[type=checkbox]:focus,.factory-bootstrap-453 input[type=file]:focus,.factory-bootstrap-453 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-453 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-453 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-453 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-453 .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-453 .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-453 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-453 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-453 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-453 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-453 .form-control[disabled],.factory-bootstrap-453 .form-control[readonly],.factory-bootstrap-453 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-453 textarea.form-control{height:auto}.factory-bootstrap-453 .form-group{margin-bottom:15px}.factory-bootstrap-453 .checkbox,.factory-bootstrap-453 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-453 .checkbox label,.factory-bootstrap-453 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-453 .checkbox input[type=checkbox],.factory-bootstrap-453 .checkbox-inline input[type=checkbox],.factory-bootstrap-453 .radio input[type=radio],.factory-bootstrap-453 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-453 .checkbox+.checkbox,.factory-bootstrap-453 .radio+.radio{margin-top:-5px}.factory-bootstrap-453 .checkbox-inline,.factory-bootstrap-453 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-453 .checkbox-inline+.checkbox-inline,.factory-bootstrap-453 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-453 .checkbox-inline[disabled],.factory-bootstrap-453 .checkbox[disabled],.factory-bootstrap-453 .radio-inline[disabled],.factory-bootstrap-453 .radio[disabled],.factory-bootstrap-453 fieldset[disabled] .checkbox,.factory-bootstrap-453 fieldset[disabled] .checkbox-inline,.factory-bootstrap-453 fieldset[disabled] .radio,.factory-bootstrap-453 fieldset[disabled] .radio-inline,.factory-bootstrap-453 fieldset[disabled] input[type=checkbox],.factory-bootstrap-453 fieldset[disabled] input[type=radio],.factory-bootstrap-453 input[type=checkbox][disabled],.factory-bootstrap-453 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-453 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-453 textarea.input-sm{height:auto}.factory-bootstrap-453 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-453 textarea.input-lg{height:auto}.factory-bootstrap-453 .has-warning .checkbox,.factory-bootstrap-453 .has-warning .checkbox-inline,.factory-bootstrap-453 .has-warning .control-label,.factory-bootstrap-453 .has-warning .help-block,.factory-bootstrap-453 .has-warning .radio,.factory-bootstrap-453 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-453 .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-453 .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-453 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-453 .has-error .checkbox,.factory-bootstrap-453 .has-error .checkbox-inline,.factory-bootstrap-453 .has-error .control-label,.factory-bootstrap-453 .has-error .help-block,.factory-bootstrap-453 .has-error .radio,.factory-bootstrap-453 .has-error .radio-inline{color:#a94442}.factory-bootstrap-453 .controls{display:block}.factory-bootstrap-453 .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-453 .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-453 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-453 .has-success .checkbox,.factory-bootstrap-453 .has-success .checkbox-inline,.factory-bootstrap-453 .has-success .control-label,.factory-bootstrap-453 .has-success .help-block,.factory-bootstrap-453 .has-success .radio,.factory-bootstrap-453 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-453 .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-453 .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-453 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-453 .form-control-static{margin-bottom:0}.factory-bootstrap-453 .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-453 .form-horizontal .checkbox,.factory-bootstrap-453 .form-horizontal .checkbox-inline,.factory-bootstrap-453 .form-horizontal .control-label,.factory-bootstrap-453 .form-horizontal .radio,.factory-bootstrap-453 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-453 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-453 .form-horizontal .checkbox,.factory-bootstrap-453 .form-horizontal .radio{min-height:27px}.factory-bootstrap-453 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-453 .form-horizontal .form-group:after,.factory-bootstrap-453 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-453 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-453 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-453 .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-453 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-453 .btn{text-decoration:none}.factory-bootstrap-453 .btn:focus,.factory-bootstrap-453 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-453 .btn.disabled,.factory-bootstrap-453 .btn[disabled],.factory-bootstrap-453 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .btn-default:focus,.factory-bootstrap-453 .btn-default:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-453 .btn-default.disabled,.factory-bootstrap-453 .btn-default.disabled.active,.factory-bootstrap-453 .btn-default.disabled:active,.factory-bootstrap-453 .btn-default.disabled:focus,.factory-bootstrap-453 .btn-default.disabled:hover,.factory-bootstrap-453 .btn-default[disabled],.factory-bootstrap-453 .btn-default[disabled].active,.factory-bootstrap-453 .btn-default[disabled]:active,.factory-bootstrap-453 .btn-default[disabled]:focus,.factory-bootstrap-453 .btn-default[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-default,.factory-bootstrap-453 fieldset[disabled] .btn-default.active,.factory-bootstrap-453 fieldset[disabled] .btn-default:active,.factory-bootstrap-453 fieldset[disabled] .btn-default:focus,.factory-bootstrap-453 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-453 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .btn-primary:focus,.factory-bootstrap-453 .btn-primary:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-453 .btn-primary.disabled,.factory-bootstrap-453 .btn-primary.disabled.active,.factory-bootstrap-453 .btn-primary.disabled:active,.factory-bootstrap-453 .btn-primary.disabled:focus,.factory-bootstrap-453 .btn-primary.disabled:hover,.factory-bootstrap-453 .btn-primary[disabled],.factory-bootstrap-453 .btn-primary[disabled].active,.factory-bootstrap-453 .btn-primary[disabled]:active,.factory-bootstrap-453 .btn-primary[disabled]:focus,.factory-bootstrap-453 .btn-primary[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-primary,.factory-bootstrap-453 fieldset[disabled] .btn-primary.active,.factory-bootstrap-453 fieldset[disabled] .btn-primary:active,.factory-bootstrap-453 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-453 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-453 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-453 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active,.factory-bootstrap-453 .btn-warning:focus,.factory-bootstrap-453 .btn-warning:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-453 .btn-warning.disabled,.factory-bootstrap-453 .btn-warning.disabled.active,.factory-bootstrap-453 .btn-warning.disabled:active,.factory-bootstrap-453 .btn-warning.disabled:focus,.factory-bootstrap-453 .btn-warning.disabled:hover,.factory-bootstrap-453 .btn-warning[disabled],.factory-bootstrap-453 .btn-warning[disabled].active,.factory-bootstrap-453 .btn-warning[disabled]:active,.factory-bootstrap-453 .btn-warning[disabled]:focus,.factory-bootstrap-453 .btn-warning[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-warning,.factory-bootstrap-453 fieldset[disabled] .btn-warning.active,.factory-bootstrap-453 fieldset[disabled] .btn-warning:active,.factory-bootstrap-453 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-453 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-453 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-453 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .btn-success:focus,.factory-bootstrap-453 .btn-success:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-453 .btn-success.disabled,.factory-bootstrap-453 .btn-success.disabled.active,.factory-bootstrap-453 .btn-success.disabled:active,.factory-bootstrap-453 .btn-success.disabled:focus,.factory-bootstrap-453 .btn-success.disabled:hover,.factory-bootstrap-453 .btn-success[disabled],.factory-bootstrap-453 .btn-success[disabled].active,.factory-bootstrap-453 .btn-success[disabled]:active,.factory-bootstrap-453 .btn-success[disabled]:focus,.factory-bootstrap-453 .btn-success[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-success,.factory-bootstrap-453 fieldset[disabled] .btn-success.active,.factory-bootstrap-453 fieldset[disabled] .btn-success:active,.factory-bootstrap-453 fieldset[disabled] .btn-success:focus,.factory-bootstrap-453 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-453 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-453 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .btn-info:focus,.factory-bootstrap-453 .btn-info:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-453 .btn-info.disabled,.factory-bootstrap-453 .btn-info.disabled.active,.factory-bootstrap-453 .btn-info.disabled:active,.factory-bootstrap-453 .btn-info.disabled:focus,.factory-bootstrap-453 .btn-info.disabled:hover,.factory-bootstrap-453 .btn-info[disabled],.factory-bootstrap-453 .btn-info[disabled].active,.factory-bootstrap-453 .btn-info[disabled]:active,.factory-bootstrap-453 .btn-info[disabled]:focus,.factory-bootstrap-453 .btn-info[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-info,.factory-bootstrap-453 fieldset[disabled] .btn-info.active,.factory-bootstrap-453 fieldset[disabled] .btn-info:active,.factory-bootstrap-453 fieldset[disabled] .btn-info:focus,.factory-bootstrap-453 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-453 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-453 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-453 .btn-link,.factory-bootstrap-453 .btn-link:active,.factory-bootstrap-453 .btn-link[disabled],.factory-bootstrap-453 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-link,.factory-bootstrap-453 .btn-link:active,.factory-bootstrap-453 .btn-link:focus,.factory-bootstrap-453 .btn-link:hover{border-color:transparent}.factory-bootstrap-453 .btn-link:focus,.factory-bootstrap-453 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-453 .btn-link[disabled]:focus,.factory-bootstrap-453 .btn-link[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-link:focus,.factory-bootstrap-453 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-453 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-453 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-453 input[type=button].btn-block,.factory-bootstrap-453 input[type=reset].btn-block,.factory-bootstrap-453 input[type=submit].btn-block{width:100%}.factory-bootstrap-453 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-453 .fade.in{opacity:1}.factory-bootstrap-453 .collapse{display:none}.factory-bootstrap-453 .collapse.in{display:block}.factory-bootstrap-453 .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-453 .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-453 .glyphicon:empty{width:1em}.factory-bootstrap-453 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-453 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-453 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-453 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-453 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-453 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-453 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-453 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-453 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-453 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-453 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-453 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-453 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-453 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-453 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-453 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-453 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-453 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-453 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-453 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-453 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-453 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-453 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-453 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-453 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-453 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-453 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-453 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-453 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-453 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-453 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-453 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-453 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-453 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-453 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-453 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-453 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-453 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-453 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-453 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-453 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-453 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-453 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-453 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-453 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-453 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-453 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-453 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-453 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-453 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-453 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-453 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-453 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-453 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-453 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-453 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-453 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-453 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-453 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-453 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-453 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-453 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-453 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-453 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-453 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-453 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-453 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-453 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-453 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-453 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-453 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-453 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-453 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-453 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-453 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-453 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-453 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-453 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-453 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-453 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-453 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-453 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-453 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-453 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-453 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-453 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-453 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-453 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-453 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-453 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-453 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-453 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-453 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-453 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-453 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-453 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-453 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-453 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-453 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-453 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-453 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-453 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-453 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-453 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-453 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-453 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-453 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-453 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-453 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-453 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-453 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-453 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-453 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-453 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-453 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-453 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-453 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-453 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-453 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-453 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-453 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-453 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-453 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-453 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-453 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-453 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-453 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-453 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-453 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-453 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-453 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-453 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-453 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-453 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-453 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-453 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-453 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-453 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-453 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-453 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-453 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-453 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-453 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-453 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-453 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-453 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-453 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-453 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-453 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-453 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-453 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-453 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-453 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-453 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-453 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-453 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-453 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-453 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-453 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-453 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-453 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-453 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-453 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-453 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-453 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-453 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-453 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-453 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-453 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-453 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-453 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-453 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-453 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-453 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-453 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-453 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-453 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-453 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-453 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-453 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-453 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-453 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-453 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-453 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-453 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-453 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-453 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-453 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-453 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-453 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-453 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-453 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-453 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-453 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-453 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-453 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-453 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-453 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-453 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-453 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-453 .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-453 .dropdown{position:relative}.factory-bootstrap-453 .dropdown-toggle:focus{outline:0}.factory-bootstrap-453 .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-453 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-453 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-453 .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-453 .dropdown-menu>li>a:focus,.factory-bootstrap-453 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-453 .dropdown-menu>.active>a,.factory-bootstrap-453 .dropdown-menu>.active>a:focus,.factory-bootstrap-453 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-453 .dropdown-menu>.disabled>a,.factory-bootstrap-453 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-453 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-453 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-453 .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-453 .open>.dropdown-menu{display:block}.factory-bootstrap-453 .open>a{outline:0}.factory-bootstrap-453 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-453 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-453 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-453 .dropup .caret,.factory-bootstrap-453 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-453 .dropup .dropdown-menu,.factory-bootstrap-453 .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-453 .btn-group,.factory-bootstrap-453 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-453 .btn-group-vertical>.btn,.factory-bootstrap-453 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-453 .btn-group-vertical>.btn.active,.factory-bootstrap-453 .btn-group-vertical>.btn:active,.factory-bootstrap-453 .btn-group-vertical>.btn:focus,.factory-bootstrap-453 .btn-group-vertical>.btn:hover,.factory-bootstrap-453 .btn-group>.btn.active,.factory-bootstrap-453 .btn-group>.btn:active,.factory-bootstrap-453 .btn-group>.btn:focus,.factory-bootstrap-453 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-453 .btn-group-vertical>.btn:focus,.factory-bootstrap-453 .btn-group>.btn:focus{outline:0}.factory-bootstrap-453 .btn-group .btn+.btn,.factory-bootstrap-453 .btn-group .btn+.btn-group,.factory-bootstrap-453 .btn-group .btn-group+.btn,.factory-bootstrap-453 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-453 .btn-toolbar:after,.factory-bootstrap-453 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-453 .btn-toolbar:after{clear:both}.factory-bootstrap-453 .btn-toolbar .btn-group{float:left}.factory-bootstrap-453 .btn-toolbar>.btn+.btn,.factory-bootstrap-453 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-453 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-453 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-453 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-453 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-453 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-453 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group>.btn-group{float:left}.factory-bootstrap-453 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-453 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-453 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group .dropdown-toggle:active,.factory-bootstrap-453 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-453 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-453 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-453 .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-453 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-453 .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-453 .btn .caret{margin-left:0}.factory-bootstrap-453 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-453 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-453 .btn-group-vertical>.btn,.factory-bootstrap-453 .btn-group-vertical>.btn-group,.factory-bootstrap-453 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-453 .btn-group-vertical>.btn-group:after,.factory-bootstrap-453 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-453 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-453 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-453 .btn-group-vertical>.btn+.btn,.factory-bootstrap-453 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-453 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-453 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-453 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-453 .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-453 .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-453 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-453 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-453 .btn-group-justified>.btn,.factory-bootstrap-453 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-453 .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-453 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-453 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-453 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-453 .input-group-lg>.form-control,.factory-bootstrap-453 .input-group-lg>.input-group-addon,.factory-bootstrap-453 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 select.input-group-lg>.form-control,.factory-bootstrap-453 select.input-group-lg>.input-group-addon,.factory-bootstrap-453 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-453 textarea.input-group-lg>.form-control,.factory-bootstrap-453 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-453 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-453 .input-group-sm>.form-control,.factory-bootstrap-453 .input-group-sm>.input-group-addon,.factory-bootstrap-453 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 select.input-group-sm>.form-control,.factory-bootstrap-453 select.input-group-sm>.input-group-addon,.factory-bootstrap-453 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-453 textarea.input-group-sm>.form-control,.factory-bootstrap-453 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-453 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-453 .input-group .form-control,.factory-bootstrap-453 .input-group-addon,.factory-bootstrap-453 .input-group-btn{display:table-cell}.factory-bootstrap-453 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-453 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-453 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-453 .input-group-addon,.factory-bootstrap-453 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-453 .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-453 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-453 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-453 .input-group-addon input[type=checkbox],.factory-bootstrap-453 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-453 .input-group .form-control:first-child,.factory-bootstrap-453 .input-group-addon:first-child,.factory-bootstrap-453 .input-group-btn:first-child>.btn,.factory-bootstrap-453 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-453 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .input-group-addon:first-child{border-right:0}.factory-bootstrap-453 .input-group .form-control:last-child,.factory-bootstrap-453 .input-group-addon:last-child,.factory-bootstrap-453 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-453 .input-group-btn:last-child>.btn,.factory-bootstrap-453 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .input-group-addon:last-child{border-left:0}.factory-bootstrap-453 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-453 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-453 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-453 .input-group-btn>.btn{position:relative}.factory-bootstrap-453 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-453 .input-group-btn>.btn:active,.factory-bootstrap-453 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-453 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-453 .nav:after,.factory-bootstrap-453 .nav:before{display:table;content:" "}.factory-bootstrap-453 .nav:after{clear:both}.factory-bootstrap-453 .nav>li{position:relative;display:block}.factory-bootstrap-453 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-453 .nav>li>a:focus,.factory-bootstrap-453 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-453 .nav>li.disabled>a{color:#999}.factory-bootstrap-453 .nav>li.disabled>a:focus,.factory-bootstrap-453 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-453 .nav .open>a,.factory-bootstrap-453 .nav .open>a:focus,.factory-bootstrap-453 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-453 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-453 .nav>li>a>img{max-width:none}.factory-bootstrap-453 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-453 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-453 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-453 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-453 .nav-tabs>li.active>a,.factory-bootstrap-453 .nav-tabs>li.active>a:focus,.factory-bootstrap-453 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-453 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-453 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-453 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-453 .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-453 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-453 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-453 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-453 .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-453 .nav-pills>li{float:left}.factory-bootstrap-453 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-453 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-453 .nav-pills>li.active>a,.factory-bootstrap-453 .nav-pills>li.active>a:focus,.factory-bootstrap-453 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-453 .nav-stacked>li{float:none}.factory-bootstrap-453 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-453 .nav-justified{width:100%}.factory-bootstrap-453 .nav-justified>li{float:none}.factory-bootstrap-453 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-453 .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-453 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-453 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-453 .nav-tabs-justified>.active>a,.factory-bootstrap-453 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-453 .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-453 .tab-content>.tab-pane{display:none}.factory-bootstrap-453 .tab-content>.active{display:block}.factory-bootstrap-453 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-453 .navbar:after,.factory-bootstrap-453 .navbar:before{display:table;content:" "}.factory-bootstrap-453 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-453 .navbar-header:after,.factory-bootstrap-453 .navbar-header:before{display:table;content:" "}.factory-bootstrap-453 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-453 .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-453 .navbar-collapse:after,.factory-bootstrap-453 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-453 .navbar-collapse:after{clear:both}.factory-bootstrap-453 .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-453 .container>.navbar-collapse,.factory-bootstrap-453 .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-453 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-453 .navbar-fixed-bottom,.factory-bootstrap-453 .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-453 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-453 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-453 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-453 .navbar-brand:focus,.factory-bootstrap-453 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-453 .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-453 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-453 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-453 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-453 .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-453 .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-453 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-453 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-453 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-453 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-453 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-453 .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-453 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-453 .navbar-default .navbar-brand:focus,.factory-bootstrap-453 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-nav>li>a,.factory-bootstrap-453 .navbar-default .navbar-text{color:#777}.factory-bootstrap-453 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-453 .navbar-default .navbar-toggle:focus,.factory-bootstrap-453 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-453 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-453 .navbar-default .navbar-collapse,.factory-bootstrap-453 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-453 .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-453 .navbar-default .navbar-link{color:#777}.factory-bootstrap-453 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-453 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-453 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-453 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-453 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-453 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-453 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-453 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-453 .navbar-inverse .navbar-collapse,.factory-bootstrap-453 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-453 .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-453 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-453 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-453 .breadcrumb>li{display:inline-block}.factory-bootstrap-453 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-453 .breadcrumb>.active{color:#999}.factory-bootstrap-453 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-453 .pagination>li{display:inline}.factory-bootstrap-453 .pagination>li>a,.factory-bootstrap-453 .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-453 .pagination>li:first-child>a,.factory-bootstrap-453 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-453 .pagination>li:last-child>a,.factory-bootstrap-453 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-453 .pagination>li>a:focus,.factory-bootstrap-453 .pagination>li>a:hover,.factory-bootstrap-453 .pagination>li>span:focus,.factory-bootstrap-453 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-453 .pagination>.disabled>a,.factory-bootstrap-453 .pagination>.disabled>a:focus,.factory-bootstrap-453 .pagination>.disabled>a:hover,.factory-bootstrap-453 .pagination>.disabled>span,.factory-bootstrap-453 .pagination>.disabled>span:focus,.factory-bootstrap-453 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-453 .pagination-lg>li>a,.factory-bootstrap-453 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-453 .pagination-lg>li:first-child>a,.factory-bootstrap-453 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-453 .pagination-lg>li:last-child>a,.factory-bootstrap-453 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-453 .pagination-sm>li>a,.factory-bootstrap-453 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-453 .pagination-sm>li:first-child>a,.factory-bootstrap-453 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-453 .pagination-sm>li:last-child>a,.factory-bootstrap-453 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-453 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-453 .pager:after,.factory-bootstrap-453 .pager:before{display:table;content:" "}.factory-bootstrap-453 .pager:after{clear:both}.factory-bootstrap-453 .pager li{display:inline}.factory-bootstrap-453 .pager li>a,.factory-bootstrap-453 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-453 .pager li>a:focus,.factory-bootstrap-453 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-453 .pager .next>a,.factory-bootstrap-453 .pager .next>span{float:right}.factory-bootstrap-453 .pager .previous>a,.factory-bootstrap-453 .pager .previous>span{float:left}.factory-bootstrap-453 .pager .disabled>a,.factory-bootstrap-453 .pager .disabled>a:focus,.factory-bootstrap-453 .pager .disabled>a:hover,.factory-bootstrap-453 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-453 .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-453 .label[href]:focus,.factory-bootstrap-453 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-453 .label:empty{display:none}.factory-bootstrap-453 .btn .label{position:relative;top:-1px}.factory-bootstrap-453 .label-default{background-color:#999}.factory-bootstrap-453 .label-default[href]:focus,.factory-bootstrap-453 .label-default[href]:hover{background-color:gray}.factory-bootstrap-453 .label-primary{background-color:#428bca}.factory-bootstrap-453 .label-primary[href]:focus,.factory-bootstrap-453 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-453 .label-success{background-color:#5cb85c}.factory-bootstrap-453 .label-success[href]:focus,.factory-bootstrap-453 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-453 .label-info{background-color:#5bc0de}.factory-bootstrap-453 .label-info[href]:focus,.factory-bootstrap-453 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-453 .label-warning{background-color:#f0ad4e}.factory-bootstrap-453 .label-warning[href]:focus,.factory-bootstrap-453 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-453 .label-danger{background-color:#d9534f}.factory-bootstrap-453 .label-danger[href]:focus,.factory-bootstrap-453 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-453 .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-453 .badge:empty{display:none}.factory-bootstrap-453 .btn .badge{position:relative;top:-1px}.factory-bootstrap-453 a.badge:focus,.factory-bootstrap-453 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-453 .nav-pills>.active>a>.badge,.factory-bootstrap-453 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-453 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-453 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-453 .jumbotron .h1,.factory-bootstrap-453 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-453 .jumbotron p{line-height:1.4}.factory-bootstrap-453 .container .jumbotron{border-radius:6px}.factory-bootstrap-453 .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-453 .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-453 .thumbnail a>img,.factory-bootstrap-453 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-453 a.thumbnail.active,.factory-bootstrap-453 a.thumbnail:focus,.factory-bootstrap-453 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-453 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-453 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-453 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-453 .alert .alert-link{font-weight:700}.factory-bootstrap-453 .alert>p,.factory-bootstrap-453 .alert>ul{margin-bottom:0}.factory-bootstrap-453 .alert>p+p{margin-top:5px}.factory-bootstrap-453 .alert-dismissable{padding-right:35px}.factory-bootstrap-453 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-453 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-453 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-453 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-453 .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-453 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-453 .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-453 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-453 .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-453 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-453 .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-453 .media,.factory-bootstrap-453 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-453 .media,.factory-bootstrap-453 .media .media{margin-top:15px}.factory-bootstrap-453 .media:first-child{margin-top:0}.factory-bootstrap-453 .media-object{display:block}.factory-bootstrap-453 .media-heading{margin:0 0 5px}.factory-bootstrap-453 .media>.pull-left{margin-right:10px}.factory-bootstrap-453 .media>.pull-right{margin-left:10px}.factory-bootstrap-453 .media-list{padding-left:0;list-style:none}.factory-bootstrap-453 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-453 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-453 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-453 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-453 .list-group-item>.badge{float:right}.factory-bootstrap-453 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-453 a.list-group-item{color:#555}.factory-bootstrap-453 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-453 a.list-group-item:focus,.factory-bootstrap-453 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-453 a.list-group-item.active,.factory-bootstrap-453 a.list-group-item.active:focus,.factory-bootstrap-453 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-453 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-453 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-453 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-453 a.list-group-item.active .list-group-item-text,.factory-bootstrap-453 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-453 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-453 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-453 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-453 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-453 .panel-body{padding:15px}.factory-bootstrap-453 .panel-body:after,.factory-bootstrap-453 .panel-body:before{display:table;content:" "}.factory-bootstrap-453 .panel-body:after{clear:both}.factory-bootstrap-453 .panel>.list-group{margin-bottom:0}.factory-bootstrap-453 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-453 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-453 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-453 .panel>.table,.factory-bootstrap-453 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-453 .panel>.panel-body+.table,.factory-bootstrap-453 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-453 .panel>.table>tbody:first-child td,.factory-bootstrap-453 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-453 .panel>.table-bordered,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-453 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-453 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-453 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-453 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-453 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-453 .panel-title>a{color:inherit}.factory-bootstrap-453 .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-453 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-453 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-453 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-453 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-453 .panel-group .panel-footer{border-top:0}.factory-bootstrap-453 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-453 .panel-default{border-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-453 .panel-primary{border-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-453 .panel-success{border-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-453 .panel-warning{border-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-453 .panel-danger{border-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-453 .panel-info{border-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-453 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-453 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-453 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-453 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-453 .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-453 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-453 .close:focus,.factory-bootstrap-453 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-453 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-453 .modal-open{overflow:hidden}.factory-bootstrap-453 .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-453 .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-453 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-453 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-453 .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-453 .modal-backdrop,.factory-bootstrap-453-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-453 .modal-backdrop.fade,.factory-bootstrap-453-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-453 .modal-backdrop.in,.factory-bootstrap-453-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-453 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-453 .modal-header .close{margin-top:-2px}.factory-bootstrap-453 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-453 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-453 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-453 .modal-footer:after,.factory-bootstrap-453 .modal-footer:before{display:table;content:" "}.factory-bootstrap-453 .modal-footer:after{clear:both}.factory-bootstrap-453 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-453 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-453 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-453 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-453 .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-453 .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-453 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-453 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-453 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-453 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-453 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-453 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-453 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-453 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-453 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-453 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .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-453 .popover.top{margin-top:-10px}.factory-bootstrap-453 .popover.right{margin-left:10px}.factory-bootstrap-453 .popover.bottom{margin-top:10px}.factory-bootstrap-453 .popover.left{margin-left:-10px}.factory-bootstrap-453 .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-453 .popover-content{padding:9px 14px}.factory-bootstrap-453 .popover .arrow,.factory-bootstrap-453 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-453 .popover .arrow{border-width:11px}.factory-bootstrap-453 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-453 .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-453 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-453 .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-453 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-453 .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-453 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-453 .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-453 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-453 .carousel{position:relative}.factory-bootstrap-453 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-453 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-453 .carousel-inner>.item>a>img,.factory-bootstrap-453 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-453 .carousel-inner>.active,.factory-bootstrap-453 .carousel-inner>.next,.factory-bootstrap-453 .carousel-inner>.prev{display:block}.factory-bootstrap-453 .carousel-inner>.active{left:0}.factory-bootstrap-453 .carousel-inner>.next,.factory-bootstrap-453 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-453 .carousel-inner>.next{left:100%}.factory-bootstrap-453 .carousel-inner>.prev{left:-100%}.factory-bootstrap-453 .carousel-inner>.next.left,.factory-bootstrap-453 .carousel-inner>.prev.right{left:0}.factory-bootstrap-453 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-453 .carousel-inner>.active.right{left:100%}.factory-bootstrap-453 .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-453 .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-453 .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-453 .carousel-control:focus,.factory-bootstrap-453 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-453 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-453 .carousel-control .icon-next,.factory-bootstrap-453 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-453 .carousel-control .icon-prev{left:50%}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-453 .carousel-control .icon-next{right:50%}.factory-bootstrap-453 .carousel-control .icon-next,.factory-bootstrap-453 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-453 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-453 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-453 .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-453 .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-453 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-453 .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-453 .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-453 .clearfix:after,.factory-bootstrap-453 .clearfix:before{display:table;content:" "}.factory-bootstrap-453 .clearfix:after{clear:both}.factory-bootstrap-453 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-453 .pull-right{float:right!important}.factory-bootstrap-453 .pull-left{float:left!important}.factory-bootstrap-453 .hide{display:none!important}.factory-bootstrap-453 .show{display:block!important}.factory-bootstrap-453 .invisible{visibility:hidden}.factory-bootstrap-453 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-453 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-453 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-453 .visible-lg,.factory-bootstrap-453 .visible-md,.factory-bootstrap-453 .visible-sm,.factory-bootstrap-453 .visible-xs,.factory-bootstrap-453 td.visible-lg,.factory-bootstrap-453 td.visible-md,.factory-bootstrap-453 td.visible-sm,.factory-bootstrap-453 td.visible-xs,.factory-bootstrap-453 th.visible-lg,.factory-bootstrap-453 th.visible-md,.factory-bootstrap-453 th.visible-sm,.factory-bootstrap-453 th.visible-xs,.factory-bootstrap-453 tr.visible-lg,.factory-bootstrap-453 tr.visible-md,.factory-bootstrap-453 tr.visible-sm,.factory-bootstrap-453 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-453 .hidden-xs{display:block!important}.factory-bootstrap-453 table.hidden-xs{display:table}.factory-bootstrap-453 tr.hidden-xs{display:table-row!important}.factory-bootstrap-453 td.hidden-xs,.factory-bootstrap-453 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-453 .hidden-sm{display:block!important}.factory-bootstrap-453 table.hidden-sm{display:table}.factory-bootstrap-453 tr.hidden-sm{display:table-row!important}.factory-bootstrap-453 td.hidden-sm,.factory-bootstrap-453 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-453 .hidden-md{display:block!important}.factory-bootstrap-453 table.hidden-md{display:table}.factory-bootstrap-453 tr.hidden-md{display:table-row!important}.factory-bootstrap-453 td.hidden-md,.factory-bootstrap-453 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-453 .hidden-lg{display:block!important}.factory-bootstrap-453 table.hidden-lg{display:table}.factory-bootstrap-453 tr.hidden-lg{display:table-row!important}.factory-bootstrap-453 td.hidden-lg,.factory-bootstrap-453 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-453 .hidden-lg.hidden-xs,.factory-bootstrap-453 td.hidden-lg.hidden-xs,.factory-bootstrap-453 th.hidden-lg.hidden-xs,.factory-bootstrap-453 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-453 .hidden-lg.hidden-sm,.factory-bootstrap-453 td.hidden-lg.hidden-sm,.factory-bootstrap-453 th.hidden-lg.hidden-sm,.factory-bootstrap-453 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-453 .hidden-lg.hidden-md,.factory-bootstrap-453 td.hidden-lg.hidden-md,.factory-bootstrap-453 th.hidden-lg.hidden-md,.factory-bootstrap-453 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-453 .hidden-lg,.factory-bootstrap-453 td.hidden-lg,.factory-bootstrap-453 th.hidden-lg,.factory-bootstrap-453 tr.hidden-lg{display:none!important}}.factory-bootstrap-453 .visible-print,.factory-bootstrap-453 td.visible-print,.factory-bootstrap-453 th.visible-print,.factory-bootstrap-453 tr.visible-print{display:none!important}@media print{.factory-bootstrap-453 .visible-print{display:block!important}.factory-bootstrap-453 table.visible-print{display:table}.factory-bootstrap-453 tr.visible-print{display:table-row!important}.factory-bootstrap-453 td.visible-print,.factory-bootstrap-453 th.visible-print{display:table-cell!important}.factory-bootstrap-453 .hidden-print,.factory-bootstrap-453 td.hidden-print,.factory-bootstrap-453 th.hidden-print,.factory-bootstrap-453 tr.hidden-print{display:none!important}}.factory-bootstrap-453 .btn-danger,.factory-bootstrap-453 .btn-default,.factory-bootstrap-453 .btn-info,.factory-bootstrap-453 .btn-primary,.factory-bootstrap-453 .btn-success,.factory-bootstrap-453 .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-453 .btn-danger.active,.factory-bootstrap-453 .btn-danger:active,.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .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-453 .btn.active,.factory-bootstrap-453 .btn:active{background-image:none}.factory-bootstrap-453 .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-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-453 .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-453 .btn-gold:focus,.factory-bootstrap-453 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-453 .btn-gold.active,.factory-bootstrap-453 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-453 .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-453 .btn-success:focus,.factory-bootstrap-453 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-453 .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-453 .btn-warning:focus,.factory-bootstrap-453 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-453 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-453 .btn-danger.active,.factory-bootstrap-453 .btn-danger:active,.factory-bootstrap-453 .btn-danger:focus,.factory-bootstrap-453 .btn-danger:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-453 .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-453 .btn-info:focus,.factory-bootstrap-453 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-453 .img-thumbnail,.factory-bootstrap-453 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-453 .dropdown-menu>li>a:focus,.factory-bootstrap-453 .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-453 .dropdown-menu>.active>a,.factory-bootstrap-453 .dropdown-menu>.active>a:focus,.factory-bootstrap-453 .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-453 .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-453 .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-453 .navbar-brand,.factory-bootstrap-453 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-453 .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-453 .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-453 .navbar-inverse .navbar-brand,.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-453 .navbar-fixed-bottom,.factory-bootstrap-453 .navbar-fixed-top,.factory-bootstrap-453 .navbar-static-top{border-radius:0}.factory-bootstrap-453 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-453 .alert .actions{padding-top:10px}.factory-bootstrap-453 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-453 .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-453 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-453 .alert-normal,.factory-bootstrap-453 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-453 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-453 .alert-danger a:not(.btn),.factory-bootstrap-453 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .list-group-item.active,.factory-bootstrap-453 .list-group-item.active:focus,.factory-bootstrap-453 .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-453 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-453 .factory-hidden{display:none}.factory-bootstrap-453 .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.datepicker.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,10 +8,4 @@
8
  */
9
 
10
 
11
- /*!
12
- * Datepicker for Bootstrap v1.5.0-dev (https://github.com/eternicode/bootstrap-datepicker)
13
- *
14
- * Copyright 2012 Stefan Petre
15
- * Improvements by Andrew Rowls
16
- * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
17
- */.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:0}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:1.42857143}.datepicker.datepicker-inline td,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.dropdown-menu th{padding:0 5px}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:0}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:1.42857143}.datepicker.datepicker-inline td,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.dropdown-menu th{padding:0 5px}
 
 
 
 
 
 
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .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-449 .btn-primary:disabled,.factory-bootstrap-449 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-449 .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-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-449 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-449 .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-449 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-449 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-449 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-449 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-449 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-449 .factory-form-group legend+.control-group{margin-top:0}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-453 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-453 .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-453 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-453 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-453 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-453 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-453 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-453 .factory-form-group legend+.control-group{margin-top:0}
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .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-449 .btn-primary:disabled,.factory-bootstrap-449 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-449 .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-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .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-449 .btn-primary:disabled,.factory-bootstrap-449 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-449 .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-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .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-449 .btn-primary:disabled,.factory-bootstrap-449 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-449 .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-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .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-449 .btn-primary:disabled,.factory-bootstrap-449 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-449 .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-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- #side-sortables .factory-bootstrap-449 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-449 .factory-checkbox-disabled button,.factory-bootstrap-449 .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-449 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-449 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-449 .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-449 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-449 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ #side-sortables .factory-bootstrap-453 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-453 .factory-checkbox-disabled button,.factory-bootstrap-453 .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-453 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-453 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-453 .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-453 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-453 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
libs/factory/bootstrap/assets/css-min/control.color.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .factory-color{position:relative}.factory-bootstrap-449 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-449 .factory-color .factory-background,.factory-bootstrap-449 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../assets/images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-449 .factory-color .factory-background{z-index:2;border-radius:3px}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .factory-color{position:relative}.factory-bootstrap-453 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .factory-color .factory-background,.factory-bootstrap-453 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../assets/images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-453 .factory-color .factory-background{z-index:2;border-radius:3px}
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-449 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-449 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-449 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-449 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-449 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-453 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-453 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-453 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-453 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-453 .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
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-449 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-449 .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-449 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-449 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-449 .factory-mtextbox-add-item{display:block;margin-top:10px}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-453 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-453 .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-453 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-453 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-453 .factory-mtextbox-add-item{display:block;margin-top:10px}
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-449 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-449 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-449 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-449 .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-449 .factory-tab .factory-more-link-hide:hover{color:#999}
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
8
  */
9
 
10
 
11
+ .factory-bootstrap-453 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-453 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-453 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-453 .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-453 .factory-tab .factory-more-link-hide:hover{color:#999}
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -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.factoryBootstrap449_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.factoryBootstrap449_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);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
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.factoryBootstrap453_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.factoryBootstrap453_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
libs/factory/bootstrap/assets/js-min/bootstrap.tooltip.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -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.factoryBootstrap449_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.factoryBootstrap449_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-449 .factory-checkbox.factory-buttons-way").factoryBootstrap449_checkboxControl(),a(".factory-bootstrap-449 .factory-checkbox").not(".factory-buttons-way").click(function(){a(this).prop("checked")?a(this).val(1):a(this).val(0)})})}(jQuery);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
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.factoryBootstrap453_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.factoryBootstrap453_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-453 .factory-checkbox.factory-buttons-way").factoryBootstrap453_checkboxControl(),a(".factory-bootstrap-453 .factory-checkbox").not(".factory-buttons-way").click(function(){a(this).prop("checked")?a(this).val(1):a(this).val(0)})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.color.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){a.widget("factoryBootstrap449.colorControl",{_create:function(){this.$element=this.element,this.$picker=this.$element.find(".factory-color-hex"),this.$preview=this.$element.find(".factory-preview"),this.$background=this.$element.find(".factory-background"),this._init()},_init:function(b){var c=this,d={width:216,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(a,b){c.$background.css({background:b.color.toString()}),c.$element.trigger("change.color.factory",[b.color.toString()]),c.$element.trigger("updated.color.factory",[b.color.toString()])}},e=this.$element.data("picker-target");e&&(d.target=a(e)),this.$picker.factoryBootstrap449_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap449_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap449_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap449_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap449_iris("show")},getValue:function(){return this.$picker.val()},setValue:function(a,b){this.$picker.val(a),b&&self.$picker.trigger("change")}}),a(function(){a.widget.bridge("factoryBootstrap449_colorControl",a.factoryBootstrap449.colorControl),a(".factory-bootstrap-449 .factory-color").factoryBootstrap449_colorControl({})})}(jQuery);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap453.colorControl",{_create:function(){this.$element=this.element,this.$picker=this.$element.find(".factory-color-hex"),this.$preview=this.$element.find(".factory-preview"),this.$background=this.$element.find(".factory-background"),this._init()},_init:function(b){var c=this,d={width:216,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(a,b){c.$background.css({background:b.color.toString()}),c.$element.trigger("change.color.factory",[b.color.toString()]),c.$element.trigger("updated.color.factory",[b.color.toString()])}},e=this.$element.data("picker-target");e&&(d.target=a(e)),this.$picker.factoryBootstrap453_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap453_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap453_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap453_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap453_iris("show")},getValue:function(){return this.$picker.val()},setValue:function(a,b){this.$picker.val(a),b&&self.$picker.trigger("change")}}),a(function(){a.widget.bridge("factoryBootstrap453_colorControl",a.factoryBootstrap453.colorControl),a(".factory-bootstrap-453 .factory-color").factoryBootstrap453_colorControl({})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -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.factoryBootstrap449_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.factoryBootstrap449_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-449 .factory-dropdown").factoryBootstrap449_dropdownControl()})}(jQuery);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
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.factoryBootstrap453_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.factoryBootstrap453_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-453 .factory-dropdown").factoryBootstrap453_dropdownControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.list.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -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.factoryBootstrap449_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.factoryBootstrap449_listControl.Constructor=b,a(function(){a(".factory-bootstrap-449 .factory-list").factoryBootstrap449_listControl()})}(jQuery);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
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.factoryBootstrap453_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.factoryBootstrap453_listControl.Constructor=b,a(function(){a(".factory-bootstrap-453 .factory-list").factoryBootstrap453_listControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -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.factoryBootstrap449_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-449 .factory-multiple-textbox-group").factoryBootstrap449_MultipleTextboxControl()})}(jQuery);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
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.factoryBootstrap453_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-453 .factory-multiple-textbox-group").factoryBootstrap453_MultipleTextboxControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/holder.more-link.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a,b,c,d){"use strict";var e="factoryBootstrap449_moreLink";a.fn[e]=function(b,c){return this.each(function(){var b=a(this);b.find(".factory-more-link-show").click(function(){return a(a(this).attr("href")).fadeIn(),a(this).hide(),!1}),b.find(".factory-more-link-hide").click(function(){var b=a(a(this).attr("href"));return b.fadeOut(300,function(){b.parents(".factory-more-link").find(".factory-more-link-show").show()}),!1})})},a(function(){a(".factory-bootstrap-449 .factory-more-link").factoryBootstrap449_moreLink()})}(jQuery,window,document);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";var e="factoryBootstrap453_moreLink";a.fn[e]=function(b,c){return this.each(function(){var b=a(this);b.find(".factory-more-link-show").click(function(){return a(a(this).attr("href")).fadeIn(),a(this).hide(),!1}),b.find(".factory-more-link-hide").click(function(){var b=a(a(this).attr("href"));return b.fadeOut(300,function(){b.parents(".factory-more-link").find(".factory-more-link-show").show()}),!1})})},a(function(){a(".factory-bootstrap-453 .factory-more-link").factoryBootstrap453_moreLink()})}(jQuery,window,document);
libs/factory/bootstrap/assets/js-min/plugin.color.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
libs/factory/bootstrap/assets/js-min/plugin.iris.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
- * Bootstrap generator - v1.0.1, 2021-02-04
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
@@ -7,7 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- /*! Iris Color Picker - v1.0.4 - 2013-11-18
11
- * https://github.com/Automattic/Iris
12
- * Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
13
- !function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap449_iris=!0,a.fn.factoryBootstrap449_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap449_raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).factoryBootstrap449_gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.options.target?b.picker=a(i).appendTo(b.options.target):b.picker=a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('<div class="iris-palette-container" />'),c=a('<a class="iris-palette" tabindex="0" />'),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.factoryBootstrap449_raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.factoryBootstrap449_gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.factoryBootstrap449_gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.factoryBootstrap449_gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),void k.height(e+d+l)):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),void a(this).click())})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.factoryBootstrap449_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
1
  /*!
2
+ * Bootstrap generator - v1.0.1, 2021-11-19
3
  * Webcraftic factory build
4
  *
5
  * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap453_iris=!0,a.fn.factoryBootstrap453_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap453_raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).factoryBootstrap453_gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.options.target?b.picker=a(i).appendTo(b.options.target):b.picker=a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('<div class="iris-palette-container" />'),c=a('<a class="iris-palette" tabindex="0" />'),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.factoryBootstrap453_raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.factoryBootstrap453_gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.factoryBootstrap453_gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.factoryBootstrap453_gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),void k.height(e+d+l)):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),void a(this).click())})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.factoryBootstrap453_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
 
 
 
libs/factory/bootstrap/boot.php CHANGED
@@ -19,27 +19,27 @@ if( !is_admin() ) {
19
  return;
20
  }
21
 
22
- if( defined('FACTORY_BOOTSTRAP_449_LOADED') ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_BOOTSTRAP_449_VERSION', '4.4.9');
27
- define('FACTORY_BOOTSTRAP_449_LOADED', true);
28
 
29
  if( !defined('FACTORY_FLAT_ADMIN') ) {
30
  define('FACTORY_FLAT_ADMIN', true);
31
  }
32
 
33
- define('FACTORY_BOOTSTRAP_449_DIR', dirname(__FILE__));
34
- define('FACTORY_BOOTSTRAP_449_URL', plugins_url(null, __FILE__));
35
 
36
- require_once(FACTORY_BOOTSTRAP_449_DIR . '/includes/functions.php');
37
 
38
  /**
39
- * @param Wbcr_Factory449_Plugin $plugin
40
  */
41
- add_action('wbcr_factory_bootstrap_449_plugin_created', function ($plugin) {
42
- $manager = new Wbcr_FactoryBootstrap449_Manager($plugin);
43
  $plugin->setBootstap($manager);
44
  });
45
 
19
  return;
20
  }
21
 
22
+ if( defined('FACTORY_BOOTSTRAP_453_LOADED') ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_BOOTSTRAP_453_VERSION', '4.5.3');
27
+ define('FACTORY_BOOTSTRAP_453_LOADED', true);
28
 
29
  if( !defined('FACTORY_FLAT_ADMIN') ) {
30
  define('FACTORY_FLAT_ADMIN', true);
31
  }
32
 
33
+ define('FACTORY_BOOTSTRAP_453_DIR', dirname(__FILE__));
34
+ define('FACTORY_BOOTSTRAP_453_URL', plugins_url(null, __FILE__));
35
 
36
+ require_once(FACTORY_BOOTSTRAP_453_DIR . '/includes/functions.php');
37
 
38
  /**
39
+ * @param Wbcr_Factory452_Plugin $plugin
40
  */
41
+ add_action('wbcr_factory_bootstrap_453_plugin_created', function ($plugin) {
42
+ $manager = new Wbcr_FactoryBootstrap453_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_FactoryBootstrap449_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
- * @var Wbcr_Factory449_Plugin
30
  */
31
  public $plugin;
32
 
@@ -51,7 +51,7 @@ class Wbcr_FactoryBootstrap449_Manager {
51
  *
52
  * @since 1.0.0
53
  */
54
- public function __construct(Wbcr_Factory449_Plugin $plugin)
55
  {
56
  $this->plugin = $plugin;
57
 
@@ -115,8 +115,8 @@ class Wbcr_FactoryBootstrap449_Manager {
115
  public function loadAssets($hook)
116
  {
117
 
118
- do_action('wbcr_factory_449_bootstrap_enqueue_scripts', $hook);
119
- do_action('wbcr_factory_449_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook);
120
 
121
  $dependencies = [];
122
  if( !empty($this->scripts) ) {
@@ -161,8 +161,8 @@ class Wbcr_FactoryBootstrap449_Manager {
161
  $cache_enable = apply_filters('wbcr/factory/bootstrap/cache_enable', true);
162
 
163
  $cache_id = md5(implode(',', $this->scripts) . $type . $this->plugin->getPluginVersion());
164
- $cache_dir_path = FACTORY_BOOTSTRAP_449_DIR . '/assets/cache/';
165
- $cache_dir_url = FACTORY_BOOTSTRAP_449_URL . '/assets/cache/';
166
 
167
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
168
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
@@ -189,7 +189,7 @@ class Wbcr_FactoryBootstrap449_Manager {
189
  foreach($scripts as $script_to_load) {
190
  $script_to_load = sanitize_text_field($script_to_load);
191
  if( $cache_enable && $cache_dir_exists ) {
192
- $fname = FACTORY_BOOTSTRAP_449_DIR . "/assets/$type-min/$script_to_load.min." . $type;
193
  if( file_exists($fname) ) {
194
  $f = @fopen($fname, 'r');
195
  $concat_files[] = @fread($f, filesize($fname));
@@ -197,9 +197,9 @@ class Wbcr_FactoryBootstrap449_Manager {
197
  }
198
  } else {
199
  if( $type == 'js' ) {
200
- wp_enqueue_script(md5($script_to_load), FACTORY_BOOTSTRAP_449_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion());
201
  } else {
202
- wp_enqueue_style(md5($script_to_load), FACTORY_BOOTSTRAP_449_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion());
203
  }
204
  $is_first = false;
205
  }
20
  *
21
  * @since 3.2.0
22
  */
23
+ class Wbcr_FactoryBootstrap453_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
+ * @var Wbcr_Factory452_Plugin
30
  */
31
  public $plugin;
32
 
51
  *
52
  * @since 1.0.0
53
  */
54
+ public function __construct(Wbcr_Factory452_Plugin $plugin)
55
  {
56
  $this->plugin = $plugin;
57
 
115
  public function loadAssets($hook)
116
  {
117
 
118
+ do_action('wbcr_factory_452_bootstrap_enqueue_scripts', $hook);
119
+ do_action('wbcr_factory_452_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook);
120
 
121
  $dependencies = [];
122
  if( !empty($this->scripts) ) {
161
  $cache_enable = apply_filters('wbcr/factory/bootstrap/cache_enable', true);
162
 
163
  $cache_id = md5(implode(',', $this->scripts) . $type . $this->plugin->getPluginVersion());
164
+ $cache_dir_path = FACTORY_BOOTSTRAP_453_DIR . '/assets/cache/';
165
+ $cache_dir_url = FACTORY_BOOTSTRAP_453_URL . '/assets/cache/';
166
 
167
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
168
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
189
  foreach($scripts as $script_to_load) {
190
  $script_to_load = sanitize_text_field($script_to_load);
191
  if( $cache_enable && $cache_dir_exists ) {
192
+ $fname = FACTORY_BOOTSTRAP_453_DIR . "/assets/$type-min/$script_to_load.min." . $type;
193
  if( file_exists($fname) ) {
194
  $f = @fopen($fname, 'r');
195
  $concat_files[] = @fread($f, filesize($fname));
197
  }
198
  } else {
199
  if( $type == 'js' ) {
200
+ wp_enqueue_script(md5($script_to_load), FACTORY_BOOTSTRAP_453_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion());
201
  } else {
202
+ wp_enqueue_style(md5($script_to_load), FACTORY_BOOTSTRAP_453_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion());
203
  }
204
  $is_first = false;
205
  }
libs/factory/core/ajax/install-addons.php CHANGED
@@ -15,7 +15,7 @@ if( !defined('ABSPATH') ) {
15
  /**
16
  * This action allows you to process Ajax requests to activate external components Clearfy
17
  */
18
- function wfactory_449_install_components($plugin_instance)
19
  {
20
  check_ajax_referer('updates');
21
 
@@ -24,11 +24,11 @@ function wfactory_449_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_449'), __('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_449')]);
32
  }
33
  $success = false;
34
  $send_data = [];
@@ -44,7 +44,7 @@ function wfactory_449_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_449')]);
48
  }
49
  } else if( $storage == 'wordpress' || $storage == 'creativemotion' ) {
50
  if( !empty($slug) ) {
@@ -80,7 +80,7 @@ function wfactory_449_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_449' ), admin_url( 'options-permalink.php' ) . '</span>' );
84
  }
85
  }*/
86
 
@@ -94,7 +94,7 @@ function wfactory_449_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_449')]);
98
  }
99
 
100
  /**
@@ -102,18 +102,18 @@ function wfactory_449_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_449_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_449')], 403);
113
  }
114
 
115
  if( empty($component_name) ) {
116
- wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_449')]);
117
  }
118
  // todo: для совместимости с плагином Clearfy
119
  if( "wbcr_clearfy" === $plugin_instance->getPluginName() ) {
@@ -133,7 +133,7 @@ function wfactory_449_prepare_component($plugin_instance)
133
  *
134
  * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
135
  */
136
- function wfactory_449_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_452_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_452'), __('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_452')]);
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_452')]);
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_452' ), 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_452')]);
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_452_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_452')], 403);
113
  }
114
 
115
  if( empty($component_name) ) {
116
+ wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_452')]);
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_452_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-449-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-449-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-449-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_449.hooks.run('core/components/pre_update', [$this, data]);
58
 
59
  self.sendRequest(data, function(response) {
60
  if( !response || !response.success ) {
61
- $.wfactory_449.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_449.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_449.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_449.hooks.run('core/components/deactivated', [
128
  $this,
129
  data,
130
  response
@@ -134,7 +134,7 @@
134
 
135
  plugin_action = 'install';
136
 
137
- $.wfactory_449.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_449.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-449-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_449.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_449.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_449.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-452-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-452-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-452-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_452.hooks.run('core/components/pre_update', [$this, data]);
58
 
59
  self.sendRequest(data, function(response) {
60
  if( !response || !response.success ) {
61
+ $.wfactory_452.hooks.run('core/components/update_error', [
62
  $this,
63
  data,
64
  response
80
  $this.removeClass('button-default').addClass('button-primary');
81
  }
82
 
83
+ $.wfactory_452.hooks.run('core/components/installed', [
84
  $this,
85
  data,
86
  response
96
  $this.removeClass('button-primary').addClass('button-default');
97
  }
98
 
99
+ $.wfactory_452.hooks.run('core/components/pre_activate', [
100
  $this,
101
  data,
102
  response
124
  $this.removeClass('button-default').addClass('button-primary');
125
  }
126
 
127
+ $.wfactory_452.hooks.run('core/components/deactivated', [
128
  $this,
129
  data,
130
  response
134
 
135
  plugin_action = 'install';
136
 
137
+ $.wfactory_452.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_452.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-452-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_452.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_452.hooks.run('core/components/activated', [
191
  componentButton,
192
  sendData,
193
  response
210
  console.log(xhr.responseText);
211
  console.log(thrownError);
212
 
213
+ $.wfactory_452.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_449 ) {
12
- $.wfactory_449 = {};
13
  }
14
 
15
- $.wfactory_449.filters = $.wfactory_449.filters || {
16
 
17
  /**
18
  * A set of registered filters.
@@ -79,20 +79,20 @@
79
  }
80
  };
81
 
82
- $.wfactory_449.hooks = $.wfactory_449.hooks || {
83
 
84
  /**
85
  * Applies filters to a given input value.
86
  */
87
  run: function(filterName, args) {
88
- $.wfactory_449.filters.run(filterName, args);
89
  },
90
 
91
  /**
92
  * Registers a new filter.
93
  */
94
  add: function(filterName, callback, priority) {
95
- $.wfactory_449.filters.add(filterName, callback, priority);
96
  }
97
  };
98
 
8
  (function($) {
9
  'use strict';
10
 
11
+ if( !$.wfactory_452 ) {
12
+ $.wfactory_452 = {};
13
  }
14
 
15
+ $.wfactory_452.filters = $.wfactory_452.filters || {
16
 
17
  /**
18
  * A set of registered filters.
79
  }
80
  };
81
 
82
+ $.wfactory_452.hooks = $.wfactory_452.hooks || {
83
 
84
  /**
85
  * Applies filters to a given input value.
86
  */
87
  run: function(filterName, args) {
88
+ $.wfactory_452.filters.run(filterName, args);
89
  },
90
 
91
  /**
92
  * Registers a new filter.
93
  */
94
  add: function(filterName, callback, priority) {
95
+ $.wfactory_452.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_449_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_449_LOADED', true);
22
 
23
- define('FACTORY_449_VERSION', '4.4.9');
24
 
25
- define('FACTORY_449_DIR', dirname(__FILE__));
26
- define('FACTORY_449_URL', plugins_url(null, __FILE__));
27
 
28
- load_plugin_textdomain('wbcr_factory_449', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
  #comp merge
31
- require_once(FACTORY_449_DIR . '/includes/functions.php');
32
 
33
- require_once(FACTORY_449_DIR . '/includes/entities/class-factory-paths.php');
34
- require_once(FACTORY_449_DIR . '/includes/entities/class-factory-support.php');
35
 
36
- require_once(FACTORY_449_DIR . '/includes/class-factory-requests.php');
37
- require_once(FACTORY_449_DIR . '/includes/class-factory-options.php');
38
- require_once(FACTORY_449_DIR . '/includes/class-factory-plugin-base.php');
39
- require_once(FACTORY_449_DIR . '/includes/class-factory-migrations.php');
40
- require_once(FACTORY_449_DIR . '/includes/class-factory-notices.php');
41
 
42
  // ASSETS
43
- require_once(FACTORY_449_DIR . '/includes/assets-managment/class-factory-assets-list.php');
44
- require_once(FACTORY_449_DIR . '/includes/assets-managment/class-factory-script-list.php');
45
- require_once(FACTORY_449_DIR . '/includes/assets-managment/class-factory-style-list.php');
46
 
47
  // PREMIUM
48
- require_once(FACTORY_449_DIR . '/includes/premium/class-factory-license-interface.php');
49
- require_once(FACTORY_449_DIR . '/includes/premium/class-factory-provider-abstract.php');
50
- require_once(FACTORY_449_DIR . '/includes/premium/class-factory-manager.php');
51
 
52
  // UPDATES
53
- require_once(FACTORY_449_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
54
- require_once(FACTORY_449_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
55
- require_once(FACTORY_449_DIR . '/includes/updates/repositories/class-factory-github.php');
56
- require_once(FACTORY_449_DIR . '/includes/updates/class-factory-upgrader.php');
57
- require_once(FACTORY_449_DIR . '/includes/updates/class-factory-premium-upgrader.php');
58
 
59
- require_once(FACTORY_449_DIR . '/includes/class-factory-plugin-abstract.php');
60
 
61
- require_once(FACTORY_449_DIR . '/includes/activation/class-factory-activator.php');
62
- require_once(FACTORY_449_DIR . '/includes/activation/class-factory-update.php');
63
  #endcomp
64
 
65
  add_action('admin_enqueue_scripts', function () {
66
- wp_enqueue_script('wfactory-449-core-general', FACTORY_449_URL . '/assets/js/core-general.js', [
67
  'jquery'
68
- ], FACTORY_449_VERSION);
69
- wp_enqueue_script('wfactory-449-core-components', FACTORY_449_URL . '/assets/js/core-components.js', [
70
  'jquery',
71
- 'wfactory-449-core-general'
72
- ], FACTORY_449_VERSION);
73
  });
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_452_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_452_LOADED', true);
22
 
23
+ define('FACTORY_452_VERSION', '4.5.2');
24
 
25
+ define('FACTORY_452_DIR', dirname(__FILE__));
26
+ define('FACTORY_452_URL', plugins_url(null, __FILE__));
27
 
28
+ load_plugin_textdomain('wbcr_factory_452', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
  #comp merge
31
+ require_once(FACTORY_452_DIR . '/includes/functions.php');
32
 
33
+ require_once(FACTORY_452_DIR . '/includes/entities/class-factory-paths.php');
34
+ require_once(FACTORY_452_DIR . '/includes/entities/class-factory-support.php');
35
 
36
+ require_once(FACTORY_452_DIR . '/includes/class-factory-requests.php');
37
+ require_once(FACTORY_452_DIR . '/includes/class-factory-options.php');
38
+ require_once(FACTORY_452_DIR . '/includes/class-factory-plugin-base.php');
39
+ require_once(FACTORY_452_DIR . '/includes/class-factory-migrations.php');
40
+ require_once(FACTORY_452_DIR . '/includes/class-factory-notices.php');
41
 
42
  // ASSETS
43
+ require_once(FACTORY_452_DIR . '/includes/assets-managment/class-factory-assets-list.php');
44
+ require_once(FACTORY_452_DIR . '/includes/assets-managment/class-factory-script-list.php');
45
+ require_once(FACTORY_452_DIR . '/includes/assets-managment/class-factory-style-list.php');
46
 
47
  // PREMIUM
48
+ require_once(FACTORY_452_DIR . '/includes/premium/class-factory-license-interface.php');
49
+ require_once(FACTORY_452_DIR . '/includes/premium/class-factory-provider-abstract.php');
50
+ require_once(FACTORY_452_DIR . '/includes/premium/class-factory-manager.php');
51
 
52
  // UPDATES
53
+ require_once(FACTORY_452_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
54
+ require_once(FACTORY_452_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
55
+ require_once(FACTORY_452_DIR . '/includes/updates/repositories/class-factory-github.php');
56
+ require_once(FACTORY_452_DIR . '/includes/updates/class-factory-upgrader.php');
57
+ require_once(FACTORY_452_DIR . '/includes/updates/class-factory-premium-upgrader.php');
58
 
59
+ require_once(FACTORY_452_DIR . '/includes/class-factory-plugin-abstract.php');
60
 
61
+ require_once(FACTORY_452_DIR . '/includes/activation/class-factory-activator.php');
62
+ require_once(FACTORY_452_DIR . '/includes/activation/class-factory-update.php');
63
  #endcomp
64
 
65
  add_action('admin_enqueue_scripts', function () {
66
+ wp_enqueue_script('wfactory-452-core-general', FACTORY_452_URL . '/assets/js/core-general.js', [
67
  'jquery'
68
+ ], FACTORY_452_VERSION);
69
+ wp_enqueue_script('wfactory-452-core-components', FACTORY_452_URL . '/assets/js/core-components.js', [
70
  'jquery',
71
+ 'wfactory-452-core-general'
72
+ ], FACTORY_452_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_Factory449_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
- * @var Wbcr_Factory449_Plugin
28
  */
29
  public $plugin;
30
 
31
- public function __construct( Wbcr_Factory449_Plugin $plugin ) {
32
  $this->plugin = $plugin;
33
  }
34
 
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_Factory452_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
+ * @var Wbcr_Factory452_Plugin
28
  */
29
  public $plugin;
30
 
31
+ public function __construct( Wbcr_Factory452_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_Factory449_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
- * @var Wbcr_Factory449_Plugin
29
  */
30
  var $plugin;
31
 
32
- public function __construct( Wbcr_Factory449_Plugin $plugin ) {
33
  $this->plugin = $plugin;
34
  }
35
 
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_Factory452_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
+ * @var Wbcr_Factory452_Plugin
29
  */
30
  var $plugin;
31
 
32
+ public function __construct( Wbcr_Factory452_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_Factory449_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
@@ -29,15 +29,15 @@ class Wbcr_Factory449_AssetsList {
29
  protected $default_place;
30
 
31
  /**
32
- * @var Wbcr_Factory449_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
- * @param Wbcr_Factory449_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
- public function __construct( Wbcr_Factory449_Plugin $plugin, $defaultIsFooter = true ) {
41
  $this->plugin = $plugin;
42
 
43
  if ( $defaultIsFooter ) {
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_Factory452_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
29
  protected $default_place;
30
 
31
  /**
32
+ * @var Wbcr_Factory452_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
+ * @param Wbcr_Factory452_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
+ public function __construct( Wbcr_Factory452_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_Factory449_ScriptList extends Wbcr_Factory449_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
@@ -149,7 +149,7 @@ class Wbcr_Factory449_ScriptList extends Wbcr_Factory449_AssetsList {
149
  * @param string $varname
150
  * @param array $data
151
  *
152
- * @return Wbcr_Factory449_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_Factory452_ScriptList extends Wbcr_Factory452_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
149
  * @param string $varname
150
  * @param array $data
151
  *
152
+ * @return Wbcr_Factory452_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_Factory449_StyleList extends Wbcr_Factory449_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory452_StyleList extends Wbcr_Factory452_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_templates_101' ), $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_449' ), $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_449' ), $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_templates_105' ), $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_452' ), $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_452' ), $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_449;
4
 
5
  use Exception;
6
- use Wbcr_Factory449_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -35,11 +35,11 @@ class Migrations {
35
  /**
36
  * Migrations constructor.
37
  *
38
- * @param Wbcr_Factory449_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
- public function __construct( Wbcr_Factory449_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_449' ) . "</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_449' ) . '</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_449" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
- $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_449" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
- $notice_text .= __( "Current plugin version:", "wbcr_factory_449" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
- $notice_text .= __( "Need migration:", "wbcr_factory_449" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
- $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_449" ) . "</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_449' ) . '</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_449' ) );
509
  }
510
 
511
  $tokens = token_get_all( $phpCode );
1
  <?php
2
 
3
+ namespace WBCR\Factory_452;
4
 
5
  use Exception;
6
+ use Wbcr_Factory452_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
35
  /**
36
  * Migrations constructor.
37
  *
38
+ * @param Wbcr_Factory452_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
+ public function __construct( Wbcr_Factory452_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_452' ) . "</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_452' ) . '</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_452" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
+ $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_452" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
+ $notice_text .= __( "Current plugin version:", "wbcr_factory_452" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
+ $notice_text .= __( "Need migration:", "wbcr_factory_452" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
+ $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_452" ) . "</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_452' ) . '</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_452' ) );
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_449;
4
 
5
- use Wbcr_Factory449_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_Factory449_Plugin
31
  */
32
  protected $plugin;
33
  /**
@@ -58,7 +58,7 @@ class Notices {
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
- * @param Wbcr_Factory449_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_449
90
  */
91
  $this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
92
 
@@ -202,8 +202,8 @@ class Notices {
202
  $classes[] = $plugin_name . '-factory-notice-dismiss';
203
  }
204
  ?>
205
- <div data-name="wbcr_factory_notice_<?php echo esc_attr($data['id']) ?>" data-expires="<?= esc_attr($settings['dismiss_expires']) ?>" data-nonce="<?php echo wp_create_nonce($this->plugin->getPluginName() . '_factory_dismiss_notice'); ?>" class="<?php echo esc_attr(implode(' ', $classes)) ?>">
206
- <?= $data['text'] ?>
207
  </div>
208
  <?php
209
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_452;
4
 
5
+ use Wbcr_Factory452_Plugin;
6
 
7
  // Exit if accessed directly
8
  if( !defined('ABSPATH') ) {
27
  class Notices {
28
 
29
  /**
30
+ * @var Wbcr_Factory452_Plugin
31
  */
32
  protected $plugin;
33
  /**
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
+ * @param Wbcr_Factory452_Plugin $plugin
62
  */
63
  public function __construct($plugin)
64
  {
86
  public function currentScreenAction()
87
  {
88
  /**
89
+ * @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_452
90
  */
91
  $this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
92
 
202
  $classes[] = $plugin_name . '-factory-notice-dismiss';
203
  }
204
  ?>
205
+ <div data-name="wbcr_factory_notice_<?php echo esc_attr($data['id']) ?>" data-expires="<?php echo esc_attr($settings['dismiss_expires']) ?>" data-nonce="<?php echo wp_create_nonce($this->plugin->getPluginName() . '_factory_dismiss_notice'); ?>" class="<?php echo esc_attr(implode(' ', $classes)) ?>">
206
+ <?php echo $data['text'] ?>
207
  </div>
208
  <?php
209
  }
libs/factory/core/includes/class-factory-options.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_449;
4
 
5
  // Exit if accessed directly
6
  use Exception;
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  }
11
 
12
  /**
13
- * Трейт используется для расширения базового класса плагина Wbcr_Factory449_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_452;
4
 
5
  // Exit if accessed directly
6
  use Exception;
10
  }
11
 
12
  /**
13
+ * Трейт используется для расширения базового класса плагина Wbcr_Factory452_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_Factory449_Plugin extends Wbcr_Factory449_Base {
28
 
29
  /**
30
- * Instance class Wbcr_Factory449_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
- * @var Wbcr_Factory449_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
- * @var \WBCR\Factory_449\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
- * @var Wbcr_FactoryBootstrap449_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
- * @var Wbcr_FactoryForms446_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
- * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory449_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
- * @var array[] Wbcr_Factory449_Activator
63
  */
64
  protected $activator_class = [];
65
 
@@ -86,7 +86,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
88
  * @since 4.1.9
89
- * @var WBCR\Factory_Adverts_127\Base
90
  */
91
  private $adverts;
92
 
@@ -95,7 +95,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
95
  *
96
  * @author Artem Prihodko <webtemyk@yandex.ru>
97
  * @since 4.3.7
98
- * @var WBCR\Factory_Logger_114\Logger
99
  */
100
  public $logger;
101
 
@@ -115,8 +115,8 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
115
 
116
  parent::__construct($plugin_path, $data);
117
 
118
- $this->request = new Wbcr_Factory449_Request();
119
- //$this->route = new Wbcr_Factory449_Route();
120
 
121
  // INIT PLUGIN FRAMEWORK MODULES
122
  // Framework modules should always be loaded first,
@@ -144,15 +144,15 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
144
  $this->init_plugin_components();
145
 
146
  if( wp_doing_ajax() && isset($_REQUEST['action']) ) {
147
- if( "wfactory-449-intall-component" == $_REQUEST['action'] ) {
148
- add_action('wp_ajax_wfactory-449-intall-component', [$this, 'ajax_handler_install_components']);
149
  }
150
 
151
- if( "wfactory-449-prepare-component" == $_REQUEST['action'] ) {
152
- add_action('wp_ajax_wfactory-449-prepare-component', [$this, 'ajax_handler_prepare_component']);
153
  }
154
- if( "wfactory-449-creativemotion-install-plugin" == $_REQUEST['action'] ) {
155
- add_action('wp_ajax_wfactory-449-creativemotion-install-plugin', [
156
  $this,
157
  'ajax_handler_install_creativemotion_plugins'
158
  ]);
@@ -165,20 +165,20 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
165
 
166
  public function ajax_handler_install_components()
167
  {
168
- require_once FACTORY_449_DIR . '/ajax/install-addons.php';
169
- wfactory_449_install_components($this);
170
  }
171
 
172
  public function ajax_handler_prepare_component()
173
  {
174
- require_once FACTORY_449_DIR . '/ajax/install-addons.php';
175
- wfactory_449_prepare_component($this);
176
  }
177
 
178
  public function ajax_handler_install_creativemotion_plugins()
179
  {
180
- require_once FACTORY_449_DIR . '/ajax/install-addons.php';
181
- wfactory_449_creativemotion_install_plugin($this);
182
  }
183
  // --------------------------------------------------------
184
 
@@ -186,9 +186,9 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
186
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
187
  * скриптов, стилей) фреймворка.
188
  *
189
- * @param Wbcr_FactoryBootstrap449_Manager $bootstrap
190
  */
191
- public function setBootstap(Wbcr_FactoryBootstrap449_Manager $bootstrap)
192
  {
193
  $this->bootstrap = $bootstrap;
194
  }
@@ -196,9 +196,9 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
196
  /**
197
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
198
  *
199
- * @param Wbcr_FactoryForms446_Manager $forms
200
  */
201
- public function setForms(Wbcr_FactoryForms446_Manager $forms)
202
  {
203
  $this->forms = $forms;
204
  }
@@ -246,8 +246,8 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
246
  */
247
  public function set_license_provider($name, $class_name)
248
  {
249
- if( !isset(WBCR\Factory_449\Premium\Manager::$providers[$name]) ) {
250
- WBCR\Factory_449\Premium\Manager::$providers[$name] = $class_name;
251
  }
252
  }
253
 
@@ -265,8 +265,8 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
265
  */
266
  public function set_update_repository($name, $class_name)
267
  {
268
- if( !isset(WBCR\Factory_449\Updates\Upgrader::$repositories[$name]) ) {
269
- WBCR\Factory_449\Updates\Upgrader::$repositories[$name] = $class_name;
270
  }
271
  }
272
 
@@ -276,7 +276,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
276
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
277
  * рекламных объявлений.
278
  *
279
- * @return \WBCR\Factory_Adverts_127\Base
280
  * @since 1.1
281
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
282
  */
@@ -312,18 +312,18 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
312
 
313
  public function newScriptList()
314
  {
315
- return new Wbcr_Factory449_ScriptList($this);
316
  }
317
 
318
  public function newStyleList()
319
  {
320
- return new Wbcr_Factory449_StyleList($this);
321
  }
322
 
323
  /**
324
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
325
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
326
- * Wbcr_FactoryPages448_AdminPage, а затем регистрирует его через этот метод.
327
  * Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
328
  * pages.
329
  *
@@ -333,7 +333,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
333
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
334
  *
335
  * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
336
- * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages448_AdminPage.
337
  * @param string $file_path Абсолютный путь к файлу с классом страницы.
338
  *
339
  * @throws Exception
@@ -355,11 +355,11 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
355
  throw new Exception('A class with this name {' . $class_name . '} does not exist.');
356
  }
357
 
358
- if( !class_exists('Wbcr_FactoryPages448') ) {
359
- throw new Exception('The factory_pages_448 module is not included.');
360
  }
361
 
362
- Wbcr_FactoryPages448::register($this, $class_name);
363
  }
364
 
365
  /**
@@ -409,16 +409,16 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
409
  /**
410
  * @since 4.1.1 - change hook name
411
  */
412
- if( apply_filters("wbcr/factory_449/cancel_plugin_activation_{$this->plugin_name}", false) ) {
413
  return;
414
  }
415
 
416
  /**
417
- * wbcr_factory_449_plugin_activation
418
  *
419
  * @since 4.1.1 - deprecated
420
  */
421
- wbcr_factory_449_do_action_deprecated('wbcr_factory_449_plugin_activation', [
422
  $this
423
  ], '4.1.1', "wbcr/factory/plugin_activation");
424
 
@@ -427,7 +427,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
427
  *
428
  * @since 4.1.2 - deprecated
429
  */
430
- wbcr_factory_449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
443
  *
444
  * @since 4.1.2 - deprecated
445
  */
446
- wbcr_factory_449_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_449_plugin_activation_' . $this->plugin_name
452
  *
453
  * @since 4.1.1 - deprecated
454
  */
455
- wbcr_factory_449_do_action_deprecated('wbcr_factory_449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
493
  /**
494
  * @since 4.1.1 - change hook name
495
  */
496
- if( apply_filters("wbcr/factory_449/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
497
  return;
498
  }
499
 
500
  /**
501
- * wbcr_factory_449_plugin_deactivation
502
  *
503
  * @since 4.1.1 - deprecated
504
  */
505
- wbcr_factory_449_do_action_deprecated('wbcr_factory_449_plugin_deactivation', [
506
  $this
507
  ], '4.1.1', "wbcr/factory/plugin_deactivation");
508
 
@@ -511,7 +511,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
511
  *
512
  * @since 4.1.2 - deprecated
513
  */
514
- wbcr_factory_449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
523
  do_action('wbcr/factory/plugin_deactivation', $this);
524
 
525
  /**
526
- * wbcr_factory_449_plugin_deactivation_ . $this->plugin_name
527
  *
528
  * @since 4.1.1 - deprecated
529
  */
530
- wbcr_factory_449_do_action_deprecated('wbcr_factory_449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
536
  *
537
  * @since 4.1.2 - deprecated
538
  */
539
- wbcr_factory_449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
574
  */
575
  public function getPluginPageUrl($page_id, $args = [])
576
  {
577
- if( !class_exists('Wbcr_FactoryPages448') ) {
578
- throw new Exception('The factory_pages_448 module is not included.');
579
  }
580
 
581
  if( !is_admin() ) {
@@ -584,7 +584,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
584
  return null;
585
  }
586
 
587
- return Wbcr_FactoryPages448::getPageUrl($this, $page_id, $args);
588
  }
589
 
590
  /**
@@ -594,13 +594,13 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
594
  * @param $slug
595
  * param $premium
596
  *
597
- * @return \WBCR\Factory_449\Components\Install_Button
598
  */
599
  public function get_install_component_button($component_type, $slug)
600
  {
601
- require_once FACTORY_449_DIR . '/includes/components/class-install-component-button.php';
602
 
603
- return new \WBCR\Factory_449\Components\Install_Button($this, $component_type, $slug);
604
  }
605
 
606
  /**
@@ -609,13 +609,13 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
609
  * @param $component_type
610
  * @param $slug
611
  *
612
- * @return \WBCR\Factory_449\Components\Delete_Button
613
  */
614
  public function get_delete_component_button($component_type, $slug)
615
  {
616
- require_once FACTORY_449_DIR . '/includes/components/class-delete-component-button.php';
617
 
618
- return new WBCR\Factory_449\Components\Delete_Button($this, $component_type, $slug);
619
  }
620
 
621
  /**
@@ -798,12 +798,12 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
798
  /**
799
  * @since 4.1.1 - deprecated
800
  */
801
- wbcr_factory_449_do_action_deprecated('wbcr_factory_449_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_449/modules_loaded-" . $this->plugin_name);
802
 
803
  /**
804
  * @since 4.1.1 - add
805
  */
806
- do_action('wbcr/factory_449/modules_loaded-' . $this->plugin_name);
807
  }
808
 
809
 
@@ -830,7 +830,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
830
  });
831
 
832
  if( is_admin() ) {
833
- add_filter('wbcr_factory_449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
846
  */
847
  protected function init_plugin_migrations()
848
  {
849
- new WBCR\Factory_449\Migrations($this);
850
  }
851
 
852
  /**
@@ -857,7 +857,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
857
  */
858
  protected function init_plugin_notices()
859
  {
860
- new Wbcr\Factory_449\Notices($this);
861
  }
862
 
863
  /**
@@ -873,7 +873,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
873
  protected function init_plugin_updates()
874
  {
875
  if( $this->has_updates ) {
876
- new WBCR\Factory_449\Updates\Upgrader($this);
877
  }
878
  }
879
 
@@ -896,11 +896,11 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
896
  }
897
 
898
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
899
- $this->premium = WBCR\Factory_449\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_449\Updates\Premium_Upgrader($this);
904
  }
905
  }
906
  }
24
  * @package factory-core
25
  *
26
  */
27
+ abstract class Wbcr_Factory452_Plugin extends Wbcr_Factory452_Base {
28
 
29
  /**
30
+ * Instance class Wbcr_Factory452_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
+ * @var Wbcr_Factory452_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
+ * @var \WBCR\Factory_452\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
+ * @var Wbcr_FactoryBootstrap453_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
+ * @var Wbcr_FactoryForms449_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
+ * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory452_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
+ * @var array[] Wbcr_Factory452_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_129\Base
90
  */
91
  private $adverts;
92
 
95
  *
96
  * @author Artem Prihodko <webtemyk@yandex.ru>
97
  * @since 4.3.7
98
+ * @var WBCR\Factory_Logger_117\Logger
99
  */
100
  public $logger;
101
 
115
 
116
  parent::__construct($plugin_path, $data);
117
 
118
+ $this->request = new Wbcr_Factory452_Request();
119
+ //$this->route = new Wbcr_Factory452_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-452-intall-component" == $_REQUEST['action'] ) {
148
+ add_action('wp_ajax_wfactory-452-intall-component', [$this, 'ajax_handler_install_components']);
149
  }
150
 
151
+ if( "wfactory-452-prepare-component" == $_REQUEST['action'] ) {
152
+ add_action('wp_ajax_wfactory-452-prepare-component', [$this, 'ajax_handler_prepare_component']);
153
  }
154
+ if( "wfactory-452-creativemotion-install-plugin" == $_REQUEST['action'] ) {
155
+ add_action('wp_ajax_wfactory-452-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_452_DIR . '/ajax/install-addons.php';
169
+ wfactory_452_install_components($this);
170
  }
171
 
172
  public function ajax_handler_prepare_component()
173
  {
174
+ require_once FACTORY_452_DIR . '/ajax/install-addons.php';
175
+ wfactory_452_prepare_component($this);
176
  }
177
 
178
  public function ajax_handler_install_creativemotion_plugins()
179
  {
180
+ require_once FACTORY_452_DIR . '/ajax/install-addons.php';
181
+ wfactory_452_creativemotion_install_plugin($this);
182
  }
183
  // --------------------------------------------------------
184
 
186
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
187
  * скриптов, стилей) фреймворка.
188
  *
189
+ * @param Wbcr_FactoryBootstrap453_Manager $bootstrap
190
  */
191
+ public function setBootstap(Wbcr_FactoryBootstrap453_Manager $bootstrap)
192
  {
193
  $this->bootstrap = $bootstrap;
194
  }
196
  /**
197
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
198
  *
199
+ * @param Wbcr_FactoryForms449_Manager $forms
200
  */
201
+ public function setForms(Wbcr_FactoryForms449_Manager $forms)
202
  {
203
  $this->forms = $forms;
204
  }
246
  */
247
  public function set_license_provider($name, $class_name)
248
  {
249
+ if( !isset(WBCR\Factory_452\Premium\Manager::$providers[$name]) ) {
250
+ WBCR\Factory_452\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_452\Updates\Upgrader::$repositories[$name]) ) {
269
+ WBCR\Factory_452\Updates\Upgrader::$repositories[$name] = $class_name;
270
  }
271
  }
272
 
276
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
277
  * рекламных объявлений.
278
  *
279
+ * @return \WBCR\Factory_Adverts_129\Base
280
  * @since 1.1
281
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
282
  */
312
 
313
  public function newScriptList()
314
  {
315
+ return new Wbcr_Factory452_ScriptList($this);
316
  }
317
 
318
  public function newStyleList()
319
  {
320
+ return new Wbcr_Factory452_StyleList($this);
321
  }
322
 
323
  /**
324
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
325
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
326
+ * Wbcr_FactoryPages451_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_FactoryPages451_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_FactoryPages451') ) {
359
+ throw new Exception('The factory_pages_451 module is not included.');
360
  }
361
 
362
+ Wbcr_FactoryPages451::register($this, $class_name);
363
  }
364
 
365
  /**
409
  /**
410
  * @since 4.1.1 - change hook name
411
  */
412
+ if( apply_filters("wbcr/factory_452/cancel_plugin_activation_{$this->plugin_name}", false) ) {
413
  return;
414
  }
415
 
416
  /**
417
+ * wbcr_factory_452_plugin_activation
418
  *
419
  * @since 4.1.1 - deprecated
420
  */
421
+ wbcr_factory_452_do_action_deprecated('wbcr_factory_452_plugin_activation', [
422
  $this
423
  ], '4.1.1', "wbcr/factory/plugin_activation");
424
 
427
  *
428
  * @since 4.1.2 - deprecated
429
  */
430
+ wbcr_factory_452_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_452_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_452_plugin_activation_' . $this->plugin_name
452
  *
453
  * @since 4.1.1 - deprecated
454
  */
455
+ wbcr_factory_452_do_action_deprecated('wbcr_factory_452_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_452/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
497
  return;
498
  }
499
 
500
  /**
501
+ * wbcr_factory_452_plugin_deactivation
502
  *
503
  * @since 4.1.1 - deprecated
504
  */
505
+ wbcr_factory_452_do_action_deprecated('wbcr_factory_452_plugin_deactivation', [
506
  $this
507
  ], '4.1.1', "wbcr/factory/plugin_deactivation");
508
 
511
  *
512
  * @since 4.1.2 - deprecated
513
  */
514
+ wbcr_factory_452_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_452_plugin_deactivation_ . $this->plugin_name
527
  *
528
  * @since 4.1.1 - deprecated
529
  */
530
+ wbcr_factory_452_do_action_deprecated('wbcr_factory_452_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_452_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_FactoryPages451') ) {
578
+ throw new Exception('The factory_pages_451 module is not included.');
579
  }
580
 
581
  if( !is_admin() ) {
584
  return null;
585
  }
586
 
587
+ return Wbcr_FactoryPages451::getPageUrl($this, $page_id, $args);
588
  }
589
 
590
  /**
594
  * @param $slug
595
  * param $premium
596
  *
597
+ * @return \WBCR\Factory_452\Components\Install_Button
598
  */
599
  public function get_install_component_button($component_type, $slug)
600
  {
601
+ require_once FACTORY_452_DIR . '/includes/components/class-install-component-button.php';
602
 
603
+ return new \WBCR\Factory_452\Components\Install_Button($this, $component_type, $slug);
604
  }
605
 
606
  /**
609
  * @param $component_type
610
  * @param $slug
611
  *
612
+ * @return \WBCR\Factory_452\Components\Delete_Button
613
  */
614
  public function get_delete_component_button($component_type, $slug)
615
  {
616
+ require_once FACTORY_452_DIR . '/includes/components/class-delete-component-button.php';
617
 
618
+ return new WBCR\Factory_452\Components\Delete_Button($this, $component_type, $slug);
619
  }
620
 
621
  /**
798
  /**
799
  * @since 4.1.1 - deprecated
800
  */
801
+ wbcr_factory_452_do_action_deprecated('wbcr_factory_452_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_452/modules_loaded-" . $this->plugin_name);
802
 
803
  /**
804
  * @since 4.1.1 - add
805
  */
806
+ do_action('wbcr/factory_452/modules_loaded-' . $this->plugin_name);
807
  }
808
 
809
 
830
  });
831
 
832
  if( is_admin() ) {
833
+ add_filter('wbcr_factory_452_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_452\Migrations($this);
850
  }
851
 
852
  /**
857
  */
858
  protected function init_plugin_notices()
859
  {
860
+ new Wbcr\Factory_452\Notices($this);
861
  }
862
 
863
  /**
873
  protected function init_plugin_updates()
874
  {
875
  if( $this->has_updates ) {
876
+ new WBCR\Factory_452\Updates\Upgrader($this);
877
  }
878
  }
879
 
896
  }
897
 
898
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
899
+ $this->premium = WBCR\Factory_452\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_452\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_Factory449_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_Factory449_Base {
21
 
22
- use WBCR\Factory_449\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
@@ -81,7 +81,7 @@ class Wbcr_Factory449_Base {
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
- * экземпляр класса \WBCR\Factory_449\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
@@ -127,7 +127,7 @@ class Wbcr_Factory449_Base {
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
- * WBCR\Factory_449\Premium\Provider > WBCR\Factory_Freemius_137\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
@@ -177,9 +177,9 @@ class Wbcr_Factory449_Base {
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
- ['libs/factory/bootstrap', 'factory_bootstrap_449', 'admin'],
181
- ['libs/factory/forms', 'factory_forms_446', 'admin'],
182
- ['libs/factory/pages', 'factory_pages_448', 'admin'],
183
  ];
184
 
185
  /**
@@ -209,20 +209,20 @@ class Wbcr_Factory449_Base {
209
 
210
 
211
  /**
212
- * Экземпляр класса \WBCR\Factory_449\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
- * @var \WBCR\Factory_449\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
- * Экземпляр класса \WBCR\Factory_449\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
- * @var \WBCR\Factory_449\Entities\Paths
226
  */
227
  protected $paths;
228
 
@@ -271,8 +271,8 @@ class Wbcr_Factory449_Base {
271
  throw new Exception('One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).');
272
  }
273
 
274
- $this->support = new \WBCR\Factory_449\Entities\Support($this->support_details);
275
- $this->paths = new \WBCR\Factory_449\Entities\Paths($plugin_file);
276
 
277
  // used only in the module 'updates'
278
  $this->plugin_slug = !empty($this->plugin_name) ? $this->plugin_name : basename($plugin_file);
@@ -394,7 +394,7 @@ class Wbcr_Factory449_Base {
394
  * Проверяет, включен ли премиум для этого плагина или нет.
395
  *
396
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
397
- * См. Wbcr_Factory449_Base::has_premium
398
  */
399
  public function has_premium()
400
  {
@@ -404,7 +404,7 @@ class Wbcr_Factory449_Base {
404
  /**
405
  * Позволяет получить заголовок плагина.
406
  *
407
- * @return string Возвращает заголовок плагина. См. Wbcr_Factory449_Base::plugin_title
408
  */
409
  public function getPluginTitle()
410
  {
@@ -414,7 +414,7 @@ class Wbcr_Factory449_Base {
414
  /**
415
  * Позволяет получить префикс плагина.
416
  *
417
- * @return string Возвращает префикс плагина.См. Wbcr_Factory449_Base::prefix
418
  */
419
  public function getPrefix()
420
  {
@@ -424,7 +424,7 @@ class Wbcr_Factory449_Base {
424
  /**
425
  * Позволяет получить имя плагина.
426
  *
427
- * @return string Возвращает имя плагина. См. Wbcr_Factory449_Base::plugin_name
428
  */
429
  public function getPluginName()
430
  {
@@ -434,7 +434,7 @@ class Wbcr_Factory449_Base {
434
  /**
435
  * Позволяет получить версию плагина.
436
  *
437
- * @return string Возвращает версию плагина. См. Wbcr_Factory449_Base::plugin_version
438
  */
439
  public function getPluginVersion()
440
  {
@@ -458,7 +458,7 @@ class Wbcr_Factory449_Base {
458
  * какие-то данные не описанные в интерфейсе этого плагина.
459
  *
460
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
461
- * Wbcr_Factory449_Base::plugin_data
462
  *
463
  * @return null
464
  */
@@ -472,9 +472,9 @@ class Wbcr_Factory449_Base {
472
  }
473
 
474
  /**
475
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_449\Entities\Support.
476
  *
477
- * @return \WBCR\Factory_449\Entities\Support
478
  */
479
  public function get_support()
480
  {
@@ -482,9 +482,9 @@ class Wbcr_Factory449_Base {
482
  }
483
 
484
  /**
485
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_449\Entities\Paths.
486
  *
487
- * @return \WBCR\Factory_449\Entities\Paths
488
  */
489
  public function get_paths()
490
  {
@@ -494,7 +494,7 @@ class Wbcr_Factory449_Base {
494
  /**
495
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
496
  *
497
- * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory449_Base::plugin_data
498
  */
499
  public function getPluginInfo()
500
  {
5
  }
6
 
7
  /**
8
+ * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory452_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_Factory452_Base {
21
 
22
+ use WBCR\Factory_452\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
+ * экземпляр класса \WBCR\Factory_452\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
+ * WBCR\Factory_452\Premium\Provider > WBCR\Factory_Freemius_139\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
+ ['libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'],
181
+ ['libs/factory/forms', 'factory_forms_449', 'admin'],
182
+ ['libs/factory/pages', 'factory_pages_451', 'admin'],
183
  ];
184
 
185
  /**
209
 
210
 
211
  /**
212
+ * Экземпляр класса \WBCR\Factory_452\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
+ * @var \WBCR\Factory_452\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
+ * Экземпляр класса \WBCR\Factory_452\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
+ * @var \WBCR\Factory_452\Entities\Paths
226
  */
227
  protected $paths;
228
 
271
  throw new Exception('One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).');
272
  }
273
 
274
+ $this->support = new \WBCR\Factory_452\Entities\Support($this->support_details);
275
+ $this->paths = new \WBCR\Factory_452\Entities\Paths($plugin_file);
276
 
277
  // used only in the module 'updates'
278
  $this->plugin_slug = !empty($this->plugin_name) ? $this->plugin_name : basename($plugin_file);
394
  * Проверяет, включен ли премиум для этого плагина или нет.
395
  *
396
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
397
+ * См. Wbcr_Factory452_Base::has_premium
398
  */
399
  public function has_premium()
400
  {
404
  /**
405
  * Позволяет получить заголовок плагина.
406
  *
407
+ * @return string Возвращает заголовок плагина. См. Wbcr_Factory452_Base::plugin_title
408
  */
409
  public function getPluginTitle()
410
  {
414
  /**
415
  * Позволяет получить префикс плагина.
416
  *
417
+ * @return string Возвращает префикс плагина.См. Wbcr_Factory452_Base::prefix
418
  */
419
  public function getPrefix()
420
  {
424
  /**
425
  * Позволяет получить имя плагина.
426
  *
427
+ * @return string Возвращает имя плагина. См. Wbcr_Factory452_Base::plugin_name
428
  */
429
  public function getPluginName()
430
  {
434
  /**
435
  * Позволяет получить версию плагина.
436
  *
437
+ * @return string Возвращает версию плагина. См. Wbcr_Factory452_Base::plugin_version
438
  */
439
  public function getPluginVersion()
440
  {
458
  * какие-то данные не описанные в интерфейсе этого плагина.
459
  *
460
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
461
+ * Wbcr_Factory452_Base::plugin_data
462
  *
463
  * @return null
464
  */
472
  }
473
 
474
  /**
475
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_452\Entities\Support.
476
  *
477
+ * @return \WBCR\Factory_452\Entities\Support
478
  */
479
  public function get_support()
480
  {
482
  }
483
 
484
  /**
485
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_452\Entities\Paths.
486
  *
487
+ * @return \WBCR\Factory_452\Entities\Paths
488
  */
489
  public function get_paths()
490
  {
494
  /**
495
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
496
  *
497
+ * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory452_Base::plugin_data
498
  */
499
  public function getPluginInfo()
500
  {
libs/factory/core/includes/class-factory-requests.php CHANGED
@@ -11,7 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
11
  * @package factory-core
12
  */
13
 
14
- class Wbcr_Factory449_Request {
15
 
16
  /**
17
  * @param null $param
11
  * @package factory-core
12
  */
13
 
14
+ class Wbcr_Factory452_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_Factory449_Requirements' ) ) {
16
- class Wbcr_Factory449_Requirements {
17
 
18
  /**
19
  * Factory framework version
@@ -242,7 +242,7 @@ if ( ! class_exists( 'Wbcr_Factory449_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_templates_101' ), $this->plugin_title ) . ' ';
246
  $notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
247
 
248
  $has_one = false;
@@ -273,21 +273,21 @@ if ( ! class_exists( 'Wbcr_Factory449_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_449' ), $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_449' ), $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_449' ), $this->plugin_title );
291
  }
292
  }
293
  }
12
  * @since 4.0.9
13
  */
14
  // @formatter:off
15
+ if ( ! class_exists( 'Wbcr_Factory452_Requirements' ) ) {
16
+ class Wbcr_Factory452_Requirements {
17
 
18
  /**
19
  * Factory framework version
242
  $notice_text = $notice_default_text = '';
243
  $notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
244
 
245
+ $notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_templates_105' ), $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_452' ), $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_452' ), $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_452' ), $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_449\Components;
4
 
5
  /**
6
  * This file groups the settings for quick setup
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\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_449\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-449-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_Factory449_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', \WBCR\Factory_Templates_101\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_449'),
424
- 'install' => __('Install', 'wbcr_factory_449'),
425
- 'deactivate' => __('Deactivate', 'wbcr_factory_449'),
426
- 'delete' => __('Delete', 'wbcr_factory_449'),
427
- 'loading' => __('Please wait...', 'wbcr_factory_449'),
428
- 'preparation' => __('Preparation...', 'wbcr_factory_449'),
429
- 'read' => __('Read more', 'wbcr_factory_449')
430
  ];
431
  }
432
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Components;
4
 
5
  /**
6
  * This file groups the settings for quick setup
22
 
23
  protected $classes = [
24
  'button',
25
+ 'wfactory-452-process-button'
26
  ];
27
  protected $data = [];
28
  protected $base_path;
37
  * @throws \Exception
38
  * @since 4.3.3
39
  */
40
+ public function __construct(\Wbcr_Factory452_Plugin $plugin, $type, $plugin_slug)
41
  {
42
  if( empty($type) || !is_string($plugin_slug) ) {
43
  throw new \Exception('Empty type or plugin_slug attribute.');
67
 
68
  // Set default data
69
  $this->add_data('storage', $this->type);
70
+ $this->add_data('i18n', \WBCR\Factory_Templates_105\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_452'),
424
+ 'install' => __('Install', 'wbcr_factory_452'),
425
+ 'deactivate' => __('Deactivate', 'wbcr_factory_452'),
426
+ 'delete' => __('Delete', 'wbcr_factory_452'),
427
+ 'loading' => __('Please wait...', 'wbcr_factory_452'),
428
+ 'preparation' => __('Preparation...', 'wbcr_factory_452'),
429
+ 'read' => __('Read more', 'wbcr_factory_452')
430
  ];
431
  }
432
 
libs/factory/core/includes/entities/class-factory-paths.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_449\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\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_449\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\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_449_deprecated_hook()
57
  *
58
  */
59
- function wbcr_factory_449_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_449_deprecated_hook( $tag, $version, $replacement, $message );
67
 
68
  return apply_filters_ref_array( $tag, $args );
69
  }
@@ -89,7 +89,7 @@ function wbcr_factory_449_apply_filters_deprecated( $tag, $args, $version, $repl
89
  * @see _deprecated_hook()
90
  *
91
  */
92
- function wbcr_factory_449_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_449_do_action_deprecated( $tag, $args, $version, $replacem
98
  if ( ! has_action( $tag ) ) {
99
  return;
100
  }
101
- wbcr_factory_449_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_449_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_449_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_449_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_452_deprecated_hook()
57
  *
58
  */
59
+ function wbcr_factory_452_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_452_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_452_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_452_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_452_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_452_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_449\Premium\Interfaces;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\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_449\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory449_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_Factory449_Plugin
28
  */
29
  protected $plugin;
30
 
@@ -36,24 +36,24 @@ class Manager {
36
  /**
37
  * Manager constructor.
38
  *
39
- * @param Wbcr_Factory449_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
- public function __construct( Wbcr_Factory449_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
- * @param Wbcr_Factory449_Plugin $plugin
51
  * @param array $settings
52
  *
53
- * @return \WBCR\Factory_Freemius_137\Premium\Provider
54
  * @throws Exception
55
  */
56
- public static function instance( Wbcr_Factory449_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_137\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_449\Premium\Provider interface!" );
74
  }
75
 
76
  return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory452_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
24
  public static $providers;
25
 
26
  /**
27
+ * @var Wbcr_Factory452_Plugin
28
  */
29
  protected $plugin;
30
 
36
  /**
37
  * Manager constructor.
38
  *
39
+ * @param Wbcr_Factory452_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
+ public function __construct( Wbcr_Factory452_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
+ * @param Wbcr_Factory452_Plugin $plugin
51
  * @param array $settings
52
  *
53
+ * @return \WBCR\Factory_Freemius_139\Premium\Provider
54
  * @throws Exception
55
  */
56
+ public static function instance( Wbcr_Factory452_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_139\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_452\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_449\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory449_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_Factory449_Plugin
25
  */
26
  protected $plugin;
27
 
@@ -38,10 +38,10 @@ abstract class Provider {
38
  /**
39
  * Provider constructor.
40
  *
41
- * @param Wbcr_Factory449_Plugin $plugin
42
  * @param array $settings
43
  */
44
- public function __construct(Wbcr_Factory449_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_449\Premium\Interfaces\License
248
  */
249
  abstract public function get_license();
250
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory452_Plugin;
7
 
8
  // Exit if accessed directly
9
  if( !defined('ABSPATH') ) {
21
  abstract class Provider {
22
 
23
  /**
24
+ * @var Wbcr_Factory452_Plugin
25
  */
26
  protected $plugin;
27
 
38
  /**
39
  * Provider constructor.
40
  *
41
+ * @param Wbcr_Factory452_Plugin $plugin
42
  * @param array $settings
43
  */
44
+ public function __construct(Wbcr_Factory452_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_452\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_449\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
- use Wbcr_Factory449_Plugin;
9
- use Wbcr_FactoryPages448_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_Factory449_Plugin $plugin
49
  *
50
  * @throws Exception
51
  * @since 4.1.1
52
  *
53
  */
54
- public function __construct(Wbcr_Factory449_Plugin $plugin)
55
  {
56
  parent::__construct($plugin);
57
 
@@ -242,9 +242,9 @@ class Premium_Upgrader extends Upgrader {
242
  /**
243
  * Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
244
  *
245
- * @param Wbcr_FactoryPages448_ImpressiveThemplate $obj
246
  *
247
- * @param Wbcr_Factory449_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_449'),
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_449'),
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_449'), $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_449'), $activate_plugin_url, $cancel_license_url)
818
  ];
819
 
820
  if( isset($texts[$type]) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
+ use Wbcr_Factory452_Plugin;
9
+ use Wbcr_FactoryPages451_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_Factory452_Plugin $plugin
49
  *
50
  * @throws Exception
51
  * @since 4.1.1
52
  *
53
  */
54
+ public function __construct(Wbcr_Factory452_Plugin $plugin)
55
  {
56
  parent::__construct($plugin);
57
 
242
  /**
243
  * Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
244
  *
245
+ * @param Wbcr_FactoryPages451_ImpressiveThemplate $obj
246
  *
247
+ * @param Wbcr_Factory452_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_452'),
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_452'),
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_452'), $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_452'), $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_449\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
- use Wbcr_Factory449_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_137\Updates\Freemius_Repository',
32
- * 'freemius' => '\WBCR\Factory_449\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
@@ -42,7 +42,7 @@ class Upgrader {
42
  protected $type = 'default';
43
 
44
  /**
45
- * @var Wbcr_Factory449_Plugin
46
  */
47
  protected $plugin;
48
 
@@ -88,7 +88,7 @@ class Upgrader {
88
  /**
89
  * Manager constructor.
90
  *
91
- * @param Wbcr_Factory449_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_Factory449_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_449\Updates\Wordpress_Repository';
111
- self::$repositories['github'] = '\WBCR\Factory_449\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_449\Updates\Repository interface!");
302
  }
303
 
304
  return new self::$repositories[$repository_name]($this->plugin, $this->get_settings());
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
+ use Wbcr_Factory452_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_139\Updates\Freemius_Repository',
32
+ * 'freemius' => '\WBCR\Factory_452\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
42
  protected $type = 'default';
43
 
44
  /**
45
+ * @var Wbcr_Factory452_Plugin
46
  */
47
  protected $plugin;
48
 
88
  /**
89
  * Manager constructor.
90
  *
91
+ * @param Wbcr_Factory452_Plugin $plugin
92
  * @param $args
93
  * @param bool $is_premium
94
  *
96
  * @since 4.1.1
97
  *
98
  */
99
+ public function __construct(Wbcr_Factory452_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_452\Updates\Wordpress_Repository';
111
+ self::$repositories['github'] = '\WBCR\Factory_452\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_452\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_449\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory449_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_Factory449_Plugin $plugin
61
  * @param bool $is_premium
62
  * @since 4.4.1
63
  */
64
- public function __construct(Wbcr_Factory449_Plugin $plugin, array $settings = [])
65
  {
66
  $settings = wp_parse_args($settings, [
67
  'github_username' => '',
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory452_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
57
  /**
58
  * Wordpress constructor.
59
  *
60
+ * @param Wbcr_Factory452_Plugin $plugin
61
  * @param bool $is_premium
62
  * @since 4.4.1
63
  */
64
+ public function __construct(Wbcr_Factory452_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_449\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory449_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
@@ -23,17 +23,17 @@ abstract class Repository {
23
  protected $initialized = false;
24
 
25
  /**
26
- * @var Wbcr_Factory449_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
- * @param Wbcr_Factory449_Plugin $plugin
34
  * @param array $settings
35
  */
36
- abstract public function __construct(Wbcr_Factory449_Plugin $plugin, array $settings = []);
37
 
38
  /**
39
  * @return void
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory452_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
23
  protected $initialized = false;
24
 
25
  /**
26
+ * @var Wbcr_Factory452_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
+ * @param Wbcr_Factory452_Plugin $plugin
34
  * @param array $settings
35
  */
36
+ abstract public function __construct(Wbcr_Factory452_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_449\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory449_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_Factory449_Plugin $plugin
24
  * @param array $settings
25
  */
26
- public function __construct(Wbcr_Factory449_Plugin $plugin, array $settings = [])
27
  {
28
  $this->plugin = $plugin;
29
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_452\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory452_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
20
  /**
21
  * Wordpress constructor.
22
  *
23
+ * @param Wbcr_Factory452_Plugin $plugin
24
  * @param array $settings
25
  */
26
+ public function __construct(Wbcr_Factory452_Plugin $plugin, array $settings = [])
27
  {
28
  $this->plugin = $plugin;
29
  }
libs/factory/core/langs/{wbcr_factory_449-ru_RU.mo → wbcr_factory_452-ru_RU.mo} RENAMED
File without changes
libs/factory/core/langs/{wbcr_factory_449-ru_RU.po → wbcr_factory_452-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_446_LOADED') ) {
26
  return;
27
  }
28
 
29
- define('FACTORY_FORMS_446_LOADED', true);
30
 
31
- define('FACTORY_FORMS_446_VERSION', '4.4.6');
32
 
33
  // absolute path and URL to the files and resources of the module.
34
- define('FACTORY_FORMS_446_DIR', dirname(__FILE__));
35
- define('FACTORY_FORMS_446_URL', plugins_url(null, __FILE__));
36
 
37
  #comp merge
38
- require_once(FACTORY_FORMS_446_DIR . '/includes/providers/value-provider.interface.php');
39
- require_once(FACTORY_FORMS_446_DIR . '/includes/providers/meta-value-provider.class.php');
40
- require_once(FACTORY_FORMS_446_DIR . '/includes/providers/options-value-provider.class.php');
41
 
42
- require_once(FACTORY_FORMS_446_DIR . '/includes/form.class.php');
43
  #endcomp
44
 
45
- load_plugin_textdomain('wbcr_factory_forms_446', 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_446_register_controls' hook
53
  *
54
  */
55
- if( !function_exists('wbcr_factory_forms_446_register_default_controls') ) {
56
 
57
  /**
58
- * @param Wbcr_Factory449_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
- function wbcr_factory_forms_446_register_default_controls(Wbcr_Factory449_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_446_DIR . '/includes/html-builder.class.php');
70
- require_once(FACTORY_FORMS_446_DIR . '/includes/form-element.class.php');
71
- require_once(FACTORY_FORMS_446_DIR . '/includes/control.class.php');
72
- require_once(FACTORY_FORMS_446_DIR . '/includes/complex-control.class.php');
73
- require_once(FACTORY_FORMS_446_DIR . '/includes/holder.class.php');
74
- require_once(FACTORY_FORMS_446_DIR . '/includes/control-holder.class.php');
75
- require_once(FACTORY_FORMS_446_DIR . '/includes/custom-element.class.php');
76
- require_once(FACTORY_FORMS_446_DIR . '/includes/form-layout.class.php');
77
 
78
  // registration of controls
79
  $plugin->forms->registerControls([
80
  [
81
  'type' => 'checkbox',
82
- 'class' => 'Wbcr_FactoryForms446_CheckboxControl',
83
- 'include' => FACTORY_FORMS_446_DIR . '/controls/checkbox.php'
84
  ],
85
  [
86
  'type' => 'list',
87
- 'class' => 'Wbcr_FactoryForms446_ListControl',
88
- 'include' => FACTORY_FORMS_446_DIR . '/controls/list.php'
89
  ],
90
  [
91
  'type' => 'dropdown',
92
- 'class' => 'Wbcr_FactoryForms446_DropdownControl',
93
- 'include' => FACTORY_FORMS_446_DIR . '/controls/dropdown.php'
94
  ],
95
  [
96
  'type' => 'dropdown-and-colors',
97
- 'class' => 'Wbcr_FactoryForms446_DropdownAndColorsControl',
98
- 'include' => FACTORY_FORMS_446_DIR . '/controls/dropdown-and-colors.php'
99
  ],
100
  [
101
  'type' => 'hidden',
102
- 'class' => 'Wbcr_FactoryForms446_HiddenControl',
103
- 'include' => FACTORY_FORMS_446_DIR . '/controls/hidden.php'
104
  ],
105
  [
106
  'type' => 'hidden',
107
- 'class' => 'Wbcr_FactoryForms446_HiddenControl',
108
- 'include' => FACTORY_FORMS_446_DIR . '/controls/hidden.php'
109
  ],
110
  [
111
  'type' => 'radio',
112
- 'class' => 'Wbcr_FactoryForms446_RadioControl',
113
- 'include' => FACTORY_FORMS_446_DIR . '/controls/radio.php'
114
  ],
115
  [
116
  'type' => 'radio-colors',
117
- 'class' => 'Wbcr_FactoryForms446_RadioColorsControl',
118
- 'include' => FACTORY_FORMS_446_DIR . '/controls/radio-colors.php'
119
  ],
120
  [
121
  'type' => 'textarea',
122
- 'class' => 'Wbcr_FactoryForms446_TextareaControl',
123
- 'include' => FACTORY_FORMS_446_DIR . '/controls/textarea.php'
124
  ],
125
  [
126
  'type' => 'textbox',
127
- 'class' => 'Wbcr_FactoryForms446_TextboxControl',
128
- 'include' => FACTORY_FORMS_446_DIR . '/controls/textbox.php'
129
  ],
130
  [
131
  'type' => 'multiple-textbox',
132
- 'class' => 'Wbcr_FactoryForms446_MultipleTextboxControl',
133
- 'include' => FACTORY_FORMS_446_DIR . '/controls/multiple-textbox.php'
134
  ],
135
  [
136
  'type' => 'datetimepicker-range',
137
- 'class' => 'Wbcr_FactoryForms446_DatepickerRangeControl',
138
- 'include' => FACTORY_FORMS_446_DIR . '/controls/datepicker-range.php'
139
  ],
140
  [
141
  'type' => 'url',
142
- 'class' => 'Wbcr_FactoryForms446_UrlControl',
143
- 'include' => FACTORY_FORMS_446_DIR . '/controls/url.php'
144
  ],
145
  [
146
  'type' => 'wp-editor',
147
- 'class' => 'Wbcr_FactoryForms446_WpEditorControl',
148
- 'include' => FACTORY_FORMS_446_DIR . '/controls/wp-editor.php'
149
  ],
150
  [
151
  'type' => 'color',
152
- 'class' => 'Wbcr_FactoryForms446_ColorControl',
153
- 'include' => FACTORY_FORMS_446_DIR . '/controls/color.php'
154
  ],
155
  [
156
  'type' => 'color-and-opacity',
157
- 'class' => 'Wbcr_FactoryForms446_ColorAndOpacityControl',
158
- 'include' => FACTORY_FORMS_446_DIR . '/controls/color-and-opacity.php'
159
  ],
160
  [
161
  'type' => 'gradient',
162
- 'class' => 'Wbcr_FactoryForms446_GradientControl',
163
- 'include' => FACTORY_FORMS_446_DIR . '/controls/gradient.php'
164
  ],
165
  [
166
  'type' => 'font',
167
- 'class' => 'Wbcr_FactoryForms446_FontControl',
168
- 'include' => FACTORY_FORMS_446_DIR . '/controls/font.php'
169
  ],
170
  [
171
  'type' => 'google-font',
172
- 'class' => 'Wbcr_FactoryForms446_GoogleFontControl',
173
- 'include' => FACTORY_FORMS_446_DIR . '/controls/google-font.php'
174
  ],
175
  [
176
  'type' => 'pattern',
177
- 'class' => 'Wbcr_FactoryForms446_PatternControl',
178
- 'include' => FACTORY_FORMS_446_DIR . '/controls/pattern.php'
179
  ],
180
  [
181
  'type' => 'integer',
182
- 'class' => 'Wbcr_FactoryForms446_IntegerControl',
183
- 'include' => FACTORY_FORMS_446_DIR . '/controls/integer.php'
184
  ],
185
  [
186
  'type' => 'control-group',
187
- 'class' => 'Wbcr_FactoryForms446_ControlGroupHolder',
188
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/control-group.php'
189
  ],
190
  [
191
  'type' => 'paddings-editor',
192
- 'class' => 'Wbcr_FactoryForms446_PaddingsEditorControl',
193
- 'include' => FACTORY_FORMS_446_DIR . '/controls/paddings-editor.php'
194
  ],
195
  ]);
196
 
@@ -198,53 +198,53 @@ if( !function_exists('wbcr_factory_forms_446_register_default_controls') ) {
198
  $plugin->forms->registerHolders([
199
  [
200
  'type' => 'tab',
201
- 'class' => 'Wbcr_FactoryForms446_TabHolder',
202
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/tab.php'
203
  ],
204
  [
205
  'type' => 'tab-item',
206
- 'class' => 'Wbcr_FactoryForms446_TabItemHolder',
207
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/tab-item.php'
208
  ],
209
  [
210
  'type' => 'accordion',
211
- 'class' => 'Wbcr_FactoryForms446_AccordionHolder',
212
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/accordion.php'
213
  ],
214
  [
215
  'type' => 'accordion-item',
216
- 'class' => 'Wbcr_FactoryForms446_AccordionItemHolder',
217
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/accordion-item.php'
218
  ],
219
  [
220
  'type' => 'control-group',
221
- 'class' => 'Wbcr_FactoryForms446_ControlGroupHolder',
222
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/control-group.php'
223
  ],
224
  [
225
  'type' => 'control-group-item',
226
- 'class' => 'Wbcr_FactoryForms446_ControlGroupItem',
227
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/control-group-item.php'
228
  ],
229
  [
230
  'type' => 'form-group',
231
- 'class' => 'Wbcr_FactoryForms446_FormGroupHolder',
232
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/form-group.php'
233
  ],
234
  [
235
  'type' => 'more-link',
236
- 'class' => 'Wbcr_FactoryForms446_MoreLinkHolder',
237
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/more-link.php'
238
  ],
239
  [
240
  'type' => 'div',
241
- 'class' => 'Wbcr_FactoryForms446_DivHolder',
242
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/div.php'
243
  ],
244
  [
245
  'type' => 'columns',
246
- 'class' => 'Wbcr_FactoryForms446_ColumnsHolder',
247
- 'include' => FACTORY_FORMS_446_DIR . '/controls/holders/columns.php'
248
  ]
249
  ]);
250
 
@@ -252,23 +252,23 @@ if( !function_exists('wbcr_factory_forms_446_register_default_controls') ) {
252
  $plugin->forms->registerCustomElements([
253
  [
254
  'type' => 'html',
255
- 'class' => 'Wbcr_FactoryForms446_Html',
256
- 'include' => FACTORY_FORMS_446_DIR . '/controls/customs/html.php',
257
  ],
258
  [
259
  'type' => 'separator',
260
- 'class' => 'Wbcr_FactoryForms446_Separator',
261
- 'include' => FACTORY_FORMS_446_DIR . '/controls/customs/separator.php',
262
  ],
263
  ]);
264
 
265
  // registration of form layouts
266
  $plugin->forms->registerFormLayout([
267
  'name' => 'bootstrap-3',
268
- 'class' => 'Wbcr_FactoryForms446_Bootstrap3FormLayout',
269
- 'include' => FACTORY_FORMS_446_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
270
  ]);
271
  }
272
 
273
- add_action('wbcr_factory_forms_446_register_controls', 'wbcr_factory_forms_446_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_449_LOADED') ) {
26
  return;
27
  }
28
 
29
+ define('FACTORY_FORMS_449_LOADED', true);
30
 
31
+ define('FACTORY_FORMS_449_VERSION', '4.4.9');
32
 
33
  // absolute path and URL to the files and resources of the module.
34
+ define('FACTORY_FORMS_449_DIR', dirname(__FILE__));
35
+ define('FACTORY_FORMS_449_URL', plugins_url(null, __FILE__));
36
 
37
  #comp merge
38
+ require_once(FACTORY_FORMS_449_DIR . '/includes/providers/value-provider.interface.php');
39
+ require_once(FACTORY_FORMS_449_DIR . '/includes/providers/meta-value-provider.class.php');
40
+ require_once(FACTORY_FORMS_449_DIR . '/includes/providers/options-value-provider.class.php');
41
 
42
+ require_once(FACTORY_FORMS_449_DIR . '/includes/form.class.php');
43
  #endcomp
44
 
45
+ load_plugin_textdomain('wbcr_factory_forms_449', 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_449_register_controls' hook
53
  *
54
  */
55
+ if( !function_exists('wbcr_factory_forms_449_register_default_controls') ) {
56
 
57
  /**
58
+ * @param Wbcr_Factory452_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
+ function wbcr_factory_forms_449_register_default_controls(Wbcr_Factory452_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_449_DIR . '/includes/html-builder.class.php');
70
+ require_once(FACTORY_FORMS_449_DIR . '/includes/form-element.class.php');
71
+ require_once(FACTORY_FORMS_449_DIR . '/includes/control.class.php');
72
+ require_once(FACTORY_FORMS_449_DIR . '/includes/complex-control.class.php');
73
+ require_once(FACTORY_FORMS_449_DIR . '/includes/holder.class.php');
74
+ require_once(FACTORY_FORMS_449_DIR . '/includes/control-holder.class.php');
75
+ require_once(FACTORY_FORMS_449_DIR . '/includes/custom-element.class.php');
76
+ require_once(FACTORY_FORMS_449_DIR . '/includes/form-layout.class.php');
77
 
78
  // registration of controls
79
  $plugin->forms->registerControls([
80
  [
81
  'type' => 'checkbox',
82
+ 'class' => 'Wbcr_FactoryForms449_CheckboxControl',
83
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/checkbox.php'
84
  ],
85
  [
86
  'type' => 'list',
87
+ 'class' => 'Wbcr_FactoryForms449_ListControl',
88
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/list.php'
89
  ],
90
  [
91
  'type' => 'dropdown',
92
+ 'class' => 'Wbcr_FactoryForms449_DropdownControl',
93
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/dropdown.php'
94
  ],
95
  [
96
  'type' => 'dropdown-and-colors',
97
+ 'class' => 'Wbcr_FactoryForms449_DropdownAndColorsControl',
98
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/dropdown-and-colors.php'
99
  ],
100
  [
101
  'type' => 'hidden',
102
+ 'class' => 'Wbcr_FactoryForms449_HiddenControl',
103
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/hidden.php'
104
  ],
105
  [
106
  'type' => 'hidden',
107
+ 'class' => 'Wbcr_FactoryForms449_HiddenControl',
108
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/hidden.php'
109
  ],
110
  [
111
  'type' => 'radio',
112
+ 'class' => 'Wbcr_FactoryForms449_RadioControl',
113
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/radio.php'
114
  ],
115
  [
116
  'type' => 'radio-colors',
117
+ 'class' => 'Wbcr_FactoryForms449_RadioColorsControl',
118
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/radio-colors.php'
119
  ],
120
  [
121
  'type' => 'textarea',
122
+ 'class' => 'Wbcr_FactoryForms449_TextareaControl',
123
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/textarea.php'
124
  ],
125
  [
126
  'type' => 'textbox',
127
+ 'class' => 'Wbcr_FactoryForms449_TextboxControl',
128
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/textbox.php'
129
  ],
130
  [
131
  'type' => 'multiple-textbox',
132
+ 'class' => 'Wbcr_FactoryForms449_MultipleTextboxControl',
133
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/multiple-textbox.php'
134
  ],
135
  [
136
  'type' => 'datetimepicker-range',
137
+ 'class' => 'Wbcr_FactoryForms449_DatepickerRangeControl',
138
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/datepicker-range.php'
139
  ],
140
  [
141
  'type' => 'url',
142
+ 'class' => 'Wbcr_FactoryForms449_UrlControl',
143
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/url.php'
144
  ],
145
  [
146
  'type' => 'wp-editor',
147
+ 'class' => 'Wbcr_FactoryForms449_WpEditorControl',
148
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/wp-editor.php'
149
  ],
150
  [
151
  'type' => 'color',
152
+ 'class' => 'Wbcr_FactoryForms449_ColorControl',
153
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/color.php'
154
  ],
155
  [
156
  'type' => 'color-and-opacity',
157
+ 'class' => 'Wbcr_FactoryForms449_ColorAndOpacityControl',
158
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/color-and-opacity.php'
159
  ],
160
  [
161
  'type' => 'gradient',
162
+ 'class' => 'Wbcr_FactoryForms449_GradientControl',
163
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/gradient.php'
164
  ],
165
  [
166
  'type' => 'font',
167
+ 'class' => 'Wbcr_FactoryForms449_FontControl',
168
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/font.php'
169
  ],
170
  [
171
  'type' => 'google-font',
172
+ 'class' => 'Wbcr_FactoryForms449_GoogleFontControl',
173
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/google-font.php'
174
  ],
175
  [
176
  'type' => 'pattern',
177
+ 'class' => 'Wbcr_FactoryForms449_PatternControl',
178
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/pattern.php'
179
  ],
180
  [
181
  'type' => 'integer',
182
+ 'class' => 'Wbcr_FactoryForms449_IntegerControl',
183
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/integer.php'
184
  ],
185
  [
186
  'type' => 'control-group',
187
+ 'class' => 'Wbcr_FactoryForms449_ControlGroupHolder',
188
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/control-group.php'
189
  ],
190
  [
191
  'type' => 'paddings-editor',
192
+ 'class' => 'Wbcr_FactoryForms449_PaddingsEditorControl',
193
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/paddings-editor.php'
194
  ],
195
  ]);
196
 
198
  $plugin->forms->registerHolders([
199
  [
200
  'type' => 'tab',
201
+ 'class' => 'Wbcr_FactoryForms449_TabHolder',
202
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/tab.php'
203
  ],
204
  [
205
  'type' => 'tab-item',
206
+ 'class' => 'Wbcr_FactoryForms449_TabItemHolder',
207
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/tab-item.php'
208
  ],
209
  [
210
  'type' => 'accordion',
211
+ 'class' => 'Wbcr_FactoryForms449_AccordionHolder',
212
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/accordion.php'
213
  ],
214
  [
215
  'type' => 'accordion-item',
216
+ 'class' => 'Wbcr_FactoryForms449_AccordionItemHolder',
217
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/accordion-item.php'
218
  ],
219
  [
220
  'type' => 'control-group',
221
+ 'class' => 'Wbcr_FactoryForms449_ControlGroupHolder',
222
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/control-group.php'
223
  ],
224
  [
225
  'type' => 'control-group-item',
226
+ 'class' => 'Wbcr_FactoryForms449_ControlGroupItem',
227
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/control-group-item.php'
228
  ],
229
  [
230
  'type' => 'form-group',
231
+ 'class' => 'Wbcr_FactoryForms449_FormGroupHolder',
232
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/form-group.php'
233
  ],
234
  [
235
  'type' => 'more-link',
236
+ 'class' => 'Wbcr_FactoryForms449_MoreLinkHolder',
237
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/more-link.php'
238
  ],
239
  [
240
  'type' => 'div',
241
+ 'class' => 'Wbcr_FactoryForms449_DivHolder',
242
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/div.php'
243
  ],
244
  [
245
  'type' => 'columns',
246
+ 'class' => 'Wbcr_FactoryForms449_ColumnsHolder',
247
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/holders/columns.php'
248
  ]
249
  ]);
250
 
252
  $plugin->forms->registerCustomElements([
253
  [
254
  'type' => 'html',
255
+ 'class' => 'Wbcr_FactoryForms449_Html',
256
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/customs/html.php',
257
  ],
258
  [
259
  'type' => 'separator',
260
+ 'class' => 'Wbcr_FactoryForms449_Separator',
261
+ 'include' => FACTORY_FORMS_449_DIR . '/controls/customs/separator.php',
262
  ],
263
  ]);
264
 
265
  // registration of form layouts
266
  $plugin->forms->registerFormLayout([
267
  'name' => 'bootstrap-3',
268
+ 'class' => 'Wbcr_FactoryForms449_Bootstrap3FormLayout',
269
+ 'include' => FACTORY_FORMS_449_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
270
  ]);
271
  }
272
 
273
+ add_action('wbcr_factory_forms_449_register_controls', 'wbcr_factory_forms_449_register_default_controls');
274
  }
libs/factory/forms/controls/checkbox.php CHANGED
@@ -20,9 +20,9 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms446_CheckboxControl') ) {
24
 
25
- class Wbcr_FactoryForms446_CheckboxControl extends Wbcr_FactoryForms446_Control {
26
 
27
  public $type = 'checkbox';
28
 
@@ -82,8 +82,8 @@
82
  if( void 0 === window.__factory_checkbox_control_events_off_data ) {
83
  window.__factory_checkbox_control_events_off_data = {};
84
  }
85
- window.__factory_checkbox_control_events_on_data['<?php echo $name_on_form ?>'] = <?= $events_on_string_data ?>;
86
- window.__factory_checkbox_control_events_off_data['<?php echo $name_on_form ?>'] = <?= $events_off_string_data ?>;
87
  </script>
88
  <?php
89
  }
@@ -130,11 +130,11 @@
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_446') ?></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_446') ?></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
  } ?>" />
140
  </div>
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms449_CheckboxControl') ) {
24
 
25
+ class Wbcr_FactoryForms449_CheckboxControl extends Wbcr_FactoryForms449_Control {
26
 
27
  public $type = 'checkbox';
28
 
82
  if( void 0 === window.__factory_checkbox_control_events_off_data ) {
83
  window.__factory_checkbox_control_events_off_data = {};
84
  }
85
+ window.__factory_checkbox_control_events_on_data['<?php echo $name_on_form ?>'] = <?php echo $events_on_string_data ?>;
86
+ window.__factory_checkbox_control_events_off_data['<?php echo $name_on_form ?>'] = <?php echo $events_off_string_data ?>;
87
  </script>
88
  <?php
89
  }
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_449') ?></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_449') ?></button>
137
+ <input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?php echo $value ?>" <?php if( $value ) {
138
  echo 'checked="checked"';
139
  } ?>" />
140
  </div>
libs/factory/forms/controls/color-and-opacity.php CHANGED
@@ -20,10 +20,10 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms446_ColorAndOpacityControl') ) {
24
  }
25
 
26
- class Wbcr_FactoryForms446_ColorAndOpacityControl extends Wbcr_FactoryForms446_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
@@ -57,8 +57,8 @@
57
  'way' => 'slider'
58
  ));
59
 
60
- $this->color = new Wbcr_FactoryForms446_ColorControl($options['color'], $form, $provider);
61
- $this->opacity = new Wbcr_FactoryForms446_IntegerControl($options['opacity'], $form, $provider);
62
 
63
  $this->innerControls = array($this->color, $this->opacity);
64
  }
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms449_ColorAndOpacityControl') ) {
24
  }
25
 
26
+ class Wbcr_FactoryForms449_ColorAndOpacityControl extends Wbcr_FactoryForms449_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
57
  'way' => 'slider'
58
  ));
59
 
60
+ $this->color = new Wbcr_FactoryForms449_ColorControl($options['color'], $form, $provider);
61
+ $this->opacity = new Wbcr_FactoryForms449_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_FactoryForms446_ColorControl') ) {
24
 
25
- class Wbcr_FactoryForms446_ColorControl extends Wbcr_FactoryForms446_Control {
26
 
27
  public $type = 'color';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms449_ColorControl') ) {
24
 
25
+ class Wbcr_FactoryForms449_ColorControl extends Wbcr_FactoryForms449_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_FactoryForms446_Html') ) {
18
 
19
- class Wbcr_FactoryForms446_Html extends Wbcr_FactoryForms446_CustomElement {
20
 
21
  public $type = 'html';
22
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_Html') ) {
18
 
19
+ class Wbcr_FactoryForms449_Html extends Wbcr_FactoryForms449_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_FactoryForms446_Separator') ) {
18
- class Wbcr_FactoryForms446_Separator extends Wbcr_FactoryForms446_CustomElement {
19
 
20
  public $type = 'separator';
21
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_Separator') ) {
18
+ class Wbcr_FactoryForms449_Separator extends Wbcr_FactoryForms449_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_FactoryForms446_DatepickerRangeControl') ) {
33
 
34
- class Wbcr_FactoryForms446_DatepickerRangeControl extends Wbcr_FactoryForms446_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_FactoryForms446_TextboxControl($options['range_1'], $form, $provider);
69
- $this->range_2 = new Wbcr_FactoryForms446_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_FactoryForms449_DatepickerRangeControl') ) {
33
 
34
+ class Wbcr_FactoryForms449_DatepickerRangeControl extends Wbcr_FactoryForms449_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_FactoryForms449_TextboxControl($options['range_1'], $form, $provider);
69
+ $this->range_2 = new Wbcr_FactoryForms449_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 FactoryForms446_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 FactoryForms446_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_FactoryForms446_DropdownAndColorsControl') ) {
41
 
42
- class Wbcr_FactoryForms446_DropdownAndColorsControl extends Wbcr_FactoryForms446_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_FactoryForms446_DropdownControl($options['dropdown'], $form, $provider);
73
- $this->colors = new Wbcr_FactoryForms446_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 FactoryForms449_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 FactoryForms449_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_FactoryForms449_DropdownAndColorsControl') ) {
41
 
42
+ class Wbcr_FactoryForms449_DropdownAndColorsControl extends Wbcr_FactoryForms449_ComplexControl {
43
 
44
  public $type = 'dropdown-and-colors';
45
 
69
  'name' => $this->options['name'] . '__colors',
70
  ));
71
 
72
+ $this->dropdown = new Wbcr_FactoryForms449_DropdownControl($options['dropdown'], $form, $provider);
73
+ $this->colors = new Wbcr_FactoryForms449_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_FactoryForms446_DropdownControl' ) ) {
25
 
26
- class Wbcr_FactoryForms446_DropdownControl extends Wbcr_FactoryForms446_Control {
27
 
28
  public $type = 'dropdown';
29
 
@@ -100,7 +100,7 @@
100
  if( void 0 === window.factory_dropdown_control_events_data ) {
101
  window.factory_dropdown_control_events_data = {};
102
  }
103
- window.factory_dropdown_control_events_data['<?php echo $name_on_form ?>'] = <?= $events_string_data ?>;
104
  </script>
105
  <?php
106
  }
@@ -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_446' ) ) ?>'
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_446' ) );
272
 
273
  ?>
274
  <select <?php $this->attrs() ?>>
@@ -323,7 +323,7 @@
323
  $styles = ( $is_visible ) ? 'style="display: none;"' : '';
324
 
325
  ?>
326
- <div style="display: none;" class="factory-hint factory-hint-<?= esc_attr( $name ) ?>"<?= $styles ?>><?php echo $hint ?></div>
327
  <?php
328
  }
329
  }
@@ -349,7 +349,7 @@
349
  }
350
 
351
  $value = isset( $item['value'] ) ? $item['value'] : '';
352
- $title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', 'wbcr_factory_forms_446' );
353
 
354
  $data = isset( $item['data'] ) ? $item['data'] : null;
355
  } else {
21
  exit;
22
  }
23
 
24
+ if ( ! class_exists( 'Wbcr_FactoryForms449_DropdownControl' ) ) {
25
 
26
+ class Wbcr_FactoryForms449_DropdownControl extends Wbcr_FactoryForms449_Control {
27
 
28
  public $type = 'dropdown';
29
 
100
  if( void 0 === window.factory_dropdown_control_events_data ) {
101
  window.factory_dropdown_control_events_data = {};
102
  }
103
+ window.factory_dropdown_control_events_data['<?php echo $name_on_form ?>'] = <?php echo $events_string_data ?>;
104
  </script>
105
  <?php
106
  }
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_449' ) ) ?>'
127
  };
128
  </script>
129
  <?php
268
  }
269
 
270
  $is_empty = $this->isAjax() || empty( $items );
271
+ $empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_449' ) );
272
 
273
  ?>
274
  <select <?php $this->attrs() ?>>
323
  $styles = ( $is_visible ) ? 'style="display: none;"' : '';
324
 
325
  ?>
326
+ <div style="display: none;" class="factory-hint factory-hint-<?php echo esc_attr( $name ) ?>"<?php echo $styles ?>><?php echo $hint ?></div>
327
  <?php
328
  }
329
  }
349
  }
350
 
351
  $value = isset( $item['value'] ) ? $item['value'] : '';
352
+ $title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', 'wbcr_factory_forms_449' );
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_FactoryForms446_FontControl') ) {
24
 
25
- class Wbcr_FactoryForms446_FontControl extends Wbcr_FactoryForms446_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_FactoryForms446_IntegerControl($option_font_size, $form, $provider);
58
- $this->family = new Wbcr_FactoryForms446_DropdownControl($option_font_family, $form, $provider);
59
- $this->color = new Wbcr_FactoryForms446_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_446_fonts', $fonts);
70
- $fonts = apply_filters('wbcr_factory_forms_446_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_446')),
81
  array(
82
  'group',
83
- __('Sans Serif:', 'wbcr_factory_forms_446'),
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_446'),
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_446'),
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_FactoryForms449_FontControl') ) {
24
 
25
+ class Wbcr_FactoryForms449_FontControl extends Wbcr_FactoryForms449_ComplexControl {
26
 
27
  public $type = 'font';
28
 
54
  'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
55
  );
56
 
57
+ $this->size = new Wbcr_FactoryForms449_IntegerControl($option_font_size, $form, $provider);
58
+ $this->family = new Wbcr_FactoryForms449_DropdownControl($option_font_family, $form, $provider);
59
+ $this->color = new Wbcr_FactoryForms449_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_449_fonts', $fonts);
70
+ $fonts = apply_filters('wbcr_factory_forms_449_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_449')),
81
  array(
82
  'group',
83
+ __('Sans Serif:', 'wbcr_factory_forms_449'),
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_449'),
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_449'),
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_FactoryForms446_GoogleFontControl extends Wbcr_FactoryForms446_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_FactoryForms446_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_446'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
- __('Standard:', 'wbcr_factory_forms_446'),
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_446'), 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_446');
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_446');
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_446');
137
 
138
  return $body;
139
  }
15
  * @package core
16
  * @since 1.0.0
17
  */
18
+ class Wbcr_FactoryForms449_GoogleFontControl extends Wbcr_FactoryForms449_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_FactoryForms449_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_449'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
+ __('Standard:', 'wbcr_factory_forms_449'),
58
  array(
59
 
60
  array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
65
  )
66
  );
67
 
68
+ $fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_449'), 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_449');
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_449');
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_449');
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_FactoryForms446_GradientControl') ) {
29
- class Wbcr_FactoryForms446_GradientControl extends Wbcr_FactoryForms446_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_446' ) ?>';
70
- factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_446' ) ?>';
71
  </script>
72
  <div <?php $this->attrs() ?>>
73
  <div class="factory-gradient-picker">
25
  exit;
26
  }
27
 
28
+ if( !class_exists('Wbcr_FactoryForms449_GradientControl') ) {
29
+ class Wbcr_FactoryForms449_GradientControl extends Wbcr_FactoryForms449_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_449' ) ?>';
70
+ factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_449' ) ?>';
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_FactoryForms446_HiddenControl') ) {
24
 
25
- class Wbcr_FactoryForms446_HiddenControl extends Wbcr_FactoryForms446_Control {
26
 
27
  public $type = 'hidden';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms449_HiddenControl') ) {
24
 
25
+ class Wbcr_FactoryForms449_HiddenControl extends Wbcr_FactoryForms449_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_FactoryForms446_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms446_AccordionItemHolder extends Wbcr_FactoryForms446_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms449_AccordionItemHolder extends Wbcr_FactoryForms449_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_FactoryForms446_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms446_AccordionHolder extends Wbcr_FactoryForms446_Holder {
23
 
24
  /**
25
  * A holder type.
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms449_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms449_AccordionHolder extends Wbcr_FactoryForms449_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_FactoryForms446_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms446_ColumnsHolder extends Wbcr_FactoryForms446_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms449_ColumnsHolder extends Wbcr_FactoryForms449_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_FactoryForms446_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms446_ControlGroupItem extends Wbcr_FactoryForms446_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms449_ControlGroupItem extends Wbcr_FactoryForms449_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_FactoryForms446_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms446_ControlGroupHolder extends Wbcr_FactoryForms446_ControlHolder {
25
 
26
  /**
27
  * A holder type.
@@ -61,7 +61,7 @@
61
  continue;
62
  }
63
 
64
- $builder = new Wbcr_FactoryForms446_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_FactoryForms449_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms449_ControlGroupHolder extends Wbcr_FactoryForms449_ControlHolder {
25
 
26
  /**
27
  * A holder type.
61
  continue;
62
  }
63
 
64
+ $builder = new Wbcr_FactoryForms449_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_FactoryForms446_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms446_DivHolder extends Wbcr_FactoryForms446_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms449_DivHolder extends Wbcr_FactoryForms449_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_FactoryForms446_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms446_FormGroupHolder extends Wbcr_FactoryForms446_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms449_FormGroupHolder extends Wbcr_FactoryForms449_Holder {
24
 
25
  /**
26
  * A holder type.
libs/factory/forms/controls/holders/more-link.php CHANGED
@@ -14,14 +14,14 @@ if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
 
17
- if( !class_exists('Wbcr_FactoryForms446_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms446_MoreLinkHolder extends Wbcr_FactoryForms446_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms449_MoreLinkHolder extends Wbcr_FactoryForms449_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_FactoryForms446_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms446_TabItemHolder extends Wbcr_FactoryForms446_Holder {
23
 
24
  /**
25
  * A holder type.
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms449_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms449_TabItemHolder extends Wbcr_FactoryForms449_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_FactoryForms446_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms446_TabHolder extends Wbcr_FactoryForms446_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 FactoryForms446_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_FactoryForms446_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_FactoryForms449_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms449_TabHolder extends Wbcr_FactoryForms449_Holder {
25
 
26
  /**
27
  * A holder type.
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param FactoryForms449_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_FactoryForms449_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_FactoryForms446_IntegerControl') ) {
36
 
37
- class Wbcr_FactoryForms446_IntegerControl extends Wbcr_FactoryForms446_Control {
38
 
39
  public $type = 'integer';
40
 
32
  exit;
33
  }
34
 
35
+ if( !class_exists('Wbcr_FactoryForms449_IntegerControl') ) {
36
 
37
+ class Wbcr_FactoryForms449_IntegerControl extends Wbcr_FactoryForms449_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_FactoryForms446_ListControl') ) {
25
 
26
- class Wbcr_FactoryForms446_ListControl extends Wbcr_FactoryForms446_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_446') ) ?>'
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_446'));
140
 
141
  if( $is_empty ) {
142
  $this->addCssClass('factory-empty');
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms449_ListControl') ) {
25
 
26
+ class Wbcr_FactoryForms449_ListControl extends Wbcr_FactoryForms449_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_449') ) ?>'
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_449'));
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_FactoryForms446_MultipleTextboxControl') ) {
19
 
20
- class Wbcr_FactoryForms446_MultipleTextboxControl extends Wbcr_FactoryForms446_Control {
21
 
22
  public $type = 'multiple-textbox';
23
 
@@ -75,7 +75,7 @@
75
  <?php $counter = 0; ?>
76
  <?php foreach($values as $value): ?>
77
  <div class="factory-mtextbox-item">
78
- <input value="<?= esc_attr($value) ?>"<?php $this->attrs() ?>/>
79
  <?php if( $counter >= 1 ): ?>
80
  <button class="btn btn-default btn-small factory-mtextbox-remove-item">
81
  <i class="fa fa-times" aria-hidden="true"></i></button>
@@ -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_446') ?>
90
  </button>
91
  </div>
92
 
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms449_MultipleTextboxControl') ) {
19
 
20
+ class Wbcr_FactoryForms449_MultipleTextboxControl extends Wbcr_FactoryForms449_Control {
21
 
22
  public $type = 'multiple-textbox';
23
 
75
  <?php $counter = 0; ?>
76
  <?php foreach($values as $value): ?>
77
  <div class="factory-mtextbox-item">
78
+ <input value="<?php echo esc_attr($value) ?>"<?php $this->attrs() ?>/>
79
  <?php if( $counter >= 1 ): ?>
80
  <button class="btn btn-default btn-small factory-mtextbox-remove-item">
81
  <i class="fa fa-times" aria-hidden="true"></i></button>
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_449') ?>
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_FactoryForms446_PaddingsEditorControl') ) {
18
 
19
- class Wbcr_FactoryForms446_PaddingsEditorControl extends Wbcr_FactoryForms446_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_446') ?>
71
  </label>
72
 
73
  <div class="factory-slider">
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_PaddingsEditorControl') ) {
18
 
19
+ class Wbcr_FactoryForms449_PaddingsEditorControl extends Wbcr_FactoryForms449_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_449') ?>
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_FactoryForms446_PatternControl') ) {
19
 
20
- class Wbcr_FactoryForms446_PatternControl extends Wbcr_FactoryForms446_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_446_patterns', array());
56
- $this->patterns = apply_filters('wbcr_factory_forms_446_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
- $this->color = new Wbcr_FactoryForms446_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_446') ?>">
106
  <i class="fa fa-flask"></i>
107
- <span><?php _e('re-color', 'wbcr_factory_forms_446') ?></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_446') ?></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_446') ?></i>
118
  </div>
119
  </div>
120
  <div class="factory-picker-target"></div>
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms449_PatternControl') ) {
19
 
20
+ class Wbcr_FactoryForms449_PatternControl extends Wbcr_FactoryForms449_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_449_patterns', array());
56
+ $this->patterns = apply_filters('wbcr_factory_forms_449_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
+ $this->color = new Wbcr_FactoryForms449_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_449') ?>">
106
  <i class="fa fa-flask"></i>
107
+ <span><?php _e('re-color', 'wbcr_factory_forms_449') ?></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_449') ?></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_449') ?></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_FactoryForms446_RadioColorsControl') ) {
31
 
32
- class Wbcr_FactoryForms446_RadioColorsControl extends Wbcr_FactoryForms446_Control {
33
 
34
  public $type = 'radio-color';
35
 
@@ -102,7 +102,7 @@
102
  <span class="factory-form-radio-item">
103
  <lable class="factory-from-radio-label">
104
  <input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
105
- <span style="background-color:<?= esc_attr($item[1]) ?>"></span>
106
  </lable>
107
  </span>
108
  <?php }
27
  exit;
28
  }
29
 
30
+ if( !class_exists('Wbcr_FactoryForms449_RadioColorsControl') ) {
31
 
32
+ class Wbcr_FactoryForms449_RadioColorsControl extends Wbcr_FactoryForms449_Control {
33
 
34
  public $type = 'radio-color';
35
 
102
  <span class="factory-form-radio-item">
103
  <lable class="factory-from-radio-label">
104
  <input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
105
+ <span style="background-color:<?php echo esc_attr($item[1]) ?>"></span>
106
  </lable>
107
  </span>
108
  <?php }
libs/factory/forms/controls/radio.php CHANGED
@@ -21,9 +21,9 @@
21
  exit;
22
  }
23
 
24
- if( !class_exists('Wbcr_FactoryForms446_RadioControl') ) {
25
 
26
- class Wbcr_FactoryForms446_RadioControl extends Wbcr_FactoryForms446_Control {
27
 
28
  public $type = 'radio';
29
 
@@ -76,7 +76,7 @@
76
  : '';
77
  ?>
78
  <span class="factory-form-radio-item">
79
- <lable class="factory-from-radio-label"><?= esc_html($item[1]); ?></lable>
80
  <input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
81
  </span>
82
  <?php }
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms449_RadioControl') ) {
25
 
26
+ class Wbcr_FactoryForms449_RadioControl extends Wbcr_FactoryForms449_Control {
27
 
28
  public $type = 'radio';
29
 
76
  : '';
77
  ?>
78
  <span class="factory-form-radio-item">
79
+ <lable class="factory-from-radio-label"><?php echo esc_html($item[1]); ?></lable>
80
  <input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
81
  </span>
82
  <?php }
libs/factory/forms/controls/textarea.php CHANGED
@@ -20,9 +20,9 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms446_TextareaControl') ) {
24
 
25
- class Wbcr_FactoryForms446_TextareaControl extends Wbcr_FactoryForms446_Control {
26
 
27
  public $type = 'textarea';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms449_TextareaControl') ) {
24
 
25
+ class Wbcr_FactoryForms449_TextareaControl extends Wbcr_FactoryForms449_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_FactoryForms446_TextboxControl') ) {
33
 
34
- class Wbcr_FactoryForms446_TextboxControl extends Wbcr_FactoryForms446_Control {
35
 
36
  public $type = 'textbox';
37
 
29
  exit;
30
  }
31
 
32
+ if( !class_exists('Wbcr_FactoryForms449_TextboxControl') ) {
33
 
34
+ class Wbcr_FactoryForms449_TextboxControl extends Wbcr_FactoryForms449_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 FactoryForms446_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_FactoryForms446_UrlControl') ) {
22
 
23
- class Wbcr_FactoryForms446_UrlControl extends Wbcr_FactoryForms446_TextboxControl {
24
 
25
  public $type = 'url';
26
 
4
  * Url Control
5
  *
6
  * Main options:
7
+ * @see FactoryForms449_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_FactoryForms449_UrlControl') ) {
22
 
23
+ class Wbcr_FactoryForms449_UrlControl extends Wbcr_FactoryForms449_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_FactoryForms446_WpEditorControl') ) {
26
 
27
- class Wbcr_FactoryForms446_WpEditorControl extends Wbcr_FactoryForms446_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_446_URL . '/assets/css/editor.css';
46
  }
47
  }
48
 
22
  exit;
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms449_WpEditorControl') ) {
26
 
27
+ class Wbcr_FactoryForms449_WpEditorControl extends Wbcr_FactoryForms449_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_449_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_FactoryForms446_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
- abstract class Wbcr_FactoryForms446_ComplexControl extends Wbcr_FactoryForms446_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_FactoryForms446_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_IFactoryForms446_ValueProvider $provider
45
  * @return void
46
  */
47
  public function setProvider($provider)
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms449_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_FactoryForms449_ComplexControl extends Wbcr_FactoryForms449_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_FactoryForms449_Control[]
37
  */
38
  public $inner_controls = array();
39
 
41
  * Sets a provider for the control.
42
  *
43
  * @since 1.0.0
44
+ * @param Wbcr_IFactoryForms449_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_FactoryForms446_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms446_ControlHolder extends Wbcr_FactoryForms446_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
- * @var Wbcr_FactoryForms446_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_FactoryForms446_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_FactoryForms446_FormElement[].
64
  */
65
  public function getElements()
66
  {
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms449_ControlHolder extends Wbcr_FactoryForms449_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
+ * @var Wbcr_FactoryForms449_Control[]
30
  */
31
  protected $elements = array();
32
 
43
  *
44
  * @since 1.0.0
45
  * @param mixed[] $options A holder options.
46
+ * @param Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms446_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms446_Control extends Wbcr_FactoryForms446_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_IFactoryForms446_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 FactoryForms446_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 IFactoryForms446_ValueProvider $provider
70
  * @return void
71
  */
72
  public function setProvider($provider)
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms449_Control extends Wbcr_FactoryForms449_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_IFactoryForms449_ValueProvider
47
  */
48
  protected $provider = null;
49
 
51
  * Create a new instance of the control.
52
  *
53
  * @param mixed[] $options
54
+ * @param FactoryForms449_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 IFactoryForms449_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_FactoryForms446_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms446_CustomElement extends Wbcr_FactoryForms446_FormElement {
24
 
25
  /**
26
  * Is this element a custom form element?
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms449_CustomElement extends Wbcr_FactoryForms449_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
@@ -53,7 +53,7 @@
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
- * @var Wbcr_FactoryForms446_Form
57
  */
58
  protected $form;
59
 
@@ -61,7 +61,7 @@
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
- * @var Wbcr_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms449_FormElement') ) {
18
 
19
  /**
20
  * The base class for all form element (controls, holders).
23
  *
24
  * @since 1.0.0
25
  */
26
+ abstract class Wbcr_FactoryForms449_FormElement {
27
 
28
  /**
29
  * A type of an elemnt.
37
  * An html attribute builder.
38
  *
39
  * @since 1.0.0
40
+ * @var Wbcr_FactoryForms449_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
+ * @var Wbcr_FactoryForms449_Form
57
  */
58
  protected $form;
59
 
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
+ * @var Wbcr_FactoryForms449_FormLayout
65
  */
66
  protected $layout;
67
 
94
  *
95
  * @since 1.0.0
96
  * @param mixed[] $options A holder options.
97
+ * @param Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms446_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
- abstract class Wbcr_FactoryForms446_FormLayout extends Wbcr_FactoryForms446_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_FactoryForms446_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-446-' . $this->type);
56
- $this->addCssClass('factory-forms-446-' . $this->name);
57
  }
58
 
59
  /**
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
+ abstract class Wbcr_FactoryForms449_FormLayout extends Wbcr_FactoryForms449_Holder {
23
 
24
  /**
25
  * A form layout name.
42
  *
43
  * @since 1.0.0
44
  * @param mixed[] $options A holder options.
45
+ * @param Wbcr_FactoryForms449_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-449-' . $this->type);
56
+ $this->addCssClass('factory-forms-449-' . $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_446_plugin_created', 'wbcr_factory_forms_446_plugin_created');
19
 
20
- function wbcr_factory_forms_446_plugin_created($plugin)
21
  {
22
- $plugin->forms = new Wbcr_FactoryForms446_Manager($plugin);
23
  }
24
 
25
- if( !class_exists('Wbcr_FactoryForms446_Manager') ) {
26
 
27
- class Wbcr_FactoryForms446_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
@@ -57,7 +57,7 @@
57
  /**
58
  * Registers a set of new controls.
59
  *
60
- * @see FactoryForms446_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 FactoryForms446_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 FactoryForms446_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_FactoryForms446_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
- class Wbcr_FactoryForms446_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_IFactoryForms446_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_FactoryForms446_FormLayout
249
  */
250
  public $layout;
251
 
@@ -261,20 +261,20 @@
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
- * @param Wbcr_Factory449_Plugin $plugin
265
  */
266
- public function __construct(array $options, Wbcr_Factory449_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
- if( !Wbcr_FactoryForms446_Manager::$controls_registered ) {
270
 
271
- do_action('wbcr_factory_forms_446_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
- do_action('wbcr_factory_forms_446_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
- Wbcr_FactoryForms446_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_FactoryForms446_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
- * @param Wbcr_IFactoryForms446_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_449_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
- * @return Wbcr_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_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_FactoryForms446_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
- $haystack = Wbcr_FactoryForms446_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_FactoryForms446_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
@@ -672,7 +672,7 @@
672
  */
673
  public static function isControlHolder($item)
674
  {
675
- return isset(Wbcr_FactoryForms446_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
@@ -684,7 +684,7 @@
684
  */
685
  public static function isCustomElement($item)
686
  {
687
- return isset(Wbcr_FactoryForms446_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_449_plugin_created', 'wbcr_factory_forms_449_plugin_created');
19
 
20
+ function wbcr_factory_forms_449_plugin_created($plugin)
21
  {
22
+ $plugin->forms = new Wbcr_FactoryForms449_Manager($plugin);
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms449_Manager') ) {
26
 
27
+ class Wbcr_FactoryForms449_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
57
  /**
58
  * Registers a set of new controls.
59
  *
60
+ * @see FactoryForms449_Form::registerControl()
61
  *
62
  * @since 1.0.0
63
  * @return void
95
  /**
96
  * Registers a set of new holder controls.
97
  *
98
+ * @see FactoryForms449_Form::registerHolder()
99
  *
100
  * @since 1.0.0
101
  * @return void
129
  /**
130
  * Registers a set of new custom form elements.
131
  *
132
+ * @see FactoryForms449_Form::registerCustomElement()
133
  *
134
  * @since 1.0.0
135
  * @return void
180
  public static $controls_registered = false;
181
  }
182
  }
183
+ if( !class_exists('Wbcr_FactoryForms449_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
+ class Wbcr_FactoryForms449_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_IFactoryForms449_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_FactoryForms449_FormLayout
249
  */
250
  public $layout;
251
 
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
+ * @param Wbcr_Factory452_Plugin $plugin
265
  */
266
+ public function __construct(array $options, Wbcr_Factory452_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
+ if( !Wbcr_FactoryForms449_Manager::$controls_registered ) {
270
 
271
+ do_action('wbcr_factory_forms_449_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
+ do_action('wbcr_factory_forms_449_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
+ Wbcr_FactoryForms449_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_FactoryForms449_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
+ * @param Wbcr_IFactoryForms449_ValueProvider $provider
300
  * @return void
301
  */
302
  public function setProvider($provider)
332
  */
333
  public function getItems()
334
  {
335
+ return apply_filters('wbcr_factory_452_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
+ * @return Wbcr_FactoryForms449_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_FactoryForms449_Control[]
359
  */
360
 
361
  public function createControls($holder = null)
395
  *
396
  * @since 1.0.0
397
  * @param array $item Item data.
398
+ * @return Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms449_Control A control object.
437
  */
438
  public function createControl($item)
439
  {
441
 
442
  if( is_array($item) ) {
443
 
444
+ $control_data = Wbcr_FactoryForms449_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_FactoryForms449_Holder A control holder object.
469
  */
470
  public function createHolder($item)
471
  {
473
 
474
  if( is_array($item) ) {
475
 
476
+ $holderData = Wbcr_FactoryForms449_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_FactoryForms449_FormElement A custom form element object.
495
  */
496
  public function createCustomElement($item)
497
  {
499
 
500
  if( is_array($item) ) {
501
 
502
+ $data = Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms449_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_FactoryForms449_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_FactoryForms449_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
+ $haystack = Wbcr_FactoryForms449_Manager::$registered_holders;
608
  }
609
 
610
  if( isset($haystack[$type]) ) {
660
  */
661
  public static function isControl($item)
662
  {
663
+ return isset(Wbcr_FactoryForms449_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
672
  */
673
  public static function isControlHolder($item)
674
  {
675
+ return isset(Wbcr_FactoryForms449_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
684
  */
685
  public static function isCustomElement($item)
686
  {
687
+ return isset(Wbcr_FactoryForms449_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_FactoryForms446_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms446_Holder extends Wbcr_FactoryForms446_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
- * @var Wbcr_FactoryForms446_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_FactoryForms446_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_FactoryForms446_Control[].
60
  */
61
  public function getElements()
62
  {
@@ -84,7 +84,7 @@
84
  $is_first_item = false;
85
  }
86
 
87
- do_action('wbcr_factory_449_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_FactoryForms449_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms449_Holder extends Wbcr_FactoryForms449_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
+ * @var Wbcr_FactoryForms449_Control[]
31
  */
32
  protected $elements = array();
33
 
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param Wbcr_FactoryForms449_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_FactoryForms449_Control[].
60
  */
61
  public function getElements()
62
  {
84
  $is_first_item = false;
85
  }
86
 
87
+ do_action('wbcr_factory_452_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_FactoryForms446_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms446_HtmlAttributeBuilder {
24
 
25
  /**
26
  * An array to store css classes.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms449_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_FactoryForms446_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
@@ -24,7 +24,7 @@
24
  *
25
  * @since 1.0.0
26
  */
27
- class Wbcr_FactoryForms446_MetaValueProvider implements Wbcr_IFactoryForms446_ValueProvider {
28
 
29
 
30
  public $scope;
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
24
  *
25
  * @since 1.0.0
26
  */
27
+ class Wbcr_FactoryForms449_MetaValueProvider implements Wbcr_IFactoryForms449_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_FactoryForms446_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
@@ -22,7 +22,7 @@
22
  *
23
  * @since 1.0.0
24
  */
25
- class Wbcr_FactoryForms446_OptionsValueProvider implements Wbcr_IFactoryForms446_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_Factory449_Plugin $plugin)
47
  {
48
  $this->plugin = $plugin;
49
  }
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms449_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
22
  *
23
  * @since 1.0.0
24
  */
25
+ class Wbcr_FactoryForms449_OptionsValueProvider implements Wbcr_IFactoryForms449_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_Factory452_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_IFactoryForms446_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
- interface Wbcr_IFactoryForms446_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_IFactoryForms449_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
+ interface Wbcr_IFactoryForms449_ValueProvider {
24
 
25
  /**
26
  * Inits a form a provider to get data from a storage.
libs/factory/forms/langs/{wbcr_factory_forms_446-ru_RU.mo → wbcr_factory_forms_449-ru_RU.mo} RENAMED
File without changes
libs/factory/forms/langs/{wbcr_factory_forms_446-ru_RU.po → wbcr_factory_forms_449-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_FactoryForms446_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
- class Wbcr_FactoryForms446_Bootstrap3FormLayout extends Wbcr_FactoryForms446_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_FactoryForms446_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
@@ -68,7 +68,7 @@
68
  }
69
 
70
  /**
71
- * @param Wbcr_FactoryForms446_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
@@ -90,7 +90,7 @@
90
  $col_right = $control->getLayoutOption('column-right', '10');
91
  ?>
92
  <div class="form-group form-group-<?php echo $control->getType() ?> <?php echo $theme_class ?> <?php echo $control_name_class ?>">
93
- <label for="<?php $control->printNameOnForm() ?>" class="col-sm-<?= $col_left ?> control-label">
94
  <?php if( $control->hasIcon() ) { ?>
95
  <img class="control-icon" src="<?php $control->icon() ?>"/>
96
  <?php } ?>
@@ -101,7 +101,7 @@
101
  if( $control->hasHint() ) {
102
  if( $hint_type == 'icon' ): ?>
103
  <?php $hint_icon_color = $control->getLayoutOption('hint-icon-color', 'green'); ?>
104
- <span class="factory-hint-icon factory-hint-icon-<?= $hint_icon_color ?>" data-toggle="factory-tooltip" data-placement="right" title="<?php $control->hint(true) ?>">
105
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
106
 
107
  </span>
@@ -111,12 +111,12 @@
111
  <?php endif; ?>
112
  <?php } ?>
113
  </label>
114
- <div class="control-group col-sm-<?= $col_right ?>">
115
  <?php
116
  }
117
 
118
  /**
119
- * @param Wbcr_FactoryForms446_Control $control
120
  */
121
  public function afterControl($control)
122
  {
@@ -168,7 +168,7 @@
168
  }
169
 
170
  /**
171
- * @param Wbcr_FactoryForms446_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
@@ -193,7 +193,7 @@
193
  }
194
 
195
  /**
196
- * @param Wbcr_FactoryForms446_Control $control
197
  * @param int $index
198
  * @param int $total
199
  */
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms449_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
+ class Wbcr_FactoryForms449_Bootstrap3FormLayout extends Wbcr_FactoryForms449_FormLayout {
22
 
23
  public $name = 'default';
24
 
27
  *
28
  * @since 1.0.0
29
  * @param array $options A holder options.
30
+ * @param Wbcr_FactoryForms449_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
68
  }
69
 
70
  /**
71
+ * @param Wbcr_FactoryForms449_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
90
  $col_right = $control->getLayoutOption('column-right', '10');
91
  ?>
92
  <div class="form-group form-group-<?php echo $control->getType() ?> <?php echo $theme_class ?> <?php echo $control_name_class ?>">
93
+ <label for="<?php $control->printNameOnForm() ?>" class="col-sm-<?php echo $col_left ?> control-label">
94
  <?php if( $control->hasIcon() ) { ?>
95
  <img class="control-icon" src="<?php $control->icon() ?>"/>
96
  <?php } ?>
101
  if( $control->hasHint() ) {
102
  if( $hint_type == 'icon' ): ?>
103
  <?php $hint_icon_color = $control->getLayoutOption('hint-icon-color', 'green'); ?>
104
+ <span class="factory-hint-icon factory-hint-icon-<?php echo $hint_icon_color ?>" data-toggle="factory-tooltip" data-placement="right" title="<?php $control->hint(true) ?>">
105
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
106
 
107
  </span>
111
  <?php endif; ?>
112
  <?php } ?>
113
  </label>
114
+ <div class="control-group col-sm-<?php echo $col_right ?>">
115
  <?php
116
  }
117
 
118
  /**
119
+ * @param Wbcr_FactoryForms449_Control $control
120
  */
121
  public function afterControl($control)
122
  {
168
  }
169
 
170
  /**
171
+ * @param Wbcr_FactoryForms449_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
193
  }
194
 
195
  /**
196
+ * @param Wbcr_FactoryForms449_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_137_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_FREEMIUS_137_VERSION', '1.3.7');
22
 
23
- define('FACTORY_FREEMIUS_137_LOADED', true);
24
- define('FACTORY_FREEMIUS_137_DIR', dirname(__FILE__));
25
- define('FACTORY_FREEMIUS_137_URL', plugins_url(null, __FILE__));
26
 
27
  #comp merge
28
  // Freemius
29
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/entities/class-freemius-entity.php');
30
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/entities/class-freemius-scope.php');
31
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/entities/class-freemius-user.php');
32
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/entities/class-freemius-site.php');
33
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/entities/class-freemius-license.php');
34
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/licensing/class-freemius-provider.php');
35
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/updates/class-freemius-repository.php');
36
 
37
  if( !class_exists('Freemius_Api_WordPress') ) {
38
- require_once FACTORY_FREEMIUS_137_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
- require_once(FACTORY_FREEMIUS_137_DIR . '/includes/class-freemius-api.php');
42
 
43
  /**
44
- * @param Wbcr_Factory449_Plugin $plugin
45
  */
46
- add_action('wbcr_factory_freemius_137_plugin_created', function ($plugin) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
- $plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_137\Premium\Provider');
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
- $plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_137\Updates\Freemius_Repository');
51
  });
52
  #endcomp
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_FREEMIUS_139_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_FREEMIUS_139_VERSION', '1.3.9');
22
 
23
+ define('FACTORY_FREEMIUS_139_LOADED', true);
24
+ define('FACTORY_FREEMIUS_139_DIR', dirname(__FILE__));
25
+ define('FACTORY_FREEMIUS_139_URL', plugins_url(null, __FILE__));
26
 
27
  #comp merge
28
  // Freemius
29
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-entity.php');
30
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-scope.php');
31
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-user.php');
32
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-site.php');
33
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-license.php');
34
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/licensing/class-freemius-provider.php');
35
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/updates/class-freemius-repository.php');
36
 
37
  if( !class_exists('Freemius_Api_WordPress') ) {
38
+ require_once FACTORY_FREEMIUS_139_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
+ require_once(FACTORY_FREEMIUS_139_DIR . '/includes/class-freemius-api.php');
42
 
43
  /**
44
+ * @param Wbcr_Factory452_Plugin $plugin
45
  */
46
+ add_action('wbcr_factory_freemius_139_plugin_created', function ($plugin) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
+ $plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_139\Premium\Provider');
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
+ $plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_139\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_137;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
- use Wbcr_Factory449_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
@@ -33,7 +33,7 @@ final class Api {
33
  private $api;
34
 
35
  /**
36
- * @var Wbcr_Factory449_Plugin
37
  */
38
  private $plugin;
39
 
@@ -48,14 +48,14 @@ final class Api {
48
  private static $clock_diff;
49
 
50
  /**
51
- * @param Wbcr_Factory449_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_Factory449_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_Factory449_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_Factory449_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_139;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
+ use Wbcr_Factory452_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
33
  private $api;
34
 
35
  /**
36
+ * @var Wbcr_Factory452_Plugin
37
  */
38
  private $plugin;
39
 
48
  private static $clock_diff;
49
 
50
  /**
51
+ * @param Wbcr_Factory452_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_Factory452_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_Factory452_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_Factory452_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_137\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\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_137\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_449\Premium\Interfaces\License {
18
 
19
  /**
20
  * @var number
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\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_452\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_137\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\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_137\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\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_137\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\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_137\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\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_137\Premium;
4
-
5
- use WBCR\Factory_Freemius_137\Entities\License;
6
- use WBCR\Factory_Freemius_137\Entities\Plugin;
7
- use WBCR\Factory_Freemius_137\Entities\Site;
8
- use WBCR\Factory_Freemius_137\Entities\User;
9
- use WBCR\Factory_449\Premium\Provider as License_Provider;
10
- use Wbcr_Factory449_Plugin;
11
- use WBCR\Factory_Freemius_137\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_137\Api
44
  */
45
  private $site_api;
46
 
47
  /**
48
- * @var \WBCR\Factory_Freemius_137\Api
49
  */
50
  private $plugin_api;
51
 
52
  /**
53
- * @var \WBCR\Factory_Freemius_137\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_Factory449_Plugin $plugin
86
  *
87
  * @throws Exception
88
  */
89
- public function __construct(Wbcr_Factory449_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_137\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_137\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_137\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_137\Api
647
  * @throws Exception
648
  */
649
  private function get_api_plugin_scope()
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\Premium;
4
+
5
+ use WBCR\Factory_Freemius_139\Entities\License;
6
+ use WBCR\Factory_Freemius_139\Entities\Plugin;
7
+ use WBCR\Factory_Freemius_139\Entities\Site;
8
+ use WBCR\Factory_Freemius_139\Entities\User;
9
+ use WBCR\Factory_452\Premium\Provider as License_Provider;
10
+ use Wbcr_Factory452_Plugin;
11
+ use WBCR\Factory_Freemius_139\Api;
12
  use WP_Error;
13
  use Exception;
14
 
40
  private $slug;
41
 
42
  /**
43
+ * @var \WBCR\Factory_Freemius_139\Api
44
  */
45
  private $site_api;
46
 
47
  /**
48
+ * @var \WBCR\Factory_Freemius_139\Api
49
  */
50
  private $plugin_api;
51
 
52
  /**
53
+ * @var \WBCR\Factory_Freemius_139\Api
54
  */
55
  private $user_api;
56
 
82
  /**
83
  * Manager constructor.
84
  *
85
+ * @param Wbcr_Factory452_Plugin $plugin
86
  *
87
  * @throws Exception
88
  */
89
+ public function __construct(Wbcr_Factory452_Plugin $plugin, array $settings)
90
  {
91
  parent::__construct($plugin, $settings);
92
 
150
  }
151
 
152
  /**
153
+ * @return \WBCR\Factory_Freemius_139\Entities\License|null
154
  * @throws Exception
155
  */
156
  public function get_license()
613
  /**
614
  * @param bool $flush
615
  *
616
+ * @return \WBCR\Factory_Freemius_139\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_139\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_139\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_137\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
- use Wbcr_Factory449_Plugin;
8
- use WBCR\Factory_449\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_137\Premium\Provider
24
  */
25
  private $premium;
26
 
27
  /**
28
  * Freemius constructor.
29
- * @param Wbcr_Factory449_Plugin $plugin
30
  *
31
  * @throws Exception
32
  * @since 4.0.0
33
  *
34
  */
35
- public function __construct(Wbcr_Factory449_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_137\Premium\Provider ) {
47
  throw new Exception("This repository type requires Freemius premium provider.");
48
  }
49
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_139\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
+ use Wbcr_Factory452_Plugin;
8
+ use WBCR\Factory_452\Updates\Repository;
9
 
10
  if( !defined('ABSPATH') ) {
11
  exit;
20
  class Freemius_Repository extends Repository {
21
 
22
  /**
23
+ * @var \WBCR\Factory_Freemius_139\Premium\Provider
24
  */
25
  private $premium;
26
 
27
  /**
28
  * Freemius constructor.
29
+ * @param Wbcr_Factory452_Plugin $plugin
30
  *
31
  * @throws Exception
32
  * @since 4.0.0
33
  *
34
  */
35
+ public function __construct(Wbcr_Factory452_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_139\Premium\Provider ) {
47
  throw new Exception("This repository type requires Freemius premium provider.");
48
  }
49
 
libs/factory/logger/assets/js/logger.js CHANGED
@@ -1,4 +1,4 @@
1
- function wbcr_factory_logger_114_LogCleanup(element) {
2
  var btn = jQuery(element),
3
  currentBtnText = btn.html();
4
 
@@ -10,18 +10,18 @@ function wbcr_factory_logger_114_LogCleanup(element) {
10
  url: ajaxurl,
11
  method: 'post',
12
  data: {
13
- action: 'wbcr_factory_logger_114_logs_cleanup',
14
- nonce: wbcr_factory_logger_114.clean_logs_nonce
15
  },
16
  success: function (data) {
17
  btn.html(currentBtnText);
18
 
19
  jQuery('#wbcr-log-viewer').html('');
20
  jQuery('#wbcr-log-size').text('0B');
21
- jQuery.wbcr_factory_templates_101.app.showNotice(data.message, data.type);
22
  },
23
  error: function (jqXHR, textStatus, errorThrown) {
24
- jQuery.wbcr_factory_templates_101.app.showNotice('Error: ' + errorThrown + ', status: ' + textStatus, 'danger');
25
  btn.html(currentBtnText);
26
  }
27
  });
1
+ function wbcr_factory_logger_117_LogCleanup(element) {
2
  var btn = jQuery(element),
3
  currentBtnText = btn.html();
4
 
10
  url: ajaxurl,
11
  method: 'post',
12
  data: {
13
+ action: 'wbcr_factory_logger_117_logs_cleanup',
14
+ nonce: wbcr_factory_logger_117.clean_logs_nonce
15
  },
16
  success: function (data) {
17
  btn.html(currentBtnText);
18
 
19
  jQuery('#wbcr-log-viewer').html('');
20
  jQuery('#wbcr-log-size').text('0B');
21
+ jQuery.wbcr_factory_templates_105.app.showNotice(data.message, data.type);
22
  },
23
  error: function (jqXHR, textStatus, errorThrown) {
24
+ jQuery.wbcr_factory_templates_105.app.showNotice('Error: ' + errorThrown + ', status: ' + textStatus, 'danger');
25
  btn.html(currentBtnText);
26
  }
27
  });
libs/factory/logger/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Logger_114\Logger;
4
 
5
  /**
6
  * Factory Logger
@@ -19,31 +19,31 @@ if( !defined('ABSPATH') ) {
19
  exit;
20
  }
21
 
22
- if( defined('FACTORY_LOGGER_114_LOADED') || (defined('FACTORY_LOGGER_STOP') && FACTORY_LOGGER_STOP) ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_LOGGER_114_LOADED', true);
27
- define('FACTORY_LOGGER_114_VERSION', '1.1.4');
28
- define('FACTORY_LOGGER_114_DIR', dirname(__FILE__));
29
- define('FACTORY_LOGGER_114_URL', plugins_url(null, __FILE__));
30
 
31
- load_plugin_textdomain('wbcr_factory_logger_114', false, dirname(plugin_basename(__FILE__)) . '/langs');
32
 
33
- require_once(FACTORY_LOGGER_114_DIR . '/includes/class-logger.php');
34
 
35
  if( is_admin() ) {
36
- require_once(FACTORY_LOGGER_114_DIR . '/includes/class-log-export.php');
37
- require_once(FACTORY_LOGGER_114_DIR . '/pages/class-logger-impressive-page.php');
38
- require_once(FACTORY_LOGGER_114_DIR . '/pages/class-logger-impressive-lite.php');
39
- require_once(FACTORY_LOGGER_114_DIR . '/pages/class-logger-admin-page.php');
40
  }
41
 
42
  /**
43
- * @param Wbcr_Factory449_Plugin $plugin
44
  */
45
- add_action('wbcr_factory_logger_114_plugin_created', function ($plugin) {
46
- /* @var Wbcr_Factory449_Plugin $plugin */
47
 
48
  /* Settings of Logger
49
  $settings = [
@@ -54,7 +54,7 @@ add_action('wbcr_factory_logger_114_plugin_created', function ($plugin) {
54
  'rotate_limit' => 3,
55
  ];
56
 
57
- $plugin->set_logger( "WBCR\Factory_Logger_114\Logger", $settings );
58
  */
59
- $plugin->set_logger("WBCR\Factory_Logger_114\Logger");
60
  });
1
  <?php
2
 
3
+ use WBCR\Factory_Logger_117\Logger;
4
 
5
  /**
6
  * Factory Logger
19
  exit;
20
  }
21
 
22
+ if( defined('FACTORY_LOGGER_117_LOADED') || (defined('FACTORY_LOGGER_STOP') && FACTORY_LOGGER_STOP) ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_LOGGER_117_LOADED', true);
27
+ define('FACTORY_LOGGER_117_VERSION', '1.1.7');
28
+ define('FACTORY_LOGGER_117_DIR', dirname(__FILE__));
29
+ define('FACTORY_LOGGER_117_URL', plugins_url(null, __FILE__));
30
 
31
+ load_plugin_textdomain('wbcr_factory_logger_117', false, dirname(plugin_basename(__FILE__)) . '/langs');
32
 
33
+ require_once(FACTORY_LOGGER_117_DIR . '/includes/class-logger.php');
34
 
35
  if( is_admin() ) {
36
+ require_once(FACTORY_LOGGER_117_DIR . '/includes/class-log-export.php');
37
+ require_once(FACTORY_LOGGER_117_DIR . '/pages/class-logger-impressive-page.php');
38
+ require_once(FACTORY_LOGGER_117_DIR . '/pages/class-logger-impressive-lite.php');
39
+ require_once(FACTORY_LOGGER_117_DIR . '/pages/class-logger-admin-page.php');
40
  }
41
 
42
  /**
43
+ * @param Wbcr_Factory452_Plugin $plugin
44
  */
45
+ add_action('wbcr_factory_logger_117_plugin_created', function ($plugin) {
46
+ /* @var Wbcr_Factory452_Plugin $plugin */
47
 
48
  /* Settings of Logger
49
  $settings = [
54
  'rotate_limit' => 3,
55
  ];
56
 
57
+ $plugin->set_logger( "WBCR\Factory_Logger_117\Logger", $settings );
58
  */
59
+ $plugin->set_logger("WBCR\Factory_Logger_117\Logger");
60
  });
libs/factory/logger/includes/class-log-export.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Logger_114;
4
 
5
  /**
6
  * Prepares export files, ZIPs them and allows to download the package.
1
  <?php
2
 
3
+ namespace WBCR\Factory_Logger_117;
4
 
5
  /**
6
  * Prepares export files, ZIPs them and allows to download the package.
libs/factory/logger/includes/class-logger.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Logger_114;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -48,7 +48,7 @@ class Logger {
48
  const LEVEL_DEBUG = 'debug';
49
 
50
  /**
51
- * @var \Wbcr_Factory449_Plugin Plugin class.
52
  */
53
  public $plugin;
54
 
@@ -92,7 +92,7 @@ class Logger {
92
  /**
93
  * Logger constructor.
94
  *
95
- * @param \Wbcr_Factory449_Plugin $plugin
96
  * @param array $settings
97
  */
98
  public function __construct( $plugin, $settings = [] ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_Logger_117;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
48
  const LEVEL_DEBUG = 'debug';
49
 
50
  /**
51
+ * @var \Wbcr_Factory452_Plugin Plugin class.
52
  */
53
  public $plugin;
54
 
92
  /**
93
  * Logger constructor.
94
  *
95
+ * @param \Wbcr_Factory452_Plugin $plugin
96
  * @param array $settings
97
  */
98
  public function __construct( $plugin, $settings = [] ) {
libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.mo → wbcr_factory_logger_117-ru_RU.mo} RENAMED
File without changes
libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.po → wbcr_factory_logger_117-ru_RU.po} RENAMED
File without changes
libs/factory/logger/pages/class-logger-admin-page.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  * @copyright (c) 2020, Webcraftic
13
  * @version 1.0
14
  */
15
- class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
16
 
17
  /**
18
  * {@inheritdoc}
@@ -30,16 +30,16 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
30
  public $type = 'page';
31
 
32
  /**
33
- * @param Wbcr_Factory449_Plugin $plugin
34
  */
35
  public function __construct( $plugin ) {
36
  $this->id = $plugin->getPrefix() . "logger";
37
 
38
- $this->menu_title = __( 'Plugin Log', 'wbcr_factory_logger_114' );
39
- $this->page_title = __( 'Plugin log', 'wbcr_factory_logger_114' );
40
  $this->capabilitiy = "manage_options";
41
 
42
- add_action( 'wp_ajax_wbcr_factory_logger_114_logs_cleanup', [ $this, 'ajax_cleanup' ] );
43
 
44
  parent::__construct( $plugin );
45
  }
@@ -53,10 +53,10 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
53
  public function assets( $scripts, $styles ) {
54
  parent::assets( $scripts, $styles );
55
 
56
- $this->styles->add( FACTORY_LOGGER_114_URL . '/assets/css/logger.css' );
57
- $this->scripts->add( FACTORY_LOGGER_114_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_114', FACTORY_LOGGER_114_VERSION );
58
- wp_localize_script( 'wbcr_factory_logger_114', 'wbcr_factory_logger_114', [
59
- 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_114_clean_logs' ),
60
  ] );
61
  }
62
 
@@ -64,7 +64,7 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
64
  * {@inheritdoc}
65
  */
66
  public function getMenuTitle() {
67
- return __( 'Plugin Log', 'wbcr_factory_logger_114' );
68
  }
69
 
70
  /**
@@ -81,35 +81,35 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
81
  $buttons = "
82
  <div class='wbcr_factory_logger_buttons'>
83
  <a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
84
- class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_114' ) . "</a>
85
  <a href='#'
86
  class='button button-secondary'
87
- onclick='wbcr_factory_logger_114_LogCleanup(this);return false;'
88
- data-working='" . __( 'Working...', 'wbcr_factory_logger_114' ) . "'>" .
89
- sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_114' ), $this->get_log_size_formatted() ) . "
90
  </a>
91
  </div>";
92
 
93
  ?>
94
  <div class="wbcr_factory_logger_container">
95
  <div class="wbcr_factory_logger_page_title">
96
- <h1><?php _e( 'Logs of the', 'wbcr_factory_logger_114' ) ?>
97
  &nbsp;<?php echo $this->plugin->getPluginTitle() . " " . $this->plugin->getPluginVersion(); ?></h1>
98
  <p>
99
- <?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_114' ) ?>
100
  </p>
101
  </div>
102
- <?= $buttons; ?>
103
  <div class="wbcr-log-viewer" id="wbcr-log-viewer">
104
  <?php echo $this->plugin->logger->prettify() ?>
105
  </div>
106
- <?= $buttons; ?>
107
  </div>
108
  <?php
109
  }
110
 
111
  public function ajax_cleanup() {
112
- check_admin_referer( 'wbcr_factory_logger_114_clean_logs', 'nonce' );
113
 
114
  if ( ! current_user_can( 'manage_options' ) ) {
115
  wp_die( - 1 );
@@ -117,13 +117,13 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
117
 
118
  if ( ! $this->plugin->logger->clean_up() ) {
119
  wp_send_json_error( [
120
- 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_114' ),
121
  'type' => 'danger',
122
  ] );
123
  }
124
 
125
  wp_send_json( [
126
- 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_114' ),
127
  'type' => 'success',
128
  ] );
129
  }
@@ -132,7 +132,7 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
132
  * Processing log export action in form of ZIP archive.
133
  */
134
  public function exportAction() {
135
- $export = new WBCR\Factory_Logger_114\Log_Export( $this->plugin->logger );
136
 
137
  if ( $export->prepare() ) {
138
  $export->download( true );
12
  * @copyright (c) 2020, Webcraftic
13
  * @version 1.0
14
  */
15
+ class Wbcr_FactoryLogger117_AdminPage extends Wbcr_FactoryPages451_AdminPage {
16
 
17
  /**
18
  * {@inheritdoc}
30
  public $type = 'page';
31
 
32
  /**
33
+ * @param Wbcr_Factory452_Plugin $plugin
34
  */
35
  public function __construct( $plugin ) {
36
  $this->id = $plugin->getPrefix() . "logger";
37
 
38
+ $this->menu_title = __( 'Plugin Log', 'wbcr_factory_logger_117' );
39
+ $this->page_title = __( 'Plugin log', 'wbcr_factory_logger_117' );
40
  $this->capabilitiy = "manage_options";
41
 
42
+ add_action( 'wp_ajax_wbcr_factory_logger_117_logs_cleanup', [ $this, 'ajax_cleanup' ] );
43
 
44
  parent::__construct( $plugin );
45
  }
53
  public function assets( $scripts, $styles ) {
54
  parent::assets( $scripts, $styles );
55
 
56
+ $this->styles->add( FACTORY_LOGGER_117_URL . '/assets/css/logger.css' );
57
+ $this->scripts->add( FACTORY_LOGGER_117_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_117', FACTORY_LOGGER_117_VERSION );
58
+ wp_localize_script( 'wbcr_factory_logger_117', 'wbcr_factory_logger_117', [
59
+ 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_117_clean_logs' ),
60
  ] );
61
  }
62
 
64
  * {@inheritdoc}
65
  */
66
  public function getMenuTitle() {
67
+ return __( 'Plugin Log', 'wbcr_factory_logger_117' );
68
  }
69
 
70
  /**
81
  $buttons = "
82
  <div class='wbcr_factory_logger_buttons'>
83
  <a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
84
+ class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_117' ) . "</a>
85
  <a href='#'
86
  class='button button-secondary'
87
+ onclick='wbcr_factory_logger_117_LogCleanup(this);return false;'
88
+ data-working='" . __( 'Working...', 'wbcr_factory_logger_117' ) . "'>" .
89
+ sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_117' ), $this->get_log_size_formatted() ) . "
90
  </a>
91
  </div>";
92
 
93
  ?>
94
  <div class="wbcr_factory_logger_container">
95
  <div class="wbcr_factory_logger_page_title">
96
+ <h1><?php _e( 'Logs of the', 'wbcr_factory_logger_117' ) ?>
97
  &nbsp;<?php echo $this->plugin->getPluginTitle() . " " . $this->plugin->getPluginVersion(); ?></h1>
98
  <p>
99
+ <?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_117' ) ?>
100
  </p>
101
  </div>
102
+ <?php echo $buttons; ?>
103
  <div class="wbcr-log-viewer" id="wbcr-log-viewer">
104
  <?php echo $this->plugin->logger->prettify() ?>
105
  </div>
106
+ <?php echo $buttons; ?>
107
  </div>
108
  <?php
109
  }
110
 
111
  public function ajax_cleanup() {
112
+ check_admin_referer( 'wbcr_factory_logger_117_clean_logs', 'nonce' );
113
 
114
  if ( ! current_user_can( 'manage_options' ) ) {
115
  wp_die( - 1 );
117
 
118
  if ( ! $this->plugin->logger->clean_up() ) {
119
  wp_send_json_error( [
120
+ 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_117' ),
121
  'type' => 'danger',
122
  ] );
123
  }
124
 
125
  wp_send_json( [
126
+ 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_117' ),
127
  'type' => 'success',
128
  ] );
129
  }
132
  * Processing log export action in form of ZIP archive.
133
  */
134
  public function exportAction() {
135
+ $export = new WBCR\Factory_Logger_117\Log_Export( $this->plugin->logger );
136
 
137
  if ( $export->prepare() ) {
138
  $export->download( true );
libs/factory/logger/pages/class-logger-impressive-lite.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  * @copyright (c) 2020, Webcraftic
13
  * @version 1.0
14
  */
15
- class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveLite {
16
 
17
  /**
18
  * {@inheritdoc}
@@ -30,14 +30,14 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
30
  public $type = 'page';
31
 
32
  /**
33
- * @param Wbcr_Factory449_Plugin $plugin
34
  */
35
  public function __construct( $plugin ) {
36
  $this->id = $plugin->getPrefix() . "logger";
37
 
38
- $this->page_menu_short_description = __( 'Plugin debug report', 'wbcr_factory_logger_114' );
39
 
40
- add_action( 'wp_ajax_wbcr_factory_logger_114_logs_cleanup', [ $this, 'ajax_cleanup' ] );
41
 
42
  parent::__construct( $plugin );
43
  }
@@ -51,10 +51,10 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
51
  public function assets( $scripts, $styles ) {
52
  parent::assets( $scripts, $styles );
53
 
54
- $this->styles->add( FACTORY_LOGGER_114_URL . '/assets/css/logger.css' );
55
- $this->scripts->add( FACTORY_LOGGER_114_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_114', FACTORY_LOGGER_114_VERSION );
56
- $this->scripts->localize( 'wbcr_factory_logger_114', [
57
- 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_114_clean_logs' ),
58
  ] );
59
  }
60
 
@@ -62,7 +62,7 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
62
  * {@inheritdoc}
63
  */
64
  public function getMenuTitle() {
65
- return __( 'Plugin Log', 'wbcr_factory_logger_114' );
66
  }
67
 
68
  /**
@@ -72,32 +72,32 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
72
  $buttons = "
73
  <div class='btn-group'>
74
  <a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
75
- class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_114' ) . "</a>
76
  <a href='#'
77
  class='button button-secondary'
78
- onclick='wbcr_factory_logger_114_LogCleanup(this);return false;'
79
- data-working='" . __( 'Working...', 'wbcr_factory_logger_114' ) . "'>" . sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_114' ), $this->get_log_size_formatted() ) . "
80
  </a>
81
  </div>";
82
  ?>
83
  <div class="wbcr-factory-page-group-header" style="margin-top:0;">
84
- <strong><?php _e( 'Plugin Log', 'wbcr_factory_logger_114' ) ?></strong>
85
  <p>
86
- <?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_114' ) ?>
87
  </p>
88
  </div>
89
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
90
- <?= $buttons; ?>
91
  <div class="wbcr-log-viewer" id="wbcr-log-viewer">
92
  <?php echo $this->plugin->logger->prettify() ?>
93
  </div>
94
- <?= $buttons; ?>
95
  </div>
96
  <?php
97
  }
98
 
99
  public function ajax_cleanup() {
100
- check_admin_referer( 'wbcr_factory_logger_114_clean_logs', 'nonce' );
101
 
102
  if ( ! current_user_can( 'manage_options' ) ) {
103
  wp_die( - 1 );
@@ -105,13 +105,13 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
105
 
106
  if ( ! $this->plugin->logger->clean_up() ) {
107
  wp_send_json_error( [
108
- 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_114' ),
109
  'type' => 'danger',
110
  ] );
111
  }
112
 
113
  wp_send_json( [
114
- 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_114' ),
115
  'type' => 'success',
116
  ] );
117
  }
@@ -120,7 +120,7 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
120
  * Processing log export action in form of ZIP archive.
121
  */
122
  public function exportAction() {
123
- $export = new WBCR\Factory_Logger_114\Log_Export( $this->plugin->logger );
124
 
125
  if ( $export->prepare() ) {
126
  $export->download( true );
12
  * @copyright (c) 2020, Webcraftic
13
  * @version 1.0
14
  */
15
+ class Wbcr_FactoryLogger117_Lite extends \WBCR\Factory_Templates_105\ImpressiveLite {
16
 
17
  /**
18
  * {@inheritdoc}
30
  public $type = 'page';
31
 
32
  /**
33
+ * @param Wbcr_Factory452_Plugin $plugin
34
  */
35
  public function __construct( $plugin ) {
36
  $this->id = $plugin->getPrefix() . "logger";
37
 
38
+ $this->page_menu_short_description = __( 'Plugin debug report', 'wbcr_factory_logger_117' );
39
 
40
+ add_action( 'wp_ajax_wbcr_factory_logger_117_logs_cleanup', [ $this, 'ajax_cleanup' ] );
41
 
42
  parent::__construct( $plugin );
43
  }
51
  public function assets( $scripts, $styles ) {
52
  parent::assets( $scripts, $styles );
53
 
54
+ $this->styles->add( FACTORY_LOGGER_117_URL . '/assets/css/logger.css' );
55
+ $this->scripts->add( FACTORY_LOGGER_117_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_117', FACTORY_LOGGER_117_VERSION );
56
+ $this->scripts->localize( 'wbcr_factory_logger_117', [
57
+ 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_117_clean_logs' ),
58
  ] );
59
  }
60
 
62
  * {@inheritdoc}
63
  */
64
  public function getMenuTitle() {
65
+ return __( 'Plugin Log', 'wbcr_factory_logger_117' );
66
  }
67
 
68
  /**
72
  $buttons = "
73
  <div class='btn-group'>
74
  <a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
75
+ class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_117' ) . "</a>
76
  <a href='#'
77
  class='button button-secondary'
78
+ onclick='wbcr_factory_logger_117_LogCleanup(this);return false;'
79
+ data-working='" . __( 'Working...', 'wbcr_factory_logger_117' ) . "'>" . sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_117' ), $this->get_log_size_formatted() ) . "
80
  </a>
81
  </div>";
82
  ?>
83
  <div class="wbcr-factory-page-group-header" style="margin-top:0;">
84
+ <strong><?php _e( 'Plugin Log', 'wbcr_factory_logger_117' ) ?></strong>
85
  <p>
86
+ <?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_117' ) ?>
87
  </p>
88
  </div>
89
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
90
+ <?php echo $buttons; ?>
91
  <div class="wbcr-log-viewer" id="wbcr-log-viewer">
92
  <?php echo $this->plugin->logger->prettify() ?>
93
  </div>
94
+ <?php echo $buttons; ?>
95
  </div>
96
  <?php
97
  }
98
 
99
  public function ajax_cleanup() {
100
+ check_admin_referer( 'wbcr_factory_logger_117_clean_logs', 'nonce' );
101
 
102
  if ( ! current_user_can( 'manage_options' ) ) {
103
  wp_die( - 1 );
105
 
106
  if ( ! $this->plugin->logger->clean_up() ) {
107
  wp_send_json_error( [
108
+ 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_117' ),
109
  'type' => 'danger',
110
  ] );
111
  }
112
 
113
  wp_send_json( [
114
+ 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_117' ),
115
  'type' => 'success',
116
  ] );
117
  }
120
  * Processing log export action in form of ZIP archive.
121
  */
122
  public function exportAction() {
123
+ $export = new WBCR\Factory_Logger_117\Log_Export( $this->plugin->logger );
124
 
125
  if ( $export->prepare() ) {
126
  $export->download( true );
libs/factory/logger/pages/class-logger-impressive-page.php CHANGED
@@ -12,7 +12,7 @@ if( !defined('ABSPATH') ) {
12
  * @copyright (c) 2020, Webcraftic
13
  * @version 1.0
14
  */
15
- class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\PageBase {
16
 
17
  /**
18
  * {@inheritdoc}
@@ -30,16 +30,16 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
30
  public $type = 'page';
31
 
32
  /**
33
- * @param Wbcr_Factory449_Plugin $plugin
34
  */
35
  public function __construct($plugin)
36
  {
37
  $this->id = $plugin->getPrefix() . "logger";
38
 
39
- $this->menu_title = __('Plugin Log', 'wbcr_factory_logger_114');
40
- $this->page_menu_short_description = __('Plugin debug report', 'wbcr_factory_logger_114');
41
 
42
- add_action('wp_ajax_wbcr_factory_logger_114_logs_cleanup', [$this, 'ajax_cleanup']);
43
 
44
  parent::__construct($plugin);
45
  }
@@ -54,10 +54,10 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
54
  {
55
  parent::assets($scripts, $styles);
56
 
57
- $this->styles->add(FACTORY_LOGGER_114_URL . '/assets/css/logger.css');
58
- $this->scripts->add(FACTORY_LOGGER_114_URL . '/assets/js/logger.js', ['jquery'], 'wbcr_factory_logger_114', FACTORY_LOGGER_114_VERSION);
59
- $this->scripts->localize('wbcr_factory_logger_114', [
60
- 'clean_logs_nonce' => wp_create_nonce('wbcr_factory_logger_114_clean_logs'),
61
  ]);
62
  }
63
 
@@ -66,7 +66,7 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
66
  */
67
  public function getMenuTitle()
68
  {
69
- return __('Plugin Log', 'wbcr_factory_logger_114');
70
  }
71
 
72
  /**
@@ -77,33 +77,33 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
77
  $buttons = "
78
  <div class='btn-group'>
79
  <a href='" . wp_nonce_url($this->getActionUrl('export')) . "'
80
- class='button button-primary'>" . __('Export Debug Information', 'wbcr_factory_logger_114') . "</a>
81
  <a href='#'
82
  class='button button-secondary'
83
- onclick='wbcr_factory_logger_114_LogCleanup(this);return false;'
84
- data-working='" . __('Working...', 'wbcr_factory_logger_114') . "'>" . sprintf(__('Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_114'), $this->get_log_size_formatted()) . "
85
  </a>
86
  </div>";
87
  ?>
88
  <div class="wbcr-factory-page-group-header" style="margin-top:0;">
89
- <strong><?php _e('Plugin Log', 'wbcr_factory_logger_114') ?></strong>
90
  <p>
91
- <?php _e('In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_114') ?>
92
  </p>
93
  </div>
94
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
95
- <?= $buttons; ?>
96
  <div class="wbcr-log-viewer" id="wbcr-log-viewer">
97
  <?php echo $this->plugin->logger->prettify() ?>
98
  </div>
99
- <?= $buttons; ?>
100
  </div>
101
  <?php
102
  }
103
 
104
  public function ajax_cleanup()
105
  {
106
- check_admin_referer('wbcr_factory_logger_114_clean_logs', 'nonce');
107
 
108
  if( !current_user_can('manage_options') ) {
109
  wp_die(-1);
@@ -111,13 +111,13 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
111
 
112
  if( !$this->plugin->logger->clean_up() ) {
113
  wp_send_json_error([
114
- 'message' => esc_html__('Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_114'),
115
  'type' => 'danger',
116
  ]);
117
  }
118
 
119
  wp_send_json([
120
- 'message' => esc_html__('Logs clean-up successfully', 'wbcr_factory_logger_114'),
121
  'type' => 'success',
122
  ]);
123
  }
@@ -127,7 +127,7 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
127
  */
128
  public function exportAction()
129
  {
130
- $export = new WBCR\Factory_Logger_114\Log_Export($this->plugin->logger);
131
 
132
  if( $export->prepare() ) {
133
  $export->download(true);
12
  * @copyright (c) 2020, Webcraftic
13
  * @version 1.0
14
  */
15
+ class Wbcr_FactoryLogger117_PageBase extends \WBCR\Factory_Templates_105\Pages\PageBase {
16
 
17
  /**
18
  * {@inheritdoc}
30
  public $type = 'page';
31
 
32
  /**
33
+ * @param Wbcr_Factory452_Plugin $plugin
34
  */
35
  public function __construct($plugin)
36
  {
37
  $this->id = $plugin->getPrefix() . "logger";
38
 
39
+ $this->menu_title = __('Plugin Log', 'wbcr_factory_logger_117');
40
+ $this->page_menu_short_description = __('Plugin debug report', 'wbcr_factory_logger_117');
41
 
42
+ add_action('wp_ajax_wbcr_factory_logger_117_logs_cleanup', [$this, 'ajax_cleanup']);
43
 
44
  parent::__construct($plugin);
45
  }
54
  {
55
  parent::assets($scripts, $styles);
56
 
57
+ $this->styles->add(FACTORY_LOGGER_117_URL . '/assets/css/logger.css');
58
+ $this->scripts->add(FACTORY_LOGGER_117_URL . '/assets/js/logger.js', ['jquery'], 'wbcr_factory_logger_117', FACTORY_LOGGER_117_VERSION);
59
+ $this->scripts->localize('wbcr_factory_logger_117', [
60
+ 'clean_logs_nonce' => wp_create_nonce('wbcr_factory_logger_117_clean_logs'),
61
  ]);
62
  }
63
 
66
  */
67
  public function getMenuTitle()
68
  {
69
+ return __('Plugin Log', 'wbcr_factory_logger_117');
70
  }
71
 
72
  /**
77
  $buttons = "
78
  <div class='btn-group'>
79
  <a href='" . wp_nonce_url($this->getActionUrl('export')) . "'
80
+ class='button button-primary'>" . __('Export Debug Information', 'wbcr_factory_logger_117') . "</a>
81
  <a href='#'
82
  class='button button-secondary'
83
+ onclick='wbcr_factory_logger_117_LogCleanup(this);return false;'
84
+ data-working='" . __('Working...', 'wbcr_factory_logger_117') . "'>" . sprintf(__('Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_117'), $this->get_log_size_formatted()) . "
85
  </a>
86
  </div>";
87
  ?>
88
  <div class="wbcr-factory-page-group-header" style="margin-top:0;">
89
+ <strong><?php _e('Plugin Log', 'wbcr_factory_logger_117') ?></strong>
90
  <p>
91
+ <?php _e('In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_117') ?>
92
  </p>
93
  </div>
94
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
95
+ <?php echo $buttons; ?>
96
  <div class="wbcr-log-viewer" id="wbcr-log-viewer">
97
  <?php echo $this->plugin->logger->prettify() ?>
98
  </div>
99
+ <?php echo $buttons; ?>
100
  </div>
101
  <?php
102
  }
103
 
104
  public function ajax_cleanup()
105
  {
106
+ check_admin_referer('wbcr_factory_logger_117_clean_logs', 'nonce');
107
 
108
  if( !current_user_can('manage_options') ) {
109
  wp_die(-1);
111
 
112
  if( !$this->plugin->logger->clean_up() ) {
113
  wp_send_json_error([
114
+ 'message' => esc_html__('Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_117'),
115
  'type' => 'danger',
116
  ]);
117
  }
118
 
119
  wp_send_json([
120
+ 'message' => esc_html__('Logs clean-up successfully', 'wbcr_factory_logger_117'),
121
  'type' => 'success',
122
  ]);
123
  }
127
  */
128
  public function exportAction()
129
  {
130
+ $export = new WBCR\Factory_Logger_117\Log_Export($this->plugin->logger);
131
 
132
  if( $export->prepare() ) {
133
  $export->download(true);
libs/factory/pages/boot.php CHANGED
@@ -19,25 +19,25 @@ if( !is_admin() ) {
19
  return;
20
  }
21
 
22
- if( defined('FACTORY_PAGES_448_LOADED') ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_PAGES_448_LOADED', true);
27
 
28
- define('FACTORY_PAGES_448_VERSION', '4.4.8');
29
 
30
- define('FACTORY_PAGES_448_DIR', dirname(__FILE__));
31
- define('FACTORY_PAGES_448_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_448', false, dirname(plugin_basename(__FILE__)) . '/langs');
38
 
39
- require(FACTORY_PAGES_448_DIR . '/pages.php');
40
- require(FACTORY_PAGES_448_DIR . '/includes/page.class.php');
41
- require(FACTORY_PAGES_448_DIR . '/includes/admin-page.class.php');
42
 
43
 
19
  return;
20
  }
21
 
22
+ if( defined('FACTORY_PAGES_451_LOADED') ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_PAGES_451_LOADED', true);
27
 
28
+ define('FACTORY_PAGES_451_VERSION', '4.5.1');
29
 
30
+ define('FACTORY_PAGES_451_DIR', dirname(__FILE__));
31
+ define('FACTORY_PAGES_451_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_451', false, dirname(plugin_basename(__FILE__)) . '/langs');
38
 
39
+ require(FACTORY_PAGES_451_DIR . '/pages.php');
40
+ require(FACTORY_PAGES_451_DIR . '/includes/page.class.php');
41
+ require(FACTORY_PAGES_451_DIR . '/includes/admin-page.class.php');
42
 
43
 
libs/factory/pages/includes/admin-page.class.php CHANGED
@@ -14,9 +14,9 @@ if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
 
17
- if( !class_exists('Wbcr_FactoryPages448_AdminPage') ) {
18
 
19
- class Wbcr_FactoryPages448_AdminPage extends Wbcr_FactoryPages448_Page {
20
 
21
  /**
22
  * Visible page title.
@@ -209,7 +209,7 @@ if( !class_exists('Wbcr_FactoryPages448_AdminPage') ) {
209
  */
210
  public $add_link_to_plugin_actions = false;
211
 
212
- public function __construct(Wbcr_Factory449_Plugin $plugin)
213
  {
214
  parent::__construct($plugin);
215
  $this->configure();
@@ -325,13 +325,13 @@ if( !class_exists('Wbcr_FactoryPages448_AdminPage') ) {
325
  {
326
  $result_id = $this->getResultId();
327
 
328
- $this->hidden = apply_filters('wbcr_factory_449_page_is_hidden_' . $result_id, $this->hidden);
329
 
330
  if( $this->hidden ) {
331
  return;
332
  }
333
 
334
- $this->internal = apply_filters('wbcr_factory_449_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_FactoryPages448_AdminPage') ) {
370
  $this->assets($this->scripts, $this->styles);
371
 
372
  if( !$this->scripts->isEmpty('bootstrap') || !$this->styles->isEmpty('bootstrap') ) {
373
- add_action('wbcr_factory_449_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
374
  $this,
375
  'actionAdminBootstrapScripts'
376
  ]);
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryPages451_AdminPage') ) {
18
 
19
+ class Wbcr_FactoryPages451_AdminPage extends Wbcr_FactoryPages451_Page {
20
 
21
  /**
22
  * Visible page title.
209
  */
210
  public $add_link_to_plugin_actions = false;
211
 
212
+ public function __construct(Wbcr_Factory452_Plugin $plugin)
213
  {
214
  parent::__construct($plugin);
215
  $this->configure();
325
  {
326
  $result_id = $this->getResultId();
327
 
328
+ $this->hidden = apply_filters('wbcr_factory_452_page_is_hidden_' . $result_id, $this->hidden);
329
 
330
  if( $this->hidden ) {
331
  return;
332
  }
333
 
334
+ $this->internal = apply_filters('wbcr_factory_452_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_452_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_FactoryPages448_Page' ) ) {
18
 
19
- class Wbcr_FactoryPages448_Page {
20
 
21
 
22
  /**
@@ -30,7 +30,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages448_Page' ) ) {
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
- * @see FactoryPages448_AdminPage
34
  *
35
  * @var string
36
  */
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages448_Page' ) ) {
39
  /**
40
  * Current Factory Plugin.
41
  *
42
- * @var Wbcr_Factory449_Plugin
43
  */
44
  public $plugin;
45
 
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages448_Page' ) ) {
51
  //private $default_actions = array();
52
 
53
  /**
54
- * @param Wbcr_Factory449_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
- public function __construct( Wbcr_Factory449_Plugin $plugin ) {
59
  $this->plugin = $plugin;
60
 
61
  if ( $plugin ) {
@@ -111,7 +111,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages448_Page' ) ) {
111
 
112
  if ( ! method_exists( $this, $actionFunction ) ) {
113
  // todo: продумать и доработать выполнение произвольных и глобальных дейтсвия для всех страниц
114
- /*$custom_actions = apply_filters('wbcr/factory_pages_448/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_FactoryPages451_Page' ) ) {
18
 
19
+ class Wbcr_FactoryPages451_Page {
20
 
21
 
22
  /**
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
+ * @see FactoryPages451_AdminPage
34
  *
35
  * @var string
36
  */
39
  /**
40
  * Current Factory Plugin.
41
  *
42
+ * @var Wbcr_Factory452_Plugin
43
  */
44
  public $plugin;
45
 
51
  //private $default_actions = array();
52
 
53
  /**
54
+ * @param Wbcr_Factory452_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
+ public function __construct( Wbcr_Factory452_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_451/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_448-fr_FR.mo → wbcr_factory_pages_451-fr_FR.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_448-fr_FR.po → wbcr_factory_pages_451-fr_FR.po} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.mo → wbcr_factory_pages_451-ru_RU.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.po → wbcr_factory_pages_451-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_FactoryPages448::actionAdminMenu');
18
- add_action('network_admin_menu', 'Wbcr_FactoryPages448::actionAdminMenu');
19
 
20
- if( !class_exists('Wbcr_FactoryPages448') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
- class Wbcr_FactoryPages448 {
27
 
28
  /**
29
- * @var Wbcr_FactoryPages448_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
- * @param Wbcr_Factory449_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_Factory449_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_Factory449_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_448_get_page_id') ) {
97
  /**
98
  *
99
- * @param Wbcr_Factory449_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
- function wbcr_factory_pages_448_get_page_id($plugin, $page_id)
104
  {
105
  return $page_id . '-' . $plugin->getPluginName();
106
  }
14
  exit;
15
  }
16
 
17
+ add_action('admin_menu', 'Wbcr_FactoryPages451::actionAdminMenu');
18
+ add_action('network_admin_menu', 'Wbcr_FactoryPages451::actionAdminMenu');
19
 
20
+ if( !class_exists('Wbcr_FactoryPages451') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
+ class Wbcr_FactoryPages451 {
27
 
28
  /**
29
+ * @var Wbcr_FactoryPages451_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
+ * @param Wbcr_Factory452_Plugin $plugin
35
  * @param $class_name
36
  */
37
  public static function register($plugin, $class_name)
59
  }
60
  }
61
 
62
+ public static function getPageUrl(Wbcr_Factory452_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_Factory452_Plugin $plugin
79
  * @return array
80
  */
81
  public static function getIds($plugin)
93
  }
94
  }
95
 
96
+ if( !function_exists('wbcr_factory_pages_451_get_page_id') ) {
97
  /**
98
  *
99
+ * @param Wbcr_Factory452_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
+ function wbcr_factory_pages_451_get_page_id($plugin, $page_id)
104
  {
105
  return $page_id . '-' . $plugin->getPluginName();
106
  }
libs/factory/templates/assets/css/clearfy-base.css CHANGED
@@ -8,7 +8,7 @@
8
  #WBCR {
9
  /* subscribe widget */
10
  }
11
- #WBCR .wbcr-factory-templates-101-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-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-suggetion {
30
  padding: 30px 80px;
31
  }
32
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-suggetion h3 {
33
  margin: 0 0 20px;
34
  }
35
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-suggetion .wbcr-factory-inner-contanier {
36
  border: 2px dashed #8bc34a;
37
  background: #fff;
38
  padding: 20px;
39
  }
40
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-templates-101-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-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-suggetion .wbcr-factory-activate-premium:active {
60
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
61
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
62
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
63
  }
64
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-suggetion .wbcr-factory-activate-premium:focus {
65
  outline: none;
66
  border: 0;
67
  }
68
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-templates-101-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-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-suggetion .wbcr-factory-purchase-premium:active {
88
  box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
89
  -moz-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
90
  -webkit-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
91
  }
92
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-suggetion .wbcr-factory-purchase-premium:focus {
93
  outline: none;
94
  border: 0;
95
  }
96
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion {
97
  background: #fff;
98
  color: #353535;
99
  font-weight: 600;
100
  border: 2px dashed #8bc34a;
101
  }
102
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-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-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion ul {
114
  position: relative;
115
  margin-bottom: 20px;
116
  }
117
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion ul li {
118
  font-size: 15px;
119
  padding: 7px;
120
  padding-left: 20px;
121
  }
122
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-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-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-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-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion .wbcr-factory-purchase-premium:active {
156
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
157
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
158
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
159
  }
160
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-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-templates-101-impressive-page-template .wbcr-factory-templates-101-multisite-pro-suggetion {
224
  padding: 10px 80px;
225
  }
226
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion {
227
  padding: 10px;
228
  }
229
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion h3 {
230
  margin: 0 0 20px;
231
  padding: 10px 0;
232
  font-size: 13px;
233
  font-weight: 600;
234
  }
235
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion ul {
236
  margin-bottom: 20px;
237
  }
238
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion ul li {
239
  font-size: 13px;
240
  padding: 2px;
241
  padding-left: 10px;
242
  }
243
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-pro-suggettion ul li:before {
244
  width: 0.4em;
245
  height: 0.7em;
246
  border-width: 0 0.2em 0.2em 0;
247
  left: 0;
248
  margin-right: 10px;
249
  }
250
- #WBCR .wbcr-factory-templates-101-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-101-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-templates-105-impressive-page-template .factory-checkbox.wbcr-factory-clearfy-icon-pro:after {
12
  display: inline-block;
13
  position: relative;
14
  content: 'PRO';
26
  right: auto;
27
  z-index: 11;
28
  }
29
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion {
30
  padding: 30px 80px;
31
  }
32
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion h3 {
33
  margin: 0 0 20px;
34
  }
35
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-inner-contanier {
36
  border: 2px dashed #8bc34a;
37
  background: #fff;
38
  padding: 20px;
39
  }
40
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-activate-premium {
41
  display: inline-block;
42
  cursor: pointer;
43
  line-height: 16px;
56
  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
57
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
58
  }
59
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-activate-premium:active {
60
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
61
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
62
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
63
  }
64
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-activate-premium:focus {
65
  outline: none;
66
  border: 0;
67
  }
68
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-purchase-premium {
69
  display: inline-block;
70
  cursor: pointer;
71
  line-height: 16px;
84
  -moz-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
85
  -webkit-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
86
  }
87
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-purchase-premium:active {
88
  box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
89
  -moz-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
90
  -webkit-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
91
  }
92
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-purchase-premium:focus {
93
  outline: none;
94
  border: 0;
95
  }
96
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion {
97
  background: #fff;
98
  color: #353535;
99
  font-weight: 600;
100
  border: 2px dashed #8bc34a;
101
  }
102
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion h3 {
103
  margin: 0 0 20px;
104
  padding: 10px 0;
105
  text-align: center;
110
  vertical-align: middle;
111
  text-transform: uppercase;
112
  }
113
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul {
114
  position: relative;
115
  margin-bottom: 20px;
116
  }
117
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul li {
118
  font-size: 15px;
119
  padding: 7px;
120
  padding-left: 20px;
121
  }
122
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul li:before {
123
  content: " ";
124
  display: inline-block;
125
  width: 0.4em;
133
  -o-transform: rotate(45deg);
134
  transform: rotate(45deg);
135
  }
136
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion .wbcr-factory-purchase-premium {
137
  display: block;
138
  cursor: pointer;
139
  line-height: 16px;
152
  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
153
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
154
  }
155
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion .wbcr-factory-purchase-premium:active {
156
  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
157
  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
158
  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
159
  }
160
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion .wbcr-factory-purchase-premium:focus {
161
  outline: none;
162
  border: 0;
163
  }
220
  font-size: 12px;
221
  }
222
  @media screen and (max-width: 1550px) {
223
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-pro-suggetion {
224
  padding: 10px 80px;
225
  }
226
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion {
227
  padding: 10px;
228
  }
229
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion h3 {
230
  margin: 0 0 20px;
231
  padding: 10px 0;
232
  font-size: 13px;
233
  font-weight: 600;
234
  }
235
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul {
236
  margin-bottom: 20px;
237
  }
238
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul li {
239
  font-size: 13px;
240
  padding: 2px;
241
  padding-left: 10px;
242
  }
243
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul li:before {
244
  width: 0.4em;
245
  height: 0.7em;
246
  border-width: 0 0.2em 0.2em 0;
247
  left: 0;
248
  margin-right: 10px;
249
  }
250
+ #WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion .wbcr-factory-purchase-premium {
251
  font-weight: 700;
252
  line-height: 16px;
253
  font-size: 12px;
libs/factory/templates/assets/css/components.css CHANGED
@@ -3,11 +3,11 @@
3
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
  * @copyright Alex Kovalev 30.09.2017
5
  */
6
- #WBCR .wbc-factory-templates-101-components {
7
  padding: 0 20px 20px;
8
  text-align: center;
9
  }
10
- #WBCR .wbc-factory-templates-101-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-templates-101-components .plugin-card:first-child {
22
  margin-left: 0;
23
  }
24
- #WBCR .wbc-factory-templates-101-components .plugin-card .plugin-card-bottom {
25
  position: absolute;
26
  bottom: 0;
27
  right: 0;
28
  left: 0;
29
  }
30
- #WBCR .wbc-factory-templates-101-components .plugin-card .plugin-card-top {
31
  min-height: 163px;
32
  }
33
- #WBCR .wbc-factory-templates-101-components .plugin-card .desc,
34
- #WBCR .wbc-factory-templates-101-components .plugin-card .name {
35
  margin-right: 0 !important;
36
  }
37
- #WBCR .wbc-factory-templates-101-components .plugin-card .name h3 {
38
  font-size: 17px;
39
  margin-top: 0 !important;
40
  }
41
- #WBCR .wbc-factory-templates-101-components .plugin-card .install-now {
42
  float: right;
43
  }
44
- #WBCR .wbc-factory-templates-101-components .plugin-card .delete-now {
45
  float: right;
46
  margin-left: 5px;
47
  }
48
- #WBCR .wbc-factory-templates-101-components .plugin-card .delete-now .dashicons,
49
- #WBCR .wbc-factory-templates-101-components .plugin-card .delete-now .dashicons-before:before {
50
  font-size: 16px !important;
51
  line-height: 1.5 !important;
52
  color: #62696f;
53
  }
54
- #WBCR .wbc-factory-templates-101-components .plugin-card a.open-plugin-details-modal {
55
  color: #5c5d5f;
56
  text-decoration: none;
57
  font-weight: 600;
58
  font-size: 15px;
59
  }
60
- #WBCR .wbc-factory-templates-101-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-templates-101-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-templates-101-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-templates-101-components .plugin-card.premium {
109
  border-color: #e8d7b2;
110
  background-color: #fff9eb;
111
  }
112
- #WBCR .wbc-factory-templates-101-components .plugin-card.plugin-status-deactive {
113
  background-color: #f1f1f1;
114
  }
115
- #WBCR .wbc-factory-templates-101-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
116
  color: #ababab;
117
  text-decoration: none;
118
  font-weight: 600;
119
  font-size: 15px;
120
  }
121
- #WBCR .wbc-factory-templates-101-components .plugin-card.plugin-status-deactive .plugin-icon {
122
  opacity: 0.3;
123
  }
124
- #WBCR .wbc-factory-templates-101-components .plugin-card.plugin-status-deactive .desc {
125
  color: #afafaf;
126
  }
127
- #WBCR .wbc-factory-templates-101-components .plugin-card.plugin-status-deactive.premium {
128
  background-color: #f9f2f1;
129
  }
130
  @media screen and (max-width: 1750px) {
131
- #WBCR .wbc-factory-templates-101-components .plugin-card {
132
  width: 49%;
133
  }
134
  }
135
  @media screen and (max-width: 1350px) {
136
- #WBCR .wbc-factory-templates-101-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-templates-105-components {
7
  padding: 0 20px 20px;
8
  text-align: center;
9
  }
10
+ #WBCR .wbc-factory-templates-105-components .plugin-card {
11
  position: relative;
12
  display: inline-block;
13
  width: 32.7%;
18
  float: none;
19
  vertical-align: top;
20
  }
21
+ #WBCR .wbc-factory-templates-105-components .plugin-card:first-child {
22
  margin-left: 0;
23
  }
24
+ #WBCR .wbc-factory-templates-105-components .plugin-card .plugin-card-bottom {
25
  position: absolute;
26
  bottom: 0;
27
  right: 0;
28
  left: 0;
29
  }
30
+ #WBCR .wbc-factory-templates-105-components .plugin-card .plugin-card-top {
31
  min-height: 163px;
32
  }
33
+ #WBCR .wbc-factory-templates-105-components .plugin-card .desc,
34
+ #WBCR .wbc-factory-templates-105-components .plugin-card .name {
35
  margin-right: 0 !important;
36
  }
37
+ #WBCR .wbc-factory-templates-105-components .plugin-card .name h3 {
38
  font-size: 17px;
39
  margin-top: 0 !important;
40
  }
41
+ #WBCR .wbc-factory-templates-105-components .plugin-card .install-now {
42
  float: right;
43
  }
44
+ #WBCR .wbc-factory-templates-105-components .plugin-card .delete-now {
45
  float: right;
46
  margin-left: 5px;
47
  }
48
+ #WBCR .wbc-factory-templates-105-components .plugin-card .delete-now .dashicons,
49
+ #WBCR .wbc-factory-templates-105-components .plugin-card .delete-now .dashicons-before:before {
50
  font-size: 16px !important;
51
  line-height: 1.5 !important;
52
  color: #62696f;
53
  }
54
+ #WBCR .wbc-factory-templates-105-components .plugin-card a.open-plugin-details-modal {
55
  color: #5c5d5f;
56
  text-decoration: none;
57
  font-weight: 600;
58
  font-size: 15px;
59
  }
60
+ #WBCR .wbc-factory-templates-105-components .plugin-card .plugin-card-premium-ribbon {
61
  position: absolute;
62
  bottom: 60px;
63
  right: 0;
73
  text-transform: uppercase;
74
  z-index: 1;
75
  }
76
+ #WBCR .wbc-factory-templates-105-components .plugin-card .plugin-card-free-ribbon {
77
  position: absolute;
78
  bottom: 60px;
79
  right: 0;
89
  text-transform: uppercase;
90
  z-index: 1;
91
  }
92
+ #WBCR .wbc-factory-templates-105-components .plugin-card .plugin-card-freemium-ribbon {
93
  position: absolute;
94
  bottom: 60px;
95
  right: 0;
105
  text-transform: uppercase;
106
  z-index: 1;
107
  }
108
+ #WBCR .wbc-factory-templates-105-components .plugin-card.premium {
109
  border-color: #e8d7b2;
110
  background-color: #fff9eb;
111
  }
112
+ #WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive {
113
  background-color: #f1f1f1;
114
  }
115
+ #WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
116
  color: #ababab;
117
  text-decoration: none;
118
  font-weight: 600;
119
  font-size: 15px;
120
  }
121
+ #WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive .plugin-icon {
122
  opacity: 0.3;
123
  }
124
+ #WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive .desc {
125
  color: #afafaf;
126
  }
127
+ #WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive.premium {
128
  background-color: #f9f2f1;
129
  }
130
  @media screen and (max-width: 1750px) {
131
+ #WBCR .wbc-factory-templates-105-components .plugin-card {
132
  width: 49%;
133
  }
134
  }
135
  @media screen and (max-width: 1350px) {
136
+ #WBCR .wbc-factory-templates-105-components .plugin-card {
137
  width: 100%;
138
  }
139
  }
libs/factory/templates/assets/css/libs/autocomplete.css CHANGED
@@ -5,44 +5,44 @@
5
  *
6
  * @since 2.2.0
7
  */
8
- #wbcr-factory-templates-101__search_options_form #wbcr-factory-templates-101__autocomplete {
9
  width: 100%;
10
  box-sizing: border-box;
11
  border-color: #d6d4d4;
12
  }
13
- #wbcr-factory-templates-101__search_options_form #wbcr-factory-templates-101__autocomplete::placeholder,
14
- #wbcr-factory-templates-101__search_options_form #wbcr-factory-templates-101__autocomplete::-moz-placeholder,
15
- #wbcr-factory-templates-101__search_options_form #wbcr-factory-templates-101__autocomplete::-webkit-input-placeholder {
16
  color: #eae9e9;
17
  }
18
- #wbcr-factory-templates-101__search_options_form.wbcr-factory-templates-101__autocomplete-wrap {
19
  padding: 10px;
20
  }
21
- #wbcr-factory-templates-101__search_options_form .wbcr-factory-templates-101__autocomplete-label {
22
  display: block !important;
23
  }
24
- .wbcr-factory-templates-101__autocomplete-suggestions {
25
  border: 1px solid #999;
26
  background: #FFF;
27
  overflow: auto;
28
  }
29
- .wbcr-factory-templates-101__autocomplete-suggestion {
30
  padding: 2px 5px;
31
  white-space: nowrap;
32
  overflow: hidden;
33
  cursor: pointer;
34
  }
35
- .wbcr-factory-templates-101__autocomplete-selected {
36
  background: #F0F0F0;
37
  }
38
- .wbcr-factory-templates-101__autocomplete-suggestions strong {
39
  font-weight: normal;
40
  color: #3399FF;
41
  }
42
- .wbcr-factory-templates-101__autocomplete-group {
43
  padding: 2px 5px;
44
  }
45
- .wbcr-factory-templates-101__autocomplete-group strong {
46
  display: block;
47
  border-bottom: 1px solid #000;
48
  }
5
  *
6
  * @since 2.2.0
7
  */
8
+ #wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete {
9
  width: 100%;
10
  box-sizing: border-box;
11
  border-color: #d6d4d4;
12
  }
13
+ #wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete::placeholder,
14
+ #wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete::-moz-placeholder,
15
+ #wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete::-webkit-input-placeholder {
16
  color: #eae9e9;
17
  }
18
+ #wbcr-factory-templates-105__search_options_form.wbcr-factory-templates-105__autocomplete-wrap {
19
  padding: 10px;
20
  }
21
+ #wbcr-factory-templates-105__search_options_form .wbcr-factory-templates-105__autocomplete-label {
22
  display: block !important;
23
  }
24
+ .wbcr-factory-templates-105__autocomplete-suggestions {
25
  border: 1px solid #999;
26
  background: #FFF;
27
  overflow: auto;
28
  }
29
+ .wbcr-factory-templates-105__autocomplete-suggestion {
30
  padding: 2px 5px;
31
  white-space: nowrap;
32
  overflow: hidden;
33
  cursor: pointer;
34
  }
35
+ .wbcr-factory-templates-105__autocomplete-selected {
36
  background: #F0F0F0;
37
  }
38
+ .wbcr-factory-templates-105__autocomplete-suggestions strong {
39
  font-weight: normal;
40
  color: #3399FF;
41
  }
42
+ .wbcr-factory-templates-105__autocomplete-group {
43
  padding: 2px 5px;
44
  }
45
+ .wbcr-factory-templates-105__autocomplete-group strong {
46
  display: block;
47
  border-bottom: 1px solid #000;
48
  }
libs/factory/templates/assets/css/page-setup.css CHANGED
@@ -2,13 +2,13 @@
2
  margin: 0;
3
  padding: 0;
4
  }
5
- .w-factory-templates-101__form-buttons {
6
  text-align: right;
7
  padding: 10px;
8
  background: #f7f7f7;
9
  border-top: 1px solid #e8e8e8;
10
  }
11
- .w-factory-templates-101__form-buttons .w-factory-templates-101__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-templates-101__form-buttons .w-factory-templates-101__skip-button:active,
20
- .w-factory-templates-101__form-buttons .w-factory-templates-101__skip-button:hover,
21
- .w-factory-templates-101__form-buttons .w-factory-templates-101__skip-button:focus {
22
  background: #dddddd;
23
  border-color: #dddddd;
24
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #dddddd;
25
  color: #8a8a8a;
26
  }
27
- .w-factory-templates-101__form-buttons .w-factory-templates-101__continue-button {
28
  background-color: #f57d4f;
29
  border-color: #f77d50;
30
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
31
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
32
  margin: 0;
33
  }
34
- .w-factory-templates-101__form-buttons .w-factory-templates-101__continue-button:active,
35
- .w-factory-templates-101__form-buttons .w-factory-templates-101__continue-button:hover,
36
- .w-factory-templates-101__form-buttons .w-factory-templates-101__continue-button:focus {
37
  background: #f86b3b;
38
  border-color: #f86b3b;
39
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f86b3b;
40
  }
41
- .w-factory-templates-101-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-templates-101-setup__inner-wrap,
50
- .w-factory-templates-101__setup-form .factory-form-layout {
51
  padding: 30px;
52
  }
53
- .w-factory-templates-101-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-templates-101-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-templates-101-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-templates-101-setup-steps li.active {
87
  border-color: #ff1c40 !important;
88
  color: #222;
89
  font-weight: 700;
90
  }
91
- .w-factory-templates-101-setup-steps li.active::before {
92
  border-color: #ff1c40 !important;
93
  }
94
- .w-factory-templates-101-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-templates-101-setup-steps li a:focus,
103
- .w-factory-templates-101-setup-steps li a:hover {
104
  color: #111;
105
  text-decoration: underline;
106
  }
107
- /*.w-factory-templates-101-setup-steps li.done {
108
  border-color: #f57d4f;
109
  color: #f57d4f
110
  }
111
 
112
- .w-factory-templates-101-setup-steps li.done::before {
113
  border-color: #f57d4f;
114
  background: #f57d4f
115
  }*/
116
- .w-factory-templates-101-setup .w-factory-templates-101-setup-actions {
117
  overflow: hidden;
118
  margin: 20px 0 0;
119
  position: relative;
120
  }
121
- .w-factory-templates-101-setup-content p:last-child {
122
  margin-bottom: 0;
123
  }
124
- .w-factory-templates-101-setup-content p.store-setup {
125
  margin-top: 0;
126
  }
127
- .w-factory-templates-101-setup-footer-links {
128
  font-size: 0.85em;
129
  color: #7b7b7b;
130
  margin: 1.18em auto;
131
  display: inline-block;
132
  text-align: center;
133
  }
134
- .w-factory-templates-101-logo {
135
  text-align: center;
136
  }
137
- .w-factory-templates-101-logo img {
138
  max-width: 250px;
139
  }
140
- .w-factory-templates-101-setup-content {
141
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.13);
142
  margin: 0 0 20px;
143
  background: #fff;
144
  zoom: 1;
145
  text-align: left;
146
  }
147
- .w-factory-templates-101-setup-content table {
148
  font-size: 1em;
149
  line-height: 1.75;
150
  color: #666;
151
  }
152
- .w-factory-templates-101-setup-content table thead {
153
  background: #f1f1f1;
154
  }
155
- .w-factory-templates-101-setup-content table th,
156
- .w-factory-templates-101-setup-content table td {
157
  padding: 10px 15px;
158
  }
159
- .w-factory-templates-101-setup-content h1,
160
- .w-factory-templates-101-setup-content h2,
161
- .w-factory-templates-101-setup-content h3,
162
- .w-factory-templates-101-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-templates-101-setup-content p {
171
  margin: 20px 0;
172
  font-size: 1.15em;
173
  line-height: 1.75;
174
  color: #666;
175
  text-align: center;
176
  }
177
- .w-factory-templates-101-setup-step__new_onboarding-welcome {
178
  font-size: 22px !important;
179
  }
180
- .w-factory-templates-101-setup-content a {
181
  color: #f57d4f;
182
  }
183
- .w-factory-templates-101-setup-content a:focus,
184
- .w-factory-templates-101-setup-content a:hover {
185
  color: #111;
186
  }
187
- .w-factory-templates-101-setup-content table.tax-rates {
188
  width: 100%;
189
  font-size: 0.92em;
190
  }
191
- .w-factory-templates-101-setup-content table.tax-rates th {
192
  padding: 0;
193
  text-align: center;
194
  width: auto;
195
  vertical-align: middle;
196
  }
197
- .w-factory-templates-101-setup-content table.tax-rates td {
198
  border: 1px solid #f5f5f5;
199
  padding: 6px;
200
  text-align: center;
201
  vertical-align: middle;
202
  }
203
- .w-factory-templates-101-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-templates-101-setup-content table.tax-rates td.sort {
212
  cursor: move;
213
  color: #ccc;
214
  }
215
- .w-factory-templates-101-setup-content table.tax-rates td.sort::before {
216
  content: "\f333";
217
  font-family: dashicons;
218
  }
219
- .w-factory-templates-101-setup-content table.tax-rates td.readonly {
220
  background: #f5f5f5;
221
  }
222
- .w-factory-templates-101-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-templates-101-setup-content table.tax-rates .add::before {
234
  content: "\f502";
235
  font-family: dashicons;
236
  position: absolute;
237
  left: 0;
238
  top: 0;
239
  }
240
- .w-factory-templates-101-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-templates-101-setup-content table.tax-rates .remove::before {
252
  content: "\f182";
253
  font-family: dashicons;
254
  position: absolute;
255
  left: 0;
256
  top: 0;
257
  }
258
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages {
259
  width: 100%;
260
  border-top: 1px solid #eee;
261
  }
262
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages thead th {
263
  display: none;
264
  }
265
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages .page-name {
266
  width: 30%;
267
  font-weight: 700;
268
  }
269
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages td,
270
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages th {
271
  padding: 14px 0;
272
  border-bottom: 1px solid #eee;
273
  }
274
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages td:first-child,
275
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages th:first-child {
276
  padding-right: 9px;
277
  }
278
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages th {
279
  padding-top: 0;
280
  }
281
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages .page-options p {
282
  color: #777;
283
  margin: 6px 0 0 24px;
284
  line-height: 1.75;
285
  }
286
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages .page-options p input {
287
  vertical-align: middle;
288
  margin: 1px 0 0;
289
  height: 1.75em;
290
  width: 1.75em;
291
  line-height: 1.75;
292
  }
293
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-pages .page-options p label {
294
  line-height: 1;
295
  }
296
  @media screen and (max-width: 782px) {
297
- .w-factory-templates-101-setup-content .form-table tbody th {
298
  width: auto;
299
  }
300
  }
301
- .w-factory-templates-101-setup-content .twitter-share-button {
302
  float: right;
303
  }
304
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps {
305
  overflow: hidden;
306
  margin: 0 0 24px;
307
  padding-bottom: 2px;
308
  }
309
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps h2 {
310
  margin-bottom: 12px;
311
  }
312
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps .w-factory-templates-101-setup-next-steps-first {
313
  float: left;
314
  width: 50%;
315
  box-sizing: border-box;
316
  }
317
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps .w-factory-templates-101-setup-next-steps-last {
318
  float: right;
319
  width: 50%;
320
  box-sizing: border-box;
321
  }
322
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul {
323
  padding: 0 2em 0 0;
324
  list-style: none outside;
325
  margin: 0;
326
  }
327
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul li a {
328
  display: block;
329
  padding: 0 0 0.75em;
330
  }
331
- .w-factory-templates-101-setup-content .w-factory-templates-101-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-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .setup-product a.button:active,
346
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .setup-product a.button:focus,
347
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .setup-product a.button:hover {
348
  background: #f5f5f5;
349
  border-color: #aaa;
350
  }
351
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .setup-product a.button-primary {
352
  color: #fff;
353
  background-color: #f19570;
354
  border-color: #f77d50;
355
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
356
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
357
  }
358
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .setup-product a.button-primary:active,
359
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .setup-product a.button-primary:focus,
360
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .setup-product a.button-primary:hover {
361
  color: #fff;
362
  background: #f77d50;
363
  border-color: #f77d50;
364
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
365
  }
366
- .w-factory-templates-101-setup-content .w-factory-templates-101-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-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .learn-more a::before {
378
  content: "\f105";
379
  }
380
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .video-walkthrough a::before {
381
  content: "\f126";
382
  }
383
- .w-factory-templates-101-setup-content .w-factory-templates-101-setup-next-steps ul .newsletter a::before {
384
  content: "\f465";
385
  }
386
- .w-factory-templates-101-setup-content .updated,
387
- .w-factory-templates-101-setup-content .woocommerce-newsletter {
388
  padding: 24px 24px 0;
389
  margin: 0 0 24px;
390
  overflow: hidden;
391
  background: #f5f5f5;
392
  }
393
- .w-factory-templates-101-setup-content .updated p,
394
- .w-factory-templates-101-setup-content .woocommerce-newsletter p {
395
  padding: 0;
396
  margin: 0 0 12px;
397
  }
398
- .w-factory-templates-101-setup-content .updated form,
399
- .w-factory-templates-101-setup-content .updated p:last-child,
400
- .w-factory-templates-101-setup-content .woocommerce-newsletter form,
401
- .w-factory-templates-101-setup-content .woocommerce-newsletter p:last-child {
402
  margin: 0 0 24px;
403
  }
404
- .w-factory-templates-101-setup-content .checkbox input[type=checkbox] {
405
  opacity: 0;
406
  position: absolute;
407
  left: -9999px;
408
  }
409
- .w-factory-templates-101-setup-content .checkbox label {
410
  position: relative;
411
  display: inline-block;
412
  padding-left: 28px;
413
  }
414
- .w-factory-templates-101-setup-content .checkbox label::after,
415
- .w-factory-templates-101-setup-content .checkbox label::before {
416
  position: absolute;
417
  content: "";
418
  display: inline-block;
419
  }
420
- .w-factory-templates-101-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-templates-101-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-templates-101-setup-content .checkbox input[type=checkbox] + label::after {
442
  content: none;
443
  }
444
- .w-factory-templates-101-setup-content .checkbox input[type=checkbox]:checked + label::after {
445
  content: "";
446
  }
447
- .w-factory-templates-101-setup-content .checkbox input[type=checkbox]:focus + label::before {
448
  outline: #3b99fc auto 5px;
449
  }
450
- .w-factory-templates-101-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-templates-105__form-buttons {
6
  text-align: right;
7
  padding: 10px;
8
  background: #f7f7f7;
9
  border-top: 1px solid #e8e8e8;
10
  }
11
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__skip-button {
12
  background-color: #e7e7e7;
13
  border-color: #e7e7e7;
14
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #e7e7e7;
16
  margin: 0;
17
  color: #8a8a8a;
18
  }
19
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__skip-button:active,
20
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__skip-button:hover,
21
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__skip-button:focus {
22
  background: #dddddd;
23
  border-color: #dddddd;
24
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #dddddd;
25
  color: #8a8a8a;
26
  }
27
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__continue-button {
28
  background-color: #f57d4f;
29
  border-color: #f77d50;
30
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
31
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
32
  margin: 0;
33
  }
34
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__continue-button:active,
35
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__continue-button:hover,
36
+ .w-factory-templates-105__form-buttons .w-factory-templates-105__continue-button:focus {
37
  background: #f86b3b;
38
  border-color: #f86b3b;
39
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f86b3b;
40
  }
41
+ .w-factory-templates-105-setup {
42
  text-align: center;
43
  max-width: 900px;
44
  margin: 65px auto 24px;
46
  background: #f1f1f1;
47
  padding: 0;
48
  }
49
+ .w-factory-templates-105-setup__inner-wrap,
50
+ .w-factory-templates-105__setup-form .factory-form-layout {
51
  padding: 30px;
52
  }
53
+ .w-factory-templates-105-setup-steps {
54
  padding: 0 0 24px;
55
  margin: 0;
56
  list-style: none outside;
60
  display: -webkit-inline-box;
61
  display: inline-flex;
62
  }
63
+ .w-factory-templates-105-setup-steps li {
64
  width: 100%;
65
  float: left;
66
  padding: 0 0 0.8em;
70
  border-bottom: 4px solid #ccc;
71
  line-height: 1.4;
72
  }
73
+ .w-factory-templates-105-setup-steps li::before {
74
  content: "";
75
  border: 4px solid #ccc;
76
  border-radius: 100%;
83
  margin-bottom: -8px;
84
  background: #fff;
85
  }
86
+ .w-factory-templates-105-setup-steps li.active {
87
  border-color: #ff1c40 !important;
88
  color: #222;
89
  font-weight: 700;
90
  }
91
+ .w-factory-templates-105-setup-steps li.active::before {
92
  border-color: #ff1c40 !important;
93
  }
94
+ .w-factory-templates-105-setup-steps li a {
95
  color: #a16696;
96
  text-decoration: none;
97
  padding: 1.5em;
99
  position: relative;
100
  z-index: 1;
101
  }
102
+ .w-factory-templates-105-setup-steps li a:focus,
103
+ .w-factory-templates-105-setup-steps li a:hover {
104
  color: #111;
105
  text-decoration: underline;
106
  }
107
+ /*.w-factory-templates-105-setup-steps li.done {
108
  border-color: #f57d4f;
109
  color: #f57d4f
110
  }
111
 
112
+ .w-factory-templates-105-setup-steps li.done::before {
113
  border-color: #f57d4f;
114
  background: #f57d4f
115
  }*/
116
+ .w-factory-templates-105-setup .w-factory-templates-105-setup-actions {
117
  overflow: hidden;
118
  margin: 20px 0 0;
119
  position: relative;
120
  }
121
+ .w-factory-templates-105-setup-content p:last-child {
122
  margin-bottom: 0;
123
  }
124
+ .w-factory-templates-105-setup-content p.store-setup {
125
  margin-top: 0;
126
  }
127
+ .w-factory-templates-105-setup-footer-links {
128
  font-size: 0.85em;
129
  color: #7b7b7b;
130
  margin: 1.18em auto;
131
  display: inline-block;
132
  text-align: center;
133
  }
134
+ .w-factory-templates-105-logo {
135
  text-align: center;
136
  }
137
+ .w-factory-templates-105-logo img {
138
  max-width: 250px;
139
  }
140
+ .w-factory-templates-105-setup-content {
141
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.13);
142
  margin: 0 0 20px;
143
  background: #fff;
144
  zoom: 1;
145
  text-align: left;
146
  }
147
+ .w-factory-templates-105-setup-content table {
148
  font-size: 1em;
149
  line-height: 1.75;
150
  color: #666;
151
  }
152
+ .w-factory-templates-105-setup-content table thead {
153
  background: #f1f1f1;
154
  }
155
+ .w-factory-templates-105-setup-content table th,
156
+ .w-factory-templates-105-setup-content table td {
157
  padding: 10px 15px;
158
  }
159
+ .w-factory-templates-105-setup-content h1,
160
+ .w-factory-templates-105-setup-content h2,
161
+ .w-factory-templates-105-setup-content h3,
162
+ .w-factory-templates-105-setup-content table {
163
  margin: 0 0 20px;
164
  border: 0;
165
  padding: 0;
167
  clear: none;
168
  font-weight: 500;
169
  }
170
+ .w-factory-templates-105-setup-content p {
171
  margin: 20px 0;
172
  font-size: 1.15em;
173
  line-height: 1.75;
174
  color: #666;
175
  text-align: center;
176
  }
177
+ .w-factory-templates-105-setup-step__new_onboarding-welcome {
178
  font-size: 22px !important;
179
  }
180
+ .w-factory-templates-105-setup-content a {
181
  color: #f57d4f;
182
  }
183
+ .w-factory-templates-105-setup-content a:focus,
184
+ .w-factory-templates-105-setup-content a:hover {
185
  color: #111;
186
  }
187
+ .w-factory-templates-105-setup-content table.tax-rates {
188
  width: 100%;
189
  font-size: 0.92em;
190
  }
191
+ .w-factory-templates-105-setup-content table.tax-rates th {
192
  padding: 0;
193
  text-align: center;
194
  width: auto;
195
  vertical-align: middle;
196
  }
197
+ .w-factory-templates-105-setup-content table.tax-rates td {
198
  border: 1px solid #f5f5f5;
199
  padding: 6px;
200
  text-align: center;
201
  vertical-align: middle;
202
  }
203
+ .w-factory-templates-105-setup-content table.tax-rates td input {
204
  outline: 0;
205
  border: 0;
206
  padding: 0;
208
  text-align: center;
209
  width: 100%;
210
  }
211
+ .w-factory-templates-105-setup-content table.tax-rates td.sort {
212
  cursor: move;
213
  color: #ccc;
214
  }
215
+ .w-factory-templates-105-setup-content table.tax-rates td.sort::before {
216
  content: "\f333";
217
  font-family: dashicons;
218
  }
219
+ .w-factory-templates-105-setup-content table.tax-rates td.readonly {
220
  background: #f5f5f5;
221
  }
222
+ .w-factory-templates-105-setup-content table.tax-rates .add {
223
  padding: 1em 0 0 1em;
224
  line-height: 1;
225
  font-size: 1em;
230
  position: relative;
231
  display: inline-block;
232
  }
233
+ .w-factory-templates-105-setup-content table.tax-rates .add::before {
234
  content: "\f502";
235
  font-family: dashicons;
236
  position: absolute;
237
  left: 0;
238
  top: 0;
239
  }
240
+ .w-factory-templates-105-setup-content table.tax-rates .remove {
241
  padding: 1em 0 0 1em;
242
  line-height: 1;
243
  font-size: 1em;
248
  position: relative;
249
  display: inline-block;
250
  }
251
+ .w-factory-templates-105-setup-content table.tax-rates .remove::before {
252
  content: "\f182";
253
  font-family: dashicons;
254
  position: absolute;
255
  left: 0;
256
  top: 0;
257
  }
258
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages {
259
  width: 100%;
260
  border-top: 1px solid #eee;
261
  }
262
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages thead th {
263
  display: none;
264
  }
265
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages .page-name {
266
  width: 30%;
267
  font-weight: 700;
268
  }
269
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages td,
270
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages th {
271
  padding: 14px 0;
272
  border-bottom: 1px solid #eee;
273
  }
274
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages td:first-child,
275
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages th:first-child {
276
  padding-right: 9px;
277
  }
278
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages th {
279
  padding-top: 0;
280
  }
281
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages .page-options p {
282
  color: #777;
283
  margin: 6px 0 0 24px;
284
  line-height: 1.75;
285
  }
286
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages .page-options p input {
287
  vertical-align: middle;
288
  margin: 1px 0 0;
289
  height: 1.75em;
290
  width: 1.75em;
291
  line-height: 1.75;
292
  }
293
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages .page-options p label {
294
  line-height: 1;
295
  }
296
  @media screen and (max-width: 782px) {
297
+ .w-factory-templates-105-setup-content .form-table tbody th {
298
  width: auto;
299
  }
300
  }
301
+ .w-factory-templates-105-setup-content .twitter-share-button {
302
  float: right;
303
  }
304
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps {
305
  overflow: hidden;
306
  margin: 0 0 24px;
307
  padding-bottom: 2px;
308
  }
309
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps h2 {
310
  margin-bottom: 12px;
311
  }
312
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps .w-factory-templates-105-setup-next-steps-first {
313
  float: left;
314
  width: 50%;
315
  box-sizing: border-box;
316
  }
317
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps .w-factory-templates-105-setup-next-steps-last {
318
  float: right;
319
  width: 50%;
320
  box-sizing: border-box;
321
  }
322
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul {
323
  padding: 0 2em 0 0;
324
  list-style: none outside;
325
  margin: 0;
326
  }
327
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul li a {
328
  display: block;
329
  padding: 0 0 0.75em;
330
  }
331
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button {
332
  background-color: #f7f7f7;
333
  border-color: #ccc;
334
  color: #23282d;
342
  padding: 1em;
343
  text-align: center;
344
  }
345
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button:active,
346
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button:focus,
347
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button:hover {
348
  background: #f5f5f5;
349
  border-color: #aaa;
350
  }
351
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button-primary {
352
  color: #fff;
353
  background-color: #f19570;
354
  border-color: #f77d50;
355
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
356
  text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
357
  }
358
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button-primary:active,
359
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button-primary:focus,
360
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button-primary:hover {
361
  color: #fff;
362
  background: #f77d50;
363
  border-color: #f77d50;
364
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
365
  }
366
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul li a::before {
367
  color: #82878c;
368
  font: 400 20px/1 dashicons;
369
  speak: none;
374
  text-decoration: none !important;
375
  vertical-align: top;
376
  }
377
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .learn-more a::before {
378
  content: "\f105";
379
  }
380
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .video-walkthrough a::before {
381
  content: "\f126";
382
  }
383
+ .w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .newsletter a::before {
384
  content: "\f465";
385
  }
386
+ .w-factory-templates-105-setup-content .updated,
387
+ .w-factory-templates-105-setup-content .woocommerce-newsletter {
388
  padding: 24px 24px 0;
389
  margin: 0 0 24px;
390
  overflow: hidden;
391
  background: #f5f5f5;
392
  }
393
+ .w-factory-templates-105-setup-content .updated p,
394
+ .w-factory-templates-105-setup-content .woocommerce-newsletter p {
395
  padding: 0;
396
  margin: 0 0 12px;
397
  }
398
+ .w-factory-templates-105-setup-content .updated form,
399
+ .w-factory-templates-105-setup-content .updated p:last-child,
400
+ .w-factory-templates-105-setup-content .woocommerce-newsletter form,
401
+ .w-factory-templates-105-setup-content .woocommerce-newsletter p:last-child {
402
  margin: 0 0 24px;
403
  }
404
+ .w-factory-templates-105-setup-content .checkbox input[type=checkbox] {
405
  opacity: 0;
406
  position: absolute;
407
  left: -9999px;
408
  }
409
+ .w-factory-templates-105-setup-content .checkbox label {
410
  position: relative;
411
  display: inline-block;
412
  padding-left: 28px;
413
  }
414
+ .w-factory-templates-105-setup-content .checkbox label::after,
415
+ .w-factory-templates-105-setup-content .checkbox label::before {
416
  position: absolute;
417
  content: "";
418
  display: inline-block;
419
  }
420
+ .w-factory-templates-105-setup-content .checkbox label::before {
421
  height: 16px;
422
  width: 16px;
423
  left: 0;
426
  background-color: #fff;
427
  border-radius: 3px;
428
  }
429
+ .w-factory-templates-105-setup-content .checkbox label::after {
430
  height: 5px;
431
  width: 9px;
432
  border-left: 2px solid;
438
  top: 7px;
439
  color: #fff;
440
  }
441
+ .w-factory-templates-105-setup-content .checkbox input[type=checkbox] + label::after {
442
  content: none;
443
  }
444
+ .w-factory-templates-105-setup-content .checkbox input[type=checkbox]:checked + label::after {
445
  content: "";
446
  }
447
+ .w-factory-templates-105-setup-content .checkbox input[type=checkbox]:focus + label::before {
448
  outline: #3b99fc auto 5px;
449
  }
450
+ .w-factory-templates-105-setup-content .checkbox input[type=checkbox]:checked + label::before {
451
  background: #935687;
452
  border-color: #935687;
453
  }
libs/factory/templates/assets/js/clearfy-globals.js CHANGED
@@ -2,8 +2,8 @@
2
  * Глобальный JS файл, который регистрирует глобальные переменные с общими методами для всех компонентов Clearfy
3
  * и самого Clearfy.
4
  *
5
- * $.wbcr_factory_templates_101.app - методы для работы с приложением. Скрыть, показать уведомления.
6
- * $.wbcr_factory_templates_101.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_templates_101 ) {
17
- $.wbcr_factory_templates_101 = {};
18
  }
19
 
20
  //todo: Переопредление для совместимости со старыми версиями плагинов.
21
- $.wbcr_factory_templates_101.filters = $.wbcr_factory_templates_101.filters || $.wfactory_449.filters;
22
  //todo: Переопредление для совместимости со старыми версиями плагинов.
23
- $.wbcr_factory_templates_101.hooks = $.wbcr_factory_templates_101.hooks || $.wfactory_449.hooks;
24
 
25
- $.wbcr_factory_templates_101.app = $.wbcr_factory_templates_101.app || {
26
  /**
27
  * Создает и показывает уведомление внутри интерфейса Clearfy
28
  *
@@ -68,12 +68,12 @@
68
  /**
69
  * Хук выполняет проивольную функцию, после того как уведомление отображено
70
  * Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
71
- * Пример регистрации хука $.wfactory_449.hooks.add('wbcr/factory_templates_101/updated',
72
  * function(noticeId) {});
73
  * @param {string} noticeId - id уведомления
74
  */
75
- $.wfactory_449.hooks.run('wbcr/factory_templates_101/showed_notice', [noticeId]);
76
- $.wfactory_449.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_449.hooks.add('wbcr/factory_templates_101/updated',
102
  * function(noticeId)
103
  * {});
104
  * @param {string} noticeId - id уведомления
105
  */
106
- $.wfactory_449.hooks.run('wbcr/factory_templates_101/hidded_notice', [noticeId]);
107
- $.wfactory_449.hooks.run('wbcr/clearfy/hidded_notice', [noticeId]);
108
  });
109
  },
110
 
@@ -121,7 +121,7 @@
121
 
122
  };
123
 
124
- $.wfactory_449.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_449.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_449.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_449.hooks.add('core/components/activation_error', function(plugin, button, response) {
179
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
180
- if( !($('#WBCR').length && $.wbcr_factory_templates_101) ) {
181
  return false;
182
  }
183
 
184
  button.closest('.plugin-card').addClass('plugin-status-deactive');
185
 
186
  if( response.data && response.data.error_message ) {
187
- $.wbcr_factory_templates_101.app.showNotice(response.data.error_message, 'danger');
188
  }
189
  });
190
 
191
- $.wfactory_449.hooks.add('core/components/update_error', function(button, data, response) {
192
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
193
- if( !($('#WBCR').length && $.wbcr_factory_templates_101) ) {
194
  return false;
195
  }
196
 
197
  if( response.data && response.data.error_message ) {
198
- $.wbcr_factory_templates_101.app.showNotice(response.data.error_message, 'danger');
199
  }
200
 
201
  });
202
 
203
- $.wfactory_449.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_449.hooks.add('core/components/ajax_error', function(xhr, ajaxOptions, thrownError) {
213
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
214
- if( !($('#WBCR').length && $.wbcr_factory_templates_101) ) {
215
  return false;
216
  }
217
 
218
- $.wbcr_factory_templates_101.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_templates_105.app - методы для работы с приложением. Скрыть, показать уведомления.
6
+ * $.wbcr_factory_templates_105.hooks - это иммитация хуков и фильтров аналогично тем, что используются в Wordpress
7
  *
8
  * Copyright 2018, Webcraftic, http://webcraftic.com
9
  *
13
  (function($) {
14
  'use strict';
15
 
16
+ if( !$.wbcr_factory_templates_105 ) {
17
+ $.wbcr_factory_templates_105 = {};
18
  }
19
 
20
  //todo: Переопредление для совместимости со старыми версиями плагинов.
21
+ $.wbcr_factory_templates_105.filters = $.wbcr_factory_templates_105.filters || $.wfactory_452.filters;
22
  //todo: Переопредление для совместимости со старыми версиями плагинов.
23
+ $.wbcr_factory_templates_105.hooks = $.wbcr_factory_templates_105.hooks || $.wfactory_452.hooks;
24
 
25
+ $.wbcr_factory_templates_105.app = $.wbcr_factory_templates_105.app || {
26
  /**
27
  * Создает и показывает уведомление внутри интерфейса Clearfy
28
  *
68
  /**
69
  * Хук выполняет проивольную функцию, после того как уведомление отображено
70
  * Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
71
+ * Пример регистрации хука $.wfactory_452.hooks.add('wbcr/factory_templates_105/updated',
72
  * function(noticeId) {});
73
  * @param {string} noticeId - id уведомления
74
  */
75
+ $.wfactory_452.hooks.run('wbcr/factory_templates_105/showed_notice', [noticeId]);
76
+ $.wfactory_452.hooks.run('wbcr/clearfy/showed_notice', [noticeId]);
77
  });
78
 
79
  return noticeId;
98
  /**
99
  * Хук выполняет проивольную функцию, после того как уведомление скрыто
100
  * Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
101
+ * Пример регистрации хука $.wfactory_452.hooks.add('wbcr/factory_templates_105/updated',
102
  * function(noticeId)
103
  * {});
104
  * @param {string} noticeId - id уведомления
105
  */
106
+ $.wfactory_452.hooks.run('wbcr/factory_templates_105/hidded_notice', [noticeId]);
107
+ $.wfactory_452.hooks.run('wbcr/clearfy/hidded_notice', [noticeId]);
108
  });
109
  },
110
 
121
 
122
  };
123
 
124
+ $.wfactory_452.hooks.add('core/components/pre_activate', function(button) {
125
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
126
  if( !$('#WBCR').length ) {
127
  return false;
137
  }
138
  });
139
 
140
+ $.wfactory_452.hooks.add('core/components/deactivated', function(button, data, response) {
141
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
142
  if( !$('#WBCR').length ) {
143
  return false;
156
  }
157
  });
158
 
159
+ $.wfactory_452.hooks.add('core/components/deleted', function(button) {
160
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
161
  if( !$('#WBCR').length ) {
162
  return false;
175
  }
176
  });
177
 
178
+ $.wfactory_452.hooks.add('core/components/activation_error', function(plugin, button, response) {
179
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
180
+ if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
181
  return false;
182
  }
183
 
184
  button.closest('.plugin-card').addClass('plugin-status-deactive');
185
 
186
  if( response.data && response.data.error_message ) {
187
+ $.wbcr_factory_templates_105.app.showNotice(response.data.error_message, 'danger');
188
  }
189
  });
190
 
191
+ $.wfactory_452.hooks.add('core/components/update_error', function(button, data, response) {
192
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
193
+ if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
194
  return false;
195
  }
196
 
197
  if( response.data && response.data.error_message ) {
198
+ $.wbcr_factory_templates_105.app.showNotice(response.data.error_message, 'danger');
199
  }
200
 
201
  });
202
 
203
+ $.wfactory_452.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_452.hooks.add('core/components/ajax_error', function(xhr, ajaxOptions, thrownError) {
213
  // Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
214
+ if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
215
  return false;
216
  }
217
 
218
+ $.wbcr_factory_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
219
  });
220
 
221
  })(jQuery);
libs/factory/templates/assets/js/clearfy-license-manager.js CHANGED
@@ -20,7 +20,7 @@ jQuery(function($) {
20
  licenseAction = $(this).data('action');
21
 
22
  for( i = 0; i < allNotices.length; i++ ) {
23
- $.wbcr_factory_templates_101.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_templates_101.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_templates_101.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_templates_101.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_templates_105.app.hideNotice(allNotices[i]);
24
  }
25
 
26
  $('.wcl-control-btn').hide();
53
 
54
  if( response.data ) {
55
  console.log(response.data.error_message);
56
+ noticeId = $.wbcr_factory_templates_105.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
57
  allNotices.push(noticeId);
58
  } else {
59
  console.log(response);
63
  }
64
 
65
  if( response.data && response.data.message ) {
66
+ noticeId = $.wbcr_factory_templates_105.app.showNotice(response.data.message, 'success');
67
  allNotices.push(noticeId);
68
 
69
  // todo: доработать генерацию формы, вместо перезагрузки страницы
80
  console.log(xhr.responseText);
81
  console.log(thrownError);
82
 
83
+ var noticeId = $.wbcr_factory_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
84
 
85
  allNotices.push(noticeId);
86
  }
libs/factory/templates/assets/js/clearfy-search-options.js CHANGED
@@ -39,10 +39,10 @@
39
  throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
40
  }
41
 
42
- $('#wbcr-factory-templates-101__autocomplete').wfactory_clearfy_autocomplete({
43
  lookup: wfactory_clearfy_search_options,
44
  onSelect: function(suggestion) {
45
- $('#wbcr-factory-templates-101__autocomplete').prop("disabled", true);
46
  window.location.href = suggestion.data.page_url;
47
  }
48
  });
39
  throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
40
  }
41
 
42
+ $('#wbcr-factory-templates-105__autocomplete').wfactory_clearfy_autocomplete({
43
  lookup: wfactory_clearfy_search_options,
44
  onSelect: function(suggestion) {
45
+ $('#wbcr-factory-templates-105__autocomplete').prop("disabled", true);
46
  window.location.href = suggestion.data.page_url;
47
  }
48
  });
libs/factory/templates/assets/js/clearfy-widgets.js CHANGED
@@ -25,9 +25,9 @@ jQuery(function($) {
25
  if( !response || !response.success ) {
26
  if( response.data ) {
27
  console.log(response.data.error_message);
28
- noticeId = $.wbcr_factory_templates_101.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
29
  setTimeout(function() {
30
- $.wbcr_factory_templates_101.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_templates_101.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
56
  setTimeout(function() {
57
- $.wbcr_factory_templates_101.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_templates_105.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
29
  setTimeout(function() {
30
+ $.wbcr_factory_templates_105.app.hideNotice(noticeId);
31
  }, 5000);
32
  } else {
33
  console.log(response);
52
  console.log(xhr.responseText);
53
  console.log(thrownError);
54
 
55
+ var noticeId = $.wbcr_factory_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
56
  setTimeout(function() {
57
+ $.wbcr_factory_templates_105.app.hideNotice(noticeId);
58
  }, 5000);
59
  }
60
  });
libs/factory/templates/assets/js/libs/jquery.autocomplete.min.js CHANGED
@@ -5,4 +5,4 @@
5
  * Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
6
  * For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
7
  */
8
- !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=this;e.element=c,e.el=a(c),e.suggestions=[],e.badQueries=[],e.selectedIndex=-1,e.currentValue=e.element.value,e.timeoutId=null,e.cachedResponse={},e.onChangeTimeout=null,e.onChange=null,e.isLocal=!1,e.suggestionsContainer=null,e.noSuggestionsContainer=null,e.options=a.extend(!0,{},b.defaults,d),e.classes={selected:"wbcr-factory-templates-101__autocomplete-selected",suggestion:"wbcr-factory-templates-101__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-templates-101__autocomplete-group">'+b+"</div>"}var g=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),h={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40},i=a.noop;b.utils=g,a.Autocomplete=b,b.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:e,formatGroup:f,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,containerClass:"wbcr-factory-templates-101__autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:c,paramName:"query",transformResult:d,showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},b.prototype={initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo||"body"),"auto"!==g.width&&c.css("width",g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),c.on("click.autocomplete",function(){clearTimeout(d.blurTimeoutId)}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.disabled||(a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange())},onBlur:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);b.blurTimeoutId=setTimeout(function(){b.hide(),b.selection&&b.currentValue!==e&&(c.onInvalidateSelection||a.noop).call(b.element)},200)},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=a.extend({},c.options,b);c.isLocal=Array.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex}),this.options=d},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearTimeout(a.onChangeTimeout),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.top+=d.scrollTop,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()+"px"),c.css(i)}},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:!document.selection||(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length)},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===h.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case h.ESC:b.el.val(b.currentValue),b.hide();break;case h.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case h.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(b.selectedIndex===-1)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case h.RETURN:if(b.selectedIndex===-1)return void b.hide();b.select(b.selectedIndex);break;case h.UP:b.moveUp();break;case h.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case h.UP:case h.DOWN:return}clearTimeout(b.onChangeTimeout),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeTimeout=setTimeout(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){if(this.ignoreValueChange)return void(this.ignoreValueChange=!1);var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearTimeout(b.onChangeTimeout),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,h.onSearchStart.call(g.element,h.params)!==!1){if(d=h.ignoreParams?null:h.params,a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&Array.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearTimeout(b.onChangeTimeout),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var f=a.data[e];return b===f?"":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g,a)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=b.options.beforeRender,d=a(b.suggestionsContainer),e=a(b.noSuggestionsContainer);this.adjustContainerWidth(),e.detach(),d.empty(),d.append(e),a.isFunction(c)&&c.call(b.element,d,b.suggestions),b.fixPosition(),d.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width?(b=c.el.outerWidth(),e.css("width",b>0?b:300)):"flex"===d.width&&e.css("width","")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),a.inArray(b,["auto","bottom","top"])===-1&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,d.selectedIndex!==-1&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(b.selectedIndex!==-1)return 0===b.selectedIndex?(a(b.suggestionsContainer).children("."+b.classes.suggestion).first().removeClass(b.classes.selected),b.selectedIndex=-1,b.ignoreValueChange=!1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,e<f?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||(c.ignoreValueChange=!0,c.el.val(c.getValue(c.suggestions[b].value))),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)},a.fn.wfactory_clearfy_autocomplete||(a.fn.wfactory_clearfy_autocomplete=a.fn.devbridgeAutocomplete)});
5
  * Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
6
  * For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
7
  */
8
+ !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=this;e.element=c,e.el=a(c),e.suggestions=[],e.badQueries=[],e.selectedIndex=-1,e.currentValue=e.element.value,e.timeoutId=null,e.cachedResponse={},e.onChangeTimeout=null,e.onChange=null,e.isLocal=!1,e.suggestionsContainer=null,e.noSuggestionsContainer=null,e.options=a.extend(!0,{},b.defaults,d),e.classes={selected:"wbcr-factory-templates-105__autocomplete-selected",suggestion:"wbcr-factory-templates-105__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-templates-105__autocomplete-group">'+b+"</div>"}var g=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),h={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40},i=a.noop;b.utils=g,a.Autocomplete=b,b.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:e,formatGroup:f,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,containerClass:"wbcr-factory-templates-105__autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:c,paramName:"query",transformResult:d,showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},b.prototype={initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo||"body"),"auto"!==g.width&&c.css("width",g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),c.on("click.autocomplete",function(){clearTimeout(d.blurTimeoutId)}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.disabled||(a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange())},onBlur:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);b.blurTimeoutId=setTimeout(function(){b.hide(),b.selection&&b.currentValue!==e&&(c.onInvalidateSelection||a.noop).call(b.element)},200)},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=a.extend({},c.options,b);c.isLocal=Array.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex}),this.options=d},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearTimeout(a.onChangeTimeout),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.top+=d.scrollTop,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()+"px"),c.css(i)}},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:!document.selection||(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length)},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===h.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case h.ESC:b.el.val(b.currentValue),b.hide();break;case h.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case h.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(b.selectedIndex===-1)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case h.RETURN:if(b.selectedIndex===-1)return void b.hide();b.select(b.selectedIndex);break;case h.UP:b.moveUp();break;case h.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case h.UP:case h.DOWN:return}clearTimeout(b.onChangeTimeout),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeTimeout=setTimeout(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){if(this.ignoreValueChange)return void(this.ignoreValueChange=!1);var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearTimeout(b.onChangeTimeout),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,h.onSearchStart.call(g.element,h.params)!==!1){if(d=h.ignoreParams?null:h.params,a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&Array.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearTimeout(b.onChangeTimeout),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var f=a.data[e];return b===f?"":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g,a)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=b.options.beforeRender,d=a(b.suggestionsContainer),e=a(b.noSuggestionsContainer);this.adjustContainerWidth(),e.detach(),d.empty(),d.append(e),a.isFunction(c)&&c.call(b.element,d,b.suggestions),b.fixPosition(),d.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width?(b=c.el.outerWidth(),e.css("width",b>0?b:300)):"flex"===d.width&&e.css("width","")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),a.inArray(b,["auto","bottom","top"])===-1&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,d.selectedIndex!==-1&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(b.selectedIndex!==-1)return 0===b.selectedIndex?(a(b.suggestionsContainer).children("."+b.classes.suggestion).first().removeClass(b.classes.selected),b.selectedIndex=-1,b.ignoreValueChange=!1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,e<f?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||(c.ignoreValueChange=!0,c.el.val(c.getValue(c.suggestions[b].value))),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)},a.fn.wfactory_clearfy_autocomplete||(a.fn.wfactory_clearfy_autocomplete=a.fn.devbridgeAutocomplete)});
libs/factory/templates/boot.php CHANGED
@@ -3,7 +3,7 @@
3
  * Factory Templates
4
  *
5
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
6
- * @since 1.0.0
7
  * @package clearfy
8
  * @copyright (c) 2018, Webcraftic Ltd
9
  *
@@ -14,22 +14,22 @@ if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
 
17
- if( defined('FACTORY_TEMPLATES_101_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_TEMPLATES_101_LOADED', true);
22
 
23
- define('FACTORY_TEMPLATES_101', '1.0.1');
24
 
25
- define('FACTORY_TEMPLATES_101_DIR', dirname(__FILE__));
26
- define('FACTORY_TEMPLATES_101_URL', plugins_url(null, __FILE__));
27
 
28
- load_plugin_textdomain('wbcr_factory_templates_101', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
- require(FACTORY_TEMPLATES_101_DIR . '/includes/ajax-handlers.php');
31
- require(FACTORY_TEMPLATES_101_DIR . '/includes/class-helpers.php');
32
- require(FACTORY_TEMPLATES_101_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-templates-101-global', FACTORY_TEMPLATES_101_URL . '/assets/js/clearfy-globals.js', [
42
  'jquery',
43
- 'wfactory-449-core-general'
44
- ], FACTORY_TEMPLATES_101);
45
 
46
- require_once FACTORY_TEMPLATES_101_DIR . '/includes/class-search-options.php';
47
- $all_options = \WBCR\Factory_Templates_101\Search_Options::get_all_options();
48
 
49
  if( empty($all_options) ) {
50
  return;
@@ -72,21 +72,21 @@ if( is_admin() ) {
72
  //return;
73
  //}
74
 
75
- wp_localize_script('wbcr-factory-templates-101-global', 'wfactory_clearfy_search_options', $formated_options);
76
  });
77
 
78
- if( defined('FACTORY_PAGES_448_LOADED') ) {
79
- require(FACTORY_TEMPLATES_101_DIR . '/pages/templates/impressive/class-page-template-impressive.php');
80
- require(FACTORY_TEMPLATES_101_DIR . '/pages/templates/impressive/class-pages.php');
81
- require(FACTORY_TEMPLATES_101_DIR . '/pages/templates/impressive-lite/class-page-template-impressive-lite.php');
82
 
83
- require(FACTORY_TEMPLATES_101_DIR . '/pages/class-page-more-features.php');
84
- require(FACTORY_TEMPLATES_101_DIR . '/pages/class-page-license.php');
85
- require(FACTORY_TEMPLATES_101_DIR . '/pages/class-pages-components.php');
86
 
87
- require(FACTORY_TEMPLATES_101_DIR . '/pages/setup-parts/class-step.php');
88
- require(FACTORY_TEMPLATES_101_DIR . '/pages/setup-parts/class-step-form.php');
89
- require(FACTORY_TEMPLATES_101_DIR . '/pages/setup-parts/class-step-custom.php');
90
- require(FACTORY_TEMPLATES_101_DIR . '/pages/class-page-setup.php');
91
  }
92
  }
3
  * Factory Templates
4
  *
5
  * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
6
+ * @since 1.0.2
7
  * @package clearfy
8
  * @copyright (c) 2018, Webcraftic Ltd
9
  *
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_TEMPLATES_105_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_TEMPLATES_105_LOADED', true);
22
 
23
+ define('FACTORY_TEMPLATES_105', '1.0.5');
24
 
25
+ define('FACTORY_TEMPLATES_105_DIR', dirname(__FILE__));
26
+ define('FACTORY_TEMPLATES_105_URL', plugins_url(null, __FILE__));
27
 
28
+ load_plugin_textdomain('wbcr_factory_templates_105', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
+ require(FACTORY_TEMPLATES_105_DIR . '/includes/ajax-handlers.php');
31
+ require(FACTORY_TEMPLATES_105_DIR . '/includes/class-helpers.php');
32
+ require(FACTORY_TEMPLATES_105_DIR . '/includes/class-configurate.php');
33
 
34
  // module provides function only for the admin area
35
  if( is_admin() ) {
38
  * на все страницы админпанели.
39
  */
40
  add_action('admin_enqueue_scripts', function ($hook) {
41
+ wp_enqueue_script('wbcr-factory-templates-105-global', FACTORY_TEMPLATES_105_URL . '/assets/js/clearfy-globals.js', [
42
  'jquery',
43
+ 'wfactory-452-core-general'
44
+ ], FACTORY_TEMPLATES_105);
45
 
46
+ require_once FACTORY_TEMPLATES_105_DIR . '/includes/class-search-options.php';
47
+ $all_options = \WBCR\Factory_Templates_105\Search_Options::get_all_options();
48
 
49
  if( empty($all_options) ) {
50
  return;
72
  //return;
73
  //}
74
 
75
+ wp_localize_script('wbcr-factory-templates-105-global', 'wfactory_clearfy_search_options', $formated_options);
76
  });
77
 
78
+ if( defined('FACTORY_PAGES_451_LOADED') ) {
79
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/templates/impressive/class-page-template-impressive.php');
80
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/templates/impressive/class-pages.php');
81
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/templates/impressive-lite/class-page-template-impressive-lite.php');
82
 
83
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/class-page-more-features.php');
84
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/class-page-license.php');
85
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/class-pages-components.php');
86
 
87
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/setup-parts/class-step.php');
88
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/setup-parts/class-step-form.php');
89
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/setup-parts/class-step-custom.php');
90
+ require(FACTORY_TEMPLATES_105_DIR . '/pages/class-page-setup.php');
91
  }
92
  }
libs/factory/templates/includes/ajax-handlers.php CHANGED
@@ -15,12 +15,12 @@ if( !defined('ABSPATH') ) {
15
  /**
16
  * Обработчик ajax запросов для виджета подписки на новости
17
  *
18
- * @param Wbcr_Factory449_Plugin $plugin_instance
19
  *
20
  * @since 2.3.0
21
  *
22
  */
23
- function wbcr_factory_templates_101_subscribe($plugin_instance)
24
  {
25
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
26
 
@@ -34,11 +34,11 @@ function wbcr_factory_templates_101_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_templates_101')]);
38
  }
39
 
40
  if( empty($group_id) ) {
41
- wp_send_json_error(['error_message' => __('Group ID is empty!', 'wbcr_factory_templates_101')]);
42
  }
43
 
44
  $response = wp_remote_post('https://clearfy.pro/wp-json/mailerlite/v1/subscribe/', [
@@ -63,7 +63,7 @@ function wbcr_factory_templates_101_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_templates_101')]);
67
 
68
  die();
69
  }
@@ -71,12 +71,12 @@ function wbcr_factory_templates_101_subscribe($plugin_instance)
71
  /**
72
  * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
73
  *
74
- * @param Wbcr_Factory449_Plugin $plugin_instance
75
  *
76
  * @since 2.0.7
77
  *
78
  */
79
- function wbcr_factory_templates_101_check_license($plugin_instance)
80
  {
81
 
82
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
@@ -91,7 +91,7 @@ function wbcr_factory_templates_101_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_templates_101')]);
95
  die();
96
  }
97
 
@@ -102,23 +102,23 @@ function wbcr_factory_templates_101_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_templates_101')]);
106
  } else {
107
  $plugin_instance->premium->activate($license_key);
108
- $success_message = __('Your license has been successfully activated', 'wbcr_factory_templates_101');
109
  }
110
  break;
111
  case 'deactivate':
112
  $plugin_instance->premium->deactivate();
113
- $success_message = __('The license is deactivated', 'wbcr_factory_templates_101');
114
  break;
115
  case 'sync':
116
  $plugin_instance->premium->sync();
117
- $success_message = __('The license has been updated', 'wbcr_factory_templates_101');
118
  break;
119
  case 'unsubscribe':
120
  $plugin_instance->premium->cancel_paid_subscription();
121
- $success_message = __('Subscription success cancelled', 'wbcr_factory_templates_101');
122
  break;
123
  }
124
  } catch( Exception $e ) {
15
  /**
16
  * Обработчик ajax запросов для виджета подписки на новости
17
  *
18
+ * @param Wbcr_Factory452_Plugin $plugin_instance
19
  *
20
  * @since 2.3.0
21
  *
22
  */
23
+ function wbcr_factory_templates_105_subscribe($plugin_instance)
24
  {
25
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
26
 
34
  check_admin_referer("clearfy_subscribe_for_{$plugin_name}");
35
 
36
  if( empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
37
+ wp_send_json_error(['error_message' => __('You did not send your email address or it is incorrect!', 'wbcr_factory_templates_105')]);
38
  }
39
 
40
  if( empty($group_id) ) {
41
+ wp_send_json_error(['error_message' => __('Group ID is empty!', 'wbcr_factory_templates_105')]);
42
  }
43
 
44
  $response = wp_remote_post('https://clearfy.pro/wp-json/mailerlite/v1/subscribe/', [
63
  wp_send_json_success(['subscribed' => $data['subscribed']]);
64
  }
65
 
66
+ wp_send_json_error(['error_message' => __('Unknown error while trying to subscribe to newsletter.', 'wbcr_factory_templates_105')]);
67
 
68
  die();
69
  }
71
  /**
72
  * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
73
  *
74
+ * @param Wbcr_Factory452_Plugin $plugin_instance
75
  *
76
  * @since 2.0.7
77
  *
78
  */
79
+ function wbcr_factory_templates_105_check_license($plugin_instance)
80
  {
81
 
82
  $plugin_name = $plugin_instance->request->post('plugin_name', null, true);
91
  check_admin_referer("clearfy_activate_license_for_{$plugin_name}");
92
 
93
  if( empty($action) || !in_array($action, ['activate', 'deactivate', 'sync', 'unsubscribe']) ) {
94
+ wp_send_json_error(['error_message' => __('Licensing action not passed or this action is prohibited!', 'wbcr_factory_templates_105')]);
95
  die();
96
  }
97
 
102
  switch( $action ) {
103
  case 'activate':
104
  if( empty($license_key) || strlen($license_key) > 32 ) {
105
+ wp_send_json_error(['error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'wbcr_factory_templates_105')]);
106
  } else {
107
  $plugin_instance->premium->activate($license_key);
108
+ $success_message = __('Your license has been successfully activated', 'wbcr_factory_templates_105');
109
  }
110
  break;
111
  case 'deactivate':
112
  $plugin_instance->premium->deactivate();
113
+ $success_message = __('The license is deactivated', 'wbcr_factory_templates_105');
114
  break;
115
  case 'sync':
116
  $plugin_instance->premium->sync();
117
+ $success_message = __('The license has been updated', 'wbcr_factory_templates_105');
118
  break;
119
  case 'unsubscribe':
120
  $plugin_instance->premium->cancel_paid_subscription();
121
+ $success_message = __('Subscription success cancelled', 'wbcr_factory_templates_105');
122
  break;
123
  }
124
  } catch( Exception $e ) {
libs/factory/templates/includes/class-configurate.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Templates_101;
4
 
5
  // Exit if accessed directly
6
  if( !defined('ABSPATH') ) {
@@ -19,9 +19,9 @@ if( !defined('ABSPATH') ) {
19
  abstract class Configurate {
20
 
21
  /**
22
- * @param \Wbcr_Factory449_Plugin $plugin
23
  */
24
- public function __construct(\Wbcr_Factory449_Plugin $plugin)
25
  {
26
  $this->plugin = $plugin;
27
  $this->registerActionsAndFilters();
1
  <?php
2
 
3
+ namespace WBCR\Factory_Templates_105;
4
 
5
  // Exit if accessed directly
6
  if( !defined('ABSPATH') ) {
19
  abstract class Configurate {
20
 
21
  /**
22
+ * @param \Wbcr_Factory452_Plugin $plugin
23
  */
24
+ public function __construct(\Wbcr_Factory452_Plugin $plugin)
25
  {
26
  $this->plugin = $plugin;
27
  $this->registerActionsAndFilters();
libs/factory/templates/includes/class-helpers.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- namespace WBCR\Factory_Templates_101;
3
 
4
  // Exit if accessed directly
5
  if( !defined('ABSPATH') ) {
1
  <?php
2
+ namespace WBCR\Factory_Templates_105;
3
 
4
  // Exit if accessed directly
5
  if( !defined('ABSPATH') ) {
libs/factory/templates/includes/class-search-options.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Templates_101;
4
 
5
  /**
6
  * Class Search options
1
  <?php
2
 
3
+ namespace WBCR\Factory_Templates_105;
4
 
5
  /**
6
  * Class Search options
libs/factory/templates/pages/class-page-license.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Templates_101\Pages;
4
 
5
  // Exit if accessed directly
6
  if( !defined('ABSPATH') ) {
@@ -82,7 +82,7 @@ class License extends PageBase {
82
 
83
  /**
84
  * @since 2.0.7
85
- * @var \WBCR\Factory_449\Premium\Provider
86
  */
87
  protected $premium;
88
 
@@ -100,7 +100,7 @@ class License extends PageBase {
100
 
101
  /**
102
  * @since 2.0.7
103
- * @var \WBCR\Factory_449\Premium\Interfaces\License
104
  */
105
  protected $premium_license;
106
 
@@ -109,9 +109,9 @@ class License extends PageBase {
109
 
110
  /**
111
  * {@inheritdoc}
112
- * @param \Wbcr_Factory449_Plugin $plugin
113
  */
114
- public function __construct(\Wbcr_Factory449_Plugin $plugin)
115
  {
116
  $this->plugin = $plugin;
117
 
@@ -138,8 +138,8 @@ class License extends PageBase {
138
  {
139
  parent::assets($scripts, $styles);
140
 
141
- $this->styles->add(FACTORY_TEMPLATES_101_URL . '/assets/css/license-manager.css');
142
- $this->scripts->add(FACTORY_TEMPLATES_101_URL . '/assets/js/clearfy-license-manager.js');
143
  }
144
 
145
  /**
@@ -149,7 +149,7 @@ class License extends PageBase {
149
  */
150
  public function ajax_handler()
151
  {
152
- wbcr_factory_templates_101_check_license($this->plugin);
153
  }
154
 
155
  /**
@@ -159,7 +159,7 @@ class License extends PageBase {
159
  {
160
  ?>
161
  <div id="wcl-license-wrapper"
162
- data-loader="<?php echo FACTORY_TEMPLATES_101_URL . '/assets/img/loader.gif'; ?>"
163
  data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
164
  data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
165
  <?php $this->show_license_form(); ?>
@@ -265,11 +265,11 @@ class License extends PageBase {
265
  if( $this->is_premium ):
266
  ?>
267
  <p style="margin-top: 10px;">
268
- <?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'wbcr_factory_templates_101'), $this->plugin->get_support()->get_pricing_url(true, 'license_page')); ?>
269
  </p>
270
  <?php else: ?>
271
  <p style="margin-top: 10px;">
272
- <?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'wbcr_factory_templates_101'), $this->plugin->get_support()->get_contacts_url(true, 'license_page')) ?>
273
  </p>
274
  <?php endif;
275
  }
@@ -281,16 +281,16 @@ class License extends PageBase {
281
  {
282
  ?>
283
  <div id="license-manager"
284
- class="factory-bootstrap-449 onp-page-wrap <?= $this->get_license_type() ?>-license-manager-content">
285
  <div>
286
- <h3><?php printf(__('Activate %s', 'wbcr_factory_templates_101'), $this->plan_name) ?></h3>
287
  <?php echo $this->get_plan_description() ?>
288
  </div>
289
  <br>
290
  <?php if( is_wp_error($notice) ) : ?>
291
- <div class="license-message <?= $this->get_license_type() ?>-license-message">
292
  <div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
293
- <h4 class="alert-heading"><?php _e($notice->get_error_message(), 'wbcr_factory_templates_101') ?></h4>
294
  </div>
295
  </div>
296
  <?php endif; ?>
@@ -300,20 +300,20 @@ class License extends PageBase {
300
  <a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
301
  class="purchase-premium" target="_blank" rel="noopener">
302
  <span class="btn btn-gold btn-inner-wrap">
303
- <?php _e('Upgrade to Premium', 'wbcr_factory_templates_101') ?>
304
  </span>
305
  </a>
306
- <p><?php printf(__('Your current license for %1$s:', 'wbcr_factory_templates_101'), $this->plugin->getPluginTitle()) ?></p>
307
  <?php endif; ?>
308
- <div class="license-details-block <?= $this->get_license_type() ?>-details-block">
309
  <?php if( $this->is_premium ): ?>
310
  <a data-action="deactivate" href="#"
311
  class="btn btn-default btn-small license-delete-button wcl-control-btn">
312
- <?php _e('Delete Key', 'wbcr_factory_templates_101') ?>
313
  </a>
314
  <a data-action="sync" href="#"
315
  class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
316
- <?php _e('Synchronization', 'wbcr_factory_templates_101') ?>
317
  </a>
318
  <?php endif; ?>
319
  <h3>
@@ -327,24 +327,24 @@ class License extends PageBase {
327
  </h3>
328
  <?php if( $this->is_premium ): ?>
329
  <div class="license-key-identity">
330
- <code><?= esc_attr($this->get_hidden_license_key()) ?></code>
331
  </div>
332
  <?php endif; ?>
333
  <div class="license-key-description">
334
  <?php if( !$this->is_premium ): ?>
335
- <p><?php _e('Public License is a GPLv3 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'wbcr_factory_templates_101') ?></p>
336
  <?php else: ?>
337
- <p><?php _e('Сommercial license, only to the premium add-on to this free plugin. You cannot distribute or modify the premium add-on. But free plugin is a GPLv3 compatible license allowing you to change and use this version of the plugin for free.', 'wbcr_factory_templates_101') ?></p>
338
  <?php endif; ?>
339
  <?php if( $this->is_premium && $this->premium_has_subscription ): ?>
340
  <p class="activate-trial-hint">
341
- <?php _e('You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wcl-control-btn" href="#">cancel subscription</a>', 'wbcr_factory_templates_101') ?>
342
  </p>
343
  <?php endif; ?>
344
 
345
  <?php if( $this->get_license_type() == 'trial' ): ?>
346
  <p class="activate-error-hint">
347
- <?php printf(__('Your license has expired, please extend the license to get updates and support.', 'wbcr_factory_templates_101'), '') ?>
348
  </p>
349
  <?php endif; ?>
350
  </div>
@@ -352,30 +352,30 @@ class License extends PageBase {
352
  <tr>
353
  <!--<td class="license-param license-param-domain">
354
  <span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
355
- <span class="license-value-name"><?php _e('domain', 'wbcr_factory_templates_101') ?></span>
356
  </td>-->
357
  <td class="license-param license-param-days">
358
- <span class="license-value"><?= $this->get_plan() ?></span>
359
- <span class="license-value-name"><?php _e('plan', 'wbcr_factory_templates_101') ?></span>
360
  </td>
361
  <?php if( $this->is_premium ) : ?>
362
  <td class="license-param license-param-sites">
363
  <span class="license-value">
364
  <?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>
365
-
1
  <?php
2
 
3
+ namespace WBCR\Factory_Templates_105\Pages;
4
 
5
  // Exit if accessed directly
6
  if( !defined('ABSPATH') ) {
82
 
83
  /**
84
  * @since 2.0.7
85
+ * @var \WBCR\Factory_452\Premium\Provider
86
  */
87
  protected $premium;
88
 
100
 
101
  /**
102
  * @since 2.0.7
103
+ * @var \WBCR\Factory_452\Premium\Interfaces\License
104
  */
105
  protected $premium_license;
106
 
109
 
110
  /**
111
  * {@inheritdoc}
112
+ * @param \Wbcr_Factory452_Plugin $plugin
113
  */
114
+ public function __construct(\Wbcr_Factory452_Plugin $plugin)
115
  {
116
  $this->plugin = $plugin;
117
 
138
  {
139
  parent::assets($scripts, $styles);
140
 
141
+ $this->styles->add(FACTORY_TEMPLATES_105_URL . '/assets/css/license-manager.css');
142
+ $this->scripts->add(FACTORY_TEMPLATES_105_URL . '/assets/js/clearfy-license-manager.js');
143
  }
144
 
145
  /**
149
  */
150
  public function ajax_handler()
151
  {
152
+ wbcr_factory_templates_105_check_license($this->plugin);
153
  }
154
 
155
  /**
159
  {
160
  ?>
161
  <div id="wcl-license-wrapper"
162
+ data-loader="<?php echo FACTORY_TEMPLATES_105_URL . '/assets/img/loader.gif'; ?>"
163
  data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
164
  data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
165
  <?php $this->show_license_form(); ?>
265
  if( $this->is_premium ):
266
  ?>
267
  <p style="margin-top: 10px;">
268
+ <?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'wbcr_factory_templates_105'), $this->plugin->get_support()->get_pricing_url(true, 'license_page')); ?>
269
  </p>
270
  <?php else: ?>
271
  <p style="margin-top: 10px;">
272
+ <?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'wbcr_factory_templates_105'), $this->plugin->get_support()->get_contacts_url(true, 'license_page')) ?>
273
  </p>
274
  <?php endif;
275
  }
281
  {
282
  ?>
283
  <div id="license-manager"
284
+ class="factory-bootstrap-453 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content">
285
  <div>
286
+ <h3><?php printf(__('Activate %s', 'wbcr_factory_templates_105'), $this->plan_name) ?></h3>
287
  <?php echo $this->get_plan_description() ?>
288
  </div>
289
  <br>
290
  <?php if( is_wp_error($notice) ) : ?>
291
+ <div class="license-message <?php echo $this->get_license_type() ?>-license-message">
292
  <div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
293
+ <h4 class="alert-heading"><?php _e($notice->get_error_message(), 'wbcr_factory_templates_105') ?></h4>
294
  </div>
295
  </div>
296
  <?php endif; ?>
300
  <a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
301
  class="purchase-premium" target="_blank" rel="noopener">
302
  <span class="btn btn-gold btn-inner-wrap">
303
+ <?php _e('Upgrade to Premium', 'wbcr_factory_templates_105') ?>
304
  </span>
305
  </a>
306
+ <p><?php printf(__('Your current license for %1$s:', 'wbcr_factory_templates_105'), $this->plugin->getPluginTitle()) ?></p>
307
  <?php endif; ?>
308
+ <div class="license-details-block <?php echo $this->get_license_type() ?>-details-block">
309
  <?php if( $this->is_premium ): ?>
310
  <a data-action="deactivate" href="#"
311
  class="btn btn-default btn-small license-delete-button wcl-control-btn">
312
+ <?php _e('Delete Key', 'wbcr_factory_templates_105') ?>
313
  </a>
314
  <a data-action="sync" href="#"
315
  class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
316
+ <?php _e('Synchronization', 'wbcr_factory_templates_105') ?>
317
  </a>
318
  <?php endif; ?>
319
  <h3>
327
  </h3>
328
  <?php if( $this->is_premium ): ?>
329
  <div class="license-key-identity">
330
+ <code><?php echo esc_attr($this->get_hidden_license_key()) ?></code>
331
  </div>
332
  <?php endif; ?>
333
  <div class="license-key-description">
334
  <?php if( !$this->is_premium ): ?>
335
+ <p><?php _e('Public License is a GPLv3 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'wbcr_factory_templates_105') ?></p>
336
  <?php else: ?>
337
+ <p><?php _e('Сommercial license, only to the premium add-on to this free plugin. You cannot distribute or modify the premium add-on. But free plugin is a GPLv3 compatible license allowing you to change and use this version of the plugin for free.', 'wbcr_factory_templates_105') ?></p>
338
  <?php endif; ?>
339
  <?php if( $this->is_premium && $this->premium_has_subscription ): ?>
340
  <p class="activate-trial-hint">
341
+ <?php _e('You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wcl-control-btn" href="#">cancel subscription</a>', 'wbcr_factory_templates_105') ?>
342
  </p>
343
  <?php endif; ?>
344
 
345
  <?php if( $this->get_license_type() == 'trial' ): ?>
346
  <p class="activate-error-hint">
347
+ <?php printf(__('Your license has expired, please extend the license to get updates and support.', 'wbcr_factory_templates_105'), '') ?>
348
  </p>
349
  <?php endif; ?>
350
  </div>
352
  <tr>
353
  <!--<td class="license-param license-param-domain">
354
  <span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
355
+ <span class="license-value-name"><?php _e('domain', 'wbcr_factory_templates_105') ?></span>
356
  </td>-->
357
  <td class="license-param license-param-days">
358
+ <span class="license-value"><?php echo $this->get_plan() ?></span>
359
+ <span class="license-value-name"><?php _e('plan', 'wbcr_factory_templates_105') ?></span>
360
  </td>
361
  <?php if( $this->is_premium ) : ?>
362
  <td class="license-param license-param-sites">
363
  <span class="license-value">
364
  <?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>