Auto Post Thumbnail - Version 3.9.10

Version Description

  • ADD: Default image for generation
  • FIX: Memory allocate error on Generation page
Download this release

Release Info

Developer webtemyk
Plugin Icon 128x128 Auto Post Thumbnail
Version 3.9.10
Comparing to
See all releases

Code changes from version 3.9.9 to 3.9.10

Files changed (194) hide show
  1. admin/assets/css/settings.css +5 -5
  2. admin/assets/js/generate.js +376 -375
  3. admin/assets/js/license-manager.js +1 -1
  4. admin/assets/js/upload-font.js +2 -2
  5. admin/class-page-logger.php +11 -11
  6. admin/class-page.php +10 -10
  7. admin/class-wapt-activation.php +2 -2
  8. admin/pages/generate.php +2 -2
  9. admin/pages/image.php +478 -460
  10. admin/pages/license.php +2 -2
  11. admin/pages/log.php +1 -1
  12. admin/pages/settings.php +259 -256
  13. admin/views/media-library.php +1 -1
  14. admin/views/tab-generate.php +1 -1
  15. admin/views/tab-license.php +1 -1
  16. auto-post-thumbnail.php +10 -10
  17. includes/class-apt.php +1480 -1412
  18. includes/class-plugin.php +16 -15
  19. includes/controls/class.color.php +1 -1
  20. includes/controls/class.fonts.php +1 -1
  21. includes/controls/class.mediabutton.php +31 -7
  22. includes/image-search/class-google-images.php +12 -9
  23. libs/factory/adverts/boot.php +12 -12
  24. libs/factory/adverts/includes/class-base.php +6 -6
  25. libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
  26. libs/factory/adverts/includes/class-rest-request.php +4 -4
  27. libs/factory/adverts/langs/{wbcr_factory_adverts_130-ru_RU.mo → wbcr_factory_adverts_135-ru_RU.mo} +0 -0
  28. libs/factory/adverts/langs/{wbcr_factory_adverts_130-ru_RU.po → wbcr_factory_adverts_135-ru_RU.po} +0 -0
  29. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
  30. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
  31. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
  32. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +1 -1
  33. libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +1 -1
  34. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
  35. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
  36. libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +1 -1
  37. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
  38. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
  39. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
  40. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
  41. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
  42. libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +1 -1
  43. libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +1 -1
  44. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
  45. libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +1 -1
  46. libs/factory/bootstrap/assets/css-min/control.color.min.css +1 -1
  47. libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +1 -1
  48. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
  49. libs/factory/bootstrap/assets/css-min/control.fonts.min.css +1 -1
  50. libs/factory/bootstrap/assets/css-min/control.list.min.css +1 -1
  51. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
  52. libs/factory/bootstrap/assets/css-min/control.pattern.min.css +1 -1
  53. libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +1 -1
  54. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
  55. libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +1 -1
  56. libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +1 -1
  57. libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +1 -1
  58. libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +1 -1
  59. libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +1 -1
  60. libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
  61. libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js +1 -1
  62. libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
  63. libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js +1 -1
  64. libs/factory/bootstrap/assets/js-min/control.color.min.js +1 -1
  65. libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js +1 -1
  66. libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
  67. libs/factory/bootstrap/assets/js-min/control.fonts.min.js +1 -1
  68. libs/factory/bootstrap/assets/js-min/control.gradient.min.js +1 -1
  69. libs/factory/bootstrap/assets/js-min/control.integer.min.js +1 -1
  70. libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
  71. libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
  72. libs/factory/bootstrap/assets/js-min/control.pattern.min.js +1 -1
  73. libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +1 -1
  74. libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js +1 -1
  75. libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +1 -1
  76. libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js +1 -1
  77. libs/factory/bootstrap/boot.php +9 -9
  78. libs/factory/bootstrap/includes/functions.php +10 -10
  79. libs/factory/core/ajax/install-addons.php +10 -10
  80. libs/factory/core/assets/js/core-components.js +14 -14
  81. libs/factory/core/assets/js/core-general.js +6 -6
  82. libs/factory/core/boot.php +33 -33
  83. libs/factory/core/includes/activation/class-factory-activator.php +3 -3
  84. libs/factory/core/includes/activation/class-factory-update.php +3 -3
  85. libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
  86. libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
  87. libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
  88. libs/factory/core/includes/class-check-compatibility.php +3 -3
  89. libs/factory/core/includes/class-factory-migrations.php +17 -17
  90. libs/factory/core/includes/class-factory-notices.php +5 -5
  91. libs/factory/core/includes/class-factory-options.php +2 -2
  92. libs/factory/core/includes/class-factory-plugin-abstract.php +71 -71
  93. libs/factory/core/includes/class-factory-plugin-base.php +25 -25
  94. libs/factory/core/includes/class-factory-requests.php +1 -1
  95. libs/factory/core/includes/class-factory-requirements.php +6 -6
  96. libs/factory/core/includes/components/class-delete-component-button.php +1 -1
  97. libs/factory/core/includes/components/class-install-component-button.php +11 -11
  98. libs/factory/core/includes/entities/class-factory-paths.php +1 -1
  99. libs/factory/core/includes/entities/class-factory-support.php +1 -1
  100. libs/factory/core/includes/functions.php +7 -7
  101. libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
  102. libs/factory/core/includes/premium/class-factory-manager.php +10 -10
  103. libs/factory/core/includes/premium/class-factory-provider-abstract.php +6 -6
  104. libs/factory/core/includes/updates/class-factory-premium-upgrader.php +11 -11
  105. libs/factory/core/includes/updates/class-factory-upgrader.php +10 -10
  106. libs/factory/core/includes/updates/repositories/class-factory-github.php +4 -4
  107. libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php +5 -5
  108. libs/factory/core/includes/updates/repositories/class-factory-wordpress.php +4 -4
  109. libs/factory/core/langs/{wbcr_factory_453-ru_RU.mo → wbcr_factory_458-ru_RU.mo} +0 -0
  110. libs/factory/core/langs/{wbcr_factory_453-ru_RU.po → wbcr_factory_458-ru_RU.po} +0 -0
  111. libs/factory/feedback/assets/css/dialog-boxes.css +89 -89
  112. libs/factory/feedback/assets/js/deactivate-feedback.js +10 -10
  113. libs/factory/feedback/boot.php +11 -11
  114. libs/factory/feedback/includes/class-base.php +10 -10
  115. libs/factory/feedback/includes/class-rest-request.php +4 -4
  116. libs/factory/feedback/views/deactivate-form.php +20 -20
  117. libs/factory/forms/boot.php +95 -95
  118. libs/factory/forms/controls/checkbox.php +4 -4
  119. libs/factory/forms/controls/color-and-opacity.php +4 -4
  120. libs/factory/forms/controls/color.php +2 -2
  121. libs/factory/forms/controls/customs/html.php +2 -2
  122. libs/factory/forms/controls/customs/separator.php +2 -2
  123. libs/factory/forms/controls/datepicker-range.php +4 -4
  124. libs/factory/forms/controls/dropdown-and-colors.php +6 -6
  125. libs/factory/forms/controls/dropdown.php +5 -5
  126. libs/factory/forms/controls/font.php +11 -11
  127. libs/factory/forms/controls/google-font.php +8 -8
  128. libs/factory/forms/controls/gradient.php +4 -4
  129. libs/factory/forms/controls/hidden.php +2 -2
  130. libs/factory/forms/controls/holders/accordion-item.php +2 -2
  131. libs/factory/forms/controls/holders/accordion.php +2 -2
  132. libs/factory/forms/controls/holders/columns.php +2 -2
  133. libs/factory/forms/controls/holders/control-group-item.php +2 -2
  134. libs/factory/forms/controls/holders/control-group.php +3 -3
  135. libs/factory/forms/controls/holders/div.php +2 -2
  136. libs/factory/forms/controls/holders/form-group.php +2 -2
  137. libs/factory/forms/controls/holders/more-link.php +2 -2
  138. libs/factory/forms/controls/holders/tab-item.php +2 -2
  139. libs/factory/forms/controls/holders/tab.php +4 -4
  140. libs/factory/forms/controls/integer.php +2 -2
  141. libs/factory/forms/controls/list.php +4 -4
  142. libs/factory/forms/controls/multiple-textbox.php +3 -3
  143. libs/factory/forms/controls/paddings-editor.php +3 -3
  144. libs/factory/forms/controls/pattern.php +9 -9
  145. libs/factory/forms/controls/radio-colors.php +2 -2
  146. libs/factory/forms/controls/radio.php +2 -2
  147. libs/factory/forms/controls/textarea.php +2 -2
  148. libs/factory/forms/controls/textbox.php +2 -2
  149. libs/factory/forms/controls/url.php +3 -3
  150. libs/factory/forms/controls/wp-editor.php +3 -3
  151. libs/factory/forms/includes/complex-control.class.php +4 -4
  152. libs/factory/forms/includes/control-holder.class.php +5 -5
  153. libs/factory/forms/includes/control.class.php +5 -5
  154. libs/factory/forms/includes/custom-element.class.php +2 -2
  155. libs/factory/forms/includes/form-element.class.php +7 -7
  156. libs/factory/forms/includes/form-layout.class.php +5 -5
  157. libs/factory/forms/includes/form.class.php +39 -39
  158. libs/factory/forms/includes/holder.class.php +6 -6
  159. libs/factory/forms/includes/html-builder.class.php +2 -2
  160. libs/factory/forms/includes/providers/meta-value-provider.class.php +2 -2
  161. libs/factory/forms/includes/providers/options-value-provider.class.php +3 -3
  162. libs/factory/forms/includes/providers/value-provider.interface.php +2 -2
  163. libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.mo → wbcr_factory_forms_455-ru_RU.mo} +0 -0
  164. libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.po → wbcr_factory_forms_455-ru_RU.po} +0 -0
  165. libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +7 -7
  166. libs/factory/freemius/boot.php +18 -18
  167. libs/factory/freemius/includes/class-freemius-api.php +7 -7
  168. libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
  169. libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
  170. libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
  171. libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
  172. libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
  173. libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
  174. libs/factory/freemius/includes/licensing/class-freemius-provider.php +18 -18
  175. libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
  176. libs/factory/logger/assets/js/logger.js +5 -5
  177. libs/factory/logger/boot.php +17 -17
  178. libs/factory/logger/includes/class-log-export.php +1 -1
  179. libs/factory/logger/includes/class-logger.php +4 -12
  180. libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.mo → wbcr_factory_logger_123-ru_RU.mo} +0 -0
  181. libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.po → wbcr_factory_logger_123-ru_RU.po} +0 -0
  182. libs/factory/logger/pages/class-logger-admin-page.php +21 -20
  183. libs/factory/logger/pages/class-logger-impressive-lite.php +19 -18
  184. libs/factory/logger/pages/class-logger-impressive-page.php +20 -19
  185. libs/factory/pages/boot.php +9 -9
  186. libs/factory/pages/includes/admin-page.class.php +6 -6
  187. libs/factory/pages/includes/page.class.php +7 -7
  188. libs/factory/pages/langs/{wbcr_factory_pages_452-fr_FR.mo → wbcr_factory_pages_457-fr_FR.mo} +0 -0
  189. libs/factory/pages/langs/{wbcr_factory_pages_452-fr_FR.po → wbcr_factory_pages_457-fr_FR.po} +0 -0
  190. libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.mo → wbcr_factory_pages_457-ru_RU.mo} +0 -0
  191. libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.po → wbcr_factory_pages_457-ru_RU.po} +0 -0
  192. libs/factory/pages/pages.php +11 -11
  193. libs/factory/templates/assets/css/clearfy-base.css +25 -25
  194. libs/factory/templates/assets/css/components.css +16 -16
admin/assets/css/settings.css CHANGED
@@ -3,7 +3,7 @@
3
  padding: 0px 30px;
4
  }
5
 
6
- .factory-bootstrap-454 .factory-ajax-loader
7
  {
8
  width: 120px !important;
9
  background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
@@ -14,7 +14,7 @@
14
  top: 5px;
15
  }
16
 
17
- .factory-bootstrap-454 select.form-control
18
  {
19
  display: inline;
20
  background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
@@ -27,7 +27,7 @@
27
  font-size: 16px !important;
28
  }
29
 
30
- .factory-bootstrap-454 .btn-default.active, .factory-bootstrap-454 .btn-default:active
31
  {
32
  text-shadow: none;
33
  color: #fff !important;
@@ -152,13 +152,13 @@ span.wapt-icon-pro
152
  box-shadow: none !important;
153
  }
154
 
155
- .factory-bootstrap-454 .factory-color .factory-background, .factory-bootstrap-454 .factory-color .factory-pattern
156
  {
157
  width: 30px;
158
  height: 30px;
159
  }
160
 
161
- .factory-bootstrap-454 .factory-color .factory-color-hex
162
  {
163
  width: 70px;
164
  font-family: Monospace, serif;
3
  padding: 0px 30px;
4
  }
5
 
6
+ .factory-bootstrap-459 .factory-ajax-loader
7
  {
8
  width: 120px !important;
9
  background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
14
  top: 5px;
15
  }
16
 
17
+ .factory-bootstrap-459 select.form-control
18
  {
19
  display: inline;
20
  background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
27
  font-size: 16px !important;
28
  }
29
 
30
+ .factory-bootstrap-459 .btn-default.active, .factory-bootstrap-459 .btn-default:active
31
  {
32
  text-shadow: none;
33
  color: #fff !important;
152
  box-shadow: none !important;
153
  }
154
 
155
+ .factory-bootstrap-459 .factory-color .factory-background, .factory-bootstrap-459 .factory-color .factory-pattern
156
  {
157
  width: 30px;
158
  height: 30px;
159
  }
160
 
161
+ .factory-bootstrap-459 .factory-color .factory-color-hex
162
  {
163
  width: 70px;
164
  font-family: Monospace, serif;
admin/assets/js/generate.js CHANGED
@@ -1,379 +1,380 @@
1
  jQuery(function ($) {
2
- var chart = $('#wapt-main-chart');
3
- var ctx = document.getElementById('wapt-main-chart');
4
- window.wapt_chart = new window.apthumb.Chart(ctx, {
5
- type: 'doughnut',
6
- data: {
7
- datasets: [
8
- {
9
- data: [
10
- chart.attr('data-no_featured_image'),
11
- chart.attr('data-w_featured_image'),
12
- chart.attr('data-errors'),
13
- ],
14
- backgroundColor: [
15
- '#d6d6d6',
16
- '#8bc34a',
17
- '#f1b1b6',
18
- ],
19
- spacing: 0,
20
- borderWidth: 0,
21
- label: 'Dataset 1'
22
- }
23
- ]
24
- },
25
- options: {
26
- legend: {
27
- display: false
28
- },
29
- events: [],
30
- animation: {
31
- easing: 'easeOutBounce'
32
- },
33
- responsive: false,
34
- cutoutPercentage: 80
35
- }
36
- });
37
-
38
- var bulkGeneration = {
39
- inprogress: false,
40
- rt_images: [],
41
- rt_total: 0,
42
- rt_count: 1,
43
- rt_percent: 0,
44
- posted_count: 0,
45
- genpostthumbsbar: $("#genpostthumbsbar"),
46
-
47
- init: function () {
48
- this.startGenButton = $('#generate-post-thumbnails');
49
- this.startUnsetButton = $('#delete-post-thumbnails');
50
-
51
- this.registerEvents();
52
- },
53
-
54
- registerEvents: function () {
55
- var self = this;
56
-
57
- this.startGenButton.on('click', function () {
58
- self.generate();
59
-
60
- return false;
61
- });
62
- this.startUnsetButton.on('click', function () {
63
- self.unSetImages();
64
-
65
- return false;
66
- });
67
- },
68
-
69
- button_running: function (selector) {
70
- if (selector.hasClass('wapt-running')) {
71
- selector.removeClass('wapt-running');
72
- this.startGenButton.removeAttr('disabled');
73
- this.startUnsetButton.removeAttr('disabled');
74
- } else {
75
- selector.addClass('wapt-running');
76
- this.startGenButton.attr('disabled', 'disabled');
77
- this.startUnsetButton.attr('disabled', 'disabled');
78
- }
79
- },
80
-
81
- /**
82
- * Start generation
83
- */
84
- generate: function () {
85
- var self = this;
86
- this.inprogress = true;
87
-
88
- self.rt_images = [];
89
- this.button_running(this.startGenButton);
90
-
91
- this.genpostthumbsbar.show();
92
- progressbar = this.genpostthumbsbar.progressbar();
93
- progressbar.find(".ui-progressbar-value").css({
94
- "background": '#c9deb2',
95
- });
96
- progressbar.find(".ui-widget-content").css({
97
- "border": '0',
98
- });
99
-
100
- $("#genpostthumbsbar-percent").html("1%");
101
-
102
- var get_posts_data = {
103
- action: "get-posts-ids",
104
- withThumb: 0,
105
- _ajax_nonce: wapt.nonce_get_posts
106
- };
107
-
108
- if (wapt.is_premium) {
109
- $.extend(get_posts_data, {
110
- poststatus: $("#filter_poststatus").val(),
111
- posttype: $("#filter_posttype").val(),
112
- date_start: $("#filter_startdate").val(),
113
- date_end: $("#filter_enddate").val(),
114
- category: $("#filter_postcategory").val()
115
- });
116
- }
117
-
118
-
119
- $.post("admin-ajax.php", get_posts_data, function (ids) {
120
- if (ids === '' || ids === 0) {
121
- setTimeout(function () {
122
- self.genpostthumbsbar.hide();
123
- self.genpostthumbsbar.progressbar("value", 0);
124
- self.button_running(self.startGenButton);
125
- noticeId = $.wbcr_factory_templates_106.app.showNotice("<p><strong>" + wapt.i8n_processed_posts + " 0</strong></p>", 'success');
126
- }, 500);
127
- return;
128
- }
129
-
130
- self.rt_images = JSON.parse("[" + ids + "]");
131
-
132
- self.rt_total = self.rt_images.length;
133
- self.rt_count = 1;
134
- self.rt_percent = 0;
135
- self.posted_count = 0;
136
-
137
- self.genPostThumb(self.rt_images.shift());
138
- });
139
-
140
- },
141
-
142
- /**
143
- * Start unset images
144
- */
145
- unSetImages: function () {
146
- var self = this;
147
- this.inprogress = true;
148
-
149
- if (!confirm('Are sure to delete thumbnails from posts?'))
150
- return;
151
-
152
- self.rt_images = [];
153
-
154
- this.button_running(this.startUnsetButton);
155
-
156
- this.genpostthumbsbar.show();
157
- this.genpostthumbsbar.progressbar();
158
- $("#genpostthumbsbar-percent").html("1%");
159
-
160
- var get_posts_ids_data = {
161
- action: "get-posts-ids",
162
- withThumb: 1,
163
- _ajax_nonce: wapt.nonce_get_posts
164
- };
165
- if (wapt.is_premium) {
166
- $.extend(get_posts_ids_data, {
167
- poststatus: $("#filter_poststatus").val(),
168
- posttype: $("#filter_posttype").val(),
169
- date_start: $("#filter_startdate").val(),
170
- date_end: $("#filter_enddate").val(),
171
- category: $("#filter_postcategory").val()
172
- });
173
- }
174
-
175
-
176
- $.post("admin-ajax.php", get_posts_ids_data, function (ids) {
177
- self.rt_images = JSON.parse("[" + ids + "]");
178
-
179
- self.rt_total = self.rt_images.length;
180
- self.rt_count = 1;
181
- self.rt_percent = 0;
182
- self.posted_count = 0;
183
-
184
- self.delPostThumb(self.rt_images.shift());
185
- });
186
-
187
- },
188
-
189
- delPostThumb: function (id) {
190
- var self = this;
191
- $.post("admin-ajax.php", {
192
- action: "delete_post_thumbnails",
193
- id: id,
194
- _ajax_nonce: wapt.nonce_del_post_thumbs
195
- }, function (posted) {
196
- if (Boolean(posted)) {
197
- self.posted_count++;
198
- }
199
- self.rt_percent = (self.rt_count / self.rt_total) * 100;
200
- self.genpostthumbsbar.progressbar("value", self.rt_percent);
201
- $("#genpostthumbsbar-percent").html(Math.round(self.rt_percent) + "%");
202
- self.rt_count++;
203
-
204
- if (self.rt_images.length) {
205
- self.delPostThumb(self.rt_images.shift());
206
- } else {
207
- setTimeout(function () {
208
- self.genpostthumbsbar.hide();
209
- self.genpostthumbsbar.progressbar("value", 0);
210
- self.button_running(self.startUnsetButton);
211
-
212
- noticeId = $.wbcr_factory_templates_106.app.showNotice(wapt.i8n_processed_posts + self.rt_total + "<br>" + wapt.i8n_del_images + self.posted_count, 'success');
213
- }, 500);
214
- }
215
- });
216
- },
217
-
218
- genPostThumb: function (id) {
219
- var self = this;
220
-
221
- $.post("admin-ajax.php", {
222
- action: "generatepostthumbnail",
223
- id: id,
224
- _ajax_nonce: wapt.nonce_gen_post_thumbs
225
- }, function (response) {
226
- if (response.success) {
227
- self.posted_count++;
228
- }
229
-
230
- self.rt_percent = (self.rt_count / self.rt_total) * 100;
231
- self.genpostthumbsbar.progressbar("value", self.rt_percent);
232
- $("#genpostthumbsbar-percent").html(Math.round(self.rt_percent) + "% (" + self.rt_count + "/" + self.rt_total + ")");
233
- self.rt_count++;
234
-
235
- if (response.data) {
236
- self.updateLog(response.data);
237
- }
238
-
239
- if (self.rt_images.length) {
240
- self.genPostThumb(self.rt_images.shift());
241
- } else {
242
- setTimeout(function () {
243
- //self.genpostthumbsbar.hide();
244
- //self.genpostthumbsbar.progressbar("value", 0);
245
- self.button_running(self.startGenButton);
246
-
247
- noticeId = $.wbcr_factory_templates_106.app.showNotice(wapt.i8n_processed_posts + self.rt_total + "<br>" + wapt.i8n_set_images + self.posted_count, 'success');
248
- }, 500);
249
- }
250
- });
251
- },
252
-
253
- showMessage: function (text) {
254
- var contanier = $('.wapt-page-statistic'),
255
- message;
256
-
257
- if (contanier.find('.wapt-statistic-message').length) {
258
- message = contanier.find('.wapt-statistic-message');
259
- } else {
260
- message = $('<div>');
261
- message.addClass('wapt-statistic-message');
262
- contanier.append(message);
263
- }
264
-
265
- message.html(text);
266
- },
267
-
268
- destroyMessages: function () {
269
- $('.wapt-page-statistic').find('.wapt-statistic-message').empty();
270
- },
271
-
272
- updateLog: function (new_item_data) {
273
- var self = this;
274
-
275
- var limit = 100,
276
- tableEl = $('.wapt-generation-progress .wapt-table');
277
-
278
- if (!tableEl.length || !new_item_data) {
279
- return;
280
- }
281
-
282
- // если таблица была пустая
283
- if ($('.wapt-table-container-empty').length) {
284
- $('.wapt-table-container-empty').addClass('wapt-table-container').removeClass('wapt-table-container-empty');
285
- if (tableEl.find('tbody').length) {
286
- tableEl.find('tbody').empty();
287
- }
288
- }
289
-
290
- $.each(new_item_data, function (index, value) {
291
- var trEl = $('<tr>'),
292
- tdEl = $('<td>');
293
-
294
- if (tableEl.find('.wapt-row-id-' + value.post_id).length) {
295
- tableEl.find('.wapt-row-id-' + value.post_id).remove();
296
- }
297
-
298
- trEl.addClass('flash').addClass('wapt-table-item').addClass('wapt-row-id-' + value.post_id);
299
-
300
- if ('error' === value.type) {
301
- trEl.addClass('wapt-error');
302
- }
303
-
304
- var preview = $('<img height="50" src="' + value.thumbnail_url + '" alt="">'),
305
- previewUrl = $('<a href="' + value.url + '" target="_blank">' + value.title + '</a>');
306
-
307
- tableEl.prepend(trEl);
308
-
309
- if (value.error_msg) {
310
- var colspan = '3';
311
- trEl.append(tdEl.clone().addClass('wapt-image-td').append(''));
312
- trEl.append(tdEl.clone().addClass('wapt-title-td').append(previewUrl));
313
- trEl.append(tdEl.clone().text(''));
314
- trEl.append(tdEl.clone().text(value.type));
315
- trEl.addClass('wapt-error').append(tdEl.clone().text(value.error_msg));
316
- } else {
317
- trEl.append(tdEl.clone().addClass('wapt-image-td').append(preview));
318
- trEl.append(tdEl.clone().addClass('wapt-title-td').append(previewUrl));
319
- trEl.append(tdEl.clone().text(value.image_size));
320
- trEl.append(tdEl.clone().text(value.type));
321
- trEl.append(tdEl.clone().text(value.status));
322
- }
323
- });
324
-
325
- if (tableEl.find('tr').length > limit) {
326
- var diff = tableEl.find('tr').length - limit;
327
-
328
- for (var i = 0; i < diff; i++) {
329
- tableEl.find('tr:last').remove();
330
- }
331
- }
332
- }
333
-
334
- };
335
-
336
- $(document).ready(function () {
337
- bulkGeneration.init();
338
- $('[data-toggle="tooltip"]').tooltip();
339
- });
340
-
341
- var ajaxUrl = ajaxurl;
342
- var ai_data;
343
-
344
- function redraw_statistics(statistic) {
345
- $('#wapt-main-chart').attr('data-unoptimized', statistic.unoptimized)
346
- .attr('data-optimized', statistic.optimized)
347
- .attr('data-errors', statistic.error);
348
- $('#wapt-total-optimized-attachments').text(statistic.optimized); // optimized
349
- $('#wapt-original-size').text(bytesToSize(statistic.original_size));
350
- $('#wapt-optimized-size').text(bytesToSize(statistic.optimized_size));
351
- $('#wapt-total-optimized-attachments-pct').text(statistic.save_size_percent + '%');
352
- $('#wapt-overview-chart-percent').html(statistic.optimized_percent + '<span>%</span>');
353
- $('.wapt-total-percent').text(statistic.optimized_percent + '%');
354
- $('#wapt-optimized-bar').css('width', statistic.percent_line + '%');
355
-
356
- $('#wapt-unoptimized-num').text(statistic.unoptimized);
357
- $('#wapt-optimized-num').text(statistic.optimized);
358
- $('#wapt-error-num').text(statistic.error);
359
-
360
- var credits = $('.wapt-premium-user-balance');
361
- if (credits.attr('data-server') !== "server_5") {
362
- credits.text(statistic.credits);
363
- }
364
-
365
- if ($('.wapt-statistic-nav li.active').length) {
366
- $('.wapt-statistic-nav li.active').find('span.wapt-statistic-tab-percent').text(statistic.optimized_percent + '%');
367
- }
368
-
369
- window.wio_chart.data.datasets[0].data[0] = statistic.unoptimized; // unoptimized
370
- window.wio_chart.data.datasets[0].data[1] = statistic.optimized; // optimized
371
- window.wio_chart.data.datasets[0].data[2] = statistic.error; // errors
372
- window.wio_chart.update();
373
- if ($('#wapt-overview-chart-percent').text() == '100%') {
374
- window.onbeforeunload = null;
375
- }
376
- }
 
377
 
378
  })
379
  ;
1
  jQuery(function ($) {
2
+ var chart = $('#wapt-main-chart');
3
+ var ctx = document.getElementById('wapt-main-chart');
4
+ window.wapt_chart = new window.apthumb.Chart(ctx, {
5
+ type: 'doughnut',
6
+ data: {
7
+ datasets: [
8
+ {
9
+ data: [
10
+ chart.attr('data-no_featured_image'),
11
+ chart.attr('data-w_featured_image'),
12
+ chart.attr('data-errors'),
13
+ ],
14
+ backgroundColor: [
15
+ '#d6d6d6',
16
+ '#8bc34a',
17
+ '#f1b1b6',
18
+ ],
19
+ spacing: 0,
20
+ borderWidth: 0,
21
+ label: 'Dataset 1'
22
+ }
23
+ ]
24
+ },
25
+ options: {
26
+ legend: {
27
+ display: false
28
+ },
29
+ events: [],
30
+ animation: {
31
+ easing: 'easeOutBounce'
32
+ },
33
+ responsive: false,
34
+ cutoutPercentage: 80
35
+ }
36
+ });
37
+
38
+ var bulkGeneration = {
39
+ inprogress: false,
40
+ rt_images: [],
41
+ rt_total: 0,
42
+ rt_count: 1,
43
+ rt_percent: 0,
44
+ posted_count: 0,
45
+ genpostthumbsbar: $("#genpostthumbsbar"),
46
+
47
+ init: function () {
48
+ this.startGenButton = $('#generate-post-thumbnails');
49
+ this.startUnsetButton = $('#delete-post-thumbnails');
50
+
51
+ this.registerEvents();
52
+ },
53
+
54
+ registerEvents: function () {
55
+ var self = this;
56
+
57
+ this.startGenButton.on('click', function () {
58
+ self.generate();
59
+
60
+ return false;
61
+ });
62
+ this.startUnsetButton.on('click', function () {
63
+ self.unSetImages();
64
+
65
+ return false;
66
+ });
67
+ },
68
+
69
+ button_running: function (selector) {
70
+ if (selector.hasClass('wapt-running')) {
71
+ selector.removeClass('wapt-running');
72
+ this.startGenButton.removeAttr('disabled');
73
+ this.startUnsetButton.removeAttr('disabled');
74
+ } else {
75
+ selector.addClass('wapt-running');
76
+ this.startGenButton.attr('disabled', 'disabled');
77
+ this.startUnsetButton.attr('disabled', 'disabled');
78
+ }
79
+ },
80
+
81
+ /**
82
+ * Start generation
83
+ */
84
+ generate: function () {
85
+ var self = this;
86
+ this.inprogress = true;
87
+
88
+ self.rt_images = [];
89
+ this.button_running(this.startGenButton);
90
+
91
+ this.genpostthumbsbar.show();
92
+ progressbar = this.genpostthumbsbar.progressbar();
93
+ progressbar.find(".ui-progressbar-value").css({
94
+ "background": '#c9deb2',
95
+ });
96
+ progressbar.find(".ui-widget-content").css({
97
+ "border": '0',
98
+ });
99
+
100
+ $("#genpostthumbsbar-percent").html("0%");
101
+
102
+ var get_posts_data = {
103
+ action: "get-posts-ids",
104
+ withThumb: 0,
105
+ _ajax_nonce: wapt.nonce_get_posts
106
+ };
107
+
108
+ if (wapt.is_premium) {
109
+ $.extend(get_posts_data, {
110
+ poststatus: $("#filter_poststatus").val(),
111
+ posttype: $("#filter_posttype").val(),
112
+ date_start: $("#filter_startdate").val(),
113
+ date_end: $("#filter_enddate").val(),
114
+ category: $("#filter_postcategory").val()
115
+ });
116
+ }
117
+
118
+
119
+ $.post("admin-ajax.php", get_posts_data, function (result) {
120
+ if (result.success && result.data !== '' || result.data !== 0) {
121
+ //var ids = result.data;
122
+
123
+ self.rt_images = result.data;
124
+ self.rt_total = self.rt_images.length;
125
+ self.rt_count = 1;
126
+ self.rt_percent = 0;
127
+ self.posted_count = 0;
128
+
129
+ self.genPostThumb(self.rt_images.shift());
130
+ } else {
131
+ setTimeout(function () {
132
+ self.genpostthumbsbar.hide();
133
+ self.genpostthumbsbar.progressbar("value", 0);
134
+ self.button_running(self.startGenButton);
135
+ noticeId = $.wbcr_factory_templates_110.app.showNotice("<p><strong>" + wapt.i8n_processed_posts + " 0</strong></p>", 'success');
136
+ }, 500);
137
+ }
138
+ });
139
+
140
+ },
141
+
142
+ /**
143
+ * Start unset images
144
+ */
145
+ unSetImages: function () {
146
+ var self = this;
147
+ this.inprogress = true;
148
+
149
+ if (!confirm('Are sure to delete thumbnails from posts?'))
150
+ return;
151
+
152
+ self.rt_images = [];
153
+
154
+ this.button_running(this.startUnsetButton);
155
+
156
+ this.genpostthumbsbar.show();
157
+ this.genpostthumbsbar.progressbar();
158
+ $("#genpostthumbsbar-percent").html("1%");
159
+
160
+ var get_posts_ids_data = {
161
+ action: "get-posts-ids",
162
+ withThumb: 1,
163
+ _ajax_nonce: wapt.nonce_get_posts
164
+ };
165
+ if (wapt.is_premium) {
166
+ $.extend(get_posts_ids_data, {
167
+ poststatus: $("#filter_poststatus").val(),
168
+ posttype: $("#filter_posttype").val(),
169
+ date_start: $("#filter_startdate").val(),
170
+ date_end: $("#filter_enddate").val(),
171
+ category: $("#filter_postcategory").val()
172
+ });
173
+ }
174
+
175
+
176
+ $.post("admin-ajax.php", get_posts_ids_data, function (result) {
177
+ if (result.success && result.data !== '' || result.data !== 0) {
178
+ self.rt_images = result.data;
179
+ self.rt_total = self.rt_images.length;
180
+ self.rt_count = 1;
181
+ self.rt_percent = 0;
182
+ self.posted_count = 0;
183
+
184
+ self.delPostThumb(self.rt_images.shift());
185
+ }
186
+ });
187
+
188
+ },
189
+
190
+ delPostThumb: function (id) {
191
+ var self = this;
192
+ $.post("admin-ajax.php", {
193
+ action: "delete_post_thumbnails",
194
+ id: id,
195
+ _ajax_nonce: wapt.nonce_del_post_thumbs
196
+ }, function (posted) {
197
+ if (Boolean(posted)) {
198
+ self.posted_count++;
199
+ }
200
+ self.rt_percent = (self.rt_count / self.rt_total) * 100;
201
+ self.genpostthumbsbar.progressbar("value", self.rt_percent);
202
+ $("#genpostthumbsbar-percent").html(Math.round(self.rt_percent) + "%");
203
+ self.rt_count++;
204
+
205
+ if (self.rt_images.length) {
206
+ self.delPostThumb(self.rt_images.shift());
207
+ } else {
208
+ setTimeout(function () {
209
+ self.genpostthumbsbar.hide();
210
+ self.genpostthumbsbar.progressbar("value", 0);
211
+ self.button_running(self.startUnsetButton);
212
+
213
+ noticeId = $.wbcr_factory_templates_110.app.showNotice(wapt.i8n_processed_posts + self.rt_total + "<br>" + wapt.i8n_del_images + self.posted_count, 'success');
214
+ }, 500);
215
+ }
216
+ });
217
+ },
218
+
219
+ genPostThumb: function (id) {
220
+ var self = this;
221
+
222
+ $.post("admin-ajax.php", {
223
+ action: "generatepostthumbnail",
224
+ id: id,
225
+ _ajax_nonce: wapt.nonce_gen_post_thumbs
226
+ }, function (response) {
227
+ if (response.success) {
228
+ self.posted_count++;
229
+ }
230
+
231
+ self.rt_percent = (self.rt_count / self.rt_total) * 100;
232
+ self.genpostthumbsbar.progressbar("value", self.rt_percent);
233
+ $("#genpostthumbsbar-percent").html(Math.round(self.rt_percent) + "% (" + self.rt_count + "/" + self.rt_total + ")");
234
+ self.rt_count++;
235
+
236
+ if (response.data) {
237
+ self.updateLog(response.data);
238
+ }
239
+
240
+ if (self.rt_images.length) {
241
+ self.genPostThumb(self.rt_images.shift());
242
+ } else {
243
+ setTimeout(function () {
244
+ //self.genpostthumbsbar.hide();
245
+ //self.genpostthumbsbar.progressbar("value", 0);
246
+ self.button_running(self.startGenButton);
247
+
248
+ noticeId = $.wbcr_factory_templates_110.app.showNotice(wapt.i8n_processed_posts + self.rt_total + "<br>" + wapt.i8n_set_images + self.posted_count, 'success');
249
+ }, 500);
250
+ }
251
+ });
252
+ },
253
+
254
+ showMessage: function (text) {
255
+ var contanier = $('.wapt-page-statistic'),
256
+ message;
257
+
258
+ if (contanier.find('.wapt-statistic-message').length) {
259
+ message = contanier.find('.wapt-statistic-message');
260
+ } else {
261
+ message = $('<div>');
262
+ message.addClass('wapt-statistic-message');
263
+ contanier.append(message);
264
+ }
265
+
266
+ message.html(text);
267
+ },
268
+
269
+ destroyMessages: function () {
270
+ $('.wapt-page-statistic').find('.wapt-statistic-message').empty();
271
+ },
272
+
273
+ updateLog: function (new_item_data) {
274
+ var self = this;
275
+
276
+ var limit = 100,
277
+ tableEl = $('.wapt-generation-progress .wapt-table');
278
+
279
+ if (!tableEl.length || !new_item_data) {
280
+ return;
281
+ }
282
+
283
+ // если таблица была пустая
284
+ if ($('.wapt-table-container-empty').length) {
285
+ $('.wapt-table-container-empty').addClass('wapt-table-container').removeClass('wapt-table-container-empty');
286
+ if (tableEl.find('tbody').length) {
287
+ tableEl.find('tbody').empty();
288
+ }
289
+ }
290
+
291
+ $.each(new_item_data, function (index, value) {
292
+ var trEl = $('<tr>'),
293
+ tdEl = $('<td>');
294
+
295
+ if (tableEl.find('.wapt-row-id-' + value.post_id).length) {
296
+ tableEl.find('.wapt-row-id-' + value.post_id).remove();
297
+ }
298
+
299
+ trEl.addClass('flash').addClass('wapt-table-item').addClass('wapt-row-id-' + value.post_id);
300
+
301
+ if ('error' === value.type) {
302
+ trEl.addClass('wapt-error');
303
+ }
304
+
305
+ var preview = $('<img height="50" src="' + value.thumbnail_url + '" alt="">'),
306
+ previewUrl = $('<a href="' + value.url + '" target="_blank">' + value.title + '</a>');
307
+
308
+ tableEl.prepend(trEl);
309
+
310
+ if (value.error_msg) {
311
+ var colspan = '3';
312
+ trEl.append(tdEl.clone().addClass('wapt-image-td').append(''));
313
+ trEl.append(tdEl.clone().addClass('wapt-title-td').append(previewUrl));
314
+ trEl.append(tdEl.clone().text(''));
315
+ trEl.append(tdEl.clone().text(value.type));
316
+ trEl.addClass('wapt-error').append(tdEl.clone().text(value.error_msg));
317
+ } else {
318
+ trEl.append(tdEl.clone().addClass('wapt-image-td').append(preview));
319
+ trEl.append(tdEl.clone().addClass('wapt-title-td').append(previewUrl));
320
+ trEl.append(tdEl.clone().text(value.image_size));
321
+ trEl.append(tdEl.clone().text(value.type));
322
+ trEl.append(tdEl.clone().text(value.status));
323
+ }
324
+ });
325
+
326
+ if (tableEl.find('tr').length > limit) {
327
+ var diff = tableEl.find('tr').length - limit;
328
+
329
+ for (var i = 0; i < diff; i++) {
330
+ tableEl.find('tr:last').remove();
331
+ }
332
+ }
333
+ }
334
+
335
+ };
336
+
337
+ $(document).ready(function () {
338
+ bulkGeneration.init();
339
+ $('[data-toggle="tooltip"]').tooltip();
340
+ });
341
+
342
+ var ajaxUrl = ajaxurl;
343
+ var ai_data;
344
+
345
+ function redraw_statistics(statistic) {
346
+ $('#wapt-main-chart').attr('data-unoptimized', statistic.unoptimized)
347
+ .attr('data-optimized', statistic.optimized)
348
+ .attr('data-errors', statistic.error);
349
+ $('#wapt-total-optimized-attachments').text(statistic.optimized); // optimized
350
+ $('#wapt-original-size').text(bytesToSize(statistic.original_size));
351
+ $('#wapt-optimized-size').text(bytesToSize(statistic.optimized_size));
352
+ $('#wapt-total-optimized-attachments-pct').text(statistic.save_size_percent + '%');
353
+ $('#wapt-overview-chart-percent').html(statistic.optimized_percent + '<span>%</span>');
354
+ $('.wapt-total-percent').text(statistic.optimized_percent + '%');
355
+ $('#wapt-optimized-bar').css('width', statistic.percent_line + '%');
356
+
357
+ $('#wapt-unoptimized-num').text(statistic.unoptimized);
358
+ $('#wapt-optimized-num').text(statistic.optimized);
359
+ $('#wapt-error-num').text(statistic.error);
360
+
361
+ var credits = $('.wapt-premium-user-balance');
362
+ if (credits.attr('data-server') !== "server_5") {
363
+ credits.text(statistic.credits);
364
+ }
365
+
366
+ if ($('.wapt-statistic-nav li.active').length) {
367
+ $('.wapt-statistic-nav li.active').find('span.wapt-statistic-tab-percent').text(statistic.optimized_percent + '%');
368
+ }
369
+
370
+ window.wio_chart.data.datasets[0].data[0] = statistic.unoptimized; // unoptimized
371
+ window.wio_chart.data.datasets[0].data[1] = statistic.optimized; // optimized
372
+ window.wio_chart.data.datasets[0].data[2] = statistic.error; // errors
373
+ window.wio_chart.update();
374
+ if ($('#wapt-overview-chart-percent').text() == '100%') {
375
+ window.onbeforeunload = null;
376
+ }
377
+ }
378
 
379
  })
380
  ;
admin/assets/js/license-manager.js CHANGED
@@ -55,7 +55,7 @@ jQuery(function ($) {
55
  }
56
 
57
  if (response.data && response.data.message) {
58
- $.wbcr_factory_templates_106.app.showNotice(response.data.message, 'success');
59
 
60
  window.location.reload();
61
  }
55
  }
56
 
57
  if (response.data && response.data.message) {
58
+ $.wbcr_factory_templates_110.app.showNotice(response.data.message, 'success');
59
 
60
  window.location.reload();
61
  }
admin/assets/js/upload-font.js CHANGED
@@ -1,10 +1,10 @@
1
  jQuery(function ($) {
2
 
3
- var $element = $(".factory-bootstrap-454 .factory-wapt-fonts");
4
  var upload_button = $('#wapt-upload-button');
5
  var upload_loader = $('#wapt-upload-loader');
6
 
7
- $element.factoryBootstrap454_dropdownControl();
8
 
9
  upload_button.on('click', function (e) {
10
  e.preventDefault();
1
  jQuery(function ($) {
2
 
3
+ var $element = $(".factory-bootstrap-459 .factory-wapt-fonts");
4
  var upload_button = $('#wapt-upload-button');
5
  var upload_loader = $('#wapt-upload-loader');
6
 
7
+ $element.factoryBootstrap459_dropdownControl();
8
 
9
  upload_button.on('click', function (e) {
10
  e.preventDefault();
admin/class-page-logger.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Templates_106\ImpressiveLite;
4
 
5
  /**
6
  * Class of plugin page. Must be registered in file admin/class-prefix-page.php
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  exit;
18
  }
19
 
20
- class WAPT_Page_Logger extends Wbcr_FactoryLogger118_Lite {
21
 
22
  /**
23
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
@@ -163,19 +163,19 @@ class WAPT_Page_Logger extends Wbcr_FactoryLogger118_Lite {
163
  $page_url = $args[0];
164
  }
165
 
166
- $page_url = apply_filters( 'wbcr_factory_pages_452_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
167
 
168
  ?>
169
  <div class="wbcr-factory-sidebar-widget">
170
  <p>
171
- <strong><?php esc_html_e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_106' ); ?></strong>
172
  </p>
173
- <p><?php esc_html_e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_106' ); ?></p>
174
- <p><?php esc_html_e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_106' ); ?></p>
175
  <p>
176
  <i class="wbcr-factory-icon-5stars"></i>
177
  <a href="<?php echo esc_url_raw( $page_url ); ?>" title="Go rate us" target="_blank">
178
- <strong><?php esc_html_e( 'Go rate us and push ideas', 'wbcr_factory_templates_106' ); ?></strong>
179
  </a>
180
  </p>
181
  </div>
@@ -195,19 +195,19 @@ class WAPT_Page_Logger extends Wbcr_FactoryLogger118_Lite {
195
 
196
  ?>
197
  <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
198
- <p><strong><?php esc_html_e( 'Having Issues?', 'wbcr_factory_templates_106' ); ?></strong></p>
199
  <div class="wbcr-clr-support-widget-body">
200
  <p>
201
- <?php esc_html_e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_106' ); ?>
202
  </p>
203
  <ul>
204
  <li><span class="dashicons dashicons-sos"></span>
205
  <a href="<?php echo esc_url_raw( $free_support_url ); ?>" target="_blank"
206
- rel="noopener"><?php esc_html_e( 'Get starting free support', 'wbcr_factory_templates_106' ); ?></a>
207
  </li>
208
  <li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
209
  <span class="dashicons dashicons-warning"></span>
210
- <?php printf( wp_kses_post( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_106' ), esc_url_raw( $hot_support_url ) ); ?>
211
  </li>
212
  </ul>
213
  </div>
1
  <?php
2
 
3
+ use WBCR\Factory_Templates_110\ImpressiveLite;
4
 
5
  /**
6
  * Class of plugin page. Must be registered in file admin/class-prefix-page.php
17
  exit;
18
  }
19
 
20
+ class WAPT_Page_Logger extends Wbcr_FactoryLogger123_Lite {
21
 
22
  /**
23
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
163
  $page_url = $args[0];
164
  }
165
 
166
+ $page_url = apply_filters( 'wbcr_factory_pages_457_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
167
 
168
  ?>
169
  <div class="wbcr-factory-sidebar-widget">
170
  <p>
171
+ <strong><?php esc_html_e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_110' ); ?></strong>
172
  </p>
173
+ <p><?php esc_html_e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_110' ); ?></p>
174
+ <p><?php esc_html_e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_110' ); ?></p>
175
  <p>
176
  <i class="wbcr-factory-icon-5stars"></i>
177
  <a href="<?php echo esc_url_raw( $page_url ); ?>" title="Go rate us" target="_blank">
178
+ <strong><?php esc_html_e( 'Go rate us and push ideas', 'wbcr_factory_templates_110' ); ?></strong>
179
  </a>
180
  </p>
181
  </div>
195
 
196
  ?>
197
  <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
198
+ <p><strong><?php esc_html_e( 'Having Issues?', 'wbcr_factory_templates_110' ); ?></strong></p>
199
  <div class="wbcr-clr-support-widget-body">
200
  <p>
201
+ <?php esc_html_e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_110' ); ?>
202
  </p>
203
  <ul>
204
  <li><span class="dashicons dashicons-sos"></span>
205
  <a href="<?php echo esc_url_raw( $free_support_url ); ?>" target="_blank"
206
+ rel="noopener"><?php esc_html_e( 'Get starting free support', 'wbcr_factory_templates_110' ); ?></a>
207
  </li>
208
  <li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
209
  <span class="dashicons dashicons-warning"></span>
210
+ <?php printf( wp_kses_post( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_110' ), esc_url_raw( $hot_support_url ) ); ?>
211
  </li>
212
  </ul>
213
  </div>
admin/class-page.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Templates_106\ImpressiveLite;
4
 
5
  /**
6
  * Class of plugin page. Must be registered in file admin/class-prefix-page.php
@@ -191,19 +191,19 @@ class WAPT_Page extends ImpressiveLite {
191
  $page_url = $args[0];
192
  }
193
 
194
- $page_url = apply_filters( 'wbcr_factory_pages_452_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
195
 
196
  ?>
197
  <div class="wbcr-factory-sidebar-widget">
198
  <p>
199
- <strong><?php esc_html_e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_106' ); ?></strong>
200
  </p>
201
- <p><?php esc_html_e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_106' ); ?></p>
202
- <p><?php esc_html_e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_106' ); ?></p>
203
  <p>
204
  <i class="wbcr-factory-icon-5stars"></i>
205
  <a href="<?php echo esc_url_raw( $page_url ); ?>" title="Go rate us" target="_blank">
206
- <strong><?php esc_html_e( 'Go rate us and push ideas', 'wbcr_factory_templates_106' ); ?></strong>
207
  </a>
208
  </p>
209
  </div>
@@ -223,19 +223,19 @@ class WAPT_Page extends ImpressiveLite {
223
 
224
  ?>
225
  <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
226
- <p><strong><?php esc_html_e( 'Having Issues?', 'wbcr_factory_templates_106' ); ?></strong></p>
227
  <div class="wbcr-clr-support-widget-body">
228
  <p>
229
- <?php _e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_106' ); ?>
230
  </p>
231
  <ul>
232
  <li><span class="dashicons dashicons-sos"></span>
233
  <a href="<?php echo esc_url_raw( $free_support_url ); ?>" target="_blank"
234
- rel="noopener"><?php esc_html_e( 'Get starting free support', 'wbcr_factory_templates_106' ); ?></a>
235
  </li>
236
  <li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
237
  <span class="dashicons dashicons-warning"></span>
238
- <?php printf( wp_kses_post( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_106' ), esc_url_raw( $hot_support_url ) ); ?>
239
  </li>
240
  </ul>
241
  </div>
1
  <?php
2
 
3
+ use WBCR\Factory_Templates_110\ImpressiveLite;
4
 
5
  /**
6
  * Class of plugin page. Must be registered in file admin/class-prefix-page.php
191
  $page_url = $args[0];
192
  }
193
 
194
+ $page_url = apply_filters( 'wbcr_factory_pages_457_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
195
 
196
  ?>
197
  <div class="wbcr-factory-sidebar-widget">
198
  <p>
199
+ <strong><?php esc_html_e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_110' ); ?></strong>
200
  </p>
201
+ <p><?php esc_html_e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_110' ); ?></p>
202
+ <p><?php esc_html_e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_110' ); ?></p>
203
  <p>
204
  <i class="wbcr-factory-icon-5stars"></i>
205
  <a href="<?php echo esc_url_raw( $page_url ); ?>" title="Go rate us" target="_blank">
206
+ <strong><?php esc_html_e( 'Go rate us and push ideas', 'wbcr_factory_templates_110' ); ?></strong>
207
  </a>
208
  </p>
209
  </div>
223
 
224
  ?>
225
  <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
226
+ <p><strong><?php esc_html_e( 'Having Issues?', 'wbcr_factory_templates_110' ); ?></strong></p>
227
  <div class="wbcr-clr-support-widget-body">
228
  <p>
229
+ <?php _e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_110' ); ?>
230
  </p>
231
  <ul>
232
  <li><span class="dashicons dashicons-sos"></span>
233
  <a href="<?php echo esc_url_raw( $free_support_url ); ?>" target="_blank"
234
+ rel="noopener"><?php esc_html_e( 'Get starting free support', 'wbcr_factory_templates_110' ); ?></a>
235
  </li>
236
  <li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
237
  <span class="dashicons dashicons-warning"></span>
238
+ <?php printf( wp_kses_post( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_110' ), esc_url_raw( $hot_support_url ) ); ?>
239
  </li>
240
  </ul>
241
  </div>
admin/class-wapt-activation.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_Factory453_Activator
8
  *
9
  * @version 1.0.1
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WAPT_Activation extends Wbcr_Factory453_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_Factory458_Activator
8
  *
9
  * @version 1.0.1
10
  */
14
  exit;
15
  }
16
 
17
+ class WAPT_Activation extends Wbcr_Factory458_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
admin/pages/generate.php CHANGED
@@ -20,7 +20,7 @@ class WAPT_Generate extends WAPT_Page {
20
  * Mainly used to navigate between pages.
21
  *
22
  * @since 1.0.0
23
- * @see FactoryPages452_AdminPage
24
  *
25
  * @var string
26
  */
@@ -128,7 +128,7 @@ class WAPT_Generate extends WAPT_Page {
128
  *
129
  * @return void
130
  * @since 1.0.0
131
- * @see FactoryPages452_AdminPage
132
  */
133
  public function assets( $scripts, $styles ) {
134
  parent::assets( $scripts, $styles );
20
  * Mainly used to navigate between pages.
21
  *
22
  * @since 1.0.0
23
+ * @see FactoryPages457_AdminPage
24
  *
25
  * @var string
26
  */
128
  *
129
  * @return void
130
  * @since 1.0.0
131
+ * @see FactoryPages457_AdminPage
132
  */
133
  public function assets( $scripts, $styles ) {
134
  parent::assets( $scripts, $styles );
admin/pages/image.php CHANGED
@@ -1,460 +1,478 @@
1
- <?php
2
-
3
- use WBCR\APT\AutoPostThumbnails;
4
-
5
- // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit;
8
- }
9
-
10
- require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
11
-
12
- /**
13
- * The page Settings.
14
- *
15
- * @since 1.0.0
16
- */
17
- class WAPT_ImageSettings extends WAPT_Page {
18
-
19
- /**
20
- * Тип страницы
21
- * options - предназначена для создании страниц с набором опций и настроек.
22
- * page - произвольный контент, любой html код
23
- *
24
- * @var string
25
- */
26
- public $type = 'options';
27
-
28
- /**
29
- * @var bool
30
- */
31
- public $internal = false;
32
-
33
- /**
34
- * @var int
35
- */
36
- public $page_menu_position = 200;
37
-
38
- /**
39
- * Menu icon (only if a page is placed as a main menu).
40
- * For example: '~/assets/img/menu-icon.png'
41
- * For example dashicons: '\f321'
42
- *
43
- * @var string
44
- */
45
- public $menu_icon = '';
46
-
47
- /**
48
- * @var string
49
- */
50
- public $page_menu_dashicon = 'dashicons-cover-image';
51
-
52
- /**
53
- * {@inheritdoc}
54
- */
55
- public $show_menu_tab = true;
56
-
57
- /**
58
- * {@inheritdoc}
59
- */
60
- public $show_right_sidebar_in_options = true;
61
-
62
- /**
63
- * @var array
64
- */
65
- public $post_types;
66
-
67
- /**
68
- * @param WAPT_Plugin $plugin
69
- */
70
- public function __construct( $plugin ) {
71
- $this->id = $plugin->getPrefix() . 'image';
72
- $this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
73
- $this->page_title = __( 'Image generation settings', 'apt' );
74
- $this->menu_title = __( 'Image', 'apt' );
75
- $this->capabilitiy = 'manage_options';
76
- $this->template_name = 'settings';
77
-
78
- add_action( 'wbcr_factory_forms_450_register_controls', function () {
79
- $colorControls = [
80
- [
81
- 'type' => 'wapt-color',
82
- 'class' => 'Wapt_FactoryForms_ColorControl',
83
- 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.color.php',
84
- ],
85
- [
86
- 'type' => 'wapt-mediabutton',
87
- 'class' => 'Wapt_FactoryForms_MediaButtonControl',
88
- 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.mediabutton.php',
89
- ],
90
- [
91
- 'type' => 'wapt-fonts',
92
- 'class' => 'Wapt_FactoryForms_FontsControl',
93
- 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.fonts.php',
94
- ],
95
- ];
96
- $this->plugin->forms->registerControls( $colorControls );
97
- } );
98
-
99
- //add_filter( 'wbcr/factory/pages/impressive-lite/widgets', [ $this, '' ], 10, 4 );
100
-
101
- $this->plugin = $plugin;
102
- $this->post_types = $this->getPostTypes();
103
-
104
- parent::__construct( $plugin );
105
- }
106
-
107
- /**
108
- * Enqueue page assets
109
- *
110
- * @return void
111
- * @since 3.8.1
112
- * @see Wbcr_FactoryPages452_AdminPage
113
- */
114
- public function assets( $scripts, $styles ) {
115
- parent::assets( $scripts, $styles );
116
-
117
- $this->scripts->request( [
118
- 'control.list',
119
- 'control.color',
120
- 'plugin.color',
121
- 'plugin.iris',
122
- ], 'bootstrap' );
123
-
124
- $this->styles->request( [
125
- 'control.list',
126
- 'control.color',
127
- ], 'bootstrap' );
128
-
129
- $this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/jscolor.js', [ 'jquery' ], 'wapt-color-control', WAPT_PLUGIN_VERSION );
130
- $this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [ 'jquery' ], 'wapt-settings-script', WAPT_PLUGIN_VERSION );
131
- $this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/settings.css', [], 'wapt-settings-style', WAPT_PLUGIN_VERSION );
132
- }
133
-
134
- public function isShowRightSidebar() {
135
- return $this->show_right_sidebar_in_options;
136
- }
137
-
138
- public function showRightSidebar() {
139
- ?>
140
- <div id="wapt-image-preview" class="wapt-image-preview">
141
- <div class="wapt-image-preview-title"><h3><?php esc_html_e( 'Post thumbnail preview', 'apt' ); ?></h3></div>
142
- <?php
143
- $format = WAPT_Plugin::app()->getPopulateOption( 'image-type', 'jpg' );
144
- switch ( $format ) {
145
- case 'png':
146
- $format = 'png';
147
- break;
148
- case 'jpg':
149
- case 'jpeg':
150
- default:
151
- $format = 'jpg';
152
- break;
153
- }
154
-
155
- $posts = get_posts( [ 'numberposts' => 0 ] );
156
- $id = rand( 0, count( $posts ) - 1 );
157
- if ( count( $posts ) !== 0 ) {
158
- $txt = $posts[ $id ]->post_title;
159
- } else {
160
- $txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas aliquet turpis quis ex elementum malesuada';
161
- }
162
-
163
- $image = apply_filters( 'wapt/generate/image', AutoPostThumbnails::generate_image_with_text( $txt ), $txt );
164
-
165
- $image->save( WAPT_PLUGIN_DIR . "/preview.{$format}", 100, $format );
166
- ?>
167
- <img src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . "/preview.{$format}?" . time() ); ?>"
168
- width="100%" alt="">
169
- </div>
170
- <?php
171
- }
172
-
173
- /**
174
- * Returns options for the Basic Settings screen.
175
- *
176
- * @return array
177
- * @since 3.6.2
178
- */
179
- public function getPageOptions() {
180
-
181
- $is_premium = WAPT_Plugin::app()->is_premium();
182
- $pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
183
- $layout_columns = [
184
- 'column-left' => 4,
185
- 'column-right' => 8,
186
- ];
187
-
188
- $options = [];
189
-
190
- $options[] = [
191
- 'type' => 'html',
192
- 'html' => $this->group_header( __( 'Background settings', 'apt' ), '' ),
193
- ];
194
-
195
- $options[] = [
196
- 'type' => 'dropdown',
197
- 'way' => 'buttons',
198
- 'name' => 'background-type',
199
- 'data' => [
200
- [ 'color', __( 'Color', 'apt' ) ],
201
- [ 'image', __( 'Image', 'apt' ) ],
202
- ],
203
- 'default' => 'color',
204
- 'title' => __( 'Background type', 'apt' ),
205
- 'hint' => __( 'Select the background type for the featured image', 'apt' ),
206
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
207
- ];
208
-
209
- $options[] = [
210
- 'type' => 'color',
211
- 'name' => 'background-color',
212
- 'default' => '#ff6262',
213
- 'title' => __( 'Background color for the image', 'apt' ),
214
- 'hint' => __( 'Set the background color for the featured image', 'apt' ),
215
- 'layout' => $layout_columns,
216
- ];
217
-
218
- if ( $is_premium ) {
219
- $options[] = [
220
- 'type' => 'wapt-mediabutton',
221
- 'name' => 'background-image',
222
- 'text' => __( 'Select image', 'apt' ),
223
- 'title' => __( 'Background image', 'apt' ),
224
- 'hint' => __( 'Set the background image. Only JPG or PNG', 'apt' ),
225
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
226
- 'layout' => $layout_columns,
227
- ];
228
- }
229
-
230
- $options[] = [
231
- 'type' => 'dropdown',
232
- 'way' => 'buttons',
233
- 'name' => 'image-type',
234
- 'data' => [
235
- [ 'jpg', __( 'JPEG', 'apt' ) ],
236
- [ 'png', __( 'PNG', 'apt' ) ],
237
- ],
238
- 'default' => 'jpg',
239
- 'title' => __( 'Image format', 'apt' ),
240
- 'hint' => __( 'Set format to save images', 'apt' ),
241
- ];
242
-
243
- $options[] = [
244
- 'type' => 'integer',
245
- 'way' => 'text',
246
- 'name' => 'image-width',
247
- 'units' => 'px',
248
- 'default' => 800,
249
- 'title' => __( 'Image size: width', 'apt' ),
250
- 'hint' => __( 'Set width of the image for the featured image', 'apt' ),
251
- ];
252
-
253
- $options[] = [
254
- 'type' => 'integer',
255
- 'way' => 'text',
256
- 'name' => 'image-height',
257
- 'units' => 'px',
258
- 'default' => 600,
259
- 'title' => __( 'Image size: height', 'apt' ),
260
- 'hint' => __( 'Set height of the image for the featured image', 'apt' ),
261
- ];
262
-
263
- //----------------------------------------------------------------------
264
- $options[] = [
265
- 'type' => 'html',
266
- 'html' => $this->group_header( __( 'Font settings', 'apt' ), '' ),
267
- ];
268
-
269
- $options[] = [
270
- 'type' => 'wapt-fonts',
271
- 'name' => 'font',
272
- 'data' => AutoPostThumbnails::get_fonts(),
273
- 'empty' => '',
274
- 'title' => __( 'Font name', 'apt' ),
275
- 'hint' => __( 'Select a font for the text in the featured image', 'apt' ),
276
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
277
- 'layout' => $layout_columns,
278
- ];
279
-
280
- $options[] = [
281
- 'type' => 'integer',
282
- 'way' => 'text',
283
- 'name' => 'font-size',
284
- 'units' => 'pt',
285
- 'default' => 25,
286
- 'title' => __( 'Font size', 'apt' ),
287
- 'hint' => __( 'Set the font size for the featured image', 'apt' ),
288
- ];
289
-
290
- $options[] = [
291
- 'type' => 'wapt-color',
292
- 'name' => 'font-color',
293
- 'title' => __( 'Font color', 'apt' ),
294
- 'hint' => __( 'Set the font color for the featured image', 'apt' ),
295
- 'layout' => $layout_columns,
296
- ];
297
-
298
- //----------------------------------------------------------------------
299
- $options[] = [
300
- 'type' => 'html',
301
- 'html' => $this->group_header( __( 'Text settings', 'apt' ), '' ),
302
- ];
303
-
304
- $options[] = [
305
- 'type' => 'checkbox',
306
- 'way' => 'buttons',
307
- 'name' => 'shadow',
308
- 'default' => '0',
309
- 'title' => __( 'Text shadow', 'apt' ),
310
- 'hint' => __( 'Use text shadow?', 'apt' ),
311
- 'eventsOn' => [
312
- 'show' => '.factory-control-shadow-color',
313
- ],
314
- 'eventsOff' => [
315
- 'hide' => '.factory-control-shadow-color',
316
- ],
317
- ];
318
-
319
- $options[] = [
320
- 'type' => 'wapt-color',
321
- 'name' => 'shadow-color',
322
- 'title' => __( 'Shadow color', 'apt' ),
323
- 'hint' => __( 'Set the shadow color for the text', 'apt' ),
324
- 'layout' => $layout_columns,
325
- ];
326
-
327
- $options[] = [
328
- 'type' => 'dropdown',
329
- 'way' => 'buttons',
330
- 'name' => 'text-transform',
331
- 'data' => [
332
- [ 'no', __( 'No transform', 'apt' ) ],
333
- [ 'upper', __( 'Uppercase', 'apt' ) ],
334
- [ 'lower', __( 'Lowercase', 'apt' ) ],
335
- ],
336
- 'default' => 'no',
337
- 'title' => __( 'Text transform', 'apt' ),
338
- 'hint' => __( 'Select type of text transformation', 'apt' ),
339
- ];
340
-
341
- $options[] = [
342
- 'type' => 'integer',
343
- 'way' => 'text',
344
- 'name' => 'text-crop',
345
- 'units' => __( 'chars', 'apt' ),
346
- 'default' => 50,
347
- 'title' => __( 'Text length', 'apt' ),
348
- 'hint' => __( 'Set the maximum text length', 'apt' ),
349
- ];
350
-
351
- $options[] = [
352
- 'type' => 'integer',
353
- 'way' => 'text',
354
- 'name' => 'text-line-spacing',
355
- 'range' => [ 0, 3 ],
356
- 'default' => 1.5,
357
- 'title' => __( 'Line spacing', 'apt' ),
358
- 'hint' => __( 'Set the line spacing', 'apt' ),
359
- ];
360
-
361
- //----------------------------------------------------------------------
362
- $options[] = [
363
- 'type' => 'html',
364
- 'html' => $this->group_header( __( 'Alignment', 'apt' ), '' ),
365
- ];
366
-
367
- $options[] = [
368
- 'type' => 'dropdown',
369
- 'way' => 'buttons',
370
- 'name' => 'text-align-horizontal',
371
- 'data' => [
372
- [ 'left', __( 'Left', 'apt' ) ],
373
- [ 'center', __( 'Center', 'apt' ) ],
374
- [ 'right', __( 'Right', 'apt' ) ],
375
- ],
376
- 'default' => 'center',
377
- 'title' => __( 'Horizontal text alignment', 'apt' ) . $pro,
378
- 'hint' => __( 'Select how to horizontally align the text on the image', 'apt' ),
379
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
380
- ];
381
-
382
- $options[] = [
383
- 'type' => 'dropdown',
384
- 'way' => 'buttons',
385
- 'name' => 'text-align-vertical',
386
- 'data' => [
387
- [ 'top', __( 'Top', 'apt' ) ],
388
- [ 'center', __( 'Center', 'apt' ) ],
389
- [ 'bottom', __( 'Bottom', 'apt' ) ],
390
- ],
391
- 'default' => 'center',
392
- 'title' => __( 'Vertical text alignment', 'apt' ) . $pro,
393
- 'hint' => __( 'Select how to vertically align the text on the image', 'apt' ),
394
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
395
- ];
396
-
397
- //----------------------------------------------------------------------
398
- $options[] = [
399
- 'type' => 'html',
400
- 'html' => $this->group_header( __( 'Padding', 'apt' ), '' ),
401
- ];
402
-
403
- $options[] = [
404
- 'type' => 'integer',
405
- 'way' => 'text',
406
- 'name' => 'text-padding-tb',
407
- 'units' => __( 'px', 'apt' ),
408
- 'default' => 15,
409
- 'title' => __( 'Top/bottom text padding', 'apt' ) . $pro,
410
- 'hint' => __( 'Padding at the top and bottom of the text', 'apt' ),
411
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
412
- ];
413
-
414
- $options[] = [
415
- 'type' => 'integer',
416
- 'way' => 'text',
417
- 'name' => 'text-padding-lr',
418
- 'units' => __( 'px', 'apt' ),
419
- 'default' => 15,
420
- 'title' => __( 'Left/right text padding', 'apt' ) . $pro,
421
- 'hint' => __( 'Padding at the left and right of the text', 'apt' ),
422
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
423
- ];
424
-
425
- //----------------------------------------------------------------------
426
- $options[] = [
427
- 'type' => 'html',
428
- 'html' => $this->group_header( __( 'Addition of text', 'apt' ), '' ),
429
- ];
430
-
431
- $options[] = [
432
- 'type' => 'textbox',
433
- 'name' => 'before-text',
434
- 'default' => '',
435
- 'title' => __( 'String before text', 'apt' ) . $pro,
436
- 'hint' => __( 'Additional string before text. For a line break, use <b>[br]</b>', 'apt' ),
437
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
438
- 'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
439
- ];
440
-
441
- $options[] = [
442
- 'type' => 'textbox',
443
- 'name' => 'after-text',
444
- 'default' => '',
445
- 'title' => __( 'String after text', 'apt' ) . $pro,
446
- 'hint' => __( 'Additional string after text. For a line break, use <b>[br]</b>', 'apt' ),
447
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
448
- 'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
449
- ];
450
-
451
- $form_options[] = [
452
- 'type' => 'form-group',
453
- 'items' => $options,
454
- //'cssClass' => 'postbox'
455
- ];
456
-
457
- return $form_options;
458
- }
459
-
460
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use WBCR\APT\AutoPostThumbnails;
4
+
5
+ // Exit if accessed directly
6
+ if (!defined('ABSPATH')) {
7
+ exit;
8
+ }
9
+
10
+ require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
11
+
12
+ /**
13
+ * The page Settings.
14
+ *
15
+ * @since 1.0.0
16
+ */
17
+ class WAPT_ImageSettings extends WAPT_Page
18
+ {
19
+
20
+ /**
21
+ * Тип страницы
22
+ * options - предназначена для создании страниц с набором опций и настроек.
23
+ * page - произвольный контент, любой html код
24
+ *
25
+ * @var string
26
+ */
27
+ public $type = 'options';
28
+
29
+ /**
30
+ * @var bool
31
+ */
32
+ public $internal = false;
33
+
34
+ /**
35
+ * @var int
36
+ */
37
+ public $page_menu_position = 200;
38
+
39
+ /**
40
+ * Menu icon (only if a page is placed as a main menu).
41
+ * For example: '~/assets/img/menu-icon.png'
42
+ * For example dashicons: '\f321'
43
+ *
44
+ * @var string
45
+ */
46
+ public $menu_icon = '';
47
+
48
+ /**
49
+ * @var string
50
+ */
51
+ public $page_menu_dashicon = 'dashicons-cover-image';
52
+
53
+ /**
54
+ * {@inheritdoc}
55
+ */
56
+ public $show_menu_tab = true;
57
+
58
+ /**
59
+ * {@inheritdoc}
60
+ */
61
+ public $show_right_sidebar_in_options = true;
62
+
63
+ /**
64
+ * @var array
65
+ */
66
+ public $post_types;
67
+
68
+ /**
69
+ * @param WAPT_Plugin $plugin
70
+ */
71
+ public function __construct($plugin)
72
+ {
73
+ $this->id = $plugin->getPrefix() . 'image';
74
+ $this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
75
+ $this->page_title = __('Image generation settings', 'apt');
76
+ $this->menu_title = __('Image', 'apt');
77
+ $this->capabilitiy = 'manage_options';
78
+ $this->template_name = 'settings';
79
+
80
+ add_action('wbcr_factory_forms_455_register_controls', function () {
81
+ $colorControls = [
82
+ [
83
+ 'type' => 'wapt-color',
84
+ 'class' => 'Wapt_FactoryForms_ColorControl',
85
+ 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.color.php',
86
+ ],
87
+ [
88
+ 'type' => 'wapt-mediabutton',
89
+ 'class' => 'Wapt_FactoryForms_MediaButtonControl',
90
+ 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.mediabutton.php',
91
+ ],
92
+ [
93
+ 'type' => 'wapt-fonts',
94
+ 'class' => 'Wapt_FactoryForms_FontsControl',
95
+ 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.fonts.php',
96
+ ],
97
+ ];
98
+ $this->plugin->forms->registerControls($colorControls);
99
+ });
100
+
101
+ //add_filter( 'wbcr/factory/pages/impressive-lite/widgets', [ $this, '' ], 10, 4 );
102
+
103
+ $this->plugin = $plugin;
104
+ $this->post_types = $this->getPostTypes();
105
+
106
+ parent::__construct($plugin);
107
+ }
108
+
109
+ /**
110
+ * Enqueue page assets
111
+ *
112
+ * @return void
113
+ * @since 3.8.1
114
+ * @see Wbcr_FactoryPages457_AdminPage
115
+ */
116
+ public function assets($scripts, $styles)
117
+ {
118
+ parent::assets($scripts, $styles);
119
+
120
+ $this->scripts->request([
121
+ 'control.list',
122
+ 'control.color',
123
+ 'plugin.color',
124
+ 'plugin.iris',
125
+ ], 'bootstrap');
126
+
127
+ $this->styles->request([
128
+ 'control.list',
129
+ 'control.color',
130
+ ], 'bootstrap');
131
+
132
+ $this->scripts->add(WAPT_PLUGIN_URL . '/admin/assets/js/jscolor.js', ['jquery'], 'wapt-color-control', WAPT_PLUGIN_VERSION);
133
+ $this->scripts->add(WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', ['jquery'], 'wapt-settings-script', WAPT_PLUGIN_VERSION);
134
+ $this->styles->add(WAPT_PLUGIN_URL . '/admin/assets/css/settings.css', [], 'wapt-settings-style', WAPT_PLUGIN_VERSION);
135
+ }
136
+
137
+ public function isShowRightSidebar()
138
+ {
139
+ return $this->show_right_sidebar_in_options;
140
+ }
141
+
142
+ public function showRightSidebar()
143
+ {
144
+ ?>
145
+ <div id="wapt-image-preview" class="wapt-image-preview">
146
+ <div class="wapt-image-preview-title"><h3><?php esc_html_e('Post thumbnail preview', 'apt'); ?></h3></div>
147
+ <?php
148
+ $format = WAPT_Plugin::app()->getPopulateOption('image-type', 'jpg');
149
+ switch ($format) {
150
+ case 'png':
151
+ $format = 'png';
152
+ break;
153
+ case 'jpg':
154
+ case 'jpeg':
155
+ default:
156
+ $format = 'jpg';
157
+ break;
158
+ }
159
+
160
+ $posts = get_posts(['numberposts' => 0]);
161
+ $id = rand(0, count($posts) - 1);
162
+ if (count($posts) !== 0) {
163
+ $txt = $posts[$id]->post_title;
164
+ } else {
165
+ $txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas aliquet turpis quis ex elementum malesuada';
166
+ }
167
+
168
+ $image = apply_filters('wapt/generate/image', AutoPostThumbnails::generate_image_with_text($txt), $txt);
169
+
170
+ $image->save(WAPT_PLUGIN_DIR . "/preview.{$format}", 100, $format);
171
+ ?>
172
+ <img src="<?php echo esc_url_raw(WAPT_PLUGIN_URL . "/preview.{$format}?" . time()); ?>"
173
+ width="100%" alt="">
174
+ </div>
175
+ <?php
176
+ }
177
+
178
+ /**
179
+ * Returns options for the Basic Settings screen.
180
+ *
181
+ * @return array
182
+ * @since 3.6.2
183
+ */
184
+ public function getPageOptions()
185
+ {
186
+
187
+ $is_premium = WAPT_Plugin::app()->is_premium();
188
+ $pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
189
+ $layout_columns = [
190
+ 'column-left' => 4,
191
+ 'column-right' => 8,
192
+ ];
193
+
194
+ $options = [];
195
+
196
+ $options[] = [
197
+ 'type' => 'html',
198
+ 'html' => $this->group_header(__('Background settings', 'apt'), ''),
199
+ ];
200
+
201
+ $options[] = [
202
+ 'type' => 'dropdown',
203
+ 'way' => 'buttons',
204
+ 'name' => 'background-type',
205
+ 'data' => [
206
+ ['color', __('Color', 'apt')],
207
+ ['image', __('Image', 'apt')],
208
+ ],
209
+ 'default' => 'color',
210
+ 'title' => __('Background type', 'apt'),
211
+ 'hint' => __('Select the background type for the featured image', 'apt'),
212
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
213
+ ];
214
+
215
+ $options[] = [
216
+ 'type' => 'color',
217
+ 'name' => 'background-color',
218
+ 'default' => '#ff6262',
219
+ 'title' => __('Background color for the image', 'apt'),
220
+ 'hint' => __('Set the background color for the featured image', 'apt'),
221
+ 'layout' => $layout_columns,
222
+ ];
223
+
224
+ if ($is_premium) {
225
+ $options[] = [
226
+ 'type' => 'wapt-mediabutton',
227
+ 'name' => 'background-image',
228
+ 'text' => __('Select image', 'apt'),
229
+ 'title' => __('Background image', 'apt'),
230
+ 'hint' => __('Set the background image. Only JPG or PNG', 'apt'),
231
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
232
+ 'layout' => $layout_columns,
233
+ ];
234
+ }
235
+
236
+ if ($is_premium) {
237
+ $options[] = [
238
+ 'type' => 'wapt-mediabutton',
239
+ 'name' => 'default-background',
240
+ 'text' => __('Select image', 'apt'),
241
+ 'title' => __('Default image', 'apt'),
242
+ 'hint' => __('Choose a default image for posts. JPG or PNG only.', 'apt'),
243
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
244
+ 'layout' => $layout_columns,
245
+ ];
246
+ }
247
+
248
+ $options[] = [
249
+ 'type' => 'dropdown',
250
+ 'way' => 'buttons',
251
+ 'name' => 'image-type',
252
+ 'data' => [
253
+ ['jpg', __('JPEG', 'apt')],
254
+ ['png', __('PNG', 'apt')],
255
+ ],
256
+ 'default' => 'jpg',
257
+ 'title' => __('Image format', 'apt'),
258
+ 'hint' => __('Set format to save images', 'apt'),
259
+ ];
260
+
261
+ $options[] = [
262
+ 'type' => 'integer',
263
+ 'way' => 'text',
264
+ 'name' => 'image-width',
265
+ 'units' => 'px',
266
+ 'default' => 800,
267
+ 'title' => __('Image size: width', 'apt'),
268
+ 'hint' => __('Set width of the image for the featured image', 'apt'),
269
+ ];
270
+
271
+ $options[] = [
272
+ 'type' => 'integer',
273
+ 'way' => 'text',
274
+ 'name' => 'image-height',
275
+ 'units' => 'px',
276
+ 'default' => 600,
277
+ 'title' => __('Image size: height', 'apt'),
278
+ 'hint' => __('Set height of the image for the featured image', 'apt'),
279
+ ];
280
+
281
+ //----------------------------------------------------------------------
282
+ $options[] = [
283
+ 'type' => 'html',
284
+ 'html' => $this->group_header(__('Font settings', 'apt'), ''),
285
+ ];
286
+
287
+ $options[] = [
288
+ 'type' => 'wapt-fonts',
289
+ 'name' => 'font',
290
+ 'data' => AutoPostThumbnails::get_fonts(),
291
+ 'empty' => '',
292
+ 'title' => __('Font name', 'apt'),
293
+ 'hint' => __('Select a font for the text in the featured image', 'apt'),
294
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
295
+ 'layout' => $layout_columns,
296
+ ];
297
+
298
+ $options[] = [
299
+ 'type' => 'integer',
300
+ 'way' => 'text',
301
+ 'name' => 'font-size',
302
+ 'units' => 'pt',
303
+ 'default' => 25,
304
+ 'title' => __('Font size', 'apt'),
305
+ 'hint' => __('Set the font size for the featured image', 'apt'),
306
+ ];
307
+
308
+ $options[] = [
309
+ 'type' => 'wapt-color',
310
+ 'name' => 'font-color',
311
+ 'title' => __('Font color', 'apt'),
312
+ 'hint' => __('Set the font color for the featured image', 'apt'),
313
+ 'layout' => $layout_columns,
314
+ ];
315
+
316
+ //----------------------------------------------------------------------
317
+ $options[] = [
318
+ 'type' => 'html',
319
+ 'html' => $this->group_header(__('Text settings', 'apt'), ''),
320
+ ];
321
+
322
+ $options[] = [
323
+ 'type' => 'checkbox',
324
+ 'way' => 'buttons',
325
+ 'name' => 'shadow',
326
+ 'default' => '0',
327
+ 'title' => __('Text shadow', 'apt'),
328
+ 'hint' => __('Use text shadow?', 'apt'),
329
+ 'eventsOn' => [
330
+ 'show' => '.factory-control-shadow-color',
331
+ ],
332
+ 'eventsOff' => [
333
+ 'hide' => '.factory-control-shadow-color',
334
+ ],
335
+ ];
336
+
337
+ $options[] = [
338
+ 'type' => 'wapt-color',
339
+ 'name' => 'shadow-color',
340
+ 'title' => __('Shadow color', 'apt'),
341
+ 'hint' => __('Set the shadow color for the text', 'apt'),
342
+ 'layout' => $layout_columns,
343
+ ];
344
+
345
+ $options[] = [
346
+ 'type' => 'dropdown',
347
+ 'way' => 'buttons',
348
+ 'name' => 'text-transform',
349
+ 'data' => [
350
+ ['no', __('No transform', 'apt')],
351
+ ['upper', __('Uppercase', 'apt')],
352
+ ['lower', __('Lowercase', 'apt')],
353
+ ],
354
+ 'default' => 'no',
355
+ 'title' => __('Text transform', 'apt'),
356
+ 'hint' => __('Select type of text transformation', 'apt'),
357
+ ];
358
+
359
+ $options[] = [
360
+ 'type' => 'integer',
361
+ 'way' => 'text',
362
+ 'name' => 'text-crop',
363
+ 'units' => __('chars', 'apt'),
364
+ 'default' => 50,
365
+ 'title' => __('Text length', 'apt'),
366
+ 'hint' => __('Set the maximum text length', 'apt'),
367
+ ];
368
+
369
+ $options[] = [
370
+ 'type' => 'integer',
371
+ 'way' => 'text',
372
+ 'name' => 'text-line-spacing',
373
+ 'range' => [0, 3],
374
+ 'default' => 1.5,
375
+ 'title' => __('Line spacing', 'apt'),
376
+ 'hint' => __('Set the line spacing', 'apt'),
377
+ ];
378
+
379
+ //----------------------------------------------------------------------
380
+ $options[] = [
381
+ 'type' => 'html',
382
+ 'html' => $this->group_header(__('Alignment', 'apt'), ''),
383
+ ];
384
+
385
+ $options[] = [
386
+ 'type' => 'dropdown',
387
+ 'way' => 'buttons',
388
+ 'name' => 'text-align-horizontal',
389
+ 'data' => [
390
+ ['left', __('Left', 'apt')],
391
+ ['center', __('Center', 'apt')],
392
+ ['right', __('Right', 'apt')],
393
+ ],
394
+ 'default' => 'center',
395
+ 'title' => __('Horizontal text alignment', 'apt') . $pro,
396
+ 'hint' => __('Select how to horizontally align the text on the image', 'apt'),
397
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
398
+ ];
399
+
400
+ $options[] = [
401
+ 'type' => 'dropdown',
402
+ 'way' => 'buttons',
403
+ 'name' => 'text-align-vertical',
404
+ 'data' => [
405
+ ['top', __('Top', 'apt')],
406
+ ['center', __('Center', 'apt')],
407
+ ['bottom', __('Bottom', 'apt')],
408
+ ],
409
+ 'default' => 'center',
410
+ 'title' => __('Vertical text alignment', 'apt') . $pro,
411
+ 'hint' => __('Select how to vertically align the text on the image', 'apt'),
412
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
413
+ ];
414
+
415
+ //----------------------------------------------------------------------
416
+ $options[] = [
417
+ 'type' => 'html',
418
+ 'html' => $this->group_header(__('Padding', 'apt'), ''),
419
+ ];
420
+
421
+ $options[] = [
422
+ 'type' => 'integer',
423
+ 'way' => 'text',
424
+ 'name' => 'text-padding-tb',
425
+ 'units' => __('px', 'apt'),
426
+ 'default' => 15,
427
+ 'title' => __('Top/bottom text padding', 'apt') . $pro,
428
+ 'hint' => __('Padding at the top and bottom of the text', 'apt'),
429
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
430
+ ];
431
+
432
+ $options[] = [
433
+ 'type' => 'integer',
434
+ 'way' => 'text',
435
+ 'name' => 'text-padding-lr',
436
+ 'units' => __('px', 'apt'),
437
+ 'default' => 15,
438
+ 'title' => __('Left/right text padding', 'apt') . $pro,
439
+ 'hint' => __('Padding at the left and right of the text', 'apt'),
440
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
441
+ ];
442
+
443
+ //----------------------------------------------------------------------
444
+ $options[] = [
445
+ 'type' => 'html',
446
+ 'html' => $this->group_header(__('Addition of text', 'apt'), ''),
447
+ ];
448
+
449
+ $options[] = [
450
+ 'type' => 'textbox',
451
+ 'name' => 'before-text',
452
+ 'default' => '',
453
+ 'title' => __('String before text', 'apt') . $pro,
454
+ 'hint' => __('Additional string before text. For a line break, use <b>[br]</b>', 'apt'),
455
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
456
+ 'htmlAttrs' => (!$is_premium) ? ['disabled' => 'disabled'] : [],
457
+ ];
458
+
459
+ $options[] = [
460
+ 'type' => 'textbox',
461
+ 'name' => 'after-text',
462
+ 'default' => '',
463
+ 'title' => __('String after text', 'apt') . $pro,
464
+ 'hint' => __('Additional string after text. For a line break, use <b>[br]</b>', 'apt'),
465
+ 'cssClass' => (!$is_premium) ? ['wapt-icon-pro'] : [],
466
+ 'htmlAttrs' => (!$is_premium) ? ['disabled' => 'disabled'] : [],
467
+ ];
468
+
469
+ $form_options[] = [
470
+ 'type' => 'form-group',
471
+ 'items' => $options,
472
+ //'cssClass' => 'postbox'
473
+ ];
474
+
475
+ return $form_options;
476
+ }
477
+
478
+ }
admin/pages/license.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
 
3
  // Exit if accessed directly
4
- use WBCR\Factory_453\Premium\Interfaces\License;
5
- use WBCR\Factory_453\Premium\Provider;
6
 
7
  if ( ! defined( 'ABSPATH' ) ) {
8
  exit;
1
  <?php
2
 
3
  // Exit if accessed directly
4
+ use WBCR\Factory_458\Premium\Interfaces\License;
5
+ use WBCR\Factory_458\Premium\Provider;
6
 
7
  if ( ! defined( 'ABSPATH' ) ) {
8
  exit;
admin/pages/log.php CHANGED
@@ -37,7 +37,7 @@ class WAPT_Log extends WAPT_Page_Logger {
37
 
38
  /**
39
  * Menu position (only if a page is placed as a main menu).
40
- *
41
  * @link http://codex.wordpress.org/Function_Reference/add_menu_page
42
  * @var string
43
  */
37
 
38
  /**
39
  * Menu position (only if a page is placed as a main menu).
40
+ *
41
  * @link http://codex.wordpress.org/Function_Reference/add_menu_page
42
  * @var string
43
  */
admin/pages/settings.php CHANGED
@@ -1,256 +1,259 @@
1
- <?php
2
-
3
- use WBCR\APT\AutoPostThumbnails;
4
-
5
- // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit;
8
- }
9
-
10
- require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
11
-
12
- /**
13
- * The page Settings.
14
- *
15
- * @since 1.0.0
16
- */
17
- class WAPT_Settings extends WAPT_Page {
18
-
19
- /**
20
- * Тип страницы
21
- * options - предназначена для создании страниц с набором опций и настроек.
22
- * page - произвольный контент, любой html код
23
- *
24
- * @var string
25
- */
26
- public $type = 'options';
27
-
28
- /**
29
- * @var bool
30
- */
31
- public $internal = false;
32
-
33
- /**
34
- * @var int
35
- */
36
- public $page_menu_position = 200;
37
-
38
- /**
39
- * Menu icon (only if a page is placed as a main menu).
40
- * For example: '~/assets/img/menu-icon.png'
41
- * For example dashicons: '\f321'
42
- *
43
- * @var string
44
- */
45
- public $menu_icon = '';
46
-
47
- /**
48
- * @var string
49
- */
50
- public $page_menu_dashicon = 'dashicons-admin-settings';
51
-
52
- /**
53
- * {@inheritdoc}
54
- */
55
- public $show_menu_tab = true;
56
-
57
- /**
58
- * @var array
59
- */
60
- public $post_types;
61
-
62
- /**
63
- * @param WAPT_Plugin $plugin
64
- */
65
- public function __construct( $plugin ) {
66
- $this->id = $plugin->getPrefix() . 'settings';
67
- $this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
68
- $this->page_title = __( 'Settings of APT', 'apt' );
69
- $this->menu_title = __( 'Settings', 'apt' );
70
- $this->page_menu_short_description = __( 'General settings', 'apt' );
71
- $this->capabilitiy = 'manage_options';
72
- $this->template_name = 'settings';
73
-
74
- $this->plugin = $plugin;
75
- $this->post_types = $this->getPostTypes();
76
-
77
- parent::__construct( $plugin );
78
- }
79
-
80
- /**
81
- * Enqueue page assets
82
- *
83
- * @return void
84
- * @since 3.8.1
85
- * @see Wbcr_FactoryPages452_AdminPage
86
- */
87
- public function assets( $scripts, $styles ) {
88
- parent::assets( $scripts, $styles );
89
-
90
- $this->scripts->request(
91
- [
92
- 'control.list',
93
- 'bootstrap.accordion',
94
- 'bootstrap.tab',
95
- ],
96
- 'bootstrap'
97
- );
98
-
99
- $this->styles->request(
100
- [
101
- 'control.list',
102
- 'bootstrap.accordion',
103
- 'bootstrap.tab',
104
- ],
105
- 'bootstrap'
106
- );
107
-
108
- $this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [ 'jquery' ], 'wapt-settings-script', WAPT_PLUGIN_VERSION );
109
- $this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/settings.css', [], 'wapt-settings-style', WAPT_PLUGIN_VERSION );
110
- }
111
-
112
- /**
113
- * Returns options for the Basic Settings screen.
114
- *
115
- * @return array
116
- * @since 3.6.2
117
- */
118
- public function getPageOptions() {
119
- $is_premium = WAPT_Plugin::app()->is_premium();
120
- $pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
121
-
122
- $options = [];
123
-
124
- $options[] = [
125
- 'type' => 'html',
126
- 'html' => $this->group_header( __( 'General', 'apt' ), __( 'Basic plugin settings', 'apt' ) ),
127
- ];
128
-
129
- $options[] = [
130
- 'type' => 'checkbox',
131
- 'way' => 'buttons',
132
- 'name' => 'auto_generation',
133
- 'title' => __( 'Add featured image when saving a post', 'apt' ),
134
- 'default' => true,
135
- 'hint' => __( 'Automatically add featured image when saving a post', 'apt' ),
136
- ];
137
-
138
- $options[] = [
139
- 'type' => 'dropdown',
140
- 'way' => 'buttons',
141
- 'name' => 'generate_autoimage',
142
- 'data' => [
143
- [ 'find', __( 'Find in post', 'apt' ) ],
144
- [ 'generate', __( 'Generate from title', 'apt' ) ],
145
- [ 'both', __( 'Find or generate', 'apt' ) ],
146
- [ 'google', __( 'Google', 'apt' ) ],
147
- [ 'find_google', __( 'Find or Google', 'apt' ) ],
148
- ],
149
- 'default' => 'find',
150
- 'title' => __( 'Featured image', 'apt' ),
151
- 'hint' => __(
152
- 'How to generate featured image:
153
- <br> <b>Find in post:</b> search for the first image in the post text
154
- <br> <b>Generate from title:</b> created from the title on a colored background
155
- <br> <b>Find or generate:</b> find an image in the post text, if it is not present, generate it from the title
156
- <br> <b>Google:</b> search for an image by title of the post in Google
157
- <br> <b>Find or Google:</b> find an image in the post text, if it is not present, search for an image by title of the post in Google',
158
- 'apt'
159
- ),
160
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro-item' ] : [],
161
- ];
162
-
163
- $options[] = [
164
- 'type' => 'list',
165
- 'way' => 'checklist',
166
- 'name' => 'auto_post_types',
167
- 'data' => $is_premium ? $this->getPostTypes() : $this->post_types,
168
- 'default' => 'post,page',
169
- 'title' => __( 'Generate for post types', 'apt' ),
170
- 'hint' => __( 'What types of posts to generate images for', 'apt' ),
171
- ];
172
-
173
- $options[] = [
174
- 'type' => 'checkbox',
175
- 'way' => 'buttons',
176
- 'name' => 'delete_settings',
177
- 'title' => __( 'Delete settings when removing the plugin', 'apt' ),
178
- 'default' => false,
179
- 'hint' => __( 'Delete settings when removing the plugin', 'apt' ),
180
- ];
181
-
182
- /* ------------------ IMPORT SETTINGS -----------------------*/
183
- $options[] = [
184
- 'type' => 'html',
185
- 'html' => $this->group_header( __( 'Import', 'apt' ), __( 'Images import settings', 'apt' ) ),
186
- ];
187
-
188
- $options[] = [
189
- 'type' => 'checkbox',
190
- 'way' => 'buttons',
191
- 'name' => 'auto_upload_images',
192
- 'title' => __( 'Auto images import', 'apt' ),
193
- 'default' => false,
194
- 'hint' => __( 'Import post images to the media library and replacing them in the text when saving the post', 'apt' ),
195
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
196
- ];
197
-
198
- $options[] = [
199
- 'type' => 'list',
200
- 'way' => 'checklist',
201
- 'name' => 'import_post_types',
202
- 'data' => $is_premium ? $this->getPostTypes() : $this->post_types,
203
- 'default' => '',
204
- 'title' => __( 'Import for post types', 'apt' ) . $pro,
205
- 'hint' => __( 'What types of posts to import images for', 'apt' ),
206
- 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
207
- 'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
208
- ];
209
-
210
- /* ------------------ API SETTINGS -----------------------*/
211
- $options[] = [
212
- 'type' => 'html',
213
- 'html' => $this->group_header( __( 'Google API', 'apt' ), __( 'Settings connecting to the Google API service', 'apt' ) ),
214
- ];
215
-
216
- /* GOOGLE */
217
- $options[] = [
218
- 'type' => 'html',
219
- 'html' => $this->instruction( __( 'Google API', 'apt' ), '<a href="https://www.youtube.com/watch?v=Bxy8Yqp5XX0" target="_blank" rel="noopener">' . __( 'How to get google api key & custom search engine id', 'apt' ) . '</a>' ),
220
- ];
221
-
222
- $options[] = [
223
- 'type' => 'hidden',
224
- 'name' => 'ajax_nonce',
225
- 'value' => '', //wp_create_nonce( 'check-api-key' )
226
- ];
227
-
228
- // Текстовое поле
229
- $options[] = [
230
- 'type' => 'textbox',
231
- 'name' => 'google_apikey',
232
- 'title' => __( 'API key for Google', 'apt' ),
233
- 'hint' => __( 'You can get API key after registration on the site' ) . ' <a href="https://developers.google.com/custom-search/v1/overview" target="_blank" rel="noopener">https://developers.google.com/custom-search/v1/overview</a>',
234
- 'default' => '',
235
- ];
236
-
237
- $options[] = [
238
- 'type' => 'textbox',
239
- 'name' => 'google_cse',
240
- 'title' => __( 'Google Custom Search Engine ID', 'apt' ),
241
- 'hint' => __( 'You can get API key after registration on the site', 'apt' ) . ' <a href="https://cse.google.com/cse/all" target="_blank" rel="noopener">https://cse.google.com/cse/all</a>',
242
- 'default' => '',
243
- ];
244
-
245
- $options = apply_filters( 'wapt/settings/form_options', $options );
246
-
247
- $form_options[] = [
248
- 'type' => 'form-group',
249
- 'items' => $options,
250
- //'cssClass' => 'postbox'
251
- ];
252
-
253
- return $form_options;
254
- }
255
-
256
- }
 
 
 
1
+ <?php
2
+
3
+ use WBCR\APT\AutoPostThumbnails;
4
+
5
+ // Exit if accessed directly
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit;
8
+ }
9
+
10
+ require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
11
+
12
+ /**
13
+ * The page Settings.
14
+ *
15
+ * @since 1.0.0
16
+ */
17
+ class WAPT_Settings extends WAPT_Page {
18
+
19
+ /**
20
+ * Тип страницы
21
+ * options - предназначена для создании страниц с набором опций и настроек.
22
+ * page - произвольный контент, любой html код
23
+ *
24
+ * @var string
25
+ */
26
+ public $type = 'options';
27
+
28
+ /**
29
+ * @var bool
30
+ */
31
+ public $internal = false;
32
+
33
+ /**
34
+ * @var int
35
+ */
36
+ public $page_menu_position = 200;
37
+
38
+ /**
39
+ * Menu icon (only if a page is placed as a main menu).
40
+ * For example: '~/assets/img/menu-icon.png'
41
+ * For example dashicons: '\f321'
42
+ *
43
+ * @var string
44
+ */
45
+ public $menu_icon = '';
46
+
47
+ /**
48
+ * @var string
49
+ */
50
+ public $page_menu_dashicon = 'dashicons-admin-settings';
51
+
52
+ /**
53
+ * {@inheritdoc}
54
+ */
55
+ public $show_menu_tab = true;
56
+
57
+ /**
58
+ * @var array
59
+ */
60
+ public $post_types;
61
+
62
+ /**
63
+ * @param WAPT_Plugin $plugin
64
+ */
65
+ public function __construct( $plugin ) {
66
+ $this->id = $plugin->getPrefix() . 'settings';
67
+ $this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
68
+ $this->page_title = __( 'Settings of APT', 'apt' );
69
+ $this->menu_title = __( 'Settings', 'apt' );
70
+ $this->page_menu_short_description = __( 'General settings', 'apt' );
71
+ $this->capabilitiy = 'manage_options';
72
+ $this->template_name = 'settings';
73
+
74
+ $this->plugin = $plugin;
75
+ $this->post_types = $this->getPostTypes();
76
+
77
+ parent::__construct( $plugin );
78
+ }
79
+
80
+ /**
81
+ * Enqueue page assets
82
+ *
83
+ * @return void
84
+ * @since 3.8.1
85
+ * @see Wbcr_FactoryPages457_AdminPage
86
+ */
87
+ public function assets( $scripts, $styles ) {
88
+ parent::assets( $scripts, $styles );
89
+
90
+ $this->scripts->request(
91
+ [
92
+ 'control.list',
93
+ 'bootstrap.accordion',
94
+ 'bootstrap.tab',
95
+ ],
96
+ 'bootstrap'
97
+ );
98
+
99
+ $this->styles->request(
100
+ [
101
+ 'control.list',
102
+ 'bootstrap.accordion',
103
+ 'bootstrap.tab',
104
+ ],
105
+ 'bootstrap'
106
+ );
107
+
108
+ $this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [ 'jquery' ], 'wapt-settings-script', WAPT_PLUGIN_VERSION );
109
+ $this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/settings.css', [], 'wapt-settings-style', WAPT_PLUGIN_VERSION );
110
+ }
111
+
112
+ /**
113
+ * Returns options for the Basic Settings screen.
114
+ *
115
+ * @return array
116
+ * @since 3.6.2
117
+ */
118
+ public function getPageOptions() {
119
+ $is_premium = WAPT_Plugin::app()->is_premium();
120
+ $pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
121
+
122
+ $options = [];
123
+
124
+ $options[] = [
125
+ 'type' => 'html',
126
+ 'html' => $this->group_header( __( 'General', 'apt' ), __( 'Basic plugin settings', 'apt' ) ),
127
+ ];
128
+
129
+ $options[] = [
130
+ 'type' => 'checkbox',
131
+ 'way' => 'buttons',
132
+ 'name' => 'auto_generation',
133
+ 'title' => __( 'Add featured image when saving a post', 'apt' ),
134
+ 'default' => true,
135
+ 'hint' => __( 'Automatically add featured image when saving a post', 'apt' ),
136
+ ];
137
+
138
+ $options[] = [
139
+ 'type' => 'dropdown',
140
+ 'way' => 'buttons',
141
+ 'name' => 'generate_autoimage',
142
+ 'data' => [
143
+ [ 'find', __( 'Find in post', 'apt' ) ],
144
+ [ 'generate', __( 'Generate from title', 'apt' ) ],
145
+ [ 'both', __( 'Find or generate', 'apt' ) ],
146
+ [ 'google', __( 'Google', 'apt' ) ],
147
+ [ 'find_google', __( 'Find or Google', 'apt' ) ],
148
+ [ 'use_default', __('Find or use default image', 'apt' )]
149
+ ],
150
+ 'default' => 'find',
151
+ 'title' => __( 'Featured image', 'apt' ),
152
+ 'hint' => __(
153
+ 'How to generate featured image:
154
+ <br> <b>Find in post:</b> search for the first image in the post text
155
+ <br> <b>Generate from title:</b> created from the title on a colored background
156
+ <br> <b>Find or generate:</b> find an image in the post text, if it is not present, generate it from the title
157
+ <br> <b>Google:</b> search for an image by title of the post in Google
158
+ <br> <b>Find or Google:</b> find an image in the post text, if it is not present, search for an image by title of the post in Google
159
+ <br> <b>Find or use default Image</b> find an image in the post text, if it is not present, use default image for posts',
160
+
161
+ 'apt'
162
+ ),
163
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro-item' ] : [],
164
+ ];
165
+
166
+ $options[] = [
167
+ 'type' => 'list',
168
+ 'way' => 'checklist',
169
+ 'name' => 'auto_post_types',
170
+ 'data' => $is_premium ? $this->getPostTypes() : $this->post_types,
171
+ 'default' => 'post,page',
172
+ 'title' => __( 'Generate for post types', 'apt' ),
173
+ 'hint' => __( 'What types of posts to generate images for', 'apt' ),
174
+ ];
175
+
176
+ $options[] = [
177
+ 'type' => 'checkbox',
178
+ 'way' => 'buttons',
179
+ 'name' => 'delete_settings',
180
+ 'title' => __( 'Delete settings when removing the plugin', 'apt' ),
181
+ 'default' => false,
182
+ 'hint' => __( 'Delete settings when removing the plugin', 'apt' ),
183
+ ];
184
+
185
+ /* ------------------ IMPORT SETTINGS -----------------------*/
186
+ $options[] = [
187
+ 'type' => 'html',
188
+ 'html' => $this->group_header( __( 'Import', 'apt' ), __( 'Images import settings', 'apt' ) ),
189
+ ];
190
+
191
+ $options[] = [
192
+ 'type' => 'checkbox',
193
+ 'way' => 'buttons',
194
+ 'name' => 'auto_upload_images',
195
+ 'title' => __( 'Auto images import', 'apt' ),
196
+ 'default' => false,
197
+ 'hint' => __( 'Import post images to the media library and replacing them in the text when saving the post', 'apt' ),
198
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
199
+ ];
200
+
201
+ $options[] = [
202
+ 'type' => 'list',
203
+ 'way' => 'checklist',
204
+ 'name' => 'import_post_types',
205
+ 'data' => $is_premium ? $this->getPostTypes() : $this->post_types,
206
+ 'default' => '',
207
+ 'title' => __( 'Import for post types', 'apt' ) . $pro,
208
+ 'hint' => __( 'What types of posts to import images for', 'apt' ),
209
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
210
+ 'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
211
+ ];
212
+
213
+ /* ------------------ API SETTINGS -----------------------*/
214
+ $options[] = [
215
+ 'type' => 'html',
216
+ 'html' => $this->group_header( __( 'Google API', 'apt' ), __( 'Settings connecting to the Google API service', 'apt' ) ),
217
+ ];
218
+
219
+ /* GOOGLE */
220
+ $options[] = [
221
+ 'type' => 'html',
222
+ 'html' => $this->instruction( __( 'Google API', 'apt' ), '<a href="https://www.youtube.com/watch?v=Bxy8Yqp5XX0" target="_blank" rel="noopener">' . __( 'How to get google api key & custom search engine id', 'apt' ) . '</a>' ),
223
+ ];
224
+
225
+ $options[] = [
226
+ 'type' => 'hidden',
227
+ 'name' => 'ajax_nonce',
228
+ 'value' => '', //wp_create_nonce( 'check-api-key' )
229
+ ];
230
+
231
+ // Текстовое поле
232
+ $options[] = [
233
+ 'type' => 'textbox',
234
+ 'name' => 'google_apikey',
235
+ 'title' => __( 'API key for Google', 'apt' ),
236
+ 'hint' => __( 'You can get API key after registration on the site' ) . ' <a href="https://developers.google.com/custom-search/v1/overview" target="_blank" rel="noopener">https://developers.google.com/custom-search/v1/overview</a>',
237
+ 'default' => '',
238
+ ];
239
+
240
+ $options[] = [
241
+ 'type' => 'textbox',
242
+ 'name' => 'google_cse',
243
+ 'title' => __( 'Google Custom Search Engine ID', 'apt' ),
244
+ 'hint' => __( 'You can get API key after registration on the site', 'apt' ) . ' <a href="https://cse.google.com/cse/all" target="_blank" rel="noopener">https://cse.google.com/cse/all</a>',
245
+ 'default' => '',
246
+ ];
247
+
248
+ $options = apply_filters( 'wapt/settings/form_options', $options );
249
+
250
+ $form_options[] = [
251
+ 'type' => 'form-group',
252
+ 'items' => $options,
253
+ //'cssClass' => 'postbox'
254
+ ];
255
+
256
+ return $form_options;
257
+ }
258
+
259
+ }
admin/views/media-library.php CHANGED
@@ -38,7 +38,7 @@ if ( isset( $_GET['post_id'] ) ) {
38
  }
39
  $is_pro = "<sup class='wapt-sup-pro'>" . $is_pro . '</sup>';
40
 
41
- echo "<li id='tabs-" . intval( $i ++ ) . "'>" . esc_html( strtoupper( $src ) ) . esc_html( $is_pro ) . '</li>';
42
  }
43
  ?>
44
  </ul>
38
  }
39
  $is_pro = "<sup class='wapt-sup-pro'>" . $is_pro . '</sup>';
40
 
41
+ echo "<li id='tabs-" . intval( $i ++ ) . "'>" . esc_html( strtoupper( $src ) ) . $is_pro . '</li>';
42
  }
43
  ?>
44
  </ul>
admin/views/tab-generate.php CHANGED
@@ -8,7 +8,7 @@ $log = $data['log'] ?? [];
8
  ?>
9
 
10
  <div class="wrap" id="wapt-generate-page">
11
- <div class="factory-bootstrap-454 factory-fontawesome-000">
12
  <div class="row wapt-statistic-row">
13
  <div class="wapt-generate-statistic">
14
  <div class="wapt-chart-container">
8
  ?>
9
 
10
  <div class="wrap" id="wapt-generate-page">
11
+ <div class="factory-bootstrap-459 factory-fontawesome-000">
12
  <div class="row wapt-statistic-row">
13
  <div class="wapt-generate-statistic">
14
  <div class="wapt-chart-container">
admin/views/tab-license.php CHANGED
@@ -1,5 +1,5 @@
1
  <div class="wrap">
2
- <div class="factory-bootstrap-454 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
  <div id="wapt-license-wrapper"
5
  data-loader="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif' ); ?>"
1
  <div class="wrap">
2
+ <div class="factory-bootstrap-459 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
  <div id="wapt-license-wrapper"
5
  data-loader="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif' ); ?>"
auto-post-thumbnail.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Auto Featured Image (Auto Post Thumbnail)
4
  Plugin URI: https://cm-wp.com/apt
5
  Description: Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
6
- Version: 3.9.9
7
  Author: Creative Motion <support@cm-wp.com>
8
  Author URI: https://cm-wp.com
9
  Text Domain: apt
@@ -89,18 +89,18 @@ $plugin_info = [
89
  ],
90
 
91
  'load_factory_modules' => [
92
- [ 'libs/factory/bootstrap', 'factory_bootstrap_454', 'admin' ],
93
- [ 'libs/factory/forms', 'factory_forms_450', 'admin' ],
94
- [ 'libs/factory/pages', 'factory_pages_452', 'admin' ],
95
- [ 'libs/factory/templates', 'factory_templates_106', 'admin' ],
96
- [ 'libs/factory/freemius', 'factory_freemius_140', 'all' ],
97
- [ 'libs/factory/adverts', 'factory_adverts_130', 'admin' ],
98
- [ 'libs/factory/feedback', 'factory_feedback_114', 'admin' ],
99
- [ 'libs/factory/logger', 'factory_logger_118', 'all' ],
100
  ],
101
  ];
102
 
103
- $wapt_compatibility = new Wbcr_Factory453_Requirements(
104
  __FILE__,
105
  array_merge(
106
  $plugin_info,
3
  Plugin Name: Auto Featured Image (Auto Post Thumbnail)
4
  Plugin URI: https://cm-wp.com/apt
5
  Description: Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
6
+ Version: 3.9.10
7
  Author: Creative Motion <support@cm-wp.com>
8
  Author URI: https://cm-wp.com
9
  Text Domain: apt
89
  ],
90
 
91
  'load_factory_modules' => [
92
+ [ 'libs/factory/bootstrap', 'factory_bootstrap_459', 'admin' ],
93
+ [ 'libs/factory/forms', 'factory_forms_455', 'admin' ],
94
+ [ 'libs/factory/pages', 'factory_pages_457', 'admin' ],
95
+ [ 'libs/factory/templates', 'factory_templates_110', 'admin' ],
96
+ [ 'libs/factory/freemius', 'factory_freemius_145', 'all' ],
97
+ [ 'libs/factory/adverts', 'factory_adverts_135', 'admin' ],
98
+ [ 'libs/factory/feedback', 'factory_feedback_118', 'admin' ],
99
+ [ 'libs/factory/logger', 'factory_logger_123', 'all' ],
100
  ],
101
  ];
102
 
103
+ $wapt_compatibility = new Wbcr_Factory458_Requirements(
104
  __FILE__,
105
  array_merge(
106
  $plugin_info,
includes/class-apt.php CHANGED
@@ -1,1412 +1,1480 @@
1
- <?php
2
-
3
- namespace WBCR\APT;
4
-
5
- use Exception;
6
- use WP_Query;
7
- use WP_Error;
8
-
9
- /**
10
- * Class AutoPostThumbnails
11
- *
12
- * @author Artem Prihodko <webtemyk@yandex.ru>, Github: https://github.com/temyk
13
- * @copyright (c) 2019, Webcraftic Ltd
14
- */
15
- class AutoPostThumbnails {
16
-
17
- /**
18
- * @var self
19
- */
20
- public static $instance;
21
-
22
- /**
23
- * @var \WAPT_Plugin
24
- */
25
- private $plugin;
26
-
27
- /**
28
- * После какой по счёту колонки вставлять новую (если 0, то в самом начале)
29
- *
30
- * @var integer
31
- */
32
- public $numberOfColumn;
33
-
34
- /**
35
- * @var AutoPostThumbnails
36
- */
37
- private $nonce;
38
-
39
- /**
40
- * Массив с параметрами сервисов
41
- *
42
- * @var array(string)
43
- */
44
- public $sources;
45
-
46
- /**
47
- * Открывается в медиабиблиотеке?
48
- *
49
- * @var bool
50
- */
51
- public $is_in_medialibrary = false;
52
-
53
- public $allowed_generate_post_types;
54
-
55
- /**
56
- * AutoPostThumbnails constructor.
57
- */
58
- public function __construct() {
59
- $this->numberOfColumn = 4;
60
- $this->plugin = \WAPT_Plugin::app();
61
-
62
- $this->sources = [
63
- 'google' => WAPT_PLUGIN_SLUG,
64
- 'recommend' => '',
65
- 'pixabay' => '',
66
- 'unsplash' => '',
67
- ];
68
- if ( \WAPT_Plugin::app()->is_premium() ) {
69
- $this->sources = [
70
- 'recommend' => '',
71
- 'google' => WAPT_PLUGIN_SLUG,
72
- 'pixabay' => '',
73
- 'unsplash' => '',
74
- ];
75
- }
76
-
77
- $this->init_includes();
78
- $this->init();
79
- }
80
-
81
- /**
82
- * Get existing instance or create new one.
83
- *
84
- * @return AutoPostThumbnails
85
- */
86
- public static function instance() {
87
- if ( null === static::$instance ) {
88
- static::$instance = new self();
89
- }
90
-
91
- return static::$instance;
92
- }
93
-
94
- /**
95
- * Init includes.
96
- */
97
- private function init_includes() {
98
- // require __DIR__ . '/src/class.template.php';
99
- }
100
-
101
- /**
102
- * Initiate all required hooks.
103
- */
104
- private function init() {
105
- $is_auto_generate = \WAPT_Plugin::app()->getPopulateOption( 'auto_generation', true );
106
- $is_auto_upload = \WAPT_Plugin::app()->getPopulateOption( 'auto_upload_images' );
107
- $allowed_import_post_types = explode( ',', \WAPT_Plugin::app()->getPopulateOption( 'import_post_types', 'post' ) );
108
-
109
- $this->allowed_generate_post_types = explode( ',', \WAPT_Plugin::app()->getPopulateOption( 'auto_post_types', 'post,page' ) );
110
-
111
- add_filter( 'mime_types', [ $this, 'allow_upload_webp' ] );
112
-
113
- if ( $is_auto_upload && \WAPT_Plugin::app()->is_premium() ) {
114
- add_filter( 'wp_insert_post_data', [ $this, 'auto_upload' ], 10, 2 );
115
-
116
- // This hook handle update post via rest api. for example WordPress mobile apps
117
- foreach ( $allowed_import_post_types as $post_type ) {
118
- add_action( "rest_after_insert_{$post_type}", [ $this, 'auto_upload' ], 10, 2 );
119
- }
120
- }
121
-
122
- if ( $is_auto_generate ) {
123
- // add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
124
- add_action( 'save_post', [ $this, 'save_post' ], 10, 3 );
125
-
126
- // This hook handle update post via rest api. for example WordPress mobile apps
127
- foreach ( $this->allowed_generate_post_types as $post_type ) {
128
- add_action( "rest_after_insert_{$post_type}", [ $this, 'rest_after_insert' ], 10, 3 );
129
- }
130
- // This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
131
- add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
132
- } else {
133
- if ( \WAPT_Plugin::app()->getPopulateOption( 'auto_generation_notice', 1 ) ) {
134
- add_action( 'admin_notices', [ $this, 'notice_auto_generation' ] );
135
- }
136
- }
137
-
138
- add_action( 'wbcr/factory/admin_notices', [ $this, 'check_api_notice' ], 10, 2 );
139
-
140
- $this->ajax_actions();
141
- }
142
-
143
- private function ajax_actions() {
144
- // AJAX actions
145
- add_action( 'wp_ajax_generatepostthumbnail', [ $this, 'ajax_process_post' ] );
146
- add_action( 'wp_ajax_delete_post_thumbnails', [ $this, 'ajax_delete_post_thumbnails' ] );
147
- add_action( 'wp_ajax_get-posts-ids', [ $this, 'get_posts_ids' ] );
148
- add_action( 'wp_ajax_apt_replace_thumbnail', [ $this, 'apt_replace_thumbnail' ] );
149
- add_action( 'wp_ajax_apt_get_thumbnail', [ $this, 'apt_get_thumbnail' ] );
150
- add_action( 'wp_ajax_source_content', [ $this, 'source_content' ] );
151
- add_action( 'wp_ajax_upload_to_library', [ $this, 'upload_to_library' ] );
152
- add_action( 'wp_ajax_wapt_upload_font', [ $this, 'upload_font' ] );
153
-
154
- // APIs
155
- add_action( 'wp_ajax_apt_api_google', [ $this, 'apt_api_google' ] );
156
- add_action( 'wp_ajax_apt_check_api_key', [ $this, 'apt_check_api_key' ] );
157
- add_action( 'wp_ajax_hide_notice_auto_generation', [ $this, 'hide_notice_auto_generation' ] );
158
- }
159
-
160
- public function allow_upload_webp( $existing_mimes ) {
161
- $existing_mimes['webp'] = 'image/webp';
162
-
163
- return $existing_mimes;
164
- }
165
-
166
- /**
167
- * Get posts id's
168
- *
169
- * @return void
170
- */
171
- public function get_posts_ids() {
172
- if ( ! current_user_can( 'manage_options' ) ) {
173
- die( '-1' );
174
- }
175
- check_ajax_referer( 'get-posts' );
176
-
177
- $generate = \WAPT_Plugin::app()->getPopulateOption( 'generate_autoimage', 'find' );
178
-
179
- $this->plugin->logger->info( "START generate in mode: {$generate}" );
180
-
181
- switch ( $generate ) {
182
- case 'generate':
183
- case 'both':
184
- case 'google':
185
- case 'find_google':
186
- $auto_generate = true;
187
- break;
188
- default:
189
- $auto_generate = false;
190
- break;
191
- }
192
-
193
- $has_thumb = sanitize_text_field( wp_unslash( $_POST['withThumb'] ?? false ) );
194
- $type = sanitize_text_field( wp_unslash( $_POST['posttype'] ?? '' ) );
195
- if ( \WAPT_Plugin::app()->is_premium() ) {
196
- $status = sanitize_text_field( wp_unslash( $_POST['poststatus'] ?? '' ) );
197
- $category = sanitize_text_field( wp_unslash( $_POST['category'] ?? '' ) );
198
- $date_start = sanitize_text_field( wp_unslash( $_POST['date_start'] ?? '' ) );
199
- $date_end = sanitize_text_field( wp_unslash( $_POST['date_end'] ?? '' ) );
200
- $date_start = $date_start ? \DateTime::createFromFormat( 'd.m.Y', $date_start )->format( 'd.m.Y' ) : 0;
201
- $date_end = $date_end ? \DateTime::createFromFormat( 'd.m.Y', $date_end )->setTime( 23, 59 )->format( 'd.m.Y H:i' ) : 0;
202
- // Get id's of the posts that satisfy the filters
203
- $query = $this->get_posts_query( $has_thumb, $type, $status, $category, $date_start, $date_end );
204
- } else {
205
- // Get id's of all the published posts for which post thumbnails exist or does not exist
206
- $query = $this->get_posts_query( $has_thumb, $type );
207
- }
208
-
209
- if ( ! empty( $query->posts ) ) {
210
- // Generate the list of IDs
211
- $ids = [];
212
- foreach ( $query->posts as $post ) {
213
- $ids[] = $post->ID;
214
- // если запрошены посты без тамбнеила, значит пользователь хочет сгенерировать их
215
- /*
216
- if ( ! $has_thumb ) {
217
- $images = new \WBCR\APT\PostImages( $post->ID );
218
- if ( ( $images->is_images() && $images->count_images() ) || $auto_generate ) {
219
- $ids[] = $post->ID;
220
- }
221
- } else //иначе он хочет удалить тамбнэйлы
222
- {
223
- $ids[] = $post->ID;
224
- }
225
- */
226
- }
227
- $ids = implode( ',', $ids );
228
- } else {
229
- $ids = '0';
230
- }
231
- echo esc_js( $ids );
232
-
233
- $this->plugin->logger->info( "Queried posts IDs: {$ids}" );
234
-
235
- die( - 1 );
236
- }
237
-
238
- /**
239
- * Process single post to generate the post thumbnail
240
- *
241
- * @return void
242
- */
243
- public function ajax_process_post() {
244
- if ( ! current_user_can( 'manage_options' ) ) {
245
- die( '-1' );
246
- }
247
- check_ajax_referer( 'generate-post-thumbnails' );
248
- if ( isset( $_POST['id'] ) && ! empty( $_POST['id'] ) ) {
249
- $id = intval( $_POST['id'] );
250
- if ( empty( $id ) ) {
251
- die( '-2' );
252
- }
253
- set_time_limit( 60 );
254
-
255
- $this->plugin->logger->info( "--Start processing post ID = {$id}" );
256
- $result = $this->publish_post( $id );
257
- $this->plugin->logger->info( "--End processing post ID = {$id}" );
258
-
259
- $thumb_id = $result->thumbnail_id;
260
-
261
- if ( $thumb_id ) {
262
- wp_send_json_success( $result->getData( true ) );
263
- } else {
264
- wp_send_json_error( $result->getData( true ) );
265
- }
266
- }
267
-
268
- die( '-3' );
269
- }
270
-
271
- /**
272
- * Process single post to delete the post thumbnail
273
- *
274
- * @return void
275
- */
276
- public function ajax_delete_post_thumbnails() {
277
- if ( ! current_user_can( 'manage_options' ) ) {
278
- die( '-1' );
279
- }
280
- check_ajax_referer( 'delete-post-thumbnails' );
281
- if ( isset( $_POST['id'] ) && ! empty( $_POST['id'] ) ) {
282
- $id = intval( $_POST['id'] );
283
-
284
- if ( empty( $id ) ) {
285
- die( '-1' );
286
- }
287
-
288
- set_time_limit( 60 );
289
-
290
- // Pass on the id to our 'publish' callback function.
291
- echo (bool) delete_post_thumbnail( $id );
292
-
293
- die( - 1 );
294
- }
295
- die( - 1 );
296
- }
297
-
298
- /**
299
- *
300
- */
301
- public function notice_auto_generation() {
302
- ?>
303
- <div class="notice notice-warning is-dismissible" id="notice_auto_generation">
304
- <p><b>Auto Featured Image:</b> Do you want to enable automatic post thumbnail generation? Enable this option
305
- in
306
- <a href="<?php echo esc_url_raw( admin_url( 'admin.php?page=wapt_settings-wbcr_apt&tab=general' ) ); ?>">settings</a><br>
307
- <a href="#" id="hide_notice_auto_generation">Don't ask again</a>
308
- </p>
309
- </div>
310
- <?php
311
- }
312
-
313
- /**
314
- *
315
- */
316
- public function hide_notice_auto_generation() {
317
- if ( isset( $_POST['action'] ) && 'hide_notice_auto_generation' === $_POST['action'] ) {
318
- \WAPT_Plugin::app()->updateOption( 'auto_generation_notice', 0 );
319
- }
320
- }
321
-
322
- /**
323
- * Function to check whether scheduled post is being published. If so, apt_publish_post should be called.
324
- *
325
- * @param string $new_status
326
- * @param string $old_status
327
- * @param \WP_Post $post Instance of post.
328
- *
329
- * @return void
330
- */
331
- public function check_required_transition( $new_status = '', $old_status = '', $post = '' ) {
332
-
333
- if ( 'publish' === $new_status ) {
334
- $this->publish_post( $post->ID );
335
- }
336
- }
337
-
338
- /**
339
- * Return sql query, which allows to receive all the posts without thumbnails
340
- *
341
- * @return WP_Query
342
- */
343
- public function get_posts_query( $has_thumb = false, $type = 'post', $status = 'publish', $category = 0, $date_start = 0, $date_end = 0, $is_log = true ) {
344
-
345
- // phpcs:disable WordPress.PHP.DevelopmentFunctions
346
- if ( $is_log ) {
347
- $this->plugin->logger->info( 'Posts query: ' . var_export( [
348
- 'has_thumb' => $has_thumb,
349
- 'type' => $type,
350
- 'status' => $status,
351
- 'category' => $category,
352
- 'date_start' => $date_start,
353
- 'date_end' => $date_end,
354
- ], true ) );
355
- }
356
- // phpcs:enable
357
-
358
- $q_status = $status ? $status : 'any';
359
- $q_type = $type ? $type : 'any';
360
- $q_has_thumb = $has_thumb ? 'EXISTS' : 'NOT EXISTS';
361
-
362
- $args = [
363
- 'posts_per_page' => - 1,
364
- 'post_status' => $q_status,
365
- 'post_type' => $q_type,
366
- 'meta_query' => [
367
- 'relation' => 'AND',
368
- [
369
- 'key' => '_thumbnail_id',
370
- 'compare' => $q_has_thumb,
371
- ],
372
- [
373
- 'key' => 'skip_post_thumb',
374
- 'compare' => 'NOT EXISTS',
375
- ],
376
- ],
377
- ];
378
- if ( $category ) {
379
- $args['cat'] = $category;
380
- }
381
- if ( $date_start && $date_end ) {
382
- $args['date_query'][] = [
383
- 'after' => $date_start,
384
- 'before' => $date_end,
385
- 'inclusive' => true,
386
- ];
387
- }
388
- $query = new WP_Query( $args );
389
-
390
- // $this->plugin->logger->debug( "Posts SQL: " . $query->request );
391
-
392
- return $query;
393
- }
394
-
395
- /**
396
- * Return sql query, which allows to receive all the posts without thumbnails
397
- *
398
- * @return int
399
- */
400
- public function get_posts_count( $has_thumb = false, $type = 'post', $status = 'publish', $category = 0, $date_start = 0, $date_end = 0 ) {
401
- $query = $this->get_posts_query( $has_thumb, $type, $status, $category, $date_start, $date_end, false );
402
-
403
- return $query->found_posts;
404
- }
405
-
406
- /**
407
- * Get thumbnail id for image
408
- *
409
- * @param array $image
410
- *
411
- * @return bool|int
412
- */
413
- public function get_thumbnail_id( $image ) {
414
- global $wpdb;
415
- $thumb_id = 0;
416
-
417
- /**
418
- * If the image is from the WordPress own media gallery, then it appends the thumbnail id to a css class.
419
- * Look for this id in the IMG tag.
420
- */
421
- if ( isset( $image['tag'] ) && ! empty( $image['tag'] ) ) {
422
- preg_match( '/wp-image-([\d]*)/i', $image['tag'], $thumb_id );
423
-
424
- if ( $thumb_id ) {
425
- $thumb_id = $thumb_id[1];
426
-
427
- if ( ! get_post( $thumb_id ) ) {
428
- $thumb_id = false;
429
- }
430
- }
431
- }
432
-
433
- if ( ! $thumb_id ) {
434
- // If thumb id is not found, try to look for the image in DB.
435
- if ( isset( $image['url'] ) && ! empty( $image['url'] ) ) {
436
- $image_url = $image['url'];
437
- // если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
438
- $image_url = preg_replace( '/-[0-9]{1,}x[0-9]{1,}\./', '.', $image_url );
439
- $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '%" . esc_sql( $image_url ) . "%'" );
440
- }
441
- }
442
-
443
- return is_numeric( $thumb_id ) ? $thumb_id : false;
444
- }
445
-
446
- /**
447
- * @param \WP_Post $post
448
- * @param \WP_REST_Request $request
449
- * @param bool $is_insert
450
- *
451
- * @throws Exception
452
- */
453
- public function rest_after_insert( $post, $request, $is_insert ) {
454
- $this->publish_post( $post->ID, $post, ! $is_insert );
455
- }
456
-
457
- /**
458
- * Function for 'save_post' hook
459
- *
460
- * @param int $post_id Post ID.
461
- * @param \WP_Post $post
462
- * @param bool $update
463
- *
464
- * @throws Exception
465
- */
466
- public function save_post( $post_id, $post = null, $update = true ) {
467
- if ( ! in_array( $post->post_type, $this->allowed_generate_post_types ) ) {
468
- $this->plugin->logger->warning( "The post type ({$post->post_type}) is not allowed for generation in settings" );
469
- } else {
470
- $this->publish_post( $post_id, $post, $update );
471
- }
472
- }
473
-
474
- /**
475
- * Function to save first image in post as post thumbnail.
476
- *
477
- * @param int $post_id Post ID.
478
- * @param \WP_Post $post
479
- * @param bool $update
480
- *
481
- * @return GenerateResult
482
- * @throws Exception
483
- */
484
- public function publish_post( $post_id, $post = null, $update = true ) {
485
- global $wpdb;
486
-
487
- $autoimage = \WAPT_Plugin::app()->getPopulateOption( 'generate_autoimage', 'find' );
488
- $generation = new GenerateResult( $post_id, $autoimage );
489
-
490
- if ( ! $post ) {
491
- $post = get_post( $post_id );
492
- if ( ! $post ) {
493
- $this->plugin->logger->warning( "The post was not found (post ID = {$post_id})" );
494
-
495
- return $generation->result( __( 'The post was not found', 'apt' ) );
496
- }
497
- }
498
-
499
- if ( ! $update ) {
500
- return $generation->result();
501
- }
502
-
503
- // First check whether Post Thumbnail is already set for this post.
504
- $_thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
505
- if ( $_thumbnail_id && $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE id = '" . esc_sql( $_thumbnail_id ) . "' AND post_type = 'attachment'" ) || get_post_meta( $post_id, 'skip_post_thumb', true ) ) {
506
- $this->plugin->logger->warning( "The post ({$post_id}) has already been assigned a featured image" );
507
-
508
- return $generation->result( __( 'The post has already been assigned a featured image', 'apt' ) );
509
- }
510
-
511
- $thumb_id = 0;
512
-
513
- $images = new \WBCR\APT\PostImages( $post_id );
514
- if ( ( $images->is_images() && $images->count_images() ) && $autoimage !== 'generate' && $autoimage !== 'google' ) {
515
- foreach ( $images->get_images() as $image ) {
516
- $thumb_id = $this->get_thumbnail_id( $image );
517
- // If we succeed in generating thumb, let's update post meta
518
- if ( $thumb_id ) {
519
- $this->plugin->logger->info( "An attachment ({$thumb_id}) was found in the text of the post." );
520
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
521
- $this->plugin->logger->info( "Featured image ($thumb_id) is set for post ($post_id)" );
522
- } else {
523
- if ( \WAPT_Plugin::app()->is_premium() ) {
524
- $thumb_id = apply_filters( 'wapt/generate_post_thumb', $image, $post_id );
525
-
526
- if ( $thumb_id ) {
527
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
528
- }
529
- }
530
- }
531
-
532
- return $generation->result( '', $thumb_id );
533
- }
534
- } else {
535
- // создаём свою картинку с заголовком на цветном фоне
536
- if ( $autoimage === 'generate' || $autoimage === 'both' ) {
537
- $thumb_id = $this->generate_and_attachment( $post_id );
538
- if ( $thumb_id ) {
539
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
540
-
541
- return $generation->result( '', $thumb_id );
542
- }
543
- } elseif ( $autoimage === 'google' || $autoimage === 'find_google' ) {
544
- $response = ( new GoogleImages() )->search( $post->post_title, 1 );
545
- if ( ! empty( $response->images ) ) {
546
- $this->plugin->logger->info( 'Google image search result = ' . var_export( $response->images[0], true ) );
547
- $thumb_id = apply_filters( 'wapt/download_from_google', 0, $response->images, $post_id );
548
- }
549
- if ( $thumb_id ) {
550
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
551
- $this->plugin->logger->info( "Successful download from google. Attachment ID = {$thumb_id}" );
552
-
553
- return $generation->result( '', $thumb_id );
554
- }
555
- $this->plugin->logger->error( 'Error download from google. ' . var_export( $thumb_id, true ) );
556
- }
557
- }
558
-
559
- return $generation->result( __( 'No images found or generated', 'apt' ) );
560
- }
561
-
562
- /**
563
- * Function to save first image in post as post thumbnail.
564
- *
565
- * @param \WP_Post|array $post
566
- * @param array $postarr
567
- */
568
- public function auto_upload( $data, $postarr = [] ) {
569
- $allowed_post_types = explode( ',', \WAPT_Plugin::app()->getPopulateOption( 'import_post_types', '' ) );
570
-
571
- if ( $data instanceof \WP_Post ) {
572
- $post_type = $data->post_type ?? '';
573
- } else {
574
- $post_type = $data['post_type'] ?? '';
575
- }
576
- if ( $post_type && in_array( $post_type, $allowed_post_types ) ) {
577
- $data = apply_filters( 'wapt/upload_and_replace_post_images', $data );
578
- }
579
-
580
- return $data;
581
- }
582
-
583
- /**
584
- * Search through an array for a matching key.
585
- *
586
- * Examples:
587
- * <code>
588
- * $array = array(
589
- * "database.name" => "my_db_name",
590
- * "database.host" => "myhost.com",
591
- * "database.user" => "admin",
592
- * "database.pass" => "a secret."
593
- * );
594
- *
595
- * $search = array_contains_key($array, "database");
596
- * var_dump($search);
597
- *
598
- * Result:
599
- * array (size=4)
600
- * 'database.name' => string 'my_db_name' (length=10)
601
- * 'database.host' => string 'myhost.com' (length=10)
602
- * 'database.user' => string 'admin' (length=5)
603
- * 'database.pass' => string 'a secret.' (length=9)
604
- * </code>
605
- *
606
- * https://gist.github.com/steve-todorov/3671626
607
- *
608
- * @param array $input_array
609
- * @param string $search_value
610
- * @param bool $case_sensitive
611
- *
612
- * @return array
613
- */
614
- function array_contains_key( array $input_array, $search_value, $case_sensitive = false ) {
615
- if ( $case_sensitive ) {
616
- $preg_match = '/' . $search_value . '/';
617
- } else {
618
- $preg_match = '/' . $search_value . '/i';
619
- }
620
- $return_array = [];
621
- $keys = array_keys( $input_array );
622
- foreach ( $keys as $k ) {
623
- if ( preg_match( $preg_match, $k ) ) {
624
- $return_array[ $k ] = $input_array[ $k ];
625
- }
626
- }
627
-
628
- return $return_array;
629
- }
630
-
631
- /**
632
- * Fetch image from URL and generate required thumbnails.
633
- *
634
- * @param string $image
635
- * @param string $title
636
- * @param int $post_id
637
- *
638
- * @return int|WP_Error|null
639
- */
640
- public function generate_post_thumb( $image, $title, $post_id ) {
641
- // Get the URL now for further processing
642
- $imageUrl = $image;
643
- if ( $imageUrl === wp_make_link_relative( $imageUrl ) ) {
644
- $imageUrl = home_url( $imageUrl );
645
- }
646
- $imageTitle = $title;
647
-
648
- // Get the file name
649
- $filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
650
- // исключаем параметры после имени файла
651
- if ( strrpos( $filename, '?' ) ) {
652
- $filename = substr( $filename, 0, strrpos( $filename, '?' ) );
653
- }
654
-
655
- if ( ! ( ( $uploads = wp_upload_dir( current_time( 'mysql' ) ) ) && false === $uploads['error'] ) ) {
656
- return null;
657
- }
658
-
659
- // Generate unique file name
660
- $filename = wp_unique_filename( $uploads['path'], $filename );
661
-
662
- $new_file = $uploads['path'] . "/$filename";
663
- $ext = pathinfo( $new_file, PATHINFO_EXTENSION );
664
- if ( empty( $ext ) ) {
665
- $ext = 'jpg';
666
- $filename .= ".{$ext}";
667
- $new_file .= ".{$ext}";
668
- }
669
-
670
- // Move the file to the uploads dir
671
- if ( ! ini_get( 'allow_url_fopen' ) ) {
672
- $file_data = $this->get_file_contents( $imageUrl );
673
- } else {
674
- $arrContextOptions = [
675
- 'ssl' => [
676
- 'verify_peer' => false,
677
- 'verify_peer_name' => false,
678
- ],
679
- ];
680
- $file_data = file_get_contents( $imageUrl, false, stream_context_create( $arrContextOptions ) );
681
- }
682
-
683
- if ( ! $file_data ) {
684
- return null;
685
- }
686
-
687
- // Fix for checking file extensions
688
- $exts = explode( '.', $filename );
689
- if ( count( $exts ) > 2 ) {
690
- // return null;
691
- }
692
-
693
- $allowed = get_allowed_mime_types();
694
- if ( ! $this->array_contains_key( $allowed, $ext ) ) {
695
- return null;
696
- }
697
-
698
- file_put_contents( $new_file, $file_data );
699
-
700
- // Set correct file permissions
701
- $stat = stat( dirname( $new_file ) );
702
- $perms = $stat['mode'] & 0000666;
703
- @ chmod( $new_file, $perms );
704
-
705
- $mimes = $type = $file = null;
706
-
707
- // Get the file type. Must to use it as a post thumbnail.
708
- $wp_filetype = wp_check_filetype( $filename, $mimes );
709
-
710
- extract( $wp_filetype );
711
-
712
- // No file type! No point to proceed further
713
- if ( ( ! $type || ! $ext ) && ! current_user_can( 'unfiltered_upload' ) ) {
714
- return null;
715
- }
716
-
717
- // Compute the URL
718
- $url = $uploads['url'] . "/$filename";
719
-
720
- // Construct the attachment array
721
- $attachment = [
722
- 'post_mime_type' => $type,
723
- 'guid' => $url,
724
- 'post_parent' => null,
725
- 'post_title' => $imageTitle,
726
- 'post_content' => '',
727
- ];
728
-
729
- $thumb_id = wp_insert_attachment( $attachment, $file, $post_id );
730
- if ( ! is_wp_error( $thumb_id ) ) {
731
- require_once ABSPATH . '/wp-admin/includes/image.php';
732
-
733
- // Added fix by misthero as suggested
734
- wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $new_file ) );
735
- update_attached_file( $thumb_id, $new_file );
736
-
737
- return $thumb_id;
738
- }
739
-
740
- return null;
741
- }
742
-
743
- /**
744
- * Function to fetch the contents of URL using HTTP API in absence of allow_url_fopen.
745
- */
746
- public function get_file_contents( $URL ) {
747
- $response = wp_remote_get( $URL );
748
- $contents = '';
749
- if ( wp_remote_retrieve_response_code( $response ) === 200 ) {
750
- $contents = wp_remote_retrieve_body( $response );
751
- }
752
-
753
- return $contents ? $contents : false;
754
- }
755
-
756
- /**
757
- * Используется для динамического обновления столбца "Image" после выбора изображения в общем списке постов
758
- *
759
- * @return array|bool
760
- *
761
- * @uses apt_thumb
762
- */
763
- public function apt_replace_thumbnail() {
764
-
765
- if ( isset( $_POST['post_id'] ) && ! empty( $_POST['post_id'] ) ) {
766
- $post_id = intval( $_POST['post_id'] );
767
- if ( ! current_user_can( 'edit_post', $post_id ) ) {
768
- wp_die( - 1 );
769
- } else {
770
- check_ajax_referer( 'set_post_thumbnail-' . $post_id );
771
- if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
772
- $thumb_id = intval( $_POST['thumbnail_id'] );
773
-
774
- if ( $thumb_id === - 1 ) {
775
- // generate image
776
- $thumb_id = $this->generate_and_attachment( $post_id );
777
- }
778
- } elseif ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) ) {
779
- $img = $_POST['image'];
780
-
781
- // Совместимость с NextGen
782
- $img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
783
-
784
- // Find image in medialibrary
785
- $thumb_id = $this->get_thumbnail_id( [ 'url' => $img ] );
786
-
787
- if ( ! $thumb_id ) {
788
- $thumb_id = $this->generate_post_thumb( $img, '', $post_id );
789
- }
790
- } else {
791
- $thumb_id = 0;
792
- }
793
- if ( $thumb_id ) {
794
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
795
- }
796
-
797
- echo $this->apt_getThumbHtml( $post_id, $thumb_id ); // phpcs:ignore
798
- }
799
- }
800
- die();
801
- }
802
-
803
- /**
804
- * Используется для динамической загрузки изображений поста в окно выбора
805
- *
806
- * @return array|bool
807
- * @uses apt_thumb
808
- */
809
- public function apt_get_thumbnail() {
810
- include WAPT_ABSPATH . '/admin/views/pro_column.php';
811
- die();
812
- }
813
-
814
- /**
815
- * Формирует HTML конструкцию для вывода картинки поста в общей таблице постов
816
- *
817
- * @param $post_id
818
- * @param $thumb_id
819
- *
820
- * @return string HTML конструкция готовая для вывода
821
- */
822
- public function apt_getThumbHtml( $post_id, $thumb_id ) {
823
- $imgTag = get_the_post_thumbnail( $post_id, [ 100, 0 ], [ 'class' => 'img' ] );
824
- if ( empty( $imgTag ) ) {
825
- $imgTag = esc_html__( 'No image', 'apt' );
826
- }
827
-
828
- $title = esc_attr__( 'Change featured image', 'apt' );
829
- $wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
830
- $ajaxloader = WAPT_PLUGIN_URL . '/admin/assets/img/ajax-loader.gif';
831
- $content = '';
832
- $html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}' onclick='return window.aptModalShow(this, {$post_id}, \"$wpnonce\");'>{$imgTag}</a>" . "<span id='loader_{$post_id}' style='display:none;'><img src='{$ajaxloader}' width='100px' alt=''></span><div id='post_imgs_{$post_id}' class='imgs' style='display:none;'><span style='display:none;'><img src='{$ajaxloader}' alt=''></span><div>{$content}</div></div>";
833
-
834
- return $html;
835
- }
836
-
837
- /**
838
- * Контент подпункта меню в Медиафайлы
839
- */
840
- public function addToMediaFromApt() {
841
- // media_upload_header();
842
- $this->is_in_medialibrary = true;
843
- $this->sources = apply_filters( 'wapt/sources', $this->sources, 'add_to_media_from_apt' );
844
- require_once WAPT_ABSPATH . '/admin/views/media-library.php';
845
- }
846
-
847
- /**
848
- * Контент вкладки
849
- */
850
- public function media_AptTabContent() {
851
- media_upload_header();
852
- $this->sources = apply_filters( 'wapt/sources', $this->sources, 'tab_content' );
853
- require_once WAPT_ABSPATH . '/admin/views/media-library.php';
854
- }
855
-
856
- /**
857
- * AJAX вывод содержимого вкладки сервиса
858
- */
859
- public function source_content() {
860
- if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_content' ) ) {
861
- die( 'Error: Invalid request.' );
862
- }
863
- $this->sources = apply_filters( 'wapt/sources', $this->sources, 'source_content' );
864
- if ( isset( $_POST['source'] ) && ! empty( $_POST['source'] ) ) {
865
- $source = str_replace( 'tab-', '', sanitize_text_field( $_POST['source'] ) );
866
-
867
- // if( empty($this->sources[$source]) && !\WAPT_Plugin::app()->premium->is_activate() )
868
- if ( empty( $this->sources[ $source ] ) ) {
869
- require_once WAPT_PLUGIN_DIR . '/admin/views/pro.php';
870
- } else {
871
- require_once WP_PLUGIN_DIR . '/' . $this->sources[ $source ] . '/admin/views/sources/' . $source . '.php';
872
- }
873
- }
874
- die();
875
- }
876
-
877
- /**
878
- * AJAX загрузка выбранного изображения
879
- */
880
- public function upload_to_library() {
881
-
882
- if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_api' ) ) {
883
- die( 'Error: Invalid request.' );
884
- }
885
- if ( isset( $_POST['is_upload'] ) ) {
886
- $postid = intval( $_POST['postid'] );
887
-
888
- // get image file
889
- $response = wp_remote_get( $_POST['image_url'], [ 'timeout' => 100 ] );
890
- if ( is_wp_error( $response ) ) {
891
- die( 'Error: ' . esc_html( $response->get_error_message() ) );
892
- }
893
-
894
- $file_ext = '';
895
- $image_title = '';
896
- switch ( $_POST['service'] ) {
897
- case 'pixabay':
898
- $path_info = pathinfo( esc_url_raw( $_POST['image_url'] ) );
899
- $file_ext = $path_info['extension'];
900
- $image_title = sanitize_text_field( $_POST['q'] );
901
- break;
902
- case 'unsplash':
903
- parse_str( parse_url( $_POST['image_url'], PHP_URL_QUERY ), $url_query );
904
- $file_ext = $url_query['fm'];
905
- if ( ! $file_ext ) {
906
- $file_ext = 'jpg';
907
- }
908
-
909
- $image_title = sanitize_text_field( $_POST['title'] );
910
- break;
911
- case 'google':
912
- $path_info = pathinfo( esc_url_raw( $_POST['image_url'] ) );
913
- $file_ext = $path_info['extension'];
914
- if ( $file_ext !== 'jpg' && $file_ext !== 'jpeg' && $file_ext !== 'png' && $file_ext !== 'gif' ) {
915
- $file_ext = 'jpg';
916
- }
917
- if ( empty( $file_ext ) ) {
918
- $file_ext = 'jpg';
919
- }
920
- $image_title = sanitize_text_field( wp_unslash( $_POST['title'] ?? '' ) );
921
- break;
922
- }
923
-
924
- $q = sanitize_text_field( wp_unslash( $_POST['q'] ?? '' ) );
925
- $file_name = sanitize_file_name( implode( '_', explode( ' ', $q ) ) . '_' . time() . '.' . $file_ext );
926
- $wp_upload_dir = wp_upload_dir();
927
- $image_upload_path = $wp_upload_dir['path'];
928
-
929
- if ( ! is_dir( $image_upload_path ) ) {
930
- // phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged
931
- if ( ! @mkdir( $image_upload_path, 0777, true ) ) {
932
- die( 'Error: Failed to create upload folder ' . esc_html( $image_upload_path ) );
933
- }
934
- // phpcs:enable
935
- }
936
-
937
- global $wp_filesystem;
938
- if ( ! $wp_filesystem ) {
939
- if ( ! function_exists( 'WP_Filesystem' ) ) {
940
- require_once ABSPATH . 'wp-admin/includes/file.php';
941
- }
942
- WP_Filesystem();
943
- }
944
-
945
- $target_file_name = $image_upload_path . '/' . $file_name;
946
- $result = $wp_filesystem->put_contents( $target_file_name, $response['body'] );
947
- //$result = @file_put_contents( $target_file_name, $response['body'] );
948
- unset( $response['body'] );
949
- if ( false === $result ) {
950
- die( 'Error: Failed to write file ' . esc_html( $target_file_name ) );
951
- }
952
-
953
- // are we dealing with an image
954
- require_once ABSPATH . 'wp-admin/includes/image.php';
955
- if ( ! wp_read_image_metadata( $target_file_name ) ) {
956
- unlink( $target_file_name );
957
- die( 'Error: File is not an image.' );
958
- }
959
-
960
- $attachment_caption = '';
961
-
962
- // insert attachment
963
- $wp_filetype = wp_check_filetype( basename( $target_file_name ), null );
964
- $attachment = [
965
- 'guid' => $wp_upload_dir['url'] . '/' . basename( $target_file_name ),
966
- 'post_mime_type' => $wp_filetype['type'],
967
- 'post_title' => preg_replace( '/\.[^.]+$/', '', $image_title ),
968
- 'post_status' => 'inherit',
969
- ];
970
-
971
- $attach_id = wp_insert_attachment( $attachment, $target_file_name, $postid );
972
- if ( 0 === $attach_id ) {
973
- die( 'Error: File attachment error' );
974
- }
975
-
976
- $attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
977
- $result = wp_update_attachment_metadata( $attach_id, $attach_data );
978
- if ( ! $result ) {
979
- // die( 'Error: File attachment metadata error' );
980
- }
981
-
982
- $image_data = [];
983
- $image_data['ID'] = $attach_id;
984
- $image_data['post_excerpt'] = sanitize_text_field( wp_unslash( $_POST['excerpt'] ?? '' ) );
985
- wp_update_post( $image_data );
986
-
987
- echo (int) $attach_id;
988
-
989
- exit;
990
- }
991
- }
992
-
993
- /**
994
- * AJAX загрузка шрифта
995
- */
996
- public function upload_font() {
997
- if ( ! wp_verify_nonce( $_POST['wpnonce'], 'wapt_upload_font' ) ) {
998
- die( 'Error: Invalid request.' );
999
- }
1000
-
1001
- if ( isset( $_POST['is_font_upload'] ) && count( $_FILES ) > 0 ) {
1002
- $file = $_FILES[0];
1003
- $upload_dir = wp_upload_dir();
1004
- $upload_dir = $upload_dir['basedir'] . '/apt_fonts';
1005
- if ( ! is_dir( $upload_dir ) ) {
1006
- mkdir( $upload_dir, 0777 );
1007
- }
1008
-
1009
- $done_files = [];
1010
- $file_name = $file['name'];
1011
-
1012
- // Проверка, что файл является шрифтом TrueType
1013
- $header = file_get_contents( $file['tmp_name'], false, null, null, 4 );
1014
- if ( $header !== "\x00\x01\x00\x00" && $header !== 'true' && $header !== 'typ1' ) {
1015
- die( json_encode( [ 'error' => 'The uploaded file is not a TrueType font' ] ) );
1016
- }
1017
- // -----
1018
- $path = pathinfo( $file['tmp_name'] );
1019
- if ( $path['extension'] === 'php' || $path['extension'] === 'js' ) {
1020
- die( json_encode( [ 'error' => 'The uploaded file is not a TrueType font.' ] ) );
1021
- }
1022
-
1023
- add_filter( 'upload_mimes', function ( $mime_types ) {
1024
- $mime_types['ttf'] = 'font/sfnt';
1025
-
1026
- return $mime_types;
1027
- }, 10, 1 );
1028
-
1029
- add_filter( 'upload_dir', [ $this, 'set_fonts_upload_dir' ], 10, 1 );
1030
-
1031
- $data = wp_handle_upload( $file, [ 'action' => $_POST['action'] ] );
1032
- remove_filter( 'upload_dir', [ $this, 'set_fonts_upload_dir' ], 10 );
1033
-
1034
- if ( ! isset( $data['error'] ) ) {
1035
- if ( realpath( $data['file'] ) ) {
1036
- $result = [ 'files' => $file ];
1037
- } else {
1038
- $result = [ 'error' => "Unable to copy the file to the font folder: $upload_dir" ];
1039
- }
1040
- } else {
1041
- $result = [ 'error' => $data['error'] ];
1042
- }
1043
-
1044
- die( json_encode( $result ) );
1045
- }
1046
- }
1047
-
1048
- public function set_fonts_upload_dir( $upload ) {
1049
- $upload['subdir'] = '/apt_fonts';
1050
- $upload['path'] = $upload['basedir'] . $upload['subdir'];
1051
- $upload['url'] = $upload['baseurl'] . $upload['subdir'];
1052
-
1053
- return $upload;
1054
- }
1055
-
1056
- /**
1057
- * AJAX загрузка google
1058
- */
1059
- public function apt_api_google() {
1060
-
1061
- if ( ! wp_verify_nonce( $_POST['nonce'], 'apt_api' ) ) {
1062
- die( 'Error: Invalid request.' );
1063
- }
1064
- if ( isset( $_POST['query'] ) ) {
1065
- if ( isset( $_POST['page'] ) ) {
1066
- $page = intval( $_POST['page'] );
1067
- } else {
1068
- $page = 1;
1069
- }
1070
-
1071
- $post_title = '';
1072
- if ( isset( $_POST['post_id'] ) && is_numeric( $_POST['post_id'] ) ) {
1073
- $post = get_post( (int) $_POST['post_id'] );
1074
- if ( is_object( $post ) ) {
1075
- $post_title = $post->post_title;
1076
- }
1077
- }
1078
-
1079
- if ( isset( $_POST['watson'] ) ) {
1080
- $query = isset( $_POST['query'] ) && ! empty( $_POST['query'] ) && (bool) $_POST['watson'] ? sanitize_text_field( $_POST['query'] ) : $post_title;
1081
- } else {
1082
- $query = sanitize_text_field( $_POST['query'] ?? '' );
1083
- }
1084
-
1085
- try {
1086
- $response = ( new GoogleImages() )->search( $query, $query === $post_title ? $page + 1 : $page );
1087
-
1088
- if ( isset( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ) {
1089
- $response->limit( (int) $_POST['limit'] );
1090
- }
1091
-
1092
- if ( ! $response->is_error() && isset( $_POST['post_id'] ) && is_numeric( $_POST['post_id'] ) ) {
1093
- $post = get_post( (int) $_POST['post_id'] );
1094
- if ( $post ) {
1095
- $response2 = ( new GoogleImages() )->search( $post->post_title, $page );
1096
-
1097
- if ( isset( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ) {
1098
- $response2->limit( (int) $_POST['limit'] );
1099
- }
1100
-
1101
- $response->images = array_merge( $response2->images, $response->images );
1102
- }
1103
- }
1104
- } catch ( Exception $e ) {
1105
- die( esc_html( $e->getMessage() ) );
1106
- }
1107
-
1108
- if ( $response->is_error() ) {
1109
- wp_send_json_error( $response );
1110
- }
1111
-
1112
- wp_send_json_success( $response );
1113
- }
1114
- }
1115
-
1116
- /**
1117
- * Проверка API ключей
1118
- */
1119
- public function apt_check_api_key() {
1120
-
1121
- if ( ! wp_verify_nonce( $_POST['nonce'], 'check-api-key' ) ) {
1122
- die( 'Error: Invalid request.' );
1123
- }
1124
- if ( isset( $_POST['provider'] ) && isset( $_POST['key'] ) && isset( $_POST['key2'] ) ) {
1125
- $provider = trim( $_POST['provider'] );
1126
- $key = trim( $_POST['key'] );
1127
- $cx = trim( $_POST['key2'] );
1128
- switch ( $provider ) {
1129
- case 'google':
1130
- $url = "https://www.googleapis.com/customsearch/v1?q=cat&key={$key}&cx={$cx}";
1131
-
1132
- $response = wp_remote_get( $url, [ 'timeout' => 100 ] );
1133
- if ( is_wp_error( $response ) ) {
1134
- die( 'Error: ' . esc_html( $response->get_error_message() ) );
1135
- }
1136
- $result = json_decode( $response['body'] );
1137
- echo (bool) ! isset( $result->error->errors );
1138
- break;
1139
- }
1140
- exit;
1141
- }
1142
- }
1143
-
1144
- public function check_api_notice( $notices, $plugin_name ) {
1145
- // Если экшен вызывал не этот плагин, то не выводим это уведомления
1146
- if ( $plugin_name !== \WAPT_Plugin::app()->getPluginName() ) {
1147
- return $notices;
1148
- }
1149
- // Получаем заголовок плагина
1150
- $plugin_title = \WAPT_Plugin::app()->getPluginTitle();
1151
-
1152
- if ( ! \WAPT_Plugin::app()->getPopulateOption( 'google_apikey' ) && ! \WAPT_Plugin::app()->getPopulateOption( 'google_cse' ) ) {
1153
- // Задаем текст уведомления
1154
- $notice_text = '<p><b>' . $plugin_title . ':</b> <br>' . sprintf( __( "To download images from Google, specify Google API keys in the <a href='%s'>settings</a>.", 'apt' ), admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ) ) . '</p>';
1155
-
1156
- // Задаем настройки уведомления
1157
- $notices[] = [
1158
- 'id' => 'apt_check_api',
1159
- // error, success, warning
1160
- 'type' => 'warning',
1161
- 'dismissible' => true,
1162
- // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1163
- 'where' => [ 'plugins', 'dashboard', 'edit' ],
1164
- // Через какое время уведомление снова появится?
1165
- 'dismiss_expires' => 0,
1166
- 'text' => $notice_text,
1167
- 'classes' => [],
1168
- ];
1169
- }
1170
-
1171
- return $notices;
1172
- }
1173
-
1174
- /**
1175
- * Получение списка шрифтов из папок
1176
- *
1177
- * @return array
1178
- */
1179
- public static function get_fonts() {
1180
- $upload_dir = wp_upload_dir();
1181
- $upload_dir_fonts = $upload_dir['basedir'] . '/apt_fonts';
1182
- $plugin_dir_fonts = WAPT_PLUGIN_DIR . '/fonts';
1183
- $fonts = [];
1184
-
1185
- $fonts[] = [
1186
- 'title' => __( 'Standard', 'apt' ),
1187
- 'type' => 'group',
1188
- ];
1189
- $files = scandir( $plugin_dir_fonts );
1190
- foreach ( $files as $file ) {
1191
- if ( $file === '.' || $file === '..' ) {
1192
- continue;
1193
- }
1194
- $name = pathinfo( $plugin_dir_fonts . '/' . $file );
1195
- $name = $name['filename'];
1196
- $fonts[] = [
1197
- 'value' => $file,
1198
- 'title' => $name,
1199
- ];
1200
- }
1201
-
1202
- if ( is_dir( $upload_dir_fonts ) ) {
1203
- $files = scandir( $upload_dir_fonts );
1204
- }
1205
- if ( count( $files ) && \WAPT_Plugin::app()->is_premium() ) {
1206
- $fonts[] = [
1207
- 'title' => __( 'Uploaded', 'apt' ),
1208
- 'type' => 'group',
1209
- ];
1210
- foreach ( $files as $file ) {
1211
- if ( $file === '.' || $file === '..' ) {
1212
- continue;
1213
- }
1214
- $name = pathinfo( $upload_dir_fonts . '/' . $file );
1215
- $name = $name['filename'];
1216
- $fonts[] = [
1217
- 'value' => $file,
1218
- 'title' => $name,
1219
- ];
1220
- }
1221
- }
1222
-
1223
- return $fonts;
1224
- }
1225
-
1226
- /**
1227
- * Генерация изображения с текстом.
1228
- * Если $pathToSave задан, то файл сохранится по этому пути.
1229
- *
1230
- * @param string $text
1231
- * @param string $pathToSave
1232
- * @param string $format
1233
- * @param int $width
1234
- * @param int $height
1235
- *
1236
- * @return Image
1237
- */
1238
- public static function generate_image_with_text( $text, $pathToSave = '', $format = 'jpg', $width = 0, $height = 0 ) {
1239
- $font = WAPT_PLUGIN_DIR . '/fonts/arial.ttf';
1240
- $font_size = \WAPT_Plugin::app()->getPopulateOption( 'font-size', 25 );
1241
- $font_color = \WAPT_Plugin::app()->getPopulateOption( 'font-color', '#ffffff' );
1242
- if ( $width === 0 ) {
1243
- $width = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-width', 800 );
1244
- }
1245
- if ( $height === 0 ) {
1246
- $height = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-height', 600 );
1247
- }
1248
- $before_text = '';
1249
- $after_text = '';
1250
- $shadow = \WAPT_Plugin::app()->getPopulateOption( 'shadow', 0 );
1251
- if ( ! $shadow ) {
1252
- $shadow_color = '';
1253
- } else {
1254
- $shadow_color = \WAPT_Plugin::app()->getPopulateOption( 'shadow-color', '#ffffff' );
1255
- }
1256
-
1257
- $background_type = 'color';
1258
- $background = \WAPT_Plugin::app()->getPopulateOption( 'background-color', '#ff6262' );
1259
-
1260
- $text_transform = \WAPT_Plugin::app()->getPopulateOption( 'text-transform', 'no' );
1261
- switch ( $text_transform ) {
1262
- case 'upper':
1263
- $text = mb_strtoupper( $text );
1264
- break;
1265
- case 'lower':
1266
- $text = mb_strtolower( $text );
1267
- break;
1268
- }
1269
-
1270
- $text_crop = \WAPT_Plugin::app()->getPopulateOption( 'text-crop', 100 );
1271
- if ( $text_crop > 0 ) {
1272
- if ( strlen( $text ) > $text_crop ) {
1273
- $temp = substr( $text, 0, $text_crop );
1274
- $text = substr( $temp, 0, strrpos( $temp, ' ' ) );
1275
- }
1276
- }
1277
-
1278
- $align = 'center';
1279
- $valign = 'center';
1280
- $padding_tb = 15;
1281
- $padding_lr = 15;
1282
- $line_spacing = \WAPT_Plugin::app()->getPopulateOption( 'text-line-spacing', 1.5 );
1283
-
1284
- $params = [
1285
- 'text' => $text,
1286
- 'pathToSave' => $pathToSave,
1287
- 'format' => $format,
1288
- 'width' => $width,
1289
- 'height' => $height,
1290
- ];
1291
- $image = new Image( $width, $height, $background, $font, $font_size, $font_color );
1292
- $image->params = $params;
1293
- $image->setPadding( $padding_lr, $padding_tb );
1294
- $image->write_text( $before_text . $text . $after_text, '', '', '', $align, $valign, $line_spacing, $shadow_color );
1295
- if ( ! empty( $pathToSave ) ) {
1296
- $image->save( $pathToSave, 100, $format );
1297
- }
1298
-
1299
- return $image;
1300
- }
1301
-
1302
- public function find_from_text_category( $post_id ) {
1303
- $post = get_post( $post_id );
1304
-
1305
- $response = ( new \WAPT_IBMWatson( strip_tags( $post->post_content ) ) )->categories()->analyze();
1306
- }
1307
-
1308
- /**
1309
- * Генерация изображения с текстом.
1310
- *
1311
- * @param integer $post_id
1312
- *
1313
- * @return integer $thumb_id
1314
- */
1315
- public function generate_and_attachment( $post_id ) {
1316
- $this->plugin->logger->info( "Start generate attachment for post ID = {$post_id}" );
1317
-
1318
- $format = \WAPT_Plugin::app()->getPopulateOption( 'image-type', 'jpg' );
1319
- switch ( $format ) {
1320
- case 'png':
1321
- $extension = 'png';
1322
- $mime_type = 'image/png';
1323
- break;
1324
- case 'jpg':
1325
- case 'jpeg':
1326
- default:
1327
- $extension = 'jpg';
1328
- $mime_type = 'image/jpeg';
1329
- break;
1330
- }
1331
- $post = get_post( $post_id, 'OBJECT' );
1332
- $uploads = wp_upload_dir( current_time( 'mysql' ) );
1333
- $title = apply_filters( 'wapt/generate/title', $post->post_title, $post_id );
1334
-
1335
- // Generate unique file name
1336
- $slug = wp_unique_post_slug( sanitize_title( $title ), $post->ID, $post->post_status, $post->post_type, $post->post_parent );
1337
- $filename = wp_unique_filename( $uploads['path'], "{$slug}_{$post_id}.{$extension}" );
1338
- $file_path = "{$uploads['path']}/{$filename}";
1339
-
1340
- $this->plugin->logger->info( "Generated file path = {$file_path}" );
1341
-
1342
- // Move the file to the uploads dir
1343
- $image = apply_filters( 'wapt/generate/image', false, $title, $uploads['path'] . "/$filename", $extension );
1344
- if ( ! $image ) {
1345
- $image = apply_filters( 'wapt/generate/image', $this->generate_image_with_text( $title, $uploads['path'] . "/$filename", $extension ), $title, $uploads['path'] . "/$filename", $extension );
1346
- }
1347
-
1348
- $thumb_id = self::insert_attachment( $post, $file_path, $mime_type );
1349
-
1350
- if ( ! is_wp_error( $thumb_id ) ) {
1351
- $this->plugin->logger->info( "Successful generate attachment ID = {$thumb_id}" );
1352
- $this->plugin->logger->info( "End generate attachment for post ID = {$post_id}" );
1353
-
1354
- return $thumb_id;
1355
- } else {
1356
- $this->plugin->logger->error( 'Error generate attachment: ' . var_export( $thumb_id, true ) );
1357
- }
1358
-
1359
- return 0;
1360
- }
1361
-
1362
- /**
1363
- * Insert WP attachment
1364
- *
1365
- * @param \WP_Post|int $post
1366
- * @param string $file_path
1367
- * @param string $mime_type
1368
- *
1369
- * @return int|WP_Error
1370
- */
1371
- public static function insert_attachment( $post, $file_path, $mime_type = '' ) {
1372
- if ( is_int( $post ) ) {
1373
- $post = get_post( $post, 'OBJECT' );
1374
- }
1375
-
1376
- if ( ! $post ) {
1377
- return new WP_Error( 'apt_attachment', 'Post not found (insert_attachment)' );
1378
- }
1379
-
1380
- if ( empty( $mime_type ) ) {
1381
- $mime_type = wp_get_image_mime( $file_path );
1382
- if ( ! $mime_type ) {
1383
- $mime_type = 'image/jpeg';
1384
- }
1385
- }
1386
-
1387
- $file_url = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $file_path );
1388
- if ( file_exists( $file_path ) ) {
1389
- $attachment = [
1390
- 'post_mime_type' => $mime_type,
1391
- 'guid' => $file_url,
1392
- 'post_parent' => $post->ID,
1393
- 'post_title' => $post->post_title,
1394
- 'post_content' => '',
1395
- ];
1396
-
1397
- $thumb_id = wp_insert_attachment( $attachment, $file_path, $post->ID );
1398
-
1399
- if ( ! is_wp_error( $thumb_id ) ) {
1400
- require_once ABSPATH . '/wp-admin/includes/image.php';
1401
-
1402
- // Added fix by misthero as suggested
1403
- wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $file_path ) );
1404
- update_attached_file( $thumb_id, $file_path );
1405
-
1406
- return $thumb_id;
1407
- }
1408
- }
1409
-
1410
- return new WP_Error( 'apt_attachment', 'File not exists (insert_attachment)' );
1411
- }
1412
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WBCR\APT;
4
+
5
+ use Exception;
6
+ use WP_Query;
7
+ use WP_Error;
8
+
9
+ /**
10
+ * Class AutoPostThumbnails
11
+ *
12
+ * @author Artem Prihodko <webtemyk@yandex.ru>, Github: https://github.com/temyk
13
+ * @copyright (c) 2019, Webcraftic Ltd
14
+ */
15
+ class AutoPostThumbnails {
16
+
17
+ /**
18
+ * @var self
19
+ */
20
+ public static $instance;
21
+
22
+ /**
23
+ * @var \WAPT_Plugin
24
+ */
25
+ private $plugin;
26
+
27
+ /**
28
+ * После какой по счёту колонки вставлять новую (если 0, то в самом начале)
29
+ *
30
+ * @var integer
31
+ */
32
+ public $numberOfColumn;
33
+
34
+ /**
35
+ * @var AutoPostThumbnails
36
+ */
37
+ private $nonce;
38
+
39
+ /**
40
+ * Массив с параметрами сервисов
41
+ *
42
+ * @var array(string)
43
+ */
44
+ public $sources;
45
+
46
+ /**
47
+ * Открывается в медиабиблиотеке?
48
+ *
49
+ * @var bool
50
+ */
51
+ public $is_in_medialibrary = false;
52
+
53
+ public $allowed_generate_post_types;
54
+
55
+ /**
56
+ * AutoPostThumbnails constructor.
57
+ */
58
+ public function __construct() {
59
+ $this->numberOfColumn = 4;
60
+ $this->plugin = \WAPT_Plugin::app();
61
+
62
+ $this->sources = [
63
+ 'google' => WAPT_PLUGIN_SLUG,
64
+ 'recommend' => '',
65
+ 'pixabay' => '',
66
+ 'unsplash' => '',
67
+ ];
68
+ if ( \WAPT_Plugin::app()->is_premium() ) {
69
+ $this->sources = [
70
+ 'recommend' => '',
71
+ 'google' => WAPT_PLUGIN_SLUG,
72
+ 'pixabay' => '',
73
+ 'unsplash' => '',
74
+ ];
75
+ }
76
+
77
+ $this->init_includes();
78
+ $this->init();
79
+ }
80
+
81
+ /**
82
+ * Get existing instance or create new one.
83
+ *
84
+ * @return AutoPostThumbnails
85
+ */
86
+ public static function instance() {
87
+ if ( null === static::$instance ) {
88
+ static::$instance = new self();
89
+ }
90
+
91
+ return static::$instance;
92
+ }
93
+
94
+ /**
95
+ * Init includes.
96
+ */
97
+ private function init_includes() {
98
+ // require __DIR__ . '/src/class.template.php';
99
+ }
100
+
101
+ /**
102
+ * Initiate all required hooks.
103
+ */
104
+ private function init() {
105
+ $is_auto_generate = \WAPT_Plugin::app()->getPopulateOption( 'auto_generation', true );
106
+ $is_auto_upload = \WAPT_Plugin::app()->getPopulateOption( 'auto_upload_images' );
107
+ $allowed_import_post_types = explode( ',', \WAPT_Plugin::app()->getPopulateOption( 'import_post_types', 'post' ) );
108
+
109
+ $this->allowed_generate_post_types = explode( ',', \WAPT_Plugin::app()->getPopulateOption( 'auto_post_types', 'post,page' ) );
110
+
111
+ add_filter( 'mime_types', [ $this, 'allow_upload_webp' ] );
112
+
113
+ if ( $is_auto_upload && \WAPT_Plugin::app()->is_premium() ) {
114
+ add_filter( 'wp_insert_post_data', [ $this, 'auto_upload' ], 10, 2 );
115
+
116
+ // This hook handle update post via rest api. for example WordPress mobile apps
117
+ foreach ( $allowed_import_post_types as $post_type ) {
118
+ add_action( "rest_after_insert_{$post_type}", [ $this, 'auto_upload' ], 10, 2 );
119
+ }
120
+ }
121
+
122
+ if ( $is_auto_generate ) {
123
+ // add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
124
+ add_action( 'save_post', [ $this, 'save_post' ], 10, 3 );
125
+
126
+ // This hook handle update post via rest api. for example WordPress mobile apps
127
+ foreach ( $this->allowed_generate_post_types as $post_type ) {
128
+ add_action( "rest_after_insert_{$post_type}", [ $this, 'rest_after_insert' ], 10, 3 );
129
+ }
130
+ // This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
131
+ add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
132
+ } else {
133
+ if ( \WAPT_Plugin::app()->getPopulateOption( 'auto_generation_notice', 1 ) ) {
134
+ add_action( 'admin_notices', [ $this, 'notice_auto_generation' ] );
135
+ }
136
+ }
137
+
138
+ add_action( 'wbcr/factory/admin_notices', [ $this, 'check_api_notice' ], 10, 2 );
139
+
140
+ $this->ajax_actions();
141
+ }
142
+
143
+ private function ajax_actions() {
144
+ // AJAX actions
145
+ add_action( 'wp_ajax_generatepostthumbnail', [ $this, 'ajax_process_post' ] );
146
+ add_action( 'wp_ajax_delete_post_thumbnails', [ $this, 'ajax_delete_post_thumbnails' ] );
147
+ add_action( 'wp_ajax_get-posts-ids', [ $this, 'get_posts_ids' ] );
148
+ add_action( 'wp_ajax_apt_replace_thumbnail', [ $this, 'apt_replace_thumbnail' ] );
149
+ add_action( 'wp_ajax_apt_get_thumbnail', [ $this, 'apt_get_thumbnail' ] );
150
+ add_action( 'wp_ajax_source_content', [ $this, 'source_content' ] );
151
+ add_action( 'wp_ajax_upload_to_library', [ $this, 'upload_to_library' ] );
152
+ add_action( 'wp_ajax_wapt_upload_font', [ $this, 'upload_font' ] );
153
+
154
+ // APIs
155
+ add_action( 'wp_ajax_apt_api_google', [ $this, 'apt_api_google' ] );
156
+ add_action( 'wp_ajax_apt_check_api_key', [ $this, 'apt_check_api_key' ] );
157
+ add_action( 'wp_ajax_hide_notice_auto_generation', [ $this, 'hide_notice_auto_generation' ] );
158
+ }
159
+
160
+ public function allow_upload_webp( $existing_mimes ) {
161
+ $existing_mimes['webp'] = 'image/webp';
162
+
163
+ return $existing_mimes;
164
+ }
165
+
166
+ /**
167
+ * Get posts id's
168
+ *
169
+ * @return void
170
+ */
171
+ public function get_posts_ids() {
172
+ if ( ! current_user_can( 'manage_options' ) ) {
173
+ die( '-1' );
174
+ }
175
+ check_ajax_referer( 'get-posts' );
176
+
177
+ $generate = \WAPT_Plugin::app()->getPopulateOption( 'generate_autoimage', 'find' );
178
+
179
+ $this->plugin->logger->info( "START generate in mode: {$generate}" );
180
+
181
+ switch ( $generate ) {
182
+ case 'generate':
183
+ case 'both':
184
+ case 'google':
185
+ case 'find_google':
186
+ $auto_generate = true;
187
+ break;
188
+ default:
189
+ $auto_generate = false;
190
+ break;
191
+ }
192
+
193
+ $has_thumb = sanitize_text_field( wp_unslash( $_POST['withThumb'] ?? false ) );
194
+ $type = sanitize_text_field( wp_unslash( $_POST['posttype'] ?? '' ) );
195
+ if ( \WAPT_Plugin::app()->is_premium() ) {
196
+ $status = sanitize_text_field( wp_unslash( $_POST['poststatus'] ?? '' ) );
197
+ $category = sanitize_text_field( wp_unslash( $_POST['category'] ?? '' ) );
198
+ $date_start = sanitize_text_field( wp_unslash( $_POST['date_start'] ?? '' ) );
199
+ $date_end = sanitize_text_field( wp_unslash( $_POST['date_end'] ?? '' ) );
200
+ $date_start = $date_start ? \DateTime::createFromFormat( 'd.m.Y', $date_start )->format( 'd.m.Y' ) : 0;
201
+ $date_end = $date_end ? \DateTime::createFromFormat( 'd.m.Y', $date_end )->setTime( 23, 59 )->format( 'd.m.Y H:i' ) : 0;
202
+ // Get id's of the posts that satisfy the filters
203
+ $query = $this->get_posts_query( $has_thumb, $type, $status, $category, $date_start, $date_end );
204
+ } else {
205
+ // Get id's of all the published posts for which post thumbnails exist or does not exist
206
+ $query = $this->get_posts_query( $has_thumb, $type );
207
+ }
208
+
209
+ $ids = [];
210
+ if ( ! empty( $query->posts ) ) {
211
+ // Generate the list of IDs
212
+ foreach ( $query->posts as $post ) {
213
+ $ids[] = $post;
214
+ }
215
+ }
216
+
217
+ $this->plugin->logger->info( "Queried posts IDs: {$ids}" );
218
+
219
+ wp_send_json_success( $ids );
220
+ }
221
+
222
+ /**
223
+ * Process single post to generate the post thumbnail
224
+ *
225
+ * @return void
226
+ */
227
+ public function ajax_process_post() {
228
+ if ( ! current_user_can( 'manage_options' ) ) {
229
+ die( '-1' );
230
+ }
231
+ check_ajax_referer( 'generate-post-thumbnails' );
232
+ if ( isset( $_POST['id'] ) && ! empty( $_POST['id'] ) ) {
233
+ $id = intval( $_POST['id'] );
234
+ if ( empty( $id ) ) {
235
+ die( '-2' );
236
+ }
237
+ set_time_limit( 60 );
238
+
239
+ $this->plugin->logger->info( "--Start processing post ID = {$id}" );
240
+ $result = $this->publish_post( $id );
241
+ $this->plugin->logger->info( "--End processing post ID = {$id}" );
242
+
243
+ $thumb_id = $result->thumbnail_id;
244
+
245
+ if ( $thumb_id ) {
246
+ wp_send_json_success( $result->getData( true ) );
247
+ } else {
248
+ wp_send_json_error( $result->getData( true ) );
249
+ }
250
+ }
251
+
252
+ die( '-3' );
253
+ }
254
+
255
+ /**
256
+ * Process single post to delete the post thumbnail
257
+ *
258
+ * @return void
259
+ */
260
+ public function ajax_delete_post_thumbnails() {
261
+ if ( ! current_user_can( 'manage_options' ) ) {
262
+ die( '-1' );
263
+ }
264
+ check_ajax_referer( 'delete-post-thumbnails' );
265
+ if ( isset( $_POST['id'] ) && ! empty( $_POST['id'] ) ) {
266
+ $id = intval( $_POST['id'] );
267
+
268
+ if ( empty( $id ) ) {
269
+ die( '-1' );
270
+ }
271
+
272
+ set_time_limit( 60 );
273
+
274
+ // Pass on the id to our 'publish' callback function.
275
+ echo (bool) delete_post_thumbnail( $id );
276
+
277
+ die( - 1 );
278
+ }
279
+ die( - 1 );
280
+ }
281
+
282
+ /**
283
+ *
284
+ */
285
+ public function notice_auto_generation() {
286
+ ?>
287
+ <div class="notice notice-warning is-dismissible" id="notice_auto_generation">
288
+ <p><b>Auto Featured Image:</b> Do you want to enable automatic post thumbnail generation? Enable this option
289
+ in
290
+ <a href="<?php echo esc_url_raw( admin_url( 'admin.php?page=wapt_settings-wbcr_apt&tab=general' ) ); ?>">settings</a><br>
291
+ <a href="#" id="hide_notice_auto_generation">Don't ask again</a>
292
+ </p>
293
+ </div>
294
+ <?php
295
+ }
296
+
297
+ /**
298
+ *
299
+ */
300
+ public function hide_notice_auto_generation() {
301
+ if ( isset( $_POST['action'] ) && 'hide_notice_auto_generation' === $_POST['action'] ) {
302
+ \WAPT_Plugin::app()->updateOption( 'auto_generation_notice', 0 );
303
+ }
304
+ }
305
+
306
+ /**
307
+ * Function to check whether scheduled post is being published. If so, apt_publish_post should be called.
308
+ *
309
+ * @param string $new_status
310
+ * @param string $old_status
311
+ * @param \WP_Post $post Instance of post.
312
+ *
313
+ * @return void
314
+ */
315
+ public function check_required_transition( $new_status = '', $old_status = '', $post = '' ) {
316
+
317
+ if ( 'publish' === $new_status ) {
318
+ $this->publish_post( $post->ID );
319
+ }
320
+ }
321
+
322
+ /**
323
+ * Return sql query, which allows to receive all the posts without thumbnails
324
+ *
325
+ * @return WP_Query
326
+ */
327
+ public function get_posts_query( $has_thumb = false, $type = 'post', $status = 'publish', $category = 0, $date_start = 0, $date_end = 0, $is_log = true ) {
328
+
329
+ // phpcs:disable WordPress.PHP.DevelopmentFunctions
330
+ if ( $is_log ) {
331
+ $this->plugin->logger->info( 'Posts query: ' . var_export( [
332
+ 'has_thumb' => $has_thumb,
333
+ 'type' => $type,
334
+ 'status' => $status,
335
+ 'category' => $category,
336
+ 'date_start' => $date_start,
337
+ 'date_end' => $date_end,
338
+ ], true ) );
339
+ }
340
+ // phpcs:enable
341
+
342
+ $q_status = $status ? $status : 'any';
343
+ $q_type = $type ? $type : 'any';
344
+ $q_has_thumb = $has_thumb ? 'EXISTS' : 'NOT EXISTS';
345
+
346
+ $args = [
347
+ 'posts_per_page' => - 1,
348
+ 'post_status' => $q_status,
349
+ 'post_type' => $q_type,
350
+ 'suppress_filters' => true,
351
+ 'fields' => 'ids',
352
+ 'meta_query' => [
353
+ 'relation' => 'AND',
354
+ [
355
+ 'key' => '_thumbnail_id',
356
+ 'compare' => $q_has_thumb,
357
+ ],
358
+ [
359
+ 'key' => 'skip_post_thumb',
360
+ 'compare' => 'NOT EXISTS',
361
+ ],
362
+ ],
363
+ ];
364
+ if ( $category ) {
365
+ $args['cat'] = $category;
366
+ }
367
+ if ( $date_start && $date_end ) {
368
+ $args['date_query'][] = [
369
+ 'after' => $date_start,
370
+ 'before' => $date_end,
371
+ 'inclusive' => true,
372
+ ];
373
+ }
374
+ $query = new WP_Query( $args );
375
+
376
+ // $this->plugin->logger->debug( "Posts SQL: " . $query->request );
377
+
378
+ return $query;
379
+ }
380
+
381
+ /**
382
+ * Return count of the posts
383
+ *
384
+ * @return int
385
+ */
386
+ public function get_posts_count( $has_thumb = false, $type = 'post' ) {
387
+ //global $wpdb;
388
+ if ( $has_thumb ) {
389
+ $args = [
390
+ 'orderby' => 'date',
391
+ 'order' => 'DESC ',
392
+ 'post_type' => $type,
393
+ 'posts_per_page' => - 1,
394
+ 'fields' => 'ids',
395
+ 'meta_query' => [
396
+ 'relation' => 'AND',
397
+ [
398
+ 'key' => '_thumbnail_id',
399
+ 'compare' => 'EXISTS',
400
+ ],
401
+ [
402
+ 'key' => '_thumbnail_id',
403
+ 'compare' => '!=',
404
+ 'value' => '',
405
+ 'type' => 'NUMERIC ',
406
+ ],
407
+ ],
408
+ ];
409
+
410
+ /*$query = "SELECT {$wpdb->posts}.ID FROM {$wpdb->posts}
411
+ LEFT JOIN {$wpdb->postmeta} ON ( {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id )
412
+ LEFT JOIN {$wpdb->postmeta} AS mt1 ON ( {$wpdb->posts}.ID = mt1.post_id AND mt1.meta_key = 'skip_post_thumb' )
413
+ WHERE ({$wpdb->postmeta}.meta_key = '_thumbnail_id' AND mt1.post_id IS NULL)
414
+ AND {$wpdb->posts}.post_type = '{$type}' GROUP BY {$wpdb->posts}.ID ORDER BY {$wpdb->posts}.post_date DESC";*/
415
+ } else {
416
+ $args = [
417
+ 'orderby' => 'date',
418
+ 'order' => 'DESC ',
419
+ 'post_type' => $type,
420
+ 'posts_per_page' => - 1,
421
+ 'fields' => 'ids',
422
+ 'meta_query' => [
423
+ 'relation' => 'OR',
424
+ [
425
+ 'key' => '_thumbnail_id',
426
+ 'compare' => 'NOT EXISTS',
427
+ ],
428
+ [
429
+ 'key' => '_thumbnail_id',
430
+ 'compare' => '=',
431
+ 'value' => '',
432
+ ],
433
+ ],
434
+ ];
435
+
436
+ /*$query = "SELECT {$wpdb->posts}.ID FROM {$wpdb->posts}
437
+ LEFT JOIN {$wpdb->postmeta} ON ( {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_thumbnail_id' )
438
+ LEFT JOIN {$wpdb->postmeta} AS mt1 ON ( {$wpdb->posts}.ID = mt1.post_id AND mt1.meta_key = 'skip_post_thumb' )
439
+ WHERE ({$wpdb->postmeta}.post_id IS NULL AND mt1.post_id IS NULL)
440
+ AND (mt1.meta_key = '_thumbnail_id' AND mt1.meta_value = '')
441
+ AND {$wpdb->posts}.post_type = '{$type}' GROUP BY {$wpdb->posts}.ID ORDER BY {$wpdb->posts}.post_date DESC";*/
442
+ }
443
+
444
+ //$result = $wpdb->get_results( $query );
445
+ $query = new WP_Query( $args );
446
+
447
+ return $query->post_count;
448
+ }
449
+
450
+ /**
451
+ * Get thumbnail id for image
452
+ *
453
+ * @param array $image
454
+ *
455
+ * @return bool|int
456
+ */
457
+ public function get_thumbnail_id( $image ) {
458
+ global $wpdb;
459
+ $thumb_id = 0;
460
+
461
+ /**
462
+ * If the image is from the WordPress own media gallery, then it appends the thumbnail id to a css class.
463
+ * Look for this id in the IMG tag.
464
+ */
465
+ if ( isset( $image['tag'] ) && ! empty( $image['tag'] ) ) {
466
+ preg_match( '/wp-image-([\d]*)/i', $image['tag'], $thumb_id );
467
+
468
+ if ( $thumb_id ) {
469
+ $thumb_id = $thumb_id[1];
470
+
471
+ if ( ! get_post( $thumb_id ) ) {
472
+ $thumb_id = false;
473
+ }
474
+ }
475
+ }
476
+
477
+ if ( ! $thumb_id ) {
478
+ // If thumb id is not found, try to look for the image in DB.
479
+ if ( isset( $image['url'] ) && ! empty( $image['url'] ) ) {
480
+ $image_url = $image['url'];
481
+ // если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
482
+ $image_url = preg_replace( '/-[0-9]{1,}x[0-9]{1,}\./', '.', $image_url );
483
+ $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '%" . esc_sql( $image_url ) . "%'" );
484
+ }
485
+ }
486
+
487
+ return is_numeric( $thumb_id ) ? $thumb_id : false;
488
+ }
489
+
490
+ /**
491
+ * @param \WP_Post $post
492
+ * @param \WP_REST_Request $request
493
+ * @param bool $is_insert
494
+ *
495
+ * @throws Exception
496
+ */
497
+ public function rest_after_insert( $post, $request, $is_insert ) {
498
+ $this->publish_post( $post->ID, $post, ! $is_insert );
499
+ }
500
+
501
+ /**
502
+ * Function for 'save_post' hook
503
+ *
504
+ * @param int $post_id Post ID.
505
+ * @param \WP_Post $post
506
+ * @param bool $update
507
+ *
508
+ * @throws Exception
509
+ */
510
+ public function save_post( $post_id, $post = null, $update = true ) {
511
+ if ( ! in_array( $post->post_type, $this->allowed_generate_post_types ) ) {
512
+ $this->plugin->logger->warning( "The post type ({$post->post_type}) is not allowed for generation in settings" );
513
+ } else {
514
+ $this->publish_post( $post_id, $post, $update );
515
+ }
516
+ }
517
+
518
+ /**
519
+ * Function to save first image in post as post thumbnail.
520
+ *
521
+ * @param int $post_id Post ID.
522
+ * @param \WP_Post $post
523
+ * @param bool $update
524
+ *
525
+ * @return GenerateResult
526
+ * @throws Exception
527
+ */
528
+ public function publish_post( $post_id, $post = null, $update = true ) {
529
+ global $wpdb;
530
+
531
+ $autoimage = \WAPT_Plugin::app()->getPopulateOption( 'generate_autoimage', 'find' );
532
+ $generation = new GenerateResult( $post_id, $autoimage );
533
+
534
+ if ( ! $post ) {
535
+ $post = get_post( $post_id );
536
+ if ( ! $post ) {
537
+ $this->plugin->logger->warning( "The post was not found (post ID = {$post_id})" );
538
+
539
+ return $generation->result( __( 'The post was not found', 'apt' ) );
540
+ }
541
+ }
542
+
543
+ if ( ! $update ) {
544
+ return $generation->result();
545
+ }
546
+
547
+ // First check whether Post Thumbnail is already set for this post.
548
+ $_thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
549
+ if ( $_thumbnail_id && $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE id = '" . esc_sql( $_thumbnail_id ) . "' AND post_type = 'attachment'" ) || get_post_meta( $post_id, 'skip_post_thumb', true ) ) {
550
+ $this->plugin->logger->warning( "The post ({$post_id}) has already been assigned a featured image" );
551
+
552
+ return $generation->result( __( 'The post has already been assigned a featured image', 'apt' ) );
553
+ }
554
+
555
+ $thumb_id = 0;
556
+
557
+ $images = new \WBCR\APT\PostImages( $post_id );
558
+ if ( ( $images->is_images() && $images->count_images() ) && $autoimage !== 'generate' && $autoimage !== 'google' ) {
559
+ foreach ( $images->get_images() as $image ) {
560
+ $thumb_id = $this->get_thumbnail_id( $image );
561
+ // If we succeed in generating thumb, let's update post meta
562
+ if ( $thumb_id ) {
563
+ $this->plugin->logger->info( "An attachment ({$thumb_id}) was found in the text of the post." );
564
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
565
+ $this->plugin->logger->info( "Featured image ($thumb_id) is set for post ($post_id)" );
566
+ } else {
567
+ if ( \WAPT_Plugin::app()->is_premium() ) {
568
+ $thumb_id = apply_filters( 'wapt/generate_post_thumb', $image, $post_id );
569
+
570
+ if ( $thumb_id ) {
571
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
572
+ }
573
+ }
574
+ }
575
+
576
+ return $generation->result( '', $thumb_id );
577
+ }
578
+ } else {
579
+ // создаём свою картинку с заголовком на цветном фоне
580
+ if ( $autoimage === 'generate' || $autoimage === 'both' ) {
581
+ $thumb_id = $this->generate_and_attachment( $post_id );
582
+ if ( $thumb_id ) {
583
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
584
+
585
+ return $generation->result( '', $thumb_id );
586
+ }
587
+ } elseif ( $autoimage === 'google' || $autoimage === 'find_google' ) {
588
+ $response = ( new GoogleImages() )->search( $post->post_title, 1 );
589
+ if ( ! empty( $response->images ) ) {
590
+ $this->plugin->logger->info( 'Google image search result = ' . var_export( $response->images[0], true ) );
591
+ $thumb_id = apply_filters( 'wapt/download_from_google', 0, $response->images, $post_id );
592
+ }
593
+ if ( $thumb_id ) {
594
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
595
+ $this->plugin->logger->info( "Successful download from google. Attachment ID = {$thumb_id}" );
596
+
597
+ return $generation->result( '', $thumb_id );
598
+ }
599
+ $this->plugin->logger->error( 'Error download from google. ' . var_export( $thumb_id, true ) );
600
+ } elseif ( $autoimage === 'use_default' ) {
601
+ $thumb_id = $this->UseDefault( $post_id );
602
+ if ( $thumb_id ) {
603
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
604
+
605
+ return $generation->result( '', $thumb_id );
606
+ }
607
+ }
608
+ }
609
+
610
+ return $generation->result( __( 'No images found or generated', 'apt' ) );
611
+ }
612
+
613
+ /**
614
+ * Function to save first image in post as post thumbnail.
615
+ *
616
+ * @param \WP_Post|array $post
617
+ * @param array $postarr
618
+ */
619
+ public function auto_upload( $data, $postarr = [] ) {
620
+ $allowed_post_types = explode( ',', \WAPT_Plugin::app()->getPopulateOption( 'import_post_types', '' ) );
621
+
622
+ if ( $data instanceof \WP_Post ) {
623
+ $post_type = $data->post_type ?? '';
624
+ } else {
625
+ $post_type = $data['post_type'] ?? '';
626
+ }
627
+ if ( $post_type && in_array( $post_type, $allowed_post_types ) ) {
628
+ $data = apply_filters( 'wapt/upload_and_replace_post_images', $data );
629
+ }
630
+
631
+ return $data;
632
+ }
633
+
634
+ /**
635
+ * Search through an array for a matching key.
636
+ *
637
+ * Examples:
638
+ * <code>
639
+ * $array = array(
640
+ * "database.name" => "my_db_name",
641
+ * "database.host" => "myhost.com",
642
+ * "database.user" => "admin",
643
+ * "database.pass" => "a secret."
644
+ * );
645
+ *
646
+ * $search = array_contains_key($array, "database");
647
+ * var_dump($search);
648
+ *
649
+ * Result:
650
+ * array (size=4)
651
+ * 'database.name' => string 'my_db_name' (length=10)
652
+ * 'database.host' => string 'myhost.com' (length=10)
653
+ * 'database.user' => string 'admin' (length=5)
654
+ * 'database.pass' => string 'a secret.' (length=9)
655
+ * </code>
656
+ *
657
+ * https://gist.github.com/steve-todorov/3671626
658
+ *
659
+ * @param array $input_array
660
+ * @param string $search_value
661
+ * @param bool $case_sensitive
662
+ *
663
+ * @return array
664
+ */
665
+ function array_contains_key( array $input_array, $search_value, $case_sensitive = false ) {
666
+ if ( $case_sensitive ) {
667
+ $preg_match = '/' . $search_value . '/';
668
+ } else {
669
+ $preg_match = '/' . $search_value . '/i';
670
+ }
671
+ $return_array = [];
672
+ $keys = array_keys( $input_array );
673
+ foreach ( $keys as $k ) {
674
+ if ( preg_match( $preg_match, $k ) ) {
675
+ $return_array[ $k ] = $input_array[ $k ];
676
+ }
677
+ }
678
+
679
+ return $return_array;
680
+ }
681
+
682
+ /**
683
+ * Fetch image from URL and generate required thumbnails.
684
+ *
685
+ * @param string $image
686
+ * @param string $title
687
+ * @param int $post_id
688
+ *
689
+ * @return int|WP_Error|null
690
+ */
691
+ public function generate_post_thumb( $image, $title, $post_id ) {
692
+ // Get the URL now for further processing
693
+ $imageUrl = $image;
694
+ if ( $imageUrl === wp_make_link_relative( $imageUrl ) ) {
695
+ $imageUrl = home_url( $imageUrl );
696
+ }
697
+ $imageTitle = $title;
698
+
699
+ // Get the file name
700
+ $filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
701
+ // исключаем параметры после имени файла
702
+ if ( strrpos( $filename, '?' ) ) {
703
+ $filename = substr( $filename, 0, strrpos( $filename, '?' ) );
704
+ }
705
+
706
+ if ( ! ( ( $uploads = wp_upload_dir( current_time( 'mysql' ) ) ) && false === $uploads['error'] ) ) {
707
+ return null;
708
+ }
709
+
710
+ // Generate unique file name
711
+ $filename = wp_unique_filename( $uploads['path'], $filename );
712
+
713
+ $new_file = $uploads['path'] . "/$filename";
714
+ $ext = pathinfo( $new_file, PATHINFO_EXTENSION );
715
+ if ( empty( $ext ) ) {
716
+ $ext = 'jpg';
717
+ $filename .= ".{$ext}";
718
+ $new_file .= ".{$ext}";
719
+ }
720
+
721
+ // Move the file to the uploads dir
722
+ if ( ! ini_get( 'allow_url_fopen' ) ) {
723
+ $file_data = $this->get_file_contents( $imageUrl );
724
+ } else {
725
+ $arrContextOptions = [
726
+ 'ssl' => [
727
+ 'verify_peer' => false,
728
+ 'verify_peer_name' => false,
729
+ ],
730
+ ];
731
+ $file_data = file_get_contents( $imageUrl, false, stream_context_create( $arrContextOptions ) );
732
+ }
733
+
734
+ if ( ! $file_data ) {
735
+ return null;
736
+ }
737
+
738
+ // Fix for checking file extensions
739
+ $exts = explode( '.', $filename );
740
+ if ( count( $exts ) > 2 ) {
741
+ // return null;
742
+ }
743
+
744
+ $allowed = get_allowed_mime_types();
745
+ if ( ! $this->array_contains_key( $allowed, $ext ) ) {
746
+ return null;
747
+ }
748
+
749
+ file_put_contents( $new_file, $file_data );
750
+
751
+ // Set correct file permissions
752
+ $stat = stat( dirname( $new_file ) );
753
+ $perms = $stat['mode'] & 0000666;
754
+ @ chmod( $new_file, $perms );
755
+
756
+ $mimes = $type = $file = null;
757
+
758
+ // Get the file type. Must to use it as a post thumbnail.
759
+ $wp_filetype = wp_check_filetype( $filename, $mimes );
760
+
761
+ extract( $wp_filetype );
762
+
763
+ // No file type! No point to proceed further
764
+ if ( ( ! $type || ! $ext ) && ! current_user_can( 'unfiltered_upload' ) ) {
765
+ return null;
766
+ }
767
+
768
+ // Compute the URL
769
+ $url = $uploads['url'] . "/$filename";
770
+
771
+ // Construct the attachment array
772
+ $attachment = [
773
+ 'post_mime_type' => $type,
774
+ 'guid' => $url,
775
+ 'post_parent' => null,
776
+ 'post_title' => $imageTitle,
777
+ 'post_content' => '',
778
+ ];
779
+
780
+ $thumb_id = wp_insert_attachment( $attachment, $file, $post_id );
781
+ if ( ! is_wp_error( $thumb_id ) ) {
782
+ require_once ABSPATH . '/wp-admin/includes/image.php';
783
+
784
+ // Added fix by misthero as suggested
785
+ wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $new_file ) );
786
+ update_attached_file( $thumb_id, $new_file );
787
+
788
+ return $thumb_id;
789
+ }
790
+
791
+ return null;
792
+ }
793
+
794
+ /**
795
+ * Function to fetch the contents of URL using HTTP API in absence of allow_url_fopen.
796
+ */
797
+ public function get_file_contents( $URL ) {
798
+ $response = wp_remote_get( $URL );
799
+ $contents = '';
800
+ if ( wp_remote_retrieve_response_code( $response ) === 200 ) {
801
+ $contents = wp_remote_retrieve_body( $response );
802
+ }
803
+
804
+ return $contents ? $contents : false;
805
+ }
806
+
807
+ /**
808
+ * Используется для динамического обновления столбца "Image" после выбора изображения в общем списке постов
809
+ *
810
+ * @return array|bool
811
+ *
812
+ * @uses apt_thumb
813
+ */
814
+ public function apt_replace_thumbnail() {
815
+
816
+ if ( isset( $_POST['post_id'] ) && ! empty( $_POST['post_id'] ) ) {
817
+ $post_id = intval( $_POST['post_id'] );
818
+ if ( ! current_user_can( 'edit_post', $post_id ) ) {
819
+ wp_die( - 1 );
820
+ } else {
821
+ check_ajax_referer( 'set_post_thumbnail-' . $post_id );
822
+ if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
823
+ $thumb_id = intval( $_POST['thumbnail_id'] );
824
+
825
+ if ( $thumb_id === - 1 ) {
826
+ // generate image
827
+ $thumb_id = $this->generate_and_attachment( $post_id );
828
+ }
829
+ } elseif ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) ) {
830
+ $img = $_POST['image'];
831
+
832
+ // Совместимость с NextGen
833
+ $img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
834
+
835
+ // Find image in medialibrary
836
+ $thumb_id = $this->get_thumbnail_id( [ 'url' => $img ] );
837
+
838
+ if ( ! $thumb_id ) {
839
+ $thumb_id = $this->generate_post_thumb( $img, '', $post_id );
840
+ }
841
+ } else {
842
+ $thumb_id = 0;
843
+ }
844
+ if ( $thumb_id ) {
845
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
846
+ }
847
+
848
+ echo $this->apt_getThumbHtml( $post_id, $thumb_id ); // phpcs:ignore
849
+ }
850
+ }
851
+ die();
852
+ }
853
+
854
+ /**
855
+ * Используется для динамической загрузки изображений поста в окно выбора
856
+ *
857
+ * @return array|bool
858
+ * @uses apt_thumb
859
+ */
860
+ public function apt_get_thumbnail() {
861
+ include WAPT_ABSPATH . '/admin/views/pro_column.php';
862
+ die();
863
+ }
864
+
865
+ /**
866
+ * Формирует HTML конструкцию для вывода картинки поста в общей таблице постов
867
+ *
868
+ * @param $post_id
869
+ * @param $thumb_id
870
+ *
871
+ * @return string HTML конструкция готовая для вывода
872
+ */
873
+ public function apt_getThumbHtml( $post_id, $thumb_id ) {
874
+ $imgTag = get_the_post_thumbnail( $post_id, [ 100, 0 ], [ 'class' => 'img' ] );
875
+ if ( empty( $imgTag ) ) {
876
+ $imgTag = esc_html__( 'No image', 'apt' );
877
+ }
878
+
879
+ $title = esc_attr__( 'Change featured image', 'apt' );
880
+ $wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
881
+ $ajaxloader = WAPT_PLUGIN_URL . '/admin/assets/img/ajax-loader.gif';
882
+ $content = '';
883
+ $html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}' onclick='return window.aptModalShow(this, {$post_id}, \"$wpnonce\");'>{$imgTag}</a>" . "<span id='loader_{$post_id}' style='display:none;'><img src='{$ajaxloader}' width='100px' alt=''></span><div id='post_imgs_{$post_id}' class='imgs' style='display:none;'><span style='display:none;'><img src='{$ajaxloader}' alt=''></span><div>{$content}</div></div>";
884
+
885
+ return $html;
886
+ }
887
+
888
+ /**
889
+ * Контент подпункта меню в Медиафайлы
890
+ */
891
+ public function addToMediaFromApt() {
892
+ // media_upload_header();
893
+ $this->is_in_medialibrary = true;
894
+ $this->sources = apply_filters( 'wapt/sources', $this->sources, 'add_to_media_from_apt' );
895
+ require_once WAPT_ABSPATH . '/admin/views/media-library.php';
896
+ }
897
+
898
+ /**
899
+ * Контент вкладки
900
+ */
901
+ public function media_AptTabContent() {
902
+ media_upload_header();
903
+ $this->sources = apply_filters( 'wapt/sources', $this->sources, 'tab_content' );
904
+ require_once WAPT_ABSPATH . '/admin/views/media-library.php';
905
+ }
906
+
907
+ /**
908
+ * AJAX вывод содержимого вкладки сервиса
909
+ */
910
+ public function source_content() {
911
+ if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_content' ) ) {
912
+ die( 'Error: Invalid request.' );
913
+ }
914
+ $this->sources = apply_filters( 'wapt/sources', $this->sources, 'source_content' );
915
+ if ( isset( $_POST['source'] ) && ! empty( $_POST['source'] ) ) {
916
+ $source = str_replace( 'tab-', '', sanitize_text_field( $_POST['source'] ) );
917
+
918
+ // if( empty($this->sources[$source]) && !\WAPT_Plugin::app()->premium->is_activate() )
919
+ if ( empty( $this->sources[ $source ] ) ) {
920
+ require_once WAPT_PLUGIN_DIR . '/admin/views/pro.php';
921
+ } else {
922
+ require_once WP_PLUGIN_DIR . '/' . $this->sources[ $source ] . '/admin/views/sources/' . $source . '.php';
923
+ }
924
+ }
925
+ die();
926
+ }
927
+
928
+ /**
929
+ * AJAX загрузка выбранного изображения
930
+ */
931
+ public function upload_to_library() {
932
+
933
+ if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_api' ) ) {
934
+ die( 'Error: Invalid request.' );
935
+ }
936
+ if ( isset( $_POST['is_upload'] ) ) {
937
+ $postid = intval( $_POST['postid'] );
938
+
939
+ // get image file
940
+ $response = wp_remote_get( $_POST['image_url'], [ 'timeout' => 100 ] );
941
+ if ( is_wp_error( $response ) ) {
942
+ die( 'Error: ' . esc_html( $response->get_error_message() ) );
943
+ }
944
+
945
+ $file_ext = '';
946
+ $image_title = '';
947
+ switch ( $_POST['service'] ) {
948
+ case 'pixabay':
949
+ $path_info = pathinfo( esc_url_raw( $_POST['image_url'] ) );
950
+ $file_ext = $path_info['extension'];
951
+ $image_title = sanitize_text_field( $_POST['q'] );
952
+ break;
953
+ case 'unsplash':
954
+ parse_str( parse_url( $_POST['image_url'], PHP_URL_QUERY ), $url_query );
955
+ $file_ext = $url_query['fm'];
956
+ if ( ! $file_ext ) {
957
+ $file_ext = 'jpg';
958
+ }
959
+
960
+ $image_title = sanitize_text_field( $_POST['title'] );
961
+ break;
962
+ case 'google':
963
+ $path_info = pathinfo( esc_url_raw( $_POST['image_url'] ) );
964
+ $file_ext = $path_info['extension'];
965
+ if ( $file_ext !== 'jpg' && $file_ext !== 'jpeg' && $file_ext !== 'png' && $file_ext !== 'gif' ) {
966
+ $file_ext = 'jpg';
967
+ }
968
+ if ( empty( $file_ext ) ) {
969
+ $file_ext = 'jpg';
970
+ }
971
+ $image_title = sanitize_text_field( wp_unslash( $_POST['title'] ?? '' ) );
972
+ break;
973
+ }
974
+
975
+ $q = sanitize_text_field( wp_unslash( $_POST['q'] ?? '' ) );
976
+ $file_name = sanitize_file_name( implode( '_', explode( ' ', $q ) ) . '_' . time() . '.' . $file_ext );
977
+ $wp_upload_dir = wp_upload_dir();
978
+ $image_upload_path = $wp_upload_dir['path'];
979
+
980
+ if ( ! is_dir( $image_upload_path ) ) {
981
+ // phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged
982
+ if ( ! @mkdir( $image_upload_path, 0777, true ) ) {
983
+ die( 'Error: Failed to create upload folder ' . esc_html( $image_upload_path ) );
984
+ }
985
+ // phpcs:enable
986
+ }
987
+
988
+ global $wp_filesystem;
989
+ if ( ! $wp_filesystem ) {
990
+ if ( ! function_exists( 'WP_Filesystem' ) ) {
991
+ require_once ABSPATH . 'wp-admin/includes/file.php';
992
+ }
993
+ WP_Filesystem();
994
+ }
995
+
996
+ $target_file_name = $image_upload_path . '/' . $file_name;
997
+ $result = $wp_filesystem->put_contents( $target_file_name, $response['body'] );
998
+ //$result = @file_put_contents( $target_file_name, $response['body'] );
999
+ unset( $response['body'] );
1000
+ if ( false === $result ) {
1001
+ die( 'Error: Failed to write file ' . esc_html( $target_file_name ) );
1002
+ }
1003
+
1004
+ // are we dealing with an image
1005
+ require_once ABSPATH . 'wp-admin/includes/image.php';
1006
+ if ( ! wp_read_image_metadata( $target_file_name ) ) {
1007
+ unlink( $target_file_name );
1008
+ die( 'Error: File is not an image.' );
1009
+ }
1010
+
1011
+ $attachment_caption = '';
1012
+
1013
+ // insert attachment
1014
+ $wp_filetype = wp_check_filetype( basename( $target_file_name ), null );
1015
+ $attachment = [
1016
+ 'guid' => $wp_upload_dir['url'] . '/' . basename( $target_file_name ),
1017
+ 'post_mime_type' => $wp_filetype['type'],
1018
+ 'post_title' => preg_replace( '/\.[^.]+$/', '', $image_title ),
1019
+ 'post_status' => 'inherit',
1020
+ ];
1021
+
1022
+ $attach_id = wp_insert_attachment( $attachment, $target_file_name, $postid );
1023
+ if ( 0 === $attach_id ) {
1024
+ die( 'Error: File attachment error' );
1025
+ }
1026
+
1027
+ $attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
1028
+ $result = wp_update_attachment_metadata( $attach_id, $attach_data );
1029
+ if ( ! $result ) {
1030
+ // die( 'Error: File attachment metadata error' );
1031
+ }
1032
+
1033
+ $image_data = [];
1034
+ $image_data['ID'] = $attach_id;
1035
+ $image_data['post_excerpt'] = sanitize_text_field( wp_unslash( $_POST['excerpt'] ?? '' ) );
1036
+ wp_update_post( $image_data );
1037
+
1038
+ echo (int) $attach_id;
1039
+
1040
+ exit;
1041
+ }
1042
+ }
1043
+
1044
+ /**
1045
+ * AJAX загрузка шрифта
1046
+ */
1047
+ public function upload_font() {
1048
+ if ( ! wp_verify_nonce( $_POST['wpnonce'], 'wapt_upload_font' ) ) {
1049
+ die( 'Error: Invalid request.' );
1050
+ }
1051
+
1052
+ if ( isset( $_POST['is_font_upload'] ) && count( $_FILES ) > 0 ) {
1053
+ $file = $_FILES[0];
1054
+ $upload_dir = wp_upload_dir();
1055
+ $upload_dir = $upload_dir['basedir'] . '/apt_fonts';
1056
+ if ( ! is_dir( $upload_dir ) ) {
1057
+ mkdir( $upload_dir, 0777 );
1058
+ }
1059
+
1060
+ $done_files = [];
1061
+ $file_name = $file['name'];
1062
+
1063
+ // Проверка, что файл является шрифтом TrueType
1064
+ $header = file_get_contents( $file['tmp_name'], false, null, null, 4 );
1065
+ if ( $header !== "\x00\x01\x00\x00" && $header !== 'true' && $header !== 'typ1' ) {
1066
+ die( json_encode( [ 'error' => 'The uploaded file is not a TrueType font' ] ) );
1067
+ }
1068
+ // -----
1069
+ $path = pathinfo( $file['tmp_name'] );
1070
+ if ( $path['extension'] === 'php' || $path['extension'] === 'js' ) {
1071
+ die( json_encode( [ 'error' => 'The uploaded file is not a TrueType font.' ] ) );
1072
+ }
1073
+
1074
+ add_filter( 'upload_mimes', function ( $mime_types ) {
1075
+ $mime_types['ttf'] = 'font/sfnt';
1076
+
1077
+ return $mime_types;
1078
+ }, 10, 1 );
1079
+
1080
+ add_filter( 'upload_dir', [ $this, 'set_fonts_upload_dir' ], 10, 1 );
1081
+
1082
+ $data = wp_handle_upload( $file, [ 'action' => $_POST['action'] ] );
1083
+ remove_filter( 'upload_dir', [ $this, 'set_fonts_upload_dir' ], 10 );
1084
+
1085
+ if ( ! isset( $data['error'] ) ) {
1086
+ if ( realpath( $data['file'] ) ) {
1087
+ $result = [ 'files' => $file ];
1088
+ } else {
1089
+ $result = [ 'error' => "Unable to copy the file to the font folder: $upload_dir" ];
1090
+ }
1091
+ } else {
1092
+ $result = [ 'error' => $data['error'] ];
1093
+ }
1094
+
1095
+ die( json_encode( $result ) );
1096
+ }
1097
+ }
1098
+
1099
+ public function set_fonts_upload_dir( $upload ) {
1100
+ $upload['subdir'] = '/apt_fonts';
1101
+ $upload['path'] = $upload['basedir'] . $upload['subdir'];
1102
+ $upload['url'] = $upload['baseurl'] . $upload['subdir'];
1103
+
1104
+ return $upload;
1105
+ }
1106
+
1107
+ /**
1108
+ * AJAX загрузка google
1109
+ */
1110
+ public function apt_api_google() {
1111
+
1112
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'apt_api' ) ) {
1113
+ die( 'Error: Invalid request.' );
1114
+ }
1115
+ if ( isset( $_POST['query'] ) ) {
1116
+ if ( isset( $_POST['page'] ) ) {
1117
+ $page = intval( $_POST['page'] );
1118
+ } else {
1119
+ $page = 1;
1120
+ }
1121
+
1122
+ $post_title = '';
1123
+ if ( isset( $_POST['post_id'] ) && is_numeric( $_POST['post_id'] ) ) {
1124
+ $post = get_post( (int) $_POST['post_id'] );
1125
+ if ( is_object( $post ) ) {
1126
+ $post_title = $post->post_title;
1127
+ }
1128
+ }
1129
+
1130
+ if ( isset( $_POST['watson'] ) ) {
1131
+ $query = isset( $_POST['query'] ) && ! empty( $_POST['query'] ) && (bool) $_POST['watson'] ? sanitize_text_field( $_POST['query'] ) : $post_title;
1132
+ } else {
1133
+ $query = sanitize_text_field( $_POST['query'] ?? '' );
1134
+ }
1135
+
1136
+ try {
1137
+ $response = ( new GoogleImages() )->search( $query, $query === $post_title ? $page + 1 : $page );
1138
+
1139
+ if ( isset( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ) {
1140
+ $response->limit( (int) $_POST['limit'] );
1141
+ }
1142
+
1143
+ if ( ! $response->is_error() && isset( $_POST['post_id'] ) && is_numeric( $_POST['post_id'] ) ) {
1144
+ $post = get_post( (int) $_POST['post_id'] );
1145
+ if ( $post ) {
1146
+ $response2 = ( new GoogleImages() )->search( $post->post_title, $page );
1147
+
1148
+ if ( isset( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ) {
1149
+ $response2->limit( (int) $_POST['limit'] );
1150
+ }
1151
+
1152
+ $response->images = array_merge( $response2->images, $response->images );
1153
+ }
1154
+ }
1155
+ } catch ( Exception $e ) {
1156
+ die( esc_html( $e->getMessage() ) );
1157
+ }
1158
+
1159
+ if ( $response->is_error() ) {
1160
+ wp_send_json_error( $response );
1161
+ }
1162
+
1163
+ wp_send_json_success( $response );
1164
+ }
1165
+ }
1166
+
1167
+ /**
1168
+ * Проверка API ключей
1169
+ */
1170
+ public function apt_check_api_key() {
1171
+
1172
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'check-api-key' ) ) {
1173
+ die( 'Error: Invalid request.' );
1174
+ }
1175
+ if ( isset( $_POST['provider'] ) && isset( $_POST['key'] ) && isset( $_POST['key2'] ) ) {
1176
+ $provider = trim( $_POST['provider'] );
1177
+ $key = trim( $_POST['key'] );
1178
+ $cx = trim( $_POST['key2'] );
1179
+ switch ( $provider ) {
1180
+ case 'google':
1181
+ $url = "https://www.googleapis.com/customsearch/v1?q=cat&key={$key}&cx={$cx}";
1182
+
1183
+ $response = wp_remote_get( $url, [ 'timeout' => 100 ] );
1184
+ if ( is_wp_error( $response ) ) {
1185
+ die( 'Error: ' . esc_html( $response->get_error_message() ) );
1186
+ }
1187
+ $result = json_decode( $response['body'] );
1188
+ echo (bool) ! isset( $result->error->errors );
1189
+ break;
1190
+ }
1191
+ exit;
1192
+ }
1193
+ }
1194
+
1195
+ public function check_api_notice( $notices, $plugin_name ) {
1196
+ // Если экшен вызывал не этот плагин, то не выводим это уведомления
1197
+ if ( $plugin_name !== \WAPT_Plugin::app()->getPluginName() ) {
1198
+ return $notices;
1199
+ }
1200
+ // Получаем заголовок плагина
1201
+ $plugin_title = \WAPT_Plugin::app()->getPluginTitle();
1202
+
1203
+ if ( ! \WAPT_Plugin::app()->getPopulateOption( 'google_apikey' ) && ! \WAPT_Plugin::app()->getPopulateOption( 'google_cse' ) ) {
1204
+ // Задаем текст уведомления
1205
+ $notice_text = '<p><b>' . $plugin_title . ':</b> <br>' . sprintf( __( "To download images from Google, specify Google API keys in the <a href='%s'>settings</a>.", 'apt' ), admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ) ) . '</p>';
1206
+
1207
+ // Задаем настройки уведомления
1208
+ $notices[] = [
1209
+ 'id' => 'apt_check_api',
1210
+ // error, success, warning
1211
+ 'type' => 'warning',
1212
+ 'dismissible' => true,
1213
+ // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1214
+ 'where' => [ 'plugins', 'dashboard', 'edit' ],
1215
+ // Через какое время уведомление снова появится?
1216
+ 'dismiss_expires' => 0,
1217
+ 'text' => $notice_text,
1218
+ 'classes' => [],
1219
+ ];
1220
+ }
1221
+
1222
+ return $notices;
1223
+ }
1224
+
1225
+ /**
1226
+ * Получение списка шрифтов из папок
1227
+ *
1228
+ * @return array
1229
+ */
1230
+ public static function get_fonts() {
1231
+ $upload_dir = wp_upload_dir();
1232
+ $upload_dir_fonts = $upload_dir['basedir'] . '/apt_fonts';
1233
+ $plugin_dir_fonts = WAPT_PLUGIN_DIR . '/fonts';
1234
+ $fonts = [];
1235
+
1236
+ $fonts[] = [
1237
+ 'title' => __( 'Standard', 'apt' ),
1238
+ 'type' => 'group',
1239
+ ];
1240
+ $files = scandir( $plugin_dir_fonts );
1241
+ foreach ( $files as $file ) {
1242
+ if ( $file === '.' || $file === '..' ) {
1243
+ continue;
1244
+ }
1245
+ $name = pathinfo( $plugin_dir_fonts . '/' . $file );
1246
+ $name = $name['filename'];
1247
+ $fonts[] = [
1248
+ 'value' => $file,
1249
+ 'title' => $name,
1250
+ ];
1251
+ }
1252
+
1253
+ if ( is_dir( $upload_dir_fonts ) ) {
1254
+ $files = scandir( $upload_dir_fonts );
1255
+ }
1256
+ if ( count( $files ) && \WAPT_Plugin::app()->is_premium() ) {
1257
+ $fonts[] = [
1258
+ 'title' => __( 'Uploaded', 'apt' ),
1259
+ 'type' => 'group',
1260
+ ];
1261
+ foreach ( $files as $file ) {
1262
+ if ( $file === '.' || $file === '..' ) {
1263
+ continue;
1264
+ }
1265
+ $name = pathinfo( $upload_dir_fonts . '/' . $file );
1266
+ $name = $name['filename'];
1267
+ $fonts[] = [
1268
+ 'value' => $file,
1269
+ 'title' => $name,
1270
+ ];
1271
+ }
1272
+ }
1273
+
1274
+ return $fonts;
1275
+ }
1276
+
1277
+ /**
1278
+ * Генерация изображения с текстом.
1279
+ * Если $pathToSave задан, то файл сохранится по этому пути.
1280
+ *
1281
+ * @param string $text
1282
+ * @param string $pathToSave
1283
+ * @param string $format
1284
+ * @param int $width
1285
+ * @param int $height
1286
+ *
1287
+ * @return Image
1288
+ */
1289
+ public static function generate_image_with_text( $text, $pathToSave = '', $format = 'jpg', $width = 0, $height = 0 ) {
1290
+ $font = WAPT_PLUGIN_DIR . '/fonts/arial.ttf';
1291
+ $font_size = \WAPT_Plugin::app()->getPopulateOption( 'font-size', 25 );
1292
+ $font_color = \WAPT_Plugin::app()->getPopulateOption( 'font-color', '#ffffff' );
1293
+ if ( $width === 0 ) {
1294
+ $width = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-width', 800 );
1295
+ }
1296
+ if ( $height === 0 ) {
1297
+ $height = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-height', 600 );
1298
+ }
1299
+ $before_text = '';
1300
+ $after_text = '';
1301
+ $shadow = \WAPT_Plugin::app()->getPopulateOption( 'shadow', 0 );
1302
+ if ( ! $shadow ) {
1303
+ $shadow_color = '';
1304
+ } else {
1305
+ $shadow_color = \WAPT_Plugin::app()->getPopulateOption( 'shadow-color', '#ffffff' );
1306
+ }
1307
+
1308
+ $background_type = 'color';
1309
+ $background = \WAPT_Plugin::app()->getPopulateOption( 'background-color', '#ff6262' );
1310
+
1311
+ $text_transform = \WAPT_Plugin::app()->getPopulateOption( 'text-transform', 'no' );
1312
+ switch ( $text_transform ) {
1313
+ case 'upper':
1314
+ $text = mb_strtoupper( $text );
1315
+ break;
1316
+ case 'lower':
1317
+ $text = mb_strtolower( $text );
1318
+ break;
1319
+ }
1320
+
1321
+ $text_crop = \WAPT_Plugin::app()->getPopulateOption( 'text-crop', 100 );
1322
+ if ( $text_crop > 0 ) {
1323
+ if ( strlen( $text ) > $text_crop ) {
1324
+ $temp = substr( $text, 0, $text_crop );
1325
+ $text = substr( $temp, 0, strrpos( $temp, ' ' ) );
1326
+ }
1327
+ }
1328
+
1329
+ $align = 'center';
1330
+ $valign = 'center';
1331
+ $padding_tb = 15;
1332
+ $padding_lr = 15;
1333
+ $line_spacing = \WAPT_Plugin::app()->getPopulateOption( 'text-line-spacing', 1.5 );
1334
+
1335
+ $params = [
1336
+ 'text' => $text,
1337
+ 'pathToSave' => $pathToSave,
1338
+ 'format' => $format,
1339
+ 'width' => $width,
1340
+ 'height' => $height,
1341
+ ];
1342
+ $image = new Image( $width, $height, $background, $font, $font_size, $font_color );
1343
+ $image->params = $params;
1344
+ $image->setPadding( $padding_lr, $padding_tb );
1345
+ $image->write_text( $before_text . $text . $after_text, '', '', '', $align, $valign, $line_spacing, $shadow_color );
1346
+ if ( ! empty( $pathToSave ) ) {
1347
+ $image->save( $pathToSave, 100, $format );
1348
+ }
1349
+
1350
+ return $image;
1351
+ }
1352
+
1353
+ public function find_from_text_category( $post_id ) {
1354
+ $post = get_post( $post_id );
1355
+
1356
+ $response = ( new \WAPT_IBMWatson( strip_tags( $post->post_content ) ) )->categories()->analyze();
1357
+ }
1358
+
1359
+ /**
1360
+ * Генерация изображения с текстом.
1361
+ *
1362
+ * @param integer $post_id
1363
+ *
1364
+ * @return integer $thumb_id
1365
+ */
1366
+ public function generate_and_attachment( $post_id ) {
1367
+ $this->plugin->logger->info( "Start generate attachment for post ID = {$post_id}" );
1368
+
1369
+ $format = \WAPT_Plugin::app()->getPopulateOption( 'image-type', 'jpg' );
1370
+ switch ( $format ) {
1371
+ case 'png':
1372
+ $extension = 'png';
1373
+ $mime_type = 'image/png';
1374
+ break;
1375
+ case 'jpg':
1376
+ case 'jpeg':
1377
+ default:
1378
+ $extension = 'jpg';
1379
+ $mime_type = 'image/jpeg';
1380
+ break;
1381
+ }
1382
+ $post = get_post( $post_id, 'OBJECT' );
1383
+ $uploads = wp_upload_dir( current_time( 'mysql' ) );
1384
+ $title = apply_filters( 'wapt/generate/title', $post->post_title, $post_id );
1385
+
1386
+ // Generate unique file name
1387
+ $slug = wp_unique_post_slug( sanitize_title( $title ), $post->ID, $post->post_status, $post->post_type, $post->post_parent );
1388
+ $filename = wp_unique_filename( $uploads['path'], "{$slug}_{$post_id}.{$extension}" );
1389
+ $file_path = "{$uploads['path']}/{$filename}";
1390
+
1391
+ $this->plugin->logger->info( "Generated file path = {$file_path}" );
1392
+
1393
+ // Move the file to the uploads dir
1394
+ $image = apply_filters( 'wapt/generate/image', false, $title, $uploads['path'] . "/$filename", $extension );
1395
+ if ( ! $image ) {
1396
+ $image = apply_filters( 'wapt/generate/image', $this->generate_image_with_text( $title, $uploads['path'] . "/$filename", $extension ), $title, $uploads['path'] . "/$filename", $extension );
1397
+ }
1398
+
1399
+ $thumb_id = self::insert_attachment( $post, $file_path, $mime_type );
1400
+
1401
+ if ( ! is_wp_error( $thumb_id ) ) {
1402
+ $this->plugin->logger->info( "Successful generate attachment ID = {$thumb_id}" );
1403
+ $this->plugin->logger->info( "End generate attachment for post ID = {$post_id}" );
1404
+
1405
+ return $thumb_id;
1406
+ } else {
1407
+ $this->plugin->logger->error( 'Error generate attachment: ' . var_export( $thumb_id, true ) );
1408
+ }
1409
+
1410
+ return 0;
1411
+ }
1412
+
1413
+
1414
+ public function UseDefault( $post_id ) {
1415
+ $this->plugin->logger->info( "Start set default attachment for post ID = {$post_id}" );
1416
+
1417
+ $thumb_id = \WAPT_Plugin::app()->getPopulateOption( 'default-background', '' );
1418
+
1419
+ if ( ! is_wp_error( $thumb_id ) ) {
1420
+ $this->plugin->logger->info( "Successful set default attachment ID = {$thumb_id}" );
1421
+
1422
+ return $thumb_id;
1423
+ } else {
1424
+ $this->plugin->logger->error( 'Error set default attachment: ' . var_export( $thumb_id, true ) );
1425
+ }
1426
+
1427
+ return 0;
1428
+ }
1429
+
1430
+ /**
1431
+ * Insert WP attachment
1432
+ *
1433
+ * @param \WP_Post|int $post
1434
+ * @param string $file_path
1435
+ * @param string $mime_type
1436
+ *
1437
+ * @return int|WP_Error
1438
+ */
1439
+ public static function insert_attachment( $post, $file_path, $mime_type = '' ) {
1440
+ if ( is_int( $post ) ) {
1441
+ $post = get_post( $post, 'OBJECT' );
1442
+ }
1443
+
1444
+ if ( ! $post ) {
1445
+ return new WP_Error( 'apt_attachment', 'Post not found (insert_attachment)' );
1446
+ }
1447
+
1448
+ if ( empty( $mime_type ) ) {
1449
+ $mime_type = wp_get_image_mime( $file_path );
1450
+ if ( ! $mime_type ) {
1451
+ $mime_type = 'image/jpeg';
1452
+ }
1453
+ }
1454
+
1455
+ $file_url = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $file_path );
1456
+ if ( file_exists( $file_path ) ) {
1457
+ $attachment = [
1458
+ 'post_mime_type' => $mime_type,
1459
+ 'guid' => $file_url,
1460
+ 'post_parent' => $post->ID,
1461
+ 'post_title' => $post->post_title,
1462
+ 'post_content' => '',
1463
+ ];
1464
+
1465
+ $thumb_id = wp_insert_attachment( $attachment, $file_path, $post->ID );
1466
+
1467
+ if ( ! is_wp_error( $thumb_id ) ) {
1468
+ require_once ABSPATH . '/wp-admin/includes/image.php';
1469
+
1470
+ // Added fix by misthero as suggested
1471
+ wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $file_path ) );
1472
+ update_attached_file( $thumb_id, $file_path );
1473
+
1474
+ return $thumb_id;
1475
+ }
1476
+ }
1477
+
1478
+ return new WP_Error( 'apt_attachment', 'File not exists (insert_attachment)' );
1479
+ }
1480
+ }
includes/class-plugin.php CHANGED
@@ -15,11 +15,11 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  * @copyright (c) 2018 Webraftic Ltd
16
  * @version 1.0
17
  */
18
- class WAPT_Plugin extends Wbcr_Factory453_Plugin {
19
 
20
  /**
21
  * @see self::app()
22
- * @var Wbcr_Factory453_Plugin
23
  */
24
  private static $app;
25
 
@@ -73,7 +73,7 @@ class WAPT_Plugin extends Wbcr_Factory453_Plugin {
73
  /**
74
  * Статический метод для быстрого доступа к интерфейсу плагина.
75
  *
76
- * @return Wbcr_Factory453_Plugin
77
  */
78
  public static function app() {
79
  return self::$app;
@@ -248,7 +248,7 @@ class WAPT_Plugin extends Wbcr_Factory453_Plugin {
248
  if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
249
  try {
250
  $redirect_url = '';
251
- if ( class_exists( 'Wbcr_FactoryPages452' ) ) {
252
  $redirect_url = admin_url( 'admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1' );
253
  }
254
  if ( $redirect_url ) {
@@ -488,9 +488,9 @@ class WAPT_Plugin extends Wbcr_Factory453_Plugin {
488
  $compare = 'NOT EXISTS';
489
  }
490
  $query->set( 'meta_query', [
491
- [
492
- 'key' => '_thumbnail_id',
493
- 'compare' => $compare,
494
  ],
495
  ] );
496
  }
@@ -500,14 +500,15 @@ class WAPT_Plugin extends Wbcr_Factory453_Plugin {
500
  * Add filter on the Posts list tables.
501
  */
502
  public function add_filter_link( $views ) {
503
- $query = $this->apt->get_posts_query( false, 'post', 'publish' );
504
- $posts = $query->post_count;
505
 
506
- $q = add_query_arg( [
507
- 'apt_is_image' => '0',
508
- 'post_type' => 'post',
509
  ], 'edit.php' );
510
- $views['apt_filter'] = '<a href="' . $q . '">' . __( 'Without featured image', 'apt' ) . '</a> (' . $posts . ')';
 
 
511
  unset( $my );
512
 
513
  return $views;
@@ -542,8 +543,8 @@ class WAPT_Plugin extends Wbcr_Factory453_Plugin {
542
  $prefix = rest_get_url_prefix();
543
  $rest_route = $this->request->get( 'rest_route', null );
544
  if ( defined( 'REST_REQUEST' ) && REST_REQUEST // (#1)
545
- || ! is_null( $rest_route ) // (#2)
546
- && strpos( trim( $rest_route, '\\/' ), $prefix, 0 ) === 0 ) {
547
  return true;
548
  }
549
 
15
  * @copyright (c) 2018 Webraftic Ltd
16
  * @version 1.0
17
  */
18
+ class WAPT_Plugin extends Wbcr_Factory458_Plugin {
19
 
20
  /**
21
  * @see self::app()
22
+ * @var Wbcr_Factory458_Plugin
23
  */
24
  private static $app;
25
 
73
  /**
74
  * Статический метод для быстрого доступа к интерфейсу плагина.
75
  *
76
+ * @return Wbcr_Factory458_Plugin
77
  */
78
  public static function app() {
79
  return self::$app;
248
  if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
249
  try {
250
  $redirect_url = '';
251
+ if ( class_exists( 'Wbcr_FactoryPages457' ) ) {
252
  $redirect_url = admin_url( 'admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1' );
253
  }
254
  if ( $redirect_url ) {
488
  $compare = 'NOT EXISTS';
489
  }
490
  $query->set( 'meta_query', [
491
+ [
492
+ 'key' => '_thumbnail_id',
493
+ 'compare' => $compare,
494
  ],
495
  ] );
496
  }
500
  * Add filter on the Posts list tables.
501
  */
502
  public function add_filter_link( $views ) {
503
+ //$posts = $this->apt->get_posts_count( false, 'post');
 
504
 
505
+ $q = add_query_arg( [
506
+ 'apt_is_image' => '0',
507
+ 'post_type' => 'post',
508
  ], 'edit.php' );
509
+
510
+ //$views['apt_filter'] = '<a href="' . $q . '">' . __( 'Without featured image', 'apt' ) . '</a> (' . $posts . ')';
511
+ $views['apt_filter'] = '<a href="' . $q . '">' . __( 'Without featured image', 'apt' ) . '</a>';
512
  unset( $my );
513
 
514
  return $views;
543
  $prefix = rest_get_url_prefix();
544
  $rest_route = $this->request->get( 'rest_route', null );
545
  if ( defined( 'REST_REQUEST' ) && REST_REQUEST // (#1)
546
+ || ! is_null( $rest_route ) // (#2)
547
+ && strpos( trim( $rest_route, '\\/' ), $prefix, 0 ) === 0 ) {
548
  return true;
549
  }
550
 
includes/controls/class.color.php CHANGED
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
 
19
  if ( ! class_exists( 'Wapt_FactoryForms_ColorControl' ) ) {
20
 
21
- class Wapt_FactoryForms_ColorControl extends Wbcr_FactoryForms450_Control {
22
 
23
  public $type = 'wapt-color';
24
 
18
 
19
  if ( ! class_exists( 'Wapt_FactoryForms_ColorControl' ) ) {
20
 
21
+ class Wapt_FactoryForms_ColorControl extends Wbcr_FactoryForms455_Control {
22
 
23
  public $type = 'wapt-color';
24
 
includes/controls/class.fonts.php CHANGED
@@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) {
22
 
23
  if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
24
 
25
- class Wapt_FactoryForms_FontsControl extends Wbcr_FactoryForms450_DropdownControl {
26
 
27
  public $type = 'wapt-fonts';
28
 
22
 
23
  if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
24
 
25
+ class Wapt_FactoryForms_FontsControl extends Wbcr_FactoryForms455_DropdownControl {
26
 
27
  public $type = 'wapt-fonts';
28
 
includes/controls/class.mediabutton.php CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
 
21
  if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
22
 
23
- class Wapt_FactoryForms_MediaButtonControl extends Wbcr_FactoryForms450_Control {
24
 
25
  public $type = 'wapt-mediabutton';
26
 
@@ -53,9 +53,9 @@ if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
53
  <style>
54
  .wapt-bg-image-thumb
55
  {
56
- margin: 10px 0px;
57
  border-radius: 10px;
58
- box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.5);
59
  }
60
 
61
  .wapt-invisible
@@ -72,8 +72,22 @@ if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
72
  jQuery(function ($) {
73
 
74
  var frame;
75
- $(document).on('click', '#wapt-select-image', function (event) {
76
  event.preventDefault();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  if (frame) {
78
  frame.open();
79
  return;
@@ -86,14 +100,24 @@ if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
86
  },
87
  multiple: false
88
  });
 
 
 
 
 
 
 
89
  frame.on('select', function () {
90
  var attachment = frame.state().get('selection').first().toJSON();
91
- var thumb = $('#wapt-bg-image-thumb');
92
- $('#<?php echo esc_html( $name ); ?>').val(attachment.id);
 
93
  thumb.attr('src', attachment.sizes.thumbnail.url);
94
  thumb.removeClass('wapt-bg-image-invisible').addClass('wapt-visible');
95
 
 
96
  });
 
97
  frame.open();
98
  });
99
  });
@@ -103,7 +127,7 @@ if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
103
  class="wapt-bg-image-thumb <?php echo esc_attr( $image_class ); ?>"
104
  id="wapt-bg-image-thumb">
105
  <button class="button button-primary button-large <?php echo esc_attr( $name ); ?>"
106
- id="wapt-select-image"><?php echo esc_html( $button_text ); ?></button>
107
  <input type="hidden" id="<?php echo esc_attr( $name ); ?>" name="<?php echo esc_attr( $name ); ?>"
108
  class="factory-input-text"
109
  value="<?php echo esc_html( $value ); ?>">
20
 
21
  if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
22
 
23
+ class Wapt_FactoryForms_MediaButtonControl extends Wbcr_FactoryForms455_Control {
24
 
25
  public $type = 'wapt-mediabutton';
26
 
53
  <style>
54
  .wapt-bg-image-thumb
55
  {
56
+ margin: 10px 0;
57
  border-radius: 10px;
58
+ box-shadow: 2px 2px 5px 0 rgba(0, 0, 0, 0.5);
59
  }
60
 
61
  .wapt-invisible
72
  jQuery(function ($) {
73
 
74
  var frame;
75
+ $(document).on('click', '#wapt-select-image-<?php echo esc_attr( $name ); ?>', function (event) {
76
  event.preventDefault();
77
+
78
+ let customPreview = document.getElementById('wapt-thumb-preview-input');
79
+ let customPreviewTwo = document.getElementById('wapt-thumb-form-input');
80
+
81
+ if (customPreview) {
82
+ customPreview.remove();
83
+ customPreviewTwo.remove();
84
+ $(this).closest('.factory-wapt-mediabutton').prepend('<input type="hidden" id="wapt-thumb-preview-input">');
85
+ $(this).closest('.factory-wapt-mediabutton').append('<input type="hidden" id="wapt-thumb-form-input">');
86
+ } else {
87
+ $(this).closest('.factory-wapt-mediabutton').prepend('<input type="hidden" id="wapt-thumb-preview-input">');
88
+ $(this).closest('.factory-wapt-mediabutton').append('<input type="hidden" id="wapt-thumb-form-input">');
89
+ }
90
+
91
  if (frame) {
92
  frame.open();
93
  return;
100
  },
101
  multiple: false
102
  });
103
+
104
+ var inputImg = $('#wapt-thumb-form-input').prev();
105
+ frame.on('open', function () {
106
+ if ($(inputImg).val())
107
+ frame.state().get('selection').add(wp.media.attachment($(inputImg).val()));
108
+ });
109
+
110
  frame.on('select', function () {
111
  var attachment = frame.state().get('selection').first().toJSON();
112
+ var thumb = $('#wapt-thumb-preview-input').next();
113
+
114
+ $(inputImg).val(attachment.id);
115
  thumb.attr('src', attachment.sizes.thumbnail.url);
116
  thumb.removeClass('wapt-bg-image-invisible').addClass('wapt-visible');
117
 
118
+ frame.close();
119
  });
120
+
121
  frame.open();
122
  });
123
  });
127
  class="wapt-bg-image-thumb <?php echo esc_attr( $image_class ); ?>"
128
  id="wapt-bg-image-thumb">
129
  <button class="button button-primary button-large <?php echo esc_attr( $name ); ?>"
130
+ id="wapt-select-image-<?php echo esc_attr( $name ); ?>"><?php echo esc_html( $button_text ); ?></button>
131
  <input type="hidden" id="<?php echo esc_attr( $name ); ?>" name="<?php echo esc_attr( $name ); ?>"
132
  class="factory-input-text"
133
  value="<?php echo esc_html( $value ); ?>">
includes/image-search/class-google-images.php CHANGED
@@ -36,20 +36,23 @@ class GoogleImages implements ImageSearch {
36
  * @throws Exception
37
  */
38
  public function search( $query, $page ) {
 
39
  if ( isset( $_POST['rights'] ) && (int) $_POST['rights'] ) {
40
  $rights = '&rights=(cc_publicdomain%7Ccc_attribute%7Ccc_sharealike).-(cc_noncommercial%7Ccc_nonderived)';
41
  } else {
42
  $rights = '';
43
  }
 
 
44
 
45
  $start = ( ( $page - 1 ) * 10 ) + 1;
46
  $url = sprintf( '%s?%s', self::URL, http_build_query( [
47
- 'searchType' => 'image',
48
- 'start' => $start . $rights,
49
- 'q' => $query,
50
- 'key' => $this->key,
51
- 'cx' => $this->cse,
52
- ] ) );
53
 
54
  /**
55
  * @var array|null $limit = [
@@ -58,9 +61,9 @@ class GoogleImages implements ImageSearch {
58
  * ]
59
  */
60
  $limit = WAPT_Plugin::app()->getPopulateOption( 'google_limit', [
61
- 'expires' => time(),
62
- 'count' => 10,
63
- ] );
64
  if ( time() - $limit['expires'] > 3600 ) {
65
  $limit['expires'] = time();
66
  $limit['count'] = 10;
36
  * @throws Exception
37
  */
38
  public function search( $query, $page ) {
39
+ /*
40
  if ( isset( $_POST['rights'] ) && (int) $_POST['rights'] ) {
41
  $rights = '&rights=(cc_publicdomain%7Ccc_attribute%7Ccc_sharealike).-(cc_noncommercial%7Ccc_nonderived)';
42
  } else {
43
  $rights = '';
44
  }
45
+ */
46
+ $rights = '&rights=(cc_publicdomain%7Ccc_attribute%7Ccc_sharealike).-(cc_noncommercial%7Ccc_nonderived)';
47
 
48
  $start = ( ( $page - 1 ) * 10 ) + 1;
49
  $url = sprintf( '%s?%s', self::URL, http_build_query( [
50
+ 'searchType' => 'image',
51
+ 'start' => $start . $rights,
52
+ 'q' => $query,
53
+ 'key' => $this->key,
54
+ 'cx' => $this->cse,
55
+ ] ) );
56
 
57
  /**
58
  * @var array|null $limit = [
61
  * ]
62
  */
63
  $limit = WAPT_Plugin::app()->getPopulateOption( 'google_limit', [
64
+ 'expires' => time(),
65
+ 'count' => 10,
66
+ ] );
67
  if ( time() - $limit['expires'] > 3600 ) {
68
  $limit['expires'] = time();
69
  $limit['count'] = 10;
libs/factory/adverts/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Adverts_130\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -20,31 +20,31 @@ if( !defined('ABSPATH') ) {
20
  exit;
21
  }
22
 
23
- if( defined('FACTORY_ADVERTS_130_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
- define('FACTORY_ADVERTS_130_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
- define('FACTORY_ADVERTS_130_VERSION', '1.3.0');
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
- load_plugin_textdomain('wbcr_factory_adverts_130', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
- define('FACTORY_ADVERTS_130_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
- define('FACTORY_ADVERTS_130_URL', plugins_url(null, __FILE__));
41
 
42
- require_once(FACTORY_ADVERTS_130_DIR . '/includes/class-rest-request.php');
43
- require_once(FACTORY_ADVERTS_130_DIR . '/includes/class-base.php');
44
 
45
  /**
46
- * @param Wbcr_Factory453_Plugin $plugin
47
  */
48
- add_action('wbcr_factory_adverts_130_plugin_created', function ($plugin) {
49
- $plugin->set_adverts_manager("WBCR\Factory_Adverts_130\Base");
50
  });
1
  <?php
2
 
3
+ use WBCR\Factory_Adverts_135\Base;
4
 
5
  /**
6
  * Factory Adverts
20
  exit;
21
  }
22
 
23
+ if( defined('FACTORY_ADVERTS_135_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
+ define('FACTORY_ADVERTS_135_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
+ define('FACTORY_ADVERTS_135_VERSION', '1.3.5');
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
+ load_plugin_textdomain('wbcr_factory_adverts_135', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
+ define('FACTORY_ADVERTS_135_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
+ define('FACTORY_ADVERTS_135_URL', plugins_url(null, __FILE__));
41
 
42
+ require_once(FACTORY_ADVERTS_135_DIR . '/includes/class-rest-request.php');
43
+ require_once(FACTORY_ADVERTS_135_DIR . '/includes/class-base.php');
44
 
45
  /**
46
+ * @param Wbcr_Factory458_Plugin $plugin
47
  */
48
+ add_action('wbcr_factory_adverts_135_plugin_created', function ($plugin) {
49
+ $plugin->set_adverts_manager("WBCR\Factory_Adverts_135\Base");
50
  });
libs/factory/adverts/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_130;
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_Factory453_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_130\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_Factory453_Plugin $plugin
86
  */
87
- public function __construct( \Wbcr_Factory453_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_130_DIR . '/includes/class-dashboard-widget.php';
261
  new Dashboard_Widget( $this->plugin, $content );
262
  }
263
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_135;
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_Factory458_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_135\Creative_Motion_API
57
  */
58
  private $api;
59
 
82
  *
83
  * @since 1.0.0 Added
84
  *
85
+ * @param \Wbcr_Factory458_Plugin $plugin
86
  */
87
+ public function __construct( \Wbcr_Factory458_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_135_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_130;
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_Factory453_Plugin
39
  */
40
  private $plugin;
41
 
@@ -46,10 +46,10 @@ class Dashboard_Widget {
46
  *
47
  * @since 1.0.0 Added
48
  *
49
- * @param \Wbcr_Factory453_Plugin $plugin
50
  * @param string $content
51
  */
52
- public function __construct( \Wbcr_Factory453_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_135;
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_Factory458_Plugin
39
  */
40
  private $plugin;
41
 
46
  *
47
  * @since 1.0.0 Added
48
  *
49
+ * @param \Wbcr_Factory458_Plugin $plugin
50
  * @param string $content
51
  */
52
+ public function __construct( \Wbcr_Factory458_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_130;
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_Factory453_Plugin
69
  */
70
  private $plugin;
71
 
@@ -75,11 +75,11 @@ class Creative_Motion_API {
75
  *
76
  * Variable initialization.
77
  *
78
- * @param \Wbcr_Factory453_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
81
  */
82
- public function __construct(\Wbcr_Factory453_Plugin $plugin)
83
  {
84
  $this->plugin = $plugin;
85
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_135;
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_Factory458_Plugin
69
  */
70
  private $plugin;
71
 
75
  *
76
  * Variable initialization.
77
  *
78
+ * @param \Wbcr_Factory458_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
81
  */
82
+ public function __construct(\Wbcr_Factory458_Plugin $plugin)
83
  {
84
  $this->plugin = $plugin;
85
  }
libs/factory/adverts/langs/{wbcr_factory_adverts_130-ru_RU.mo → wbcr_factory_adverts_135-ru_RU.mo} RENAMED
File without changes
libs/factory/adverts/langs/{wbcr_factory_adverts_130-ru_RU.po → wbcr_factory_adverts_135-ru_RU.po} RENAMED
File without changes
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-454 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-454 .factory-accordion-item{display:none}.factory-bootstrap-454 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-454 .factory-accordion>h3.active:hover{cursor:default}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-459 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-459 .factory-accordion-item{display:none}.factory-bootstrap-459 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-459 .factory-accordion>h3.active:hover{cursor:default}
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .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-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-454 .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-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .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-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-454 .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-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 article,.factory-bootstrap-454 aside,.factory-bootstrap-454 details,.factory-bootstrap-454 figcaption,.factory-bootstrap-454 figure,.factory-bootstrap-454 footer,.factory-bootstrap-454 header,.factory-bootstrap-454 hgroup,.factory-bootstrap-454 main,.factory-bootstrap-454 nav,.factory-bootstrap-454 section,.factory-bootstrap-454 summary{display:block}.factory-bootstrap-454 audio,.factory-bootstrap-454 canvas,.factory-bootstrap-454 video{display:inline-block}.factory-bootstrap-454 audio:not([controls]){display:none;height:0}.factory-bootstrap-454 [hidden],.factory-bootstrap-454 template{display:none}.factory-bootstrap-454 body{margin:0}.factory-bootstrap-454 a{background:0 0}.factory-bootstrap-454 a:focus{outline:thin dotted}.factory-bootstrap-454 a:active,.factory-bootstrap-454 a:hover{outline:0}.factory-bootstrap-454 h1{margin:.67em 0}.factory-bootstrap-454 b,.factory-bootstrap-454 strong{font-weight:700}.factory-bootstrap-454 dfn{font-style:italic}.factory-bootstrap-454 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 mark{color:#000;background:#ff0}.factory-bootstrap-454 code,.factory-bootstrap-454 kbd,.factory-bootstrap-454 pre,.factory-bootstrap-454 samp{font-size:1em}.factory-bootstrap-454 pre{white-space:pre-wrap}.factory-bootstrap-454 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-454 sub,.factory-bootstrap-454 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-454 sup{top:-.5em}.factory-bootstrap-454 sub{bottom:-.25em}.factory-bootstrap-454 img{border:0}.factory-bootstrap-454 svg:not(:root){overflow:hidden}.factory-bootstrap-454 figure{margin:0}.factory-bootstrap-454 button,.factory-bootstrap-454 input,.factory-bootstrap-454 select,.factory-bootstrap-454 textarea{margin:0}.factory-bootstrap-454 button,.factory-bootstrap-454 select{text-transform:none}.factory-bootstrap-454 select{padding-right:4px!important}.factory-bootstrap-454 button,.factory-bootstrap-454 input[type=reset],.factory-bootstrap-454 input[type=submit],html .factory-bootstrap-454 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-454 button[disabled],html .factory-bootstrap-454 input[disabled]{cursor:default}.factory-bootstrap-454 input[type=checkbox],.factory-bootstrap-454 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-454 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-454 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-454 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-454 button::-moz-focus-inner,.factory-bootstrap-454 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-454 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-454 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-454 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-454 a,.factory-bootstrap-454 a:visited{text-decoration:underline}.factory-bootstrap-454 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-454 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-454 a[href^="javascript:"]:after,.factory-bootstrap-454 a[href^="#"]:after{content:""}.factory-bootstrap-454 blockquote,.factory-bootstrap-454 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-454 thead{display:table-header-group}.factory-bootstrap-454 img,.factory-bootstrap-454 tr{page-break-inside:avoid}.factory-bootstrap-454 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-454 h2,.factory-bootstrap-454 h3,.factory-bootstrap-454 p{orphans:3;widows:3}.factory-bootstrap-454 h2,.factory-bootstrap-454 h3{page-break-after:avoid}.factory-bootstrap-454 select{background:#fff!important}.factory-bootstrap-454 .navbar{display:none}.factory-bootstrap-454 .table td,.factory-bootstrap-454 .table th{background-color:#fff!important}.factory-bootstrap-454 .btn>.caret,.factory-bootstrap-454 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-454 .label{border:1px solid #000}.factory-bootstrap-454 .table{border-collapse:collapse!important}.factory-bootstrap-454 .table-bordered td,.factory-bootstrap-454 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-454 *,.factory-bootstrap-454 :after,.factory-bootstrap-454 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-454{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-454 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-454 button,.factory-bootstrap-454 input,.factory-bootstrap-454 select,.factory-bootstrap-454 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-454 img{vertical-align:middle}.factory-bootstrap-454 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-454 .img-rounded{border-radius:6px}.factory-bootstrap-454 .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-454 .img-circle{border-radius:50%}.factory-bootstrap-454 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-454 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-454 .h1,.factory-bootstrap-454 .h2,.factory-bootstrap-454 .h3,.factory-bootstrap-454 .h4,.factory-bootstrap-454 .h5,.factory-bootstrap-454 .h6,.factory-bootstrap-454 h1,.factory-bootstrap-454 h2,.factory-bootstrap-454 h3,.factory-bootstrap-454 h4,.factory-bootstrap-454 h5,.factory-bootstrap-454 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-454 .h1 .small,.factory-bootstrap-454 .h1 small,.factory-bootstrap-454 .h2 .small,.factory-bootstrap-454 .h2 small,.factory-bootstrap-454 .h3 .small,.factory-bootstrap-454 .h3 small,.factory-bootstrap-454 .h4 .small,.factory-bootstrap-454 .h4 small,.factory-bootstrap-454 .h5 .small,.factory-bootstrap-454 .h5 small,.factory-bootstrap-454 .h6 .small,.factory-bootstrap-454 .h6 small,.factory-bootstrap-454 h1 .small,.factory-bootstrap-454 h1 small,.factory-bootstrap-454 h2 .small,.factory-bootstrap-454 h2 small,.factory-bootstrap-454 h3 .small,.factory-bootstrap-454 h3 small,.factory-bootstrap-454 h4 .small,.factory-bootstrap-454 h4 small,.factory-bootstrap-454 h5 .small,.factory-bootstrap-454 h5 small,.factory-bootstrap-454 h6 .small,.factory-bootstrap-454 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-454 h1,.factory-bootstrap-454 h2,.factory-bootstrap-454 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-454 h1 .small,.factory-bootstrap-454 h1 small,.factory-bootstrap-454 h2 .small,.factory-bootstrap-454 h2 small,.factory-bootstrap-454 h3 .small,.factory-bootstrap-454 h3 small{font-size:65%}.factory-bootstrap-454 h4,.factory-bootstrap-454 h5,.factory-bootstrap-454 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-454 h4 .small,.factory-bootstrap-454 h4 small,.factory-bootstrap-454 h5 .small,.factory-bootstrap-454 h5 small,.factory-bootstrap-454 h6 .small,.factory-bootstrap-454 h6 small{font-size:75%}.factory-bootstrap-454 .h1,.factory-bootstrap-454 h1{font-size:36px}.factory-bootstrap-454 .h2,.factory-bootstrap-454 h2{font-size:30px}.factory-bootstrap-454 .h3,.factory-bootstrap-454 h3{font-size:24px}.factory-bootstrap-454 .h4,.factory-bootstrap-454 h4{font-size:18px}.factory-bootstrap-454 .h5,.factory-bootstrap-454 h5{font-size:14px}.factory-bootstrap-454 .h6,.factory-bootstrap-454 h6{font-size:12px}.factory-bootstrap-454 p{margin:0 0 10px}.factory-bootstrap-454 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-454 .small,.factory-bootstrap-454 small{font-size:85%}.factory-bootstrap-454 cite{font-style:normal}.factory-bootstrap-454 .text-muted{color:#999}.factory-bootstrap-454 .text-primary{color:#428bca}.factory-bootstrap-454 .text-primary:hover{color:#3071a9}.factory-bootstrap-454 .text-warning{color:#8a6d3b}.factory-bootstrap-454 .text-warning:hover{color:#66512c}.factory-bootstrap-454 .text-danger{color:#a94442}.factory-bootstrap-454 .text-danger:hover{color:#843534}.factory-bootstrap-454 .text-success{color:#3c763d}.factory-bootstrap-454 .text-success:hover{color:#2b542c}.factory-bootstrap-454 .text-info{color:#31708f}.factory-bootstrap-454 .text-info:hover{color:#245269}.factory-bootstrap-454 .text-left{text-align:left}.factory-bootstrap-454 .text-right{text-align:right}.factory-bootstrap-454 .text-center{text-align:center}.factory-bootstrap-454 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-454 ol,.factory-bootstrap-454 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-454 ol ol,.factory-bootstrap-454 ol ul,.factory-bootstrap-454 ul ol,.factory-bootstrap-454 ul ul{margin-bottom:0}.factory-bootstrap-454 .list-inline,.factory-bootstrap-454 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-454 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-454 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-454 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-454 dd,.factory-bootstrap-454 dt{line-height:1.428571429}.factory-bootstrap-454 dt{font-weight:700}.factory-bootstrap-454 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-454 abbr[data-original-title],.factory-bootstrap-454 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-454 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-454 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-454 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-454 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-454 blockquote .small,.factory-bootstrap-454 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-454 blockquote .small:before,.factory-bootstrap-454 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-454 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-454 blockquote.pull-right .small,.factory-bootstrap-454 blockquote.pull-right p,.factory-bootstrap-454 blockquote.pull-right small{text-align:right}.factory-bootstrap-454 blockquote.pull-right .small:before,.factory-bootstrap-454 blockquote.pull-right small:before{content:''}.factory-bootstrap-454 blockquote.pull-right .small:after,.factory-bootstrap-454 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-454 blockquote:after,.factory-bootstrap-454 blockquote:before{content:""}.factory-bootstrap-454 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-454 code,.factory-bootstrap-454 kbd,.factory-bootstrap-454 pre,.factory-bootstrap-454 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-454 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-454 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-454 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-454 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-454 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-454 .container:after,.factory-bootstrap-454 .container:before{display:table;content:" "}.factory-bootstrap-454 .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-454 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-454 .row:after,.factory-bootstrap-454 .row:before{display:table;content:" "}.factory-bootstrap-454 .row:after{clear:both}.factory-bootstrap-454 .col-lg-1,.factory-bootstrap-454 .col-lg-10,.factory-bootstrap-454 .col-lg-11,.factory-bootstrap-454 .col-lg-12,.factory-bootstrap-454 .col-lg-2,.factory-bootstrap-454 .col-lg-3,.factory-bootstrap-454 .col-lg-4,.factory-bootstrap-454 .col-lg-5,.factory-bootstrap-454 .col-lg-6,.factory-bootstrap-454 .col-lg-7,.factory-bootstrap-454 .col-lg-8,.factory-bootstrap-454 .col-lg-9,.factory-bootstrap-454 .col-md-1,.factory-bootstrap-454 .col-md-10,.factory-bootstrap-454 .col-md-11,.factory-bootstrap-454 .col-md-12,.factory-bootstrap-454 .col-md-2,.factory-bootstrap-454 .col-md-3,.factory-bootstrap-454 .col-md-4,.factory-bootstrap-454 .col-md-5,.factory-bootstrap-454 .col-md-6,.factory-bootstrap-454 .col-md-7,.factory-bootstrap-454 .col-md-8,.factory-bootstrap-454 .col-md-9,.factory-bootstrap-454 .col-sm-1,.factory-bootstrap-454 .col-sm-10,.factory-bootstrap-454 .col-sm-11,.factory-bootstrap-454 .col-sm-12,.factory-bootstrap-454 .col-sm-2,.factory-bootstrap-454 .col-sm-3,.factory-bootstrap-454 .col-sm-4,.factory-bootstrap-454 .col-sm-5,.factory-bootstrap-454 .col-sm-6,.factory-bootstrap-454 .col-sm-7,.factory-bootstrap-454 .col-sm-8,.factory-bootstrap-454 .col-sm-9,.factory-bootstrap-454 .col-xs-1,.factory-bootstrap-454 .col-xs-10,.factory-bootstrap-454 .col-xs-11,.factory-bootstrap-454 .col-xs-12,.factory-bootstrap-454 .col-xs-2,.factory-bootstrap-454 .col-xs-3,.factory-bootstrap-454 .col-xs-4,.factory-bootstrap-454 .col-xs-5,.factory-bootstrap-454 .col-xs-6,.factory-bootstrap-454 .col-xs-7,.factory-bootstrap-454 .col-xs-8,.factory-bootstrap-454 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-454 .col-xs-1,.factory-bootstrap-454 .col-xs-10,.factory-bootstrap-454 .col-xs-11,.factory-bootstrap-454 .col-xs-12,.factory-bootstrap-454 .col-xs-2,.factory-bootstrap-454 .col-xs-3,.factory-bootstrap-454 .col-xs-4,.factory-bootstrap-454 .col-xs-5,.factory-bootstrap-454 .col-xs-6,.factory-bootstrap-454 .col-xs-7,.factory-bootstrap-454 .col-xs-8,.factory-bootstrap-454 .col-xs-9{float:left}.factory-bootstrap-454 .col-xs-12{width:100%}.factory-bootstrap-454 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-454 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-454 .col-xs-9{width:75%}.factory-bootstrap-454 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-454 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-454 .col-xs-6{width:50%}.factory-bootstrap-454 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-454 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-454 .col-xs-3{width:25%}.factory-bootstrap-454 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-454 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-454 .col-xs-pull-12{right:100%}.factory-bootstrap-454 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-454 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-454 .col-xs-pull-9{right:75%}.factory-bootstrap-454 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-454 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-454 .col-xs-pull-6{right:50%}.factory-bootstrap-454 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-454 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-454 .col-xs-pull-3{right:25%}.factory-bootstrap-454 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-454 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-454 .col-xs-pull-0{right:0}.factory-bootstrap-454 .col-xs-push-12{left:100%}.factory-bootstrap-454 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-454 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-454 .col-xs-push-9{left:75%}.factory-bootstrap-454 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-454 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-454 .col-xs-push-6{left:50%}.factory-bootstrap-454 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-454 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-454 .col-xs-push-3{left:25%}.factory-bootstrap-454 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-454 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-454 .col-xs-push-0{left:0}.factory-bootstrap-454 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-454 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-454 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-454 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-454 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-454 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-454 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-454 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-454 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-454 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-454 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-454 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-454 .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-454 table{max-width:100%;background-color:transparent}.factory-bootstrap-454 th{text-align:left}.factory-bootstrap-454 .table{width:100%;margin-bottom:20px}.factory-bootstrap-454 .table>tbody>tr>td,.factory-bootstrap-454 .table>tbody>tr>th,.factory-bootstrap-454 .table>tfoot>tr>td,.factory-bootstrap-454 .table>tfoot>tr>th,.factory-bootstrap-454 .table>thead>tr>td,.factory-bootstrap-454 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-454 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-454 .table>caption+thead>tr:first-child>td,.factory-bootstrap-454 .table>caption+thead>tr:first-child>th,.factory-bootstrap-454 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-454 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-454 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-454 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-454 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-454 .table .table{background-color:#fff}.factory-bootstrap-454 .table-condensed>tbody>tr>td,.factory-bootstrap-454 .table-condensed>tbody>tr>th,.factory-bootstrap-454 .table-condensed>tfoot>tr>td,.factory-bootstrap-454 .table-condensed>tfoot>tr>th,.factory-bootstrap-454 .table-condensed>thead>tr>td,.factory-bootstrap-454 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-454 .table-bordered,.factory-bootstrap-454 .table-bordered>tbody>tr>td,.factory-bootstrap-454 .table-bordered>tbody>tr>th,.factory-bootstrap-454 .table-bordered>tfoot>tr>td,.factory-bootstrap-454 .table-bordered>tfoot>tr>th,.factory-bootstrap-454 .table-bordered>thead>tr>td,.factory-bootstrap-454 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-454 .table-bordered>thead>tr>td,.factory-bootstrap-454 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-454 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-454 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-454 .table-hover>tbody>tr:hover>td,.factory-bootstrap-454 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-454 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-454 table td[class*=col-],.factory-bootstrap-454 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-454 .table>tbody>.active>td,.factory-bootstrap-454 .table>tbody>.active>th,.factory-bootstrap-454 .table>tbody>tr>.active,.factory-bootstrap-454 .table>tfoot>.active>td,.factory-bootstrap-454 .table>tfoot>.active>th,.factory-bootstrap-454 .table>tfoot>tr>.active,.factory-bootstrap-454 .table>thead>.active>td,.factory-bootstrap-454 .table>thead>.active>th,.factory-bootstrap-454 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-454 .table-hover>tbody>.active:hover>td,.factory-bootstrap-454 .table-hover>tbody>.active:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-454 .table>tbody>.success>td,.factory-bootstrap-454 .table>tbody>.success>th,.factory-bootstrap-454 .table>tbody>tr>.success,.factory-bootstrap-454 .table>tfoot>.success>td,.factory-bootstrap-454 .table>tfoot>.success>th,.factory-bootstrap-454 .table>tfoot>tr>.success,.factory-bootstrap-454 .table>thead>.success>td,.factory-bootstrap-454 .table>thead>.success>th,.factory-bootstrap-454 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-454 .table-hover>tbody>.success:hover>td,.factory-bootstrap-454 .table-hover>tbody>.success:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-454 .table>tbody>.danger>td,.factory-bootstrap-454 .table>tbody>.danger>th,.factory-bootstrap-454 .table>tbody>tr>.danger,.factory-bootstrap-454 .table>tfoot>.danger>td,.factory-bootstrap-454 .table>tfoot>.danger>th,.factory-bootstrap-454 .table>tfoot>tr>.danger,.factory-bootstrap-454 .table>thead>.danger>td,.factory-bootstrap-454 .table>thead>.danger>th,.factory-bootstrap-454 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-454 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-454 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-454 .table>tbody>.warning>td,.factory-bootstrap-454 .table>tbody>.warning>th,.factory-bootstrap-454 .table>tbody>tr>.warning,.factory-bootstrap-454 .table>tfoot>.warning>td,.factory-bootstrap-454 .table>tfoot>.warning>th,.factory-bootstrap-454 .table>tfoot>tr>.warning,.factory-bootstrap-454 .table>thead>.warning>td,.factory-bootstrap-454 .table>thead>.warning>th,.factory-bootstrap-454 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-454 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-454 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-454 .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-454 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-454 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-454 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-454 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-454 input[type=checkbox],.factory-bootstrap-454 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-454 input[type=file]{display:block}.factory-bootstrap-454 select[multiple],.factory-bootstrap-454 select[size]{height:auto}.factory-bootstrap-454 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-454 input[type=checkbox]:focus,.factory-bootstrap-454 input[type=file]:focus,.factory-bootstrap-454 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-454 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-454 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-454 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-454 .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-454 .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-454 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-454 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-454 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-454 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-454 .form-control[disabled],.factory-bootstrap-454 .form-control[readonly],.factory-bootstrap-454 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-454 textarea.form-control{height:auto}.factory-bootstrap-454 .form-group{margin-bottom:15px}.factory-bootstrap-454 .checkbox,.factory-bootstrap-454 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-454 .checkbox label,.factory-bootstrap-454 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-454 .checkbox input[type=checkbox],.factory-bootstrap-454 .checkbox-inline input[type=checkbox],.factory-bootstrap-454 .radio input[type=radio],.factory-bootstrap-454 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-454 .checkbox+.checkbox,.factory-bootstrap-454 .radio+.radio{margin-top:-5px}.factory-bootstrap-454 .checkbox-inline,.factory-bootstrap-454 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-454 .checkbox-inline+.checkbox-inline,.factory-bootstrap-454 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-454 .checkbox-inline[disabled],.factory-bootstrap-454 .checkbox[disabled],.factory-bootstrap-454 .radio-inline[disabled],.factory-bootstrap-454 .radio[disabled],.factory-bootstrap-454 fieldset[disabled] .checkbox,.factory-bootstrap-454 fieldset[disabled] .checkbox-inline,.factory-bootstrap-454 fieldset[disabled] .radio,.factory-bootstrap-454 fieldset[disabled] .radio-inline,.factory-bootstrap-454 fieldset[disabled] input[type=checkbox],.factory-bootstrap-454 fieldset[disabled] input[type=radio],.factory-bootstrap-454 input[type=checkbox][disabled],.factory-bootstrap-454 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-454 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-454 textarea.input-sm{height:auto}.factory-bootstrap-454 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-454 textarea.input-lg{height:auto}.factory-bootstrap-454 .has-warning .checkbox,.factory-bootstrap-454 .has-warning .checkbox-inline,.factory-bootstrap-454 .has-warning .control-label,.factory-bootstrap-454 .has-warning .help-block,.factory-bootstrap-454 .has-warning .radio,.factory-bootstrap-454 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-454 .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-454 .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-454 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-454 .has-error .checkbox,.factory-bootstrap-454 .has-error .checkbox-inline,.factory-bootstrap-454 .has-error .control-label,.factory-bootstrap-454 .has-error .help-block,.factory-bootstrap-454 .has-error .radio,.factory-bootstrap-454 .has-error .radio-inline{color:#a94442}.factory-bootstrap-454 .controls{display:block}.factory-bootstrap-454 .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-454 .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-454 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-454 .has-success .checkbox,.factory-bootstrap-454 .has-success .checkbox-inline,.factory-bootstrap-454 .has-success .control-label,.factory-bootstrap-454 .has-success .help-block,.factory-bootstrap-454 .has-success .radio,.factory-bootstrap-454 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-454 .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-454 .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-454 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-454 .form-control-static{margin-bottom:0}.factory-bootstrap-454 .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-454 .form-horizontal .checkbox,.factory-bootstrap-454 .form-horizontal .checkbox-inline,.factory-bootstrap-454 .form-horizontal .control-label,.factory-bootstrap-454 .form-horizontal .radio,.factory-bootstrap-454 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-454 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-454 .form-horizontal .checkbox,.factory-bootstrap-454 .form-horizontal .radio{min-height:27px}.factory-bootstrap-454 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-454 .form-horizontal .form-group:after,.factory-bootstrap-454 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-454 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-454 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-454 .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-454 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-454 .btn{text-decoration:none}.factory-bootstrap-454 .btn:focus,.factory-bootstrap-454 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-454 .btn.disabled,.factory-bootstrap-454 .btn[disabled],.factory-bootstrap-454 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .btn-default:focus,.factory-bootstrap-454 .btn-default:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-454 .btn-default.disabled,.factory-bootstrap-454 .btn-default.disabled.active,.factory-bootstrap-454 .btn-default.disabled:active,.factory-bootstrap-454 .btn-default.disabled:focus,.factory-bootstrap-454 .btn-default.disabled:hover,.factory-bootstrap-454 .btn-default[disabled],.factory-bootstrap-454 .btn-default[disabled].active,.factory-bootstrap-454 .btn-default[disabled]:active,.factory-bootstrap-454 .btn-default[disabled]:focus,.factory-bootstrap-454 .btn-default[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-default,.factory-bootstrap-454 fieldset[disabled] .btn-default.active,.factory-bootstrap-454 fieldset[disabled] .btn-default:active,.factory-bootstrap-454 fieldset[disabled] .btn-default:focus,.factory-bootstrap-454 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-454 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-454 .btn-primary.disabled,.factory-bootstrap-454 .btn-primary.disabled.active,.factory-bootstrap-454 .btn-primary.disabled:active,.factory-bootstrap-454 .btn-primary.disabled:focus,.factory-bootstrap-454 .btn-primary.disabled:hover,.factory-bootstrap-454 .btn-primary[disabled],.factory-bootstrap-454 .btn-primary[disabled].active,.factory-bootstrap-454 .btn-primary[disabled]:active,.factory-bootstrap-454 .btn-primary[disabled]:focus,.factory-bootstrap-454 .btn-primary[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-primary,.factory-bootstrap-454 fieldset[disabled] .btn-primary.active,.factory-bootstrap-454 fieldset[disabled] .btn-primary:active,.factory-bootstrap-454 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-454 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-454 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-454 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active,.factory-bootstrap-454 .btn-warning:focus,.factory-bootstrap-454 .btn-warning:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-454 .btn-warning.disabled,.factory-bootstrap-454 .btn-warning.disabled.active,.factory-bootstrap-454 .btn-warning.disabled:active,.factory-bootstrap-454 .btn-warning.disabled:focus,.factory-bootstrap-454 .btn-warning.disabled:hover,.factory-bootstrap-454 .btn-warning[disabled],.factory-bootstrap-454 .btn-warning[disabled].active,.factory-bootstrap-454 .btn-warning[disabled]:active,.factory-bootstrap-454 .btn-warning[disabled]:focus,.factory-bootstrap-454 .btn-warning[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-warning,.factory-bootstrap-454 fieldset[disabled] .btn-warning.active,.factory-bootstrap-454 fieldset[disabled] .btn-warning:active,.factory-bootstrap-454 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-454 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-454 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-454 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .btn-success:focus,.factory-bootstrap-454 .btn-success:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-454 .btn-success.disabled,.factory-bootstrap-454 .btn-success.disabled.active,.factory-bootstrap-454 .btn-success.disabled:active,.factory-bootstrap-454 .btn-success.disabled:focus,.factory-bootstrap-454 .btn-success.disabled:hover,.factory-bootstrap-454 .btn-success[disabled],.factory-bootstrap-454 .btn-success[disabled].active,.factory-bootstrap-454 .btn-success[disabled]:active,.factory-bootstrap-454 .btn-success[disabled]:focus,.factory-bootstrap-454 .btn-success[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-success,.factory-bootstrap-454 fieldset[disabled] .btn-success.active,.factory-bootstrap-454 fieldset[disabled] .btn-success:active,.factory-bootstrap-454 fieldset[disabled] .btn-success:focus,.factory-bootstrap-454 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-454 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-454 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .btn-info:focus,.factory-bootstrap-454 .btn-info:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-454 .btn-info.disabled,.factory-bootstrap-454 .btn-info.disabled.active,.factory-bootstrap-454 .btn-info.disabled:active,.factory-bootstrap-454 .btn-info.disabled:focus,.factory-bootstrap-454 .btn-info.disabled:hover,.factory-bootstrap-454 .btn-info[disabled],.factory-bootstrap-454 .btn-info[disabled].active,.factory-bootstrap-454 .btn-info[disabled]:active,.factory-bootstrap-454 .btn-info[disabled]:focus,.factory-bootstrap-454 .btn-info[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-info,.factory-bootstrap-454 fieldset[disabled] .btn-info.active,.factory-bootstrap-454 fieldset[disabled] .btn-info:active,.factory-bootstrap-454 fieldset[disabled] .btn-info:focus,.factory-bootstrap-454 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-454 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-454 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-454 .btn-link,.factory-bootstrap-454 .btn-link:active,.factory-bootstrap-454 .btn-link[disabled],.factory-bootstrap-454 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-link,.factory-bootstrap-454 .btn-link:active,.factory-bootstrap-454 .btn-link:focus,.factory-bootstrap-454 .btn-link:hover{border-color:transparent}.factory-bootstrap-454 .btn-link:focus,.factory-bootstrap-454 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-454 .btn-link[disabled]:focus,.factory-bootstrap-454 .btn-link[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-link:focus,.factory-bootstrap-454 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-454 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-454 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-454 input[type=button].btn-block,.factory-bootstrap-454 input[type=reset].btn-block,.factory-bootstrap-454 input[type=submit].btn-block{width:100%}.factory-bootstrap-454 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-454 .fade.in{opacity:1}.factory-bootstrap-454 .collapse{display:none}.factory-bootstrap-454 .collapse.in{display:block}.factory-bootstrap-454 .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-454 .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-454 .glyphicon:empty{width:1em}.factory-bootstrap-454 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-454 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-454 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-454 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-454 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-454 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-454 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-454 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-454 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-454 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-454 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-454 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-454 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-454 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-454 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-454 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-454 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-454 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-454 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-454 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-454 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-454 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-454 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-454 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-454 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-454 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-454 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-454 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-454 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-454 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-454 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-454 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-454 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-454 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-454 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-454 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-454 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-454 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-454 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-454 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-454 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-454 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-454 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-454 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-454 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-454 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-454 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-454 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-454 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-454 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-454 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-454 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-454 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-454 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-454 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-454 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-454 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-454 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-454 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-454 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-454 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-454 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-454 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-454 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-454 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-454 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-454 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-454 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-454 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-454 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-454 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-454 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-454 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-454 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-454 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-454 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-454 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-454 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-454 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-454 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-454 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-454 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-454 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-454 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-454 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-454 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-454 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-454 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-454 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-454 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-454 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-454 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-454 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-454 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-454 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-454 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-454 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-454 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-454 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-454 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-454 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-454 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-454 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-454 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-454 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-454 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-454 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-454 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-454 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-454 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-454 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-454 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-454 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-454 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-454 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-454 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-454 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-454 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-454 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-454 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-454 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-454 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-454 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-454 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-454 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-454 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-454 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-454 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-454 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-454 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-454 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-454 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-454 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-454 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-454 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-454 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-454 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-454 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-454 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-454 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-454 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-454 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-454 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-454 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-454 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-454 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-454 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-454 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-454 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-454 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-454 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-454 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-454 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-454 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-454 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-454 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-454 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-454 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-454 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-454 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-454 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-454 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-454 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-454 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-454 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-454 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-454 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-454 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-454 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-454 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-454 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-454 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-454 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-454 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-454 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-454 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-454 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-454 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-454 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-454 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-454 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-454 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-454 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-454 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-454 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-454 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-454 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-454 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-454 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-454 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-454 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-454 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-454 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-454 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-454 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-454 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-454 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-454 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-454 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-454 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-454 .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-454 .dropdown{position:relative}.factory-bootstrap-454 .dropdown-toggle:focus{outline:0}.factory-bootstrap-454 .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-454 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-454 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-454 .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-454 .dropdown-menu>li>a:focus,.factory-bootstrap-454 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-454 .dropdown-menu>.active>a,.factory-bootstrap-454 .dropdown-menu>.active>a:focus,.factory-bootstrap-454 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-454 .dropdown-menu>.disabled>a,.factory-bootstrap-454 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-454 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-454 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-454 .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-454 .open>.dropdown-menu{display:block}.factory-bootstrap-454 .open>a{outline:0}.factory-bootstrap-454 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-454 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-454 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-454 .dropup .caret,.factory-bootstrap-454 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-454 .dropup .dropdown-menu,.factory-bootstrap-454 .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-454 .btn-group,.factory-bootstrap-454 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-454 .btn-group-vertical>.btn,.factory-bootstrap-454 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-454 .btn-group-vertical>.btn.active,.factory-bootstrap-454 .btn-group-vertical>.btn:active,.factory-bootstrap-454 .btn-group-vertical>.btn:focus,.factory-bootstrap-454 .btn-group-vertical>.btn:hover,.factory-bootstrap-454 .btn-group>.btn.active,.factory-bootstrap-454 .btn-group>.btn:active,.factory-bootstrap-454 .btn-group>.btn:focus,.factory-bootstrap-454 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-454 .btn-group-vertical>.btn:focus,.factory-bootstrap-454 .btn-group>.btn:focus{outline:0}.factory-bootstrap-454 .btn-group .btn+.btn,.factory-bootstrap-454 .btn-group .btn+.btn-group,.factory-bootstrap-454 .btn-group .btn-group+.btn,.factory-bootstrap-454 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-454 .btn-toolbar:after,.factory-bootstrap-454 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-454 .btn-toolbar:after{clear:both}.factory-bootstrap-454 .btn-toolbar .btn-group{float:left}.factory-bootstrap-454 .btn-toolbar>.btn+.btn,.factory-bootstrap-454 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-454 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-454 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-454 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-454 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-454 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-454 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group>.btn-group{float:left}.factory-bootstrap-454 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-454 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-454 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group .dropdown-toggle:active,.factory-bootstrap-454 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-454 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-454 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-454 .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-454 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-454 .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-454 .btn .caret{margin-left:0}.factory-bootstrap-454 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-454 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-454 .btn-group-vertical>.btn,.factory-bootstrap-454 .btn-group-vertical>.btn-group,.factory-bootstrap-454 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-454 .btn-group-vertical>.btn-group:after,.factory-bootstrap-454 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-454 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-454 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-454 .btn-group-vertical>.btn+.btn,.factory-bootstrap-454 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-454 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-454 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-454 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-454 .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-454 .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-454 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-454 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-454 .btn-group-justified>.btn,.factory-bootstrap-454 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-454 .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-454 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-454 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-454 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-454 .input-group-lg>.form-control,.factory-bootstrap-454 .input-group-lg>.input-group-addon,.factory-bootstrap-454 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 select.input-group-lg>.form-control,.factory-bootstrap-454 select.input-group-lg>.input-group-addon,.factory-bootstrap-454 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-454 textarea.input-group-lg>.form-control,.factory-bootstrap-454 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-454 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-454 .input-group-sm>.form-control,.factory-bootstrap-454 .input-group-sm>.input-group-addon,.factory-bootstrap-454 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 select.input-group-sm>.form-control,.factory-bootstrap-454 select.input-group-sm>.input-group-addon,.factory-bootstrap-454 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-454 textarea.input-group-sm>.form-control,.factory-bootstrap-454 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-454 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-454 .input-group .form-control,.factory-bootstrap-454 .input-group-addon,.factory-bootstrap-454 .input-group-btn{display:table-cell}.factory-bootstrap-454 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-454 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-454 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-454 .input-group-addon,.factory-bootstrap-454 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-454 .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-454 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-454 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-454 .input-group-addon input[type=checkbox],.factory-bootstrap-454 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-454 .input-group .form-control:first-child,.factory-bootstrap-454 .input-group-addon:first-child,.factory-bootstrap-454 .input-group-btn:first-child>.btn,.factory-bootstrap-454 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-454 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .input-group-addon:first-child{border-right:0}.factory-bootstrap-454 .input-group .form-control:last-child,.factory-bootstrap-454 .input-group-addon:last-child,.factory-bootstrap-454 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-454 .input-group-btn:last-child>.btn,.factory-bootstrap-454 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .input-group-addon:last-child{border-left:0}.factory-bootstrap-454 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-454 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-454 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-454 .input-group-btn>.btn{position:relative}.factory-bootstrap-454 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-454 .input-group-btn>.btn:active,.factory-bootstrap-454 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-454 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-454 .nav:after,.factory-bootstrap-454 .nav:before{display:table;content:" "}.factory-bootstrap-454 .nav:after{clear:both}.factory-bootstrap-454 .nav>li{position:relative;display:block}.factory-bootstrap-454 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-454 .nav>li>a:focus,.factory-bootstrap-454 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-454 .nav>li.disabled>a{color:#999}.factory-bootstrap-454 .nav>li.disabled>a:focus,.factory-bootstrap-454 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-454 .nav .open>a,.factory-bootstrap-454 .nav .open>a:focus,.factory-bootstrap-454 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-454 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-454 .nav>li>a>img{max-width:none}.factory-bootstrap-454 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-454 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-454 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-454 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-454 .nav-tabs>li.active>a,.factory-bootstrap-454 .nav-tabs>li.active>a:focus,.factory-bootstrap-454 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-454 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-454 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-454 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-454 .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-454 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-454 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-454 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-454 .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-454 .nav-pills>li{float:left}.factory-bootstrap-454 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-454 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-454 .nav-pills>li.active>a,.factory-bootstrap-454 .nav-pills>li.active>a:focus,.factory-bootstrap-454 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-454 .nav-stacked>li{float:none}.factory-bootstrap-454 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-454 .nav-justified{width:100%}.factory-bootstrap-454 .nav-justified>li{float:none}.factory-bootstrap-454 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-454 .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-454 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-454 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-454 .nav-tabs-justified>.active>a,.factory-bootstrap-454 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-454 .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-454 .tab-content>.tab-pane{display:none}.factory-bootstrap-454 .tab-content>.active{display:block}.factory-bootstrap-454 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-454 .navbar:after,.factory-bootstrap-454 .navbar:before{display:table;content:" "}.factory-bootstrap-454 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-454 .navbar-header:after,.factory-bootstrap-454 .navbar-header:before{display:table;content:" "}.factory-bootstrap-454 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-454 .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-454 .navbar-collapse:after,.factory-bootstrap-454 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-454 .navbar-collapse:after{clear:both}.factory-bootstrap-454 .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-454 .container>.navbar-collapse,.factory-bootstrap-454 .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-454 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-454 .navbar-fixed-bottom,.factory-bootstrap-454 .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-454 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-454 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-454 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-454 .navbar-brand:focus,.factory-bootstrap-454 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-454 .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-454 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-454 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-454 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-454 .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-454 .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-454 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-454 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-454 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-454 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-454 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-454 .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-454 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-454 .navbar-default .navbar-brand:focus,.factory-bootstrap-454 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-nav>li>a,.factory-bootstrap-454 .navbar-default .navbar-text{color:#777}.factory-bootstrap-454 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-454 .navbar-default .navbar-toggle:focus,.factory-bootstrap-454 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-454 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-454 .navbar-default .navbar-collapse,.factory-bootstrap-454 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-454 .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-454 .navbar-default .navbar-link{color:#777}.factory-bootstrap-454 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-454 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-454 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-454 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-454 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-454 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-454 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-454 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-454 .navbar-inverse .navbar-collapse,.factory-bootstrap-454 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-454 .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-454 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-454 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-454 .breadcrumb>li{display:inline-block}.factory-bootstrap-454 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-454 .breadcrumb>.active{color:#999}.factory-bootstrap-454 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-454 .pagination>li{display:inline}.factory-bootstrap-454 .pagination>li>a,.factory-bootstrap-454 .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-454 .pagination>li:first-child>a,.factory-bootstrap-454 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-454 .pagination>li:last-child>a,.factory-bootstrap-454 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-454 .pagination>li>a:focus,.factory-bootstrap-454 .pagination>li>a:hover,.factory-bootstrap-454 .pagination>li>span:focus,.factory-bootstrap-454 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-454 .pagination>.disabled>a,.factory-bootstrap-454 .pagination>.disabled>a:focus,.factory-bootstrap-454 .pagination>.disabled>a:hover,.factory-bootstrap-454 .pagination>.disabled>span,.factory-bootstrap-454 .pagination>.disabled>span:focus,.factory-bootstrap-454 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-454 .pagination-lg>li>a,.factory-bootstrap-454 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-454 .pagination-lg>li:first-child>a,.factory-bootstrap-454 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-454 .pagination-lg>li:last-child>a,.factory-bootstrap-454 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-454 .pagination-sm>li>a,.factory-bootstrap-454 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-454 .pagination-sm>li:first-child>a,.factory-bootstrap-454 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-454 .pagination-sm>li:last-child>a,.factory-bootstrap-454 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-454 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-454 .pager:after,.factory-bootstrap-454 .pager:before{display:table;content:" "}.factory-bootstrap-454 .pager:after{clear:both}.factory-bootstrap-454 .pager li{display:inline}.factory-bootstrap-454 .pager li>a,.factory-bootstrap-454 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-454 .pager li>a:focus,.factory-bootstrap-454 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-454 .pager .next>a,.factory-bootstrap-454 .pager .next>span{float:right}.factory-bootstrap-454 .pager .previous>a,.factory-bootstrap-454 .pager .previous>span{float:left}.factory-bootstrap-454 .pager .disabled>a,.factory-bootstrap-454 .pager .disabled>a:focus,.factory-bootstrap-454 .pager .disabled>a:hover,.factory-bootstrap-454 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-454 .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-454 .label[href]:focus,.factory-bootstrap-454 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-454 .label:empty{display:none}.factory-bootstrap-454 .btn .label{position:relative;top:-1px}.factory-bootstrap-454 .label-default{background-color:#999}.factory-bootstrap-454 .label-default[href]:focus,.factory-bootstrap-454 .label-default[href]:hover{background-color:gray}.factory-bootstrap-454 .label-primary{background-color:#428bca}.factory-bootstrap-454 .label-primary[href]:focus,.factory-bootstrap-454 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-454 .label-success{background-color:#5cb85c}.factory-bootstrap-454 .label-success[href]:focus,.factory-bootstrap-454 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-454 .label-info{background-color:#5bc0de}.factory-bootstrap-454 .label-info[href]:focus,.factory-bootstrap-454 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-454 .label-warning{background-color:#f0ad4e}.factory-bootstrap-454 .label-warning[href]:focus,.factory-bootstrap-454 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-454 .label-danger{background-color:#d9534f}.factory-bootstrap-454 .label-danger[href]:focus,.factory-bootstrap-454 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-454 .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-454 .badge:empty{display:none}.factory-bootstrap-454 .btn .badge{position:relative;top:-1px}.factory-bootstrap-454 a.badge:focus,.factory-bootstrap-454 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-454 .nav-pills>.active>a>.badge,.factory-bootstrap-454 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-454 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-454 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-454 .jumbotron .h1,.factory-bootstrap-454 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-454 .jumbotron p{line-height:1.4}.factory-bootstrap-454 .container .jumbotron{border-radius:6px}.factory-bootstrap-454 .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-454 .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-454 .thumbnail a>img,.factory-bootstrap-454 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-454 a.thumbnail.active,.factory-bootstrap-454 a.thumbnail:focus,.factory-bootstrap-454 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-454 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-454 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-454 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-454 .alert .alert-link{font-weight:700}.factory-bootstrap-454 .alert>p,.factory-bootstrap-454 .alert>ul{margin-bottom:0}.factory-bootstrap-454 .alert>p+p{margin-top:5px}.factory-bootstrap-454 .alert-dismissable{padding-right:35px}.factory-bootstrap-454 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-454 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-454 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-454 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-454 .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-454 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-454 .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-454 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-454 .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-454 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-454 .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-454 .media,.factory-bootstrap-454 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-454 .media,.factory-bootstrap-454 .media .media{margin-top:15px}.factory-bootstrap-454 .media:first-child{margin-top:0}.factory-bootstrap-454 .media-object{display:block}.factory-bootstrap-454 .media-heading{margin:0 0 5px}.factory-bootstrap-454 .media>.pull-left{margin-right:10px}.factory-bootstrap-454 .media>.pull-right{margin-left:10px}.factory-bootstrap-454 .media-list{padding-left:0;list-style:none}.factory-bootstrap-454 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-454 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-454 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-454 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-454 .list-group-item>.badge{float:right}.factory-bootstrap-454 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-454 a.list-group-item{color:#555}.factory-bootstrap-454 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-454 a.list-group-item:focus,.factory-bootstrap-454 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-454 a.list-group-item.active,.factory-bootstrap-454 a.list-group-item.active:focus,.factory-bootstrap-454 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-454 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-454 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-454 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-454 a.list-group-item.active .list-group-item-text,.factory-bootstrap-454 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-454 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-454 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-454 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-454 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-454 .panel-body{padding:15px}.factory-bootstrap-454 .panel-body:after,.factory-bootstrap-454 .panel-body:before{display:table;content:" "}.factory-bootstrap-454 .panel-body:after{clear:both}.factory-bootstrap-454 .panel>.list-group{margin-bottom:0}.factory-bootstrap-454 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-454 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-454 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-454 .panel>.table,.factory-bootstrap-454 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-454 .panel>.panel-body+.table,.factory-bootstrap-454 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-454 .panel>.table>tbody:first-child td,.factory-bootstrap-454 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-454 .panel>.table-bordered,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-454 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-454 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-454 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-454 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-454 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-454 .panel-title>a{color:inherit}.factory-bootstrap-454 .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-454 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-454 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-454 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-454 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-454 .panel-group .panel-footer{border-top:0}.factory-bootstrap-454 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-454 .panel-default{border-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-454 .panel-primary{border-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-454 .panel-success{border-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-454 .panel-warning{border-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-454 .panel-danger{border-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-454 .panel-info{border-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-454 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-454 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-454 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-454 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-454 .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-454 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-454 .close:focus,.factory-bootstrap-454 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-454 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-454 .modal-open{overflow:hidden}.factory-bootstrap-454 .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-454 .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-454 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-454 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-454 .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-454 .modal-backdrop,.factory-bootstrap-454-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-454 .modal-backdrop.fade,.factory-bootstrap-454-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-454 .modal-backdrop.in,.factory-bootstrap-454-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-454 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-454 .modal-header .close{margin-top:-2px}.factory-bootstrap-454 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-454 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-454 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-454 .modal-footer:after,.factory-bootstrap-454 .modal-footer:before{display:table;content:" "}.factory-bootstrap-454 .modal-footer:after{clear:both}.factory-bootstrap-454 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-454 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-454 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-454 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-454 .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-454 .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-454 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-454 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-454 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-454 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-454 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-454 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-454 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-454 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-454 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-454 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .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-454 .popover.top{margin-top:-10px}.factory-bootstrap-454 .popover.right{margin-left:10px}.factory-bootstrap-454 .popover.bottom{margin-top:10px}.factory-bootstrap-454 .popover.left{margin-left:-10px}.factory-bootstrap-454 .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-454 .popover-content{padding:9px 14px}.factory-bootstrap-454 .popover .arrow,.factory-bootstrap-454 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-454 .popover .arrow{border-width:11px}.factory-bootstrap-454 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-454 .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-454 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-454 .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-454 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-454 .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-454 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-454 .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-454 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-454 .carousel{position:relative}.factory-bootstrap-454 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-454 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-454 .carousel-inner>.item>a>img,.factory-bootstrap-454 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-454 .carousel-inner>.active,.factory-bootstrap-454 .carousel-inner>.next,.factory-bootstrap-454 .carousel-inner>.prev{display:block}.factory-bootstrap-454 .carousel-inner>.active{left:0}.factory-bootstrap-454 .carousel-inner>.next,.factory-bootstrap-454 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-454 .carousel-inner>.next{left:100%}.factory-bootstrap-454 .carousel-inner>.prev{left:-100%}.factory-bootstrap-454 .carousel-inner>.next.left,.factory-bootstrap-454 .carousel-inner>.prev.right{left:0}.factory-bootstrap-454 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-454 .carousel-inner>.active.right{left:100%}.factory-bootstrap-454 .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-454 .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-454 .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-454 .carousel-control:focus,.factory-bootstrap-454 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-454 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-454 .carousel-control .icon-next,.factory-bootstrap-454 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-454 .carousel-control .icon-prev{left:50%}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-454 .carousel-control .icon-next{right:50%}.factory-bootstrap-454 .carousel-control .icon-next,.factory-bootstrap-454 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-454 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-454 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-454 .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-454 .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-454 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-454 .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-454 .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-454 .clearfix:after,.factory-bootstrap-454 .clearfix:before{display:table;content:" "}.factory-bootstrap-454 .clearfix:after{clear:both}.factory-bootstrap-454 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-454 .pull-right{float:right!important}.factory-bootstrap-454 .pull-left{float:left!important}.factory-bootstrap-454 .hide{display:none!important}.factory-bootstrap-454 .show{display:block!important}.factory-bootstrap-454 .invisible{visibility:hidden}.factory-bootstrap-454 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-454 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-454 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-454 .visible-lg,.factory-bootstrap-454 .visible-md,.factory-bootstrap-454 .visible-sm,.factory-bootstrap-454 .visible-xs,.factory-bootstrap-454 td.visible-lg,.factory-bootstrap-454 td.visible-md,.factory-bootstrap-454 td.visible-sm,.factory-bootstrap-454 td.visible-xs,.factory-bootstrap-454 th.visible-lg,.factory-bootstrap-454 th.visible-md,.factory-bootstrap-454 th.visible-sm,.factory-bootstrap-454 th.visible-xs,.factory-bootstrap-454 tr.visible-lg,.factory-bootstrap-454 tr.visible-md,.factory-bootstrap-454 tr.visible-sm,.factory-bootstrap-454 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-454 .hidden-xs{display:block!important}.factory-bootstrap-454 table.hidden-xs{display:table}.factory-bootstrap-454 tr.hidden-xs{display:table-row!important}.factory-bootstrap-454 td.hidden-xs,.factory-bootstrap-454 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-454 .hidden-sm{display:block!important}.factory-bootstrap-454 table.hidden-sm{display:table}.factory-bootstrap-454 tr.hidden-sm{display:table-row!important}.factory-bootstrap-454 td.hidden-sm,.factory-bootstrap-454 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-454 .hidden-md{display:block!important}.factory-bootstrap-454 table.hidden-md{display:table}.factory-bootstrap-454 tr.hidden-md{display:table-row!important}.factory-bootstrap-454 td.hidden-md,.factory-bootstrap-454 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-454 .hidden-lg{display:block!important}.factory-bootstrap-454 table.hidden-lg{display:table}.factory-bootstrap-454 tr.hidden-lg{display:table-row!important}.factory-bootstrap-454 td.hidden-lg,.factory-bootstrap-454 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-454 .hidden-lg.hidden-xs,.factory-bootstrap-454 td.hidden-lg.hidden-xs,.factory-bootstrap-454 th.hidden-lg.hidden-xs,.factory-bootstrap-454 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-454 .hidden-lg.hidden-sm,.factory-bootstrap-454 td.hidden-lg.hidden-sm,.factory-bootstrap-454 th.hidden-lg.hidden-sm,.factory-bootstrap-454 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-454 .hidden-lg.hidden-md,.factory-bootstrap-454 td.hidden-lg.hidden-md,.factory-bootstrap-454 th.hidden-lg.hidden-md,.factory-bootstrap-454 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-454 .hidden-lg,.factory-bootstrap-454 td.hidden-lg,.factory-bootstrap-454 th.hidden-lg,.factory-bootstrap-454 tr.hidden-lg{display:none!important}}.factory-bootstrap-454 .visible-print,.factory-bootstrap-454 td.visible-print,.factory-bootstrap-454 th.visible-print,.factory-bootstrap-454 tr.visible-print{display:none!important}@media print{.factory-bootstrap-454 .visible-print{display:block!important}.factory-bootstrap-454 table.visible-print{display:table}.factory-bootstrap-454 tr.visible-print{display:table-row!important}.factory-bootstrap-454 td.visible-print,.factory-bootstrap-454 th.visible-print{display:table-cell!important}.factory-bootstrap-454 .hidden-print,.factory-bootstrap-454 td.hidden-print,.factory-bootstrap-454 th.hidden-print,.factory-bootstrap-454 tr.hidden-print{display:none!important}}.factory-bootstrap-454 .btn-danger,.factory-bootstrap-454 .btn-default,.factory-bootstrap-454 .btn-info,.factory-bootstrap-454 .btn-primary,.factory-bootstrap-454 .btn-success,.factory-bootstrap-454 .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-454 .btn-danger.active,.factory-bootstrap-454 .btn-danger:active,.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .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-454 .btn.active,.factory-bootstrap-454 .btn:active{background-image:none}.factory-bootstrap-454 .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-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-454 .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-454 .btn-gold:focus,.factory-bootstrap-454 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-454 .btn-gold.active,.factory-bootstrap-454 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-454 .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-454 .btn-success:focus,.factory-bootstrap-454 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-454 .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-454 .btn-warning:focus,.factory-bootstrap-454 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-454 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-454 .btn-danger.active,.factory-bootstrap-454 .btn-danger:active,.factory-bootstrap-454 .btn-danger:focus,.factory-bootstrap-454 .btn-danger:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-454 .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-454 .btn-info:focus,.factory-bootstrap-454 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-454 .img-thumbnail,.factory-bootstrap-454 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-454 .dropdown-menu>li>a:focus,.factory-bootstrap-454 .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-454 .dropdown-menu>.active>a,.factory-bootstrap-454 .dropdown-menu>.active>a:focus,.factory-bootstrap-454 .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-454 .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-454 .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-454 .navbar-brand,.factory-bootstrap-454 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-454 .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-454 .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-454 .navbar-inverse .navbar-brand,.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-454 .navbar-fixed-bottom,.factory-bootstrap-454 .navbar-fixed-top,.factory-bootstrap-454 .navbar-static-top{border-radius:0}.factory-bootstrap-454 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-454 .alert .actions{padding-top:10px}.factory-bootstrap-454 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-454 .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-454 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-454 .alert-normal,.factory-bootstrap-454 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-454 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-454 .alert-danger a:not(.btn),.factory-bootstrap-454 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .list-group-item.active,.factory-bootstrap-454 .list-group-item.active:focus,.factory-bootstrap-454 .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-454 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-454 .factory-hidden{display:none}.factory-bootstrap-454 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 article,.factory-bootstrap-459 aside,.factory-bootstrap-459 details,.factory-bootstrap-459 figcaption,.factory-bootstrap-459 figure,.factory-bootstrap-459 footer,.factory-bootstrap-459 header,.factory-bootstrap-459 hgroup,.factory-bootstrap-459 main,.factory-bootstrap-459 nav,.factory-bootstrap-459 section,.factory-bootstrap-459 summary{display:block}.factory-bootstrap-459 audio,.factory-bootstrap-459 canvas,.factory-bootstrap-459 video{display:inline-block}.factory-bootstrap-459 audio:not([controls]){display:none;height:0}.factory-bootstrap-459 [hidden],.factory-bootstrap-459 template{display:none}.factory-bootstrap-459 body{margin:0}.factory-bootstrap-459 a{background:0 0}.factory-bootstrap-459 a:focus{outline:thin dotted}.factory-bootstrap-459 a:active,.factory-bootstrap-459 a:hover{outline:0}.factory-bootstrap-459 h1{margin:.67em 0}.factory-bootstrap-459 b,.factory-bootstrap-459 strong{font-weight:700}.factory-bootstrap-459 dfn{font-style:italic}.factory-bootstrap-459 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-459 mark{color:#000;background:#ff0}.factory-bootstrap-459 code,.factory-bootstrap-459 kbd,.factory-bootstrap-459 pre,.factory-bootstrap-459 samp{font-size:1em}.factory-bootstrap-459 pre{white-space:pre-wrap}.factory-bootstrap-459 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-459 sub,.factory-bootstrap-459 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-459 sup{top:-.5em}.factory-bootstrap-459 sub{bottom:-.25em}.factory-bootstrap-459 img{border:0}.factory-bootstrap-459 svg:not(:root){overflow:hidden}.factory-bootstrap-459 figure{margin:0}.factory-bootstrap-459 button,.factory-bootstrap-459 input,.factory-bootstrap-459 select,.factory-bootstrap-459 textarea{margin:0}.factory-bootstrap-459 button,.factory-bootstrap-459 select{text-transform:none}.factory-bootstrap-459 select{padding-right:4px!important}.factory-bootstrap-459 button,.factory-bootstrap-459 input[type=reset],.factory-bootstrap-459 input[type=submit],html .factory-bootstrap-459 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-459 button[disabled],html .factory-bootstrap-459 input[disabled]{cursor:default}.factory-bootstrap-459 input[type=checkbox],.factory-bootstrap-459 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-459 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-459 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-459 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-459 button::-moz-focus-inner,.factory-bootstrap-459 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-459 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-459 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-459 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-459 a,.factory-bootstrap-459 a:visited{text-decoration:underline}.factory-bootstrap-459 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-459 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-459 a[href^="javascript:"]:after,.factory-bootstrap-459 a[href^="#"]:after{content:""}.factory-bootstrap-459 blockquote,.factory-bootstrap-459 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-459 thead{display:table-header-group}.factory-bootstrap-459 img,.factory-bootstrap-459 tr{page-break-inside:avoid}.factory-bootstrap-459 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-459 h2,.factory-bootstrap-459 h3,.factory-bootstrap-459 p{orphans:3;widows:3}.factory-bootstrap-459 h2,.factory-bootstrap-459 h3{page-break-after:avoid}.factory-bootstrap-459 select{background:#fff!important}.factory-bootstrap-459 .navbar{display:none}.factory-bootstrap-459 .table td,.factory-bootstrap-459 .table th{background-color:#fff!important}.factory-bootstrap-459 .btn>.caret,.factory-bootstrap-459 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-459 .label{border:1px solid #000}.factory-bootstrap-459 .table{border-collapse:collapse!important}.factory-bootstrap-459 .table-bordered td,.factory-bootstrap-459 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-459 *,.factory-bootstrap-459 :after,.factory-bootstrap-459 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-459{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-459 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-459 button,.factory-bootstrap-459 input,.factory-bootstrap-459 select,.factory-bootstrap-459 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-459 img{vertical-align:middle}.factory-bootstrap-459 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-459 .img-rounded{border-radius:6px}.factory-bootstrap-459 .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-459 .img-circle{border-radius:50%}.factory-bootstrap-459 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-459 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-459 .h1,.factory-bootstrap-459 .h2,.factory-bootstrap-459 .h3,.factory-bootstrap-459 .h4,.factory-bootstrap-459 .h5,.factory-bootstrap-459 .h6,.factory-bootstrap-459 h1,.factory-bootstrap-459 h2,.factory-bootstrap-459 h3,.factory-bootstrap-459 h4,.factory-bootstrap-459 h5,.factory-bootstrap-459 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-459 .h1 .small,.factory-bootstrap-459 .h1 small,.factory-bootstrap-459 .h2 .small,.factory-bootstrap-459 .h2 small,.factory-bootstrap-459 .h3 .small,.factory-bootstrap-459 .h3 small,.factory-bootstrap-459 .h4 .small,.factory-bootstrap-459 .h4 small,.factory-bootstrap-459 .h5 .small,.factory-bootstrap-459 .h5 small,.factory-bootstrap-459 .h6 .small,.factory-bootstrap-459 .h6 small,.factory-bootstrap-459 h1 .small,.factory-bootstrap-459 h1 small,.factory-bootstrap-459 h2 .small,.factory-bootstrap-459 h2 small,.factory-bootstrap-459 h3 .small,.factory-bootstrap-459 h3 small,.factory-bootstrap-459 h4 .small,.factory-bootstrap-459 h4 small,.factory-bootstrap-459 h5 .small,.factory-bootstrap-459 h5 small,.factory-bootstrap-459 h6 .small,.factory-bootstrap-459 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-459 h1,.factory-bootstrap-459 h2,.factory-bootstrap-459 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-459 h1 .small,.factory-bootstrap-459 h1 small,.factory-bootstrap-459 h2 .small,.factory-bootstrap-459 h2 small,.factory-bootstrap-459 h3 .small,.factory-bootstrap-459 h3 small{font-size:65%}.factory-bootstrap-459 h4,.factory-bootstrap-459 h5,.factory-bootstrap-459 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-459 h4 .small,.factory-bootstrap-459 h4 small,.factory-bootstrap-459 h5 .small,.factory-bootstrap-459 h5 small,.factory-bootstrap-459 h6 .small,.factory-bootstrap-459 h6 small{font-size:75%}.factory-bootstrap-459 .h1,.factory-bootstrap-459 h1{font-size:36px}.factory-bootstrap-459 .h2,.factory-bootstrap-459 h2{font-size:30px}.factory-bootstrap-459 .h3,.factory-bootstrap-459 h3{font-size:24px}.factory-bootstrap-459 .h4,.factory-bootstrap-459 h4{font-size:18px}.factory-bootstrap-459 .h5,.factory-bootstrap-459 h5{font-size:14px}.factory-bootstrap-459 .h6,.factory-bootstrap-459 h6{font-size:12px}.factory-bootstrap-459 p{margin:0 0 10px}.factory-bootstrap-459 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-459 .small,.factory-bootstrap-459 small{font-size:85%}.factory-bootstrap-459 cite{font-style:normal}.factory-bootstrap-459 .text-muted{color:#999}.factory-bootstrap-459 .text-primary{color:#428bca}.factory-bootstrap-459 .text-primary:hover{color:#3071a9}.factory-bootstrap-459 .text-warning{color:#8a6d3b}.factory-bootstrap-459 .text-warning:hover{color:#66512c}.factory-bootstrap-459 .text-danger{color:#a94442}.factory-bootstrap-459 .text-danger:hover{color:#843534}.factory-bootstrap-459 .text-success{color:#3c763d}.factory-bootstrap-459 .text-success:hover{color:#2b542c}.factory-bootstrap-459 .text-info{color:#31708f}.factory-bootstrap-459 .text-info:hover{color:#245269}.factory-bootstrap-459 .text-left{text-align:left}.factory-bootstrap-459 .text-right{text-align:right}.factory-bootstrap-459 .text-center{text-align:center}.factory-bootstrap-459 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-459 ol,.factory-bootstrap-459 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-459 ol ol,.factory-bootstrap-459 ol ul,.factory-bootstrap-459 ul ol,.factory-bootstrap-459 ul ul{margin-bottom:0}.factory-bootstrap-459 .list-inline,.factory-bootstrap-459 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-459 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-459 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-459 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-459 dd,.factory-bootstrap-459 dt{line-height:1.428571429}.factory-bootstrap-459 dt{font-weight:700}.factory-bootstrap-459 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-459 abbr[data-original-title],.factory-bootstrap-459 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-459 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-459 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-459 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-459 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-459 blockquote .small,.factory-bootstrap-459 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-459 blockquote .small:before,.factory-bootstrap-459 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-459 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-459 blockquote.pull-right .small,.factory-bootstrap-459 blockquote.pull-right p,.factory-bootstrap-459 blockquote.pull-right small{text-align:right}.factory-bootstrap-459 blockquote.pull-right .small:before,.factory-bootstrap-459 blockquote.pull-right small:before{content:''}.factory-bootstrap-459 blockquote.pull-right .small:after,.factory-bootstrap-459 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-459 blockquote:after,.factory-bootstrap-459 blockquote:before{content:""}.factory-bootstrap-459 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-459 code,.factory-bootstrap-459 kbd,.factory-bootstrap-459 pre,.factory-bootstrap-459 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-459 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-459 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-459 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-459 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-459 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-459 .container:after,.factory-bootstrap-459 .container:before{display:table;content:" "}.factory-bootstrap-459 .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-459 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-459 .row:after,.factory-bootstrap-459 .row:before{display:table;content:" "}.factory-bootstrap-459 .row:after{clear:both}.factory-bootstrap-459 .col-lg-1,.factory-bootstrap-459 .col-lg-10,.factory-bootstrap-459 .col-lg-11,.factory-bootstrap-459 .col-lg-12,.factory-bootstrap-459 .col-lg-2,.factory-bootstrap-459 .col-lg-3,.factory-bootstrap-459 .col-lg-4,.factory-bootstrap-459 .col-lg-5,.factory-bootstrap-459 .col-lg-6,.factory-bootstrap-459 .col-lg-7,.factory-bootstrap-459 .col-lg-8,.factory-bootstrap-459 .col-lg-9,.factory-bootstrap-459 .col-md-1,.factory-bootstrap-459 .col-md-10,.factory-bootstrap-459 .col-md-11,.factory-bootstrap-459 .col-md-12,.factory-bootstrap-459 .col-md-2,.factory-bootstrap-459 .col-md-3,.factory-bootstrap-459 .col-md-4,.factory-bootstrap-459 .col-md-5,.factory-bootstrap-459 .col-md-6,.factory-bootstrap-459 .col-md-7,.factory-bootstrap-459 .col-md-8,.factory-bootstrap-459 .col-md-9,.factory-bootstrap-459 .col-sm-1,.factory-bootstrap-459 .col-sm-10,.factory-bootstrap-459 .col-sm-11,.factory-bootstrap-459 .col-sm-12,.factory-bootstrap-459 .col-sm-2,.factory-bootstrap-459 .col-sm-3,.factory-bootstrap-459 .col-sm-4,.factory-bootstrap-459 .col-sm-5,.factory-bootstrap-459 .col-sm-6,.factory-bootstrap-459 .col-sm-7,.factory-bootstrap-459 .col-sm-8,.factory-bootstrap-459 .col-sm-9,.factory-bootstrap-459 .col-xs-1,.factory-bootstrap-459 .col-xs-10,.factory-bootstrap-459 .col-xs-11,.factory-bootstrap-459 .col-xs-12,.factory-bootstrap-459 .col-xs-2,.factory-bootstrap-459 .col-xs-3,.factory-bootstrap-459 .col-xs-4,.factory-bootstrap-459 .col-xs-5,.factory-bootstrap-459 .col-xs-6,.factory-bootstrap-459 .col-xs-7,.factory-bootstrap-459 .col-xs-8,.factory-bootstrap-459 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-459 .col-xs-1,.factory-bootstrap-459 .col-xs-10,.factory-bootstrap-459 .col-xs-11,.factory-bootstrap-459 .col-xs-12,.factory-bootstrap-459 .col-xs-2,.factory-bootstrap-459 .col-xs-3,.factory-bootstrap-459 .col-xs-4,.factory-bootstrap-459 .col-xs-5,.factory-bootstrap-459 .col-xs-6,.factory-bootstrap-459 .col-xs-7,.factory-bootstrap-459 .col-xs-8,.factory-bootstrap-459 .col-xs-9{float:left}.factory-bootstrap-459 .col-xs-12{width:100%}.factory-bootstrap-459 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-459 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-459 .col-xs-9{width:75%}.factory-bootstrap-459 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-459 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-459 .col-xs-6{width:50%}.factory-bootstrap-459 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-459 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-459 .col-xs-3{width:25%}.factory-bootstrap-459 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-459 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-459 .col-xs-pull-12{right:100%}.factory-bootstrap-459 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-459 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-459 .col-xs-pull-9{right:75%}.factory-bootstrap-459 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-459 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-459 .col-xs-pull-6{right:50%}.factory-bootstrap-459 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-459 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-459 .col-xs-pull-3{right:25%}.factory-bootstrap-459 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-459 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-459 .col-xs-pull-0{right:0}.factory-bootstrap-459 .col-xs-push-12{left:100%}.factory-bootstrap-459 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-459 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-459 .col-xs-push-9{left:75%}.factory-bootstrap-459 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-459 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-459 .col-xs-push-6{left:50%}.factory-bootstrap-459 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-459 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-459 .col-xs-push-3{left:25%}.factory-bootstrap-459 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-459 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-459 .col-xs-push-0{left:0}.factory-bootstrap-459 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-459 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-459 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-459 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-459 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-459 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-459 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-459 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-459 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-459 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-459 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-459 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-459 .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-459 table{max-width:100%;background-color:transparent}.factory-bootstrap-459 th{text-align:left}.factory-bootstrap-459 .table{width:100%;margin-bottom:20px}.factory-bootstrap-459 .table>tbody>tr>td,.factory-bootstrap-459 .table>tbody>tr>th,.factory-bootstrap-459 .table>tfoot>tr>td,.factory-bootstrap-459 .table>tfoot>tr>th,.factory-bootstrap-459 .table>thead>tr>td,.factory-bootstrap-459 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-459 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-459 .table>caption+thead>tr:first-child>td,.factory-bootstrap-459 .table>caption+thead>tr:first-child>th,.factory-bootstrap-459 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-459 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-459 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-459 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-459 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-459 .table .table{background-color:#fff}.factory-bootstrap-459 .table-condensed>tbody>tr>td,.factory-bootstrap-459 .table-condensed>tbody>tr>th,.factory-bootstrap-459 .table-condensed>tfoot>tr>td,.factory-bootstrap-459 .table-condensed>tfoot>tr>th,.factory-bootstrap-459 .table-condensed>thead>tr>td,.factory-bootstrap-459 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-459 .table-bordered,.factory-bootstrap-459 .table-bordered>tbody>tr>td,.factory-bootstrap-459 .table-bordered>tbody>tr>th,.factory-bootstrap-459 .table-bordered>tfoot>tr>td,.factory-bootstrap-459 .table-bordered>tfoot>tr>th,.factory-bootstrap-459 .table-bordered>thead>tr>td,.factory-bootstrap-459 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-459 .table-bordered>thead>tr>td,.factory-bootstrap-459 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-459 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-459 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-459 .table-hover>tbody>tr:hover>td,.factory-bootstrap-459 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-459 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-459 table td[class*=col-],.factory-bootstrap-459 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-459 .table>tbody>.active>td,.factory-bootstrap-459 .table>tbody>.active>th,.factory-bootstrap-459 .table>tbody>tr>.active,.factory-bootstrap-459 .table>tfoot>.active>td,.factory-bootstrap-459 .table>tfoot>.active>th,.factory-bootstrap-459 .table>tfoot>tr>.active,.factory-bootstrap-459 .table>thead>.active>td,.factory-bootstrap-459 .table>thead>.active>th,.factory-bootstrap-459 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-459 .table-hover>tbody>.active:hover>td,.factory-bootstrap-459 .table-hover>tbody>.active:hover>th,.factory-bootstrap-459 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-459 .table>tbody>.success>td,.factory-bootstrap-459 .table>tbody>.success>th,.factory-bootstrap-459 .table>tbody>tr>.success,.factory-bootstrap-459 .table>tfoot>.success>td,.factory-bootstrap-459 .table>tfoot>.success>th,.factory-bootstrap-459 .table>tfoot>tr>.success,.factory-bootstrap-459 .table>thead>.success>td,.factory-bootstrap-459 .table>thead>.success>th,.factory-bootstrap-459 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-459 .table-hover>tbody>.success:hover>td,.factory-bootstrap-459 .table-hover>tbody>.success:hover>th,.factory-bootstrap-459 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-459 .table>tbody>.danger>td,.factory-bootstrap-459 .table>tbody>.danger>th,.factory-bootstrap-459 .table>tbody>tr>.danger,.factory-bootstrap-459 .table>tfoot>.danger>td,.factory-bootstrap-459 .table>tfoot>.danger>th,.factory-bootstrap-459 .table>tfoot>tr>.danger,.factory-bootstrap-459 .table>thead>.danger>td,.factory-bootstrap-459 .table>thead>.danger>th,.factory-bootstrap-459 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-459 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-459 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-459 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-459 .table>tbody>.warning>td,.factory-bootstrap-459 .table>tbody>.warning>th,.factory-bootstrap-459 .table>tbody>tr>.warning,.factory-bootstrap-459 .table>tfoot>.warning>td,.factory-bootstrap-459 .table>tfoot>.warning>th,.factory-bootstrap-459 .table>tfoot>tr>.warning,.factory-bootstrap-459 .table>thead>.warning>td,.factory-bootstrap-459 .table>thead>.warning>th,.factory-bootstrap-459 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-459 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-459 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-459 .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-459 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-459 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-459 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-459 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-459 input[type=checkbox],.factory-bootstrap-459 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-459 input[type=file]{display:block}.factory-bootstrap-459 select[multiple],.factory-bootstrap-459 select[size]{height:auto}.factory-bootstrap-459 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-459 input[type=checkbox]:focus,.factory-bootstrap-459 input[type=file]:focus,.factory-bootstrap-459 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-459 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-459 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-459 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-459 .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-459 .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-459 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-459 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-459 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-459 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-459 .form-control[disabled],.factory-bootstrap-459 .form-control[readonly],.factory-bootstrap-459 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-459 textarea.form-control{height:auto}.factory-bootstrap-459 .form-group{margin-bottom:15px}.factory-bootstrap-459 .checkbox,.factory-bootstrap-459 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-459 .checkbox label,.factory-bootstrap-459 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-459 .checkbox input[type=checkbox],.factory-bootstrap-459 .checkbox-inline input[type=checkbox],.factory-bootstrap-459 .radio input[type=radio],.factory-bootstrap-459 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-459 .checkbox+.checkbox,.factory-bootstrap-459 .radio+.radio{margin-top:-5px}.factory-bootstrap-459 .checkbox-inline,.factory-bootstrap-459 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-459 .checkbox-inline+.checkbox-inline,.factory-bootstrap-459 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-459 .checkbox-inline[disabled],.factory-bootstrap-459 .checkbox[disabled],.factory-bootstrap-459 .radio-inline[disabled],.factory-bootstrap-459 .radio[disabled],.factory-bootstrap-459 fieldset[disabled] .checkbox,.factory-bootstrap-459 fieldset[disabled] .checkbox-inline,.factory-bootstrap-459 fieldset[disabled] .radio,.factory-bootstrap-459 fieldset[disabled] .radio-inline,.factory-bootstrap-459 fieldset[disabled] input[type=checkbox],.factory-bootstrap-459 fieldset[disabled] input[type=radio],.factory-bootstrap-459 input[type=checkbox][disabled],.factory-bootstrap-459 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-459 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-459 textarea.input-sm{height:auto}.factory-bootstrap-459 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-459 textarea.input-lg{height:auto}.factory-bootstrap-459 .has-warning .checkbox,.factory-bootstrap-459 .has-warning .checkbox-inline,.factory-bootstrap-459 .has-warning .control-label,.factory-bootstrap-459 .has-warning .help-block,.factory-bootstrap-459 .has-warning .radio,.factory-bootstrap-459 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-459 .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-459 .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-459 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-459 .has-error .checkbox,.factory-bootstrap-459 .has-error .checkbox-inline,.factory-bootstrap-459 .has-error .control-label,.factory-bootstrap-459 .has-error .help-block,.factory-bootstrap-459 .has-error .radio,.factory-bootstrap-459 .has-error .radio-inline{color:#a94442}.factory-bootstrap-459 .controls{display:block}.factory-bootstrap-459 .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-459 .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-459 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-459 .has-success .checkbox,.factory-bootstrap-459 .has-success .checkbox-inline,.factory-bootstrap-459 .has-success .control-label,.factory-bootstrap-459 .has-success .help-block,.factory-bootstrap-459 .has-success .radio,.factory-bootstrap-459 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-459 .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-459 .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-459 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-459 .form-control-static{margin-bottom:0}.factory-bootstrap-459 .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-459 .form-horizontal .checkbox,.factory-bootstrap-459 .form-horizontal .checkbox-inline,.factory-bootstrap-459 .form-horizontal .control-label,.factory-bootstrap-459 .form-horizontal .radio,.factory-bootstrap-459 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-459 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-459 .form-horizontal .checkbox,.factory-bootstrap-459 .form-horizontal .radio{min-height:27px}.factory-bootstrap-459 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-459 .form-horizontal .form-group:after,.factory-bootstrap-459 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-459 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-459 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-459 .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-459 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-459 .btn{text-decoration:none}.factory-bootstrap-459 .btn:focus,.factory-bootstrap-459 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-459 .btn.disabled,.factory-bootstrap-459 .btn[disabled],.factory-bootstrap-459 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active,.factory-bootstrap-459 .btn-default:focus,.factory-bootstrap-459 .btn-default:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-459 .btn-default.disabled,.factory-bootstrap-459 .btn-default.disabled.active,.factory-bootstrap-459 .btn-default.disabled:active,.factory-bootstrap-459 .btn-default.disabled:focus,.factory-bootstrap-459 .btn-default.disabled:hover,.factory-bootstrap-459 .btn-default[disabled],.factory-bootstrap-459 .btn-default[disabled].active,.factory-bootstrap-459 .btn-default[disabled]:active,.factory-bootstrap-459 .btn-default[disabled]:focus,.factory-bootstrap-459 .btn-default[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-default,.factory-bootstrap-459 fieldset[disabled] .btn-default.active,.factory-bootstrap-459 fieldset[disabled] .btn-default:active,.factory-bootstrap-459 fieldset[disabled] .btn-default:focus,.factory-bootstrap-459 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-459 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active,.factory-bootstrap-459 .btn-primary:focus,.factory-bootstrap-459 .btn-primary:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-459 .btn-primary.disabled,.factory-bootstrap-459 .btn-primary.disabled.active,.factory-bootstrap-459 .btn-primary.disabled:active,.factory-bootstrap-459 .btn-primary.disabled:focus,.factory-bootstrap-459 .btn-primary.disabled:hover,.factory-bootstrap-459 .btn-primary[disabled],.factory-bootstrap-459 .btn-primary[disabled].active,.factory-bootstrap-459 .btn-primary[disabled]:active,.factory-bootstrap-459 .btn-primary[disabled]:focus,.factory-bootstrap-459 .btn-primary[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-primary,.factory-bootstrap-459 fieldset[disabled] .btn-primary.active,.factory-bootstrap-459 fieldset[disabled] .btn-primary:active,.factory-bootstrap-459 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-459 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-459 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-459 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .btn-warning:active,.factory-bootstrap-459 .btn-warning:focus,.factory-bootstrap-459 .btn-warning:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .btn-warning:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-459 .btn-warning.disabled,.factory-bootstrap-459 .btn-warning.disabled.active,.factory-bootstrap-459 .btn-warning.disabled:active,.factory-bootstrap-459 .btn-warning.disabled:focus,.factory-bootstrap-459 .btn-warning.disabled:hover,.factory-bootstrap-459 .btn-warning[disabled],.factory-bootstrap-459 .btn-warning[disabled].active,.factory-bootstrap-459 .btn-warning[disabled]:active,.factory-bootstrap-459 .btn-warning[disabled]:focus,.factory-bootstrap-459 .btn-warning[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-warning,.factory-bootstrap-459 fieldset[disabled] .btn-warning.active,.factory-bootstrap-459 fieldset[disabled] .btn-warning:active,.factory-bootstrap-459 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-459 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-459 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-459 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active,.factory-bootstrap-459 .btn-success:focus,.factory-bootstrap-459 .btn-success:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-459 .btn-success.disabled,.factory-bootstrap-459 .btn-success.disabled.active,.factory-bootstrap-459 .btn-success.disabled:active,.factory-bootstrap-459 .btn-success.disabled:focus,.factory-bootstrap-459 .btn-success.disabled:hover,.factory-bootstrap-459 .btn-success[disabled],.factory-bootstrap-459 .btn-success[disabled].active,.factory-bootstrap-459 .btn-success[disabled]:active,.factory-bootstrap-459 .btn-success[disabled]:focus,.factory-bootstrap-459 .btn-success[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-success,.factory-bootstrap-459 fieldset[disabled] .btn-success.active,.factory-bootstrap-459 fieldset[disabled] .btn-success:active,.factory-bootstrap-459 fieldset[disabled] .btn-success:focus,.factory-bootstrap-459 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-459 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-459 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active,.factory-bootstrap-459 .btn-info:focus,.factory-bootstrap-459 .btn-info:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-459 .btn-info.disabled,.factory-bootstrap-459 .btn-info.disabled.active,.factory-bootstrap-459 .btn-info.disabled:active,.factory-bootstrap-459 .btn-info.disabled:focus,.factory-bootstrap-459 .btn-info.disabled:hover,.factory-bootstrap-459 .btn-info[disabled],.factory-bootstrap-459 .btn-info[disabled].active,.factory-bootstrap-459 .btn-info[disabled]:active,.factory-bootstrap-459 .btn-info[disabled]:focus,.factory-bootstrap-459 .btn-info[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-info,.factory-bootstrap-459 fieldset[disabled] .btn-info.active,.factory-bootstrap-459 fieldset[disabled] .btn-info:active,.factory-bootstrap-459 fieldset[disabled] .btn-info:focus,.factory-bootstrap-459 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-459 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-459 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-459 .btn-link,.factory-bootstrap-459 .btn-link:active,.factory-bootstrap-459 .btn-link[disabled],.factory-bootstrap-459 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-459 .btn-link,.factory-bootstrap-459 .btn-link:active,.factory-bootstrap-459 .btn-link:focus,.factory-bootstrap-459 .btn-link:hover{border-color:transparent}.factory-bootstrap-459 .btn-link:focus,.factory-bootstrap-459 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-459 .btn-link[disabled]:focus,.factory-bootstrap-459 .btn-link[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-link:focus,.factory-bootstrap-459 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-459 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-459 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-459 input[type=button].btn-block,.factory-bootstrap-459 input[type=reset].btn-block,.factory-bootstrap-459 input[type=submit].btn-block{width:100%}.factory-bootstrap-459 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-459 .fade.in{opacity:1}.factory-bootstrap-459 .collapse{display:none}.factory-bootstrap-459 .collapse.in{display:block}.factory-bootstrap-459 .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-459 .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-459 .glyphicon:empty{width:1em}.factory-bootstrap-459 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-459 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-459 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-459 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-459 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-459 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-459 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-459 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-459 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-459 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-459 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-459 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-459 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-459 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-459 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-459 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-459 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-459 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-459 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-459 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-459 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-459 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-459 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-459 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-459 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-459 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-459 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-459 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-459 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-459 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-459 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-459 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-459 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-459 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-459 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-459 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-459 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-459 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-459 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-459 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-459 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-459 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-459 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-459 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-459 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-459 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-459 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-459 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-459 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-459 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-459 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-459 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-459 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-459 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-459 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-459 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-459 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-459 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-459 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-459 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-459 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-459 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-459 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-459 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-459 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-459 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-459 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-459 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-459 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-459 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-459 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-459 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-459 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-459 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-459 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-459 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-459 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-459 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-459 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-459 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-459 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-459 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-459 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-459 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-459 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-459 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-459 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-459 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-459 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-459 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-459 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-459 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-459 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-459 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-459 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-459 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-459 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-459 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-459 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-459 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-459 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-459 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-459 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-459 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-459 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-459 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-459 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-459 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-459 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-459 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-459 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-459 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-459 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-459 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-459 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-459 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-459 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-459 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-459 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-459 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-459 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-459 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-459 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-459 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-459 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-459 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-459 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-459 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-459 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-459 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-459 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-459 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-459 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-459 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-459 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-459 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-459 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-459 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-459 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-459 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-459 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-459 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-459 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-459 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-459 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-459 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-459 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-459 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-459 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-459 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-459 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-459 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-459 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-459 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-459 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-459 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-459 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-459 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-459 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-459 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-459 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-459 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-459 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-459 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-459 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-459 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-459 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-459 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-459 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-459 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-459 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-459 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-459 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-459 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-459 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-459 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-459 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-459 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-459 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-459 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-459 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-459 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-459 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-459 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-459 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-459 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-459 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-459 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-459 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-459 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-459 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-459 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-459 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-459 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-459 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-459 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-459 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-459 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-459 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-459 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-459 .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-459 .dropdown{position:relative}.factory-bootstrap-459 .dropdown-toggle:focus{outline:0}.factory-bootstrap-459 .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-459 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-459 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-459 .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-459 .dropdown-menu>li>a:focus,.factory-bootstrap-459 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-459 .dropdown-menu>.active>a,.factory-bootstrap-459 .dropdown-menu>.active>a:focus,.factory-bootstrap-459 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-459 .dropdown-menu>.disabled>a,.factory-bootstrap-459 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-459 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-459 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-459 .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-459 .open>.dropdown-menu{display:block}.factory-bootstrap-459 .open>a{outline:0}.factory-bootstrap-459 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-459 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-459 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-459 .dropup .caret,.factory-bootstrap-459 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-459 .dropup .dropdown-menu,.factory-bootstrap-459 .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-459 .btn-group,.factory-bootstrap-459 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-459 .btn-group-vertical>.btn,.factory-bootstrap-459 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-459 .btn-group-vertical>.btn.active,.factory-bootstrap-459 .btn-group-vertical>.btn:active,.factory-bootstrap-459 .btn-group-vertical>.btn:focus,.factory-bootstrap-459 .btn-group-vertical>.btn:hover,.factory-bootstrap-459 .btn-group>.btn.active,.factory-bootstrap-459 .btn-group>.btn:active,.factory-bootstrap-459 .btn-group>.btn:focus,.factory-bootstrap-459 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-459 .btn-group-vertical>.btn:focus,.factory-bootstrap-459 .btn-group>.btn:focus{outline:0}.factory-bootstrap-459 .btn-group .btn+.btn,.factory-bootstrap-459 .btn-group .btn+.btn-group,.factory-bootstrap-459 .btn-group .btn-group+.btn,.factory-bootstrap-459 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-459 .btn-toolbar:after,.factory-bootstrap-459 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-459 .btn-toolbar:after{clear:both}.factory-bootstrap-459 .btn-toolbar .btn-group{float:left}.factory-bootstrap-459 .btn-toolbar>.btn+.btn,.factory-bootstrap-459 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-459 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-459 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-459 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-459 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-459 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-459 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .btn-group>.btn-group{float:left}.factory-bootstrap-459 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-459 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-459 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .btn-group .dropdown-toggle:active,.factory-bootstrap-459 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-459 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-459 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-459 .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-459 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-459 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-459 .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-459 .btn .caret{margin-left:0}.factory-bootstrap-459 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-459 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-459 .btn-group-vertical>.btn,.factory-bootstrap-459 .btn-group-vertical>.btn-group,.factory-bootstrap-459 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-459 .btn-group-vertical>.btn-group:after,.factory-bootstrap-459 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-459 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-459 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-459 .btn-group-vertical>.btn+.btn,.factory-bootstrap-459 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-459 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-459 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-459 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-459 .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-459 .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-459 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-459 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-459 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-459 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-459 .btn-group-justified>.btn,.factory-bootstrap-459 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-459 .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-459 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-459 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-459 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-459 .input-group-lg>.form-control,.factory-bootstrap-459 .input-group-lg>.input-group-addon,.factory-bootstrap-459 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 select.input-group-lg>.form-control,.factory-bootstrap-459 select.input-group-lg>.input-group-addon,.factory-bootstrap-459 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-459 textarea.input-group-lg>.form-control,.factory-bootstrap-459 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-459 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-459 .input-group-sm>.form-control,.factory-bootstrap-459 .input-group-sm>.input-group-addon,.factory-bootstrap-459 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 select.input-group-sm>.form-control,.factory-bootstrap-459 select.input-group-sm>.input-group-addon,.factory-bootstrap-459 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-459 textarea.input-group-sm>.form-control,.factory-bootstrap-459 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-459 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-459 .input-group .form-control,.factory-bootstrap-459 .input-group-addon,.factory-bootstrap-459 .input-group-btn{display:table-cell}.factory-bootstrap-459 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-459 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-459 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-459 .input-group-addon,.factory-bootstrap-459 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-459 .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-459 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-459 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-459 .input-group-addon input[type=checkbox],.factory-bootstrap-459 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-459 .input-group .form-control:first-child,.factory-bootstrap-459 .input-group-addon:first-child,.factory-bootstrap-459 .input-group-btn:first-child>.btn,.factory-bootstrap-459 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-459 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .input-group-addon:first-child{border-right:0}.factory-bootstrap-459 .input-group .form-control:last-child,.factory-bootstrap-459 .input-group-addon:last-child,.factory-bootstrap-459 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-459 .input-group-btn:last-child>.btn,.factory-bootstrap-459 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .input-group-addon:last-child{border-left:0}.factory-bootstrap-459 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-459 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-459 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-459 .input-group-btn>.btn{position:relative}.factory-bootstrap-459 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-459 .input-group-btn>.btn:active,.factory-bootstrap-459 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-459 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-459 .nav:after,.factory-bootstrap-459 .nav:before{display:table;content:" "}.factory-bootstrap-459 .nav:after{clear:both}.factory-bootstrap-459 .nav>li{position:relative;display:block}.factory-bootstrap-459 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-459 .nav>li>a:focus,.factory-bootstrap-459 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-459 .nav>li.disabled>a{color:#999}.factory-bootstrap-459 .nav>li.disabled>a:focus,.factory-bootstrap-459 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-459 .nav .open>a,.factory-bootstrap-459 .nav .open>a:focus,.factory-bootstrap-459 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-459 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-459 .nav>li>a>img{max-width:none}.factory-bootstrap-459 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-459 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-459 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-459 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-459 .nav-tabs>li.active>a,.factory-bootstrap-459 .nav-tabs>li.active>a:focus,.factory-bootstrap-459 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-459 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-459 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-459 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-459 .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-459 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-459 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-459 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-459 .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-459 .nav-pills>li{float:left}.factory-bootstrap-459 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-459 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-459 .nav-pills>li.active>a,.factory-bootstrap-459 .nav-pills>li.active>a:focus,.factory-bootstrap-459 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-459 .nav-stacked>li{float:none}.factory-bootstrap-459 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-459 .nav-justified{width:100%}.factory-bootstrap-459 .nav-justified>li{float:none}.factory-bootstrap-459 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-459 .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-459 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-459 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-459 .nav-tabs-justified>.active>a,.factory-bootstrap-459 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-459 .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-459 .tab-content>.tab-pane{display:none}.factory-bootstrap-459 .tab-content>.active{display:block}.factory-bootstrap-459 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-459 .navbar:after,.factory-bootstrap-459 .navbar:before{display:table;content:" "}.factory-bootstrap-459 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-459 .navbar-header:after,.factory-bootstrap-459 .navbar-header:before{display:table;content:" "}.factory-bootstrap-459 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-459 .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-459 .navbar-collapse:after,.factory-bootstrap-459 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-459 .navbar-collapse:after{clear:both}.factory-bootstrap-459 .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-459 .container>.navbar-collapse,.factory-bootstrap-459 .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-459 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-459 .navbar-fixed-bottom,.factory-bootstrap-459 .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-459 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-459 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-459 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-459 .navbar-brand:focus,.factory-bootstrap-459 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-459 .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-459 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-459 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-459 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-459 .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-459 .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-459 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-459 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-459 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-459 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-459 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-459 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-459 .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-459 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-459 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-459 .navbar-default .navbar-brand:focus,.factory-bootstrap-459 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-459 .navbar-default .navbar-nav>li>a,.factory-bootstrap-459 .navbar-default .navbar-text{color:#777}.factory-bootstrap-459 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-459 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-459 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-459 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-459 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-459 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-459 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-459 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-459 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-459 .navbar-default .navbar-toggle:focus,.factory-bootstrap-459 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-459 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-459 .navbar-default .navbar-collapse,.factory-bootstrap-459 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-459 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-459 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-459 .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-459 .navbar-default .navbar-link{color:#777}.factory-bootstrap-459 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-459 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-459 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-459 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-459 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-459 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-459 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-459 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-459 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-459 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-459 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-459 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-459 .navbar-inverse .navbar-collapse,.factory-bootstrap-459 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-459 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-459 .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-459 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-459 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-459 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-459 .breadcrumb>li{display:inline-block}.factory-bootstrap-459 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-459 .breadcrumb>.active{color:#999}.factory-bootstrap-459 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-459 .pagination>li{display:inline}.factory-bootstrap-459 .pagination>li>a,.factory-bootstrap-459 .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-459 .pagination>li:first-child>a,.factory-bootstrap-459 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-459 .pagination>li:last-child>a,.factory-bootstrap-459 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-459 .pagination>li>a:focus,.factory-bootstrap-459 .pagination>li>a:hover,.factory-bootstrap-459 .pagination>li>span:focus,.factory-bootstrap-459 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-459 .pagination>.disabled>a,.factory-bootstrap-459 .pagination>.disabled>a:focus,.factory-bootstrap-459 .pagination>.disabled>a:hover,.factory-bootstrap-459 .pagination>.disabled>span,.factory-bootstrap-459 .pagination>.disabled>span:focus,.factory-bootstrap-459 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-459 .pagination-lg>li>a,.factory-bootstrap-459 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-459 .pagination-lg>li:first-child>a,.factory-bootstrap-459 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-459 .pagination-lg>li:last-child>a,.factory-bootstrap-459 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-459 .pagination-sm>li>a,.factory-bootstrap-459 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-459 .pagination-sm>li:first-child>a,.factory-bootstrap-459 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-459 .pagination-sm>li:last-child>a,.factory-bootstrap-459 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-459 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-459 .pager:after,.factory-bootstrap-459 .pager:before{display:table;content:" "}.factory-bootstrap-459 .pager:after{clear:both}.factory-bootstrap-459 .pager li{display:inline}.factory-bootstrap-459 .pager li>a,.factory-bootstrap-459 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-459 .pager li>a:focus,.factory-bootstrap-459 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-459 .pager .next>a,.factory-bootstrap-459 .pager .next>span{float:right}.factory-bootstrap-459 .pager .previous>a,.factory-bootstrap-459 .pager .previous>span{float:left}.factory-bootstrap-459 .pager .disabled>a,.factory-bootstrap-459 .pager .disabled>a:focus,.factory-bootstrap-459 .pager .disabled>a:hover,.factory-bootstrap-459 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-459 .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-459 .label[href]:focus,.factory-bootstrap-459 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-459 .label:empty{display:none}.factory-bootstrap-459 .btn .label{position:relative;top:-1px}.factory-bootstrap-459 .label-default{background-color:#999}.factory-bootstrap-459 .label-default[href]:focus,.factory-bootstrap-459 .label-default[href]:hover{background-color:gray}.factory-bootstrap-459 .label-primary{background-color:#428bca}.factory-bootstrap-459 .label-primary[href]:focus,.factory-bootstrap-459 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-459 .label-success{background-color:#5cb85c}.factory-bootstrap-459 .label-success[href]:focus,.factory-bootstrap-459 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-459 .label-info{background-color:#5bc0de}.factory-bootstrap-459 .label-info[href]:focus,.factory-bootstrap-459 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-459 .label-warning{background-color:#f0ad4e}.factory-bootstrap-459 .label-warning[href]:focus,.factory-bootstrap-459 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-459 .label-danger{background-color:#d9534f}.factory-bootstrap-459 .label-danger[href]:focus,.factory-bootstrap-459 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-459 .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-459 .badge:empty{display:none}.factory-bootstrap-459 .btn .badge{position:relative;top:-1px}.factory-bootstrap-459 a.badge:focus,.factory-bootstrap-459 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-459 .nav-pills>.active>a>.badge,.factory-bootstrap-459 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-459 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-459 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-459 .jumbotron .h1,.factory-bootstrap-459 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-459 .jumbotron p{line-height:1.4}.factory-bootstrap-459 .container .jumbotron{border-radius:6px}.factory-bootstrap-459 .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-459 .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-459 .thumbnail a>img,.factory-bootstrap-459 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-459 a.thumbnail.active,.factory-bootstrap-459 a.thumbnail:focus,.factory-bootstrap-459 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-459 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-459 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-459 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-459 .alert .alert-link{font-weight:700}.factory-bootstrap-459 .alert>p,.factory-bootstrap-459 .alert>ul{margin-bottom:0}.factory-bootstrap-459 .alert>p+p{margin-top:5px}.factory-bootstrap-459 .alert-dismissable{padding-right:35px}.factory-bootstrap-459 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-459 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-459 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-459 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-459 .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-459 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-459 .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-459 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-459 .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-459 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-459 .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-459 .media,.factory-bootstrap-459 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-459 .media,.factory-bootstrap-459 .media .media{margin-top:15px}.factory-bootstrap-459 .media:first-child{margin-top:0}.factory-bootstrap-459 .media-object{display:block}.factory-bootstrap-459 .media-heading{margin:0 0 5px}.factory-bootstrap-459 .media>.pull-left{margin-right:10px}.factory-bootstrap-459 .media>.pull-right{margin-left:10px}.factory-bootstrap-459 .media-list{padding-left:0;list-style:none}.factory-bootstrap-459 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-459 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-459 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-459 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-459 .list-group-item>.badge{float:right}.factory-bootstrap-459 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-459 a.list-group-item{color:#555}.factory-bootstrap-459 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-459 a.list-group-item:focus,.factory-bootstrap-459 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-459 a.list-group-item.active,.factory-bootstrap-459 a.list-group-item.active:focus,.factory-bootstrap-459 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-459 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-459 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-459 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-459 a.list-group-item.active .list-group-item-text,.factory-bootstrap-459 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-459 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-459 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-459 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-459 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-459 .panel-body{padding:15px}.factory-bootstrap-459 .panel-body:after,.factory-bootstrap-459 .panel-body:before{display:table;content:" "}.factory-bootstrap-459 .panel-body:after{clear:both}.factory-bootstrap-459 .panel>.list-group{margin-bottom:0}.factory-bootstrap-459 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-459 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-459 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-459 .panel>.table,.factory-bootstrap-459 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-459 .panel>.panel-body+.table,.factory-bootstrap-459 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-459 .panel>.table>tbody:first-child td,.factory-bootstrap-459 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-459 .panel>.table-bordered,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-459 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-459 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-459 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-459 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-459 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-459 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-459 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-459 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-459 .panel-title>a{color:inherit}.factory-bootstrap-459 .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-459 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-459 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-459 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-459 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-459 .panel-group .panel-footer{border-top:0}.factory-bootstrap-459 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-459 .panel-default{border-color:#ddd}.factory-bootstrap-459 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-459 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-459 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-459 .panel-primary{border-color:#428bca}.factory-bootstrap-459 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-459 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-459 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-459 .panel-success{border-color:#d6e9c6}.factory-bootstrap-459 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-459 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-459 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-459 .panel-warning{border-color:#faebcc}.factory-bootstrap-459 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-459 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-459 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-459 .panel-danger{border-color:#ebccd1}.factory-bootstrap-459 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-459 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-459 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-459 .panel-info{border-color:#bce8f1}.factory-bootstrap-459 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-459 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-459 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-459 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-459 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-459 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-459 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-459 .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-459 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-459 .close:focus,.factory-bootstrap-459 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-459 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-459 .modal-open{overflow:hidden}.factory-bootstrap-459 .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-459 .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-459 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-459 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-459 .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-459 .modal-backdrop,.factory-bootstrap-459-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-459 .modal-backdrop.fade,.factory-bootstrap-459-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-459 .modal-backdrop.in,.factory-bootstrap-459-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-459 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-459 .modal-header .close{margin-top:-2px}.factory-bootstrap-459 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-459 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-459 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-459 .modal-footer:after,.factory-bootstrap-459 .modal-footer:before{display:table;content:" "}.factory-bootstrap-459 .modal-footer:after{clear:both}.factory-bootstrap-459 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-459 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-459 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-459 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-459 .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-459 .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-459 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-459 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-459 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-459 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-459 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-459 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-459 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-459 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-459 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-459 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-459 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-459 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-459 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-459 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-459 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-459 .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-459 .popover.top{margin-top:-10px}.factory-bootstrap-459 .popover.right{margin-left:10px}.factory-bootstrap-459 .popover.bottom{margin-top:10px}.factory-bootstrap-459 .popover.left{margin-left:-10px}.factory-bootstrap-459 .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-459 .popover-content{padding:9px 14px}.factory-bootstrap-459 .popover .arrow,.factory-bootstrap-459 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-459 .popover .arrow{border-width:11px}.factory-bootstrap-459 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-459 .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-459 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-459 .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-459 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-459 .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-459 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-459 .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-459 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-459 .carousel{position:relative}.factory-bootstrap-459 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-459 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-459 .carousel-inner>.item>a>img,.factory-bootstrap-459 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-459 .carousel-inner>.active,.factory-bootstrap-459 .carousel-inner>.next,.factory-bootstrap-459 .carousel-inner>.prev{display:block}.factory-bootstrap-459 .carousel-inner>.active{left:0}.factory-bootstrap-459 .carousel-inner>.next,.factory-bootstrap-459 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-459 .carousel-inner>.next{left:100%}.factory-bootstrap-459 .carousel-inner>.prev{left:-100%}.factory-bootstrap-459 .carousel-inner>.next.left,.factory-bootstrap-459 .carousel-inner>.prev.right{left:0}.factory-bootstrap-459 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-459 .carousel-inner>.active.right{left:100%}.factory-bootstrap-459 .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-459 .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-459 .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-459 .carousel-control:focus,.factory-bootstrap-459 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-459 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-459 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-459 .carousel-control .icon-next,.factory-bootstrap-459 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-459 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-459 .carousel-control .icon-prev{left:50%}.factory-bootstrap-459 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-459 .carousel-control .icon-next{right:50%}.factory-bootstrap-459 .carousel-control .icon-next,.factory-bootstrap-459 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-459 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-459 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-459 .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-459 .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-459 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-459 .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-459 .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-459 .clearfix:after,.factory-bootstrap-459 .clearfix:before{display:table;content:" "}.factory-bootstrap-459 .clearfix:after{clear:both}.factory-bootstrap-459 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-459 .pull-right{float:right!important}.factory-bootstrap-459 .pull-left{float:left!important}.factory-bootstrap-459 .hide{display:none!important}.factory-bootstrap-459 .show{display:block!important}.factory-bootstrap-459 .invisible{visibility:hidden}.factory-bootstrap-459 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-459 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-459 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-459 .visible-lg,.factory-bootstrap-459 .visible-md,.factory-bootstrap-459 .visible-sm,.factory-bootstrap-459 .visible-xs,.factory-bootstrap-459 td.visible-lg,.factory-bootstrap-459 td.visible-md,.factory-bootstrap-459 td.visible-sm,.factory-bootstrap-459 td.visible-xs,.factory-bootstrap-459 th.visible-lg,.factory-bootstrap-459 th.visible-md,.factory-bootstrap-459 th.visible-sm,.factory-bootstrap-459 th.visible-xs,.factory-bootstrap-459 tr.visible-lg,.factory-bootstrap-459 tr.visible-md,.factory-bootstrap-459 tr.visible-sm,.factory-bootstrap-459 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-459 .hidden-xs{display:block!important}.factory-bootstrap-459 table.hidden-xs{display:table}.factory-bootstrap-459 tr.hidden-xs{display:table-row!important}.factory-bootstrap-459 td.hidden-xs,.factory-bootstrap-459 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-459 .hidden-sm{display:block!important}.factory-bootstrap-459 table.hidden-sm{display:table}.factory-bootstrap-459 tr.hidden-sm{display:table-row!important}.factory-bootstrap-459 td.hidden-sm,.factory-bootstrap-459 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-459 .hidden-md{display:block!important}.factory-bootstrap-459 table.hidden-md{display:table}.factory-bootstrap-459 tr.hidden-md{display:table-row!important}.factory-bootstrap-459 td.hidden-md,.factory-bootstrap-459 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-459 .hidden-lg{display:block!important}.factory-bootstrap-459 table.hidden-lg{display:table}.factory-bootstrap-459 tr.hidden-lg{display:table-row!important}.factory-bootstrap-459 td.hidden-lg,.factory-bootstrap-459 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-459 .hidden-lg.hidden-xs,.factory-bootstrap-459 td.hidden-lg.hidden-xs,.factory-bootstrap-459 th.hidden-lg.hidden-xs,.factory-bootstrap-459 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-459 .hidden-lg.hidden-sm,.factory-bootstrap-459 td.hidden-lg.hidden-sm,.factory-bootstrap-459 th.hidden-lg.hidden-sm,.factory-bootstrap-459 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-459 .hidden-lg.hidden-md,.factory-bootstrap-459 td.hidden-lg.hidden-md,.factory-bootstrap-459 th.hidden-lg.hidden-md,.factory-bootstrap-459 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-459 .hidden-lg,.factory-bootstrap-459 td.hidden-lg,.factory-bootstrap-459 th.hidden-lg,.factory-bootstrap-459 tr.hidden-lg{display:none!important}}.factory-bootstrap-459 .visible-print,.factory-bootstrap-459 td.visible-print,.factory-bootstrap-459 th.visible-print,.factory-bootstrap-459 tr.visible-print{display:none!important}@media print{.factory-bootstrap-459 .visible-print{display:block!important}.factory-bootstrap-459 table.visible-print{display:table}.factory-bootstrap-459 tr.visible-print{display:table-row!important}.factory-bootstrap-459 td.visible-print,.factory-bootstrap-459 th.visible-print{display:table-cell!important}.factory-bootstrap-459 .hidden-print,.factory-bootstrap-459 td.hidden-print,.factory-bootstrap-459 th.hidden-print,.factory-bootstrap-459 tr.hidden-print{display:none!important}}.factory-bootstrap-459 .btn-danger,.factory-bootstrap-459 .btn-default,.factory-bootstrap-459 .btn-info,.factory-bootstrap-459 .btn-primary,.factory-bootstrap-459 .btn-success,.factory-bootstrap-459 .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-459 .btn-danger.active,.factory-bootstrap-459 .btn-danger:active,.factory-bootstrap-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active,.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active,.factory-bootstrap-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active,.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active,.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .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-459 .btn.active,.factory-bootstrap-459 .btn:active{background-image:none}.factory-bootstrap-459 .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-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-459 .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-459 .btn-gold:focus,.factory-bootstrap-459 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-459 .btn-gold.active,.factory-bootstrap-459 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-459 .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-459 .btn-success:focus,.factory-bootstrap-459 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-459 .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-459 .btn-warning:focus,.factory-bootstrap-459 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-459 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-459 .btn-danger.active,.factory-bootstrap-459 .btn-danger:active,.factory-bootstrap-459 .btn-danger:focus,.factory-bootstrap-459 .btn-danger:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-459 .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-459 .btn-info:focus,.factory-bootstrap-459 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-459 .img-thumbnail,.factory-bootstrap-459 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-459 .dropdown-menu>li>a:focus,.factory-bootstrap-459 .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-459 .dropdown-menu>.active>a,.factory-bootstrap-459 .dropdown-menu>.active>a:focus,.factory-bootstrap-459 .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-459 .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-459 .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-459 .navbar-brand,.factory-bootstrap-459 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-459 .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-459 .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-459 .navbar-inverse .navbar-brand,.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-459 .navbar-fixed-bottom,.factory-bootstrap-459 .navbar-fixed-top,.factory-bootstrap-459 .navbar-static-top{border-radius:0}.factory-bootstrap-459 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-459 .alert .actions{padding-top:10px}.factory-bootstrap-459 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-459 .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-459 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-459 .alert-normal,.factory-bootstrap-459 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-459 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-459 .alert-danger a:not(.btn),.factory-bootstrap-459 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .list-group-item.active,.factory-bootstrap-459 .list-group-item.active:focus,.factory-bootstrap-459 .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-459 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-459 .factory-hidden{display:none}.factory-bootstrap-459 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-454 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-454 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-454 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-454 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-459 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-459 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-459 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-459 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .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-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-454 .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-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-454 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-454 .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-454 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-454 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-454 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-454 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-454 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-454 .factory-form-group legend+.control-group{margin-top:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-459 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-459 .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-459 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-459 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-459 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-459 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-459 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-459 .factory-form-group legend+.control-group{margin-top:0}
libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-454 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-454 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-454 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-454 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-454 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-454 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
8
  */
9
 
10
 
11
+ .factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-459 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-459 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-459 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-459 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-459 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-459 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .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-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-454 .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-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .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-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-454 .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-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .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-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-454 .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-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .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-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-454 .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-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-454 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-454 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-454 .nav-tabs a{text-decoration:none}.factory-bootstrap-454 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-454 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-454 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-454 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-454 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-454 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-454 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-454 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-454 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-454 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-454 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-454 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-454 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-454 .factory-align-vertical .control-group textarea{width:90%}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-459 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-459 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-459 .nav-tabs a{text-decoration:none}.factory-bootstrap-459 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-459 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-459 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-459 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-459 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-459 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-459 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-459 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-459 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-459 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-459 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-459 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-459 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-459 .factory-align-vertical .control-group textarea{width:90%}
libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 .wp-editor-wrap .button,.factory-bootstrap-454 .wp-editor-wrap input,.factory-bootstrap-454 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-454 .switch-html,.factory-bootstrap-454 .switch-tmce{color:#777}.factory-bootstrap-454 .html-active .switch-html,.factory-bootstrap-454 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-454 .switch-html:hover,.factory-bootstrap-454 .switch-tmce:hover{color:#777}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-459 .wp-editor-wrap .button,.factory-bootstrap-459 .wp-editor-wrap input,.factory-bootstrap-459 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-459 .switch-html,.factory-bootstrap-459 .switch-tmce{color:#777}.factory-bootstrap-459 .html-active .switch-html,.factory-bootstrap-459 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-459 .switch-html:hover,.factory-bootstrap-459 .switch-tmce:hover{color:#777}
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- #side-sortables .factory-bootstrap-454 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-454 .factory-checkbox-disabled button,.factory-bootstrap-454 .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-454 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-454 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-454 .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-454 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-454 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
8
  */
9
 
10
 
11
+ #side-sortables .factory-bootstrap-459 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-459 .factory-checkbox-disabled button,.factory-bootstrap-459 .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-459 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-459 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-459 .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-459 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-459 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-454 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-454 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-454 .iris-picker{margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-459 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-459 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-459 .iris-picker{margin-top:10px}
libs/factory/bootstrap/assets/css-min/control.color.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-color{position:relative}.factory-bootstrap-454 .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-454 .factory-color .factory-background,.factory-bootstrap-454 .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-454 .factory-color .factory-background{z-index:2;border-radius:3px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-color{position:relative}.factory-bootstrap-459 .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-459 .factory-color .factory-background,.factory-bootstrap-459 .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-459 .factory-color .factory-background{z-index:2;border-radius:3px}
libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-454 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-454 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-459 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-459 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-454 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-454 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-454 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-454 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-454 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-459 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-459 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-459 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-459 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-459 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
libs/factory/bootstrap/assets/css-min/control.fonts.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-454 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-454 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-454 .iris-picker{margin-top:10px}.factory-bootstrap-454 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-454 .factory-font .chosen-results{max-height:150px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-459 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-459 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-459 .iris-picker{margin-top:10px}.factory-bootstrap-459 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-459 .factory-font .chosen-results{max-height:150px}
libs/factory/bootstrap/assets/css-min/control.list.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-454 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-454 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-454 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-454 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-454 .factory-list .factory-error-text,.factory-bootstrap-454 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-454 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-454 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-454 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-454 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-454 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-454 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-459 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-459 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-459 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-459 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-459 .factory-list .factory-error-text,.factory-bootstrap-459 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-459 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-459 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-459 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-459 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-459 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-459 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-454 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-454 .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-454 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-454 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-454 .factory-mtextbox-add-item{display:block;margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-459 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-459 .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-459 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-459 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-459 .factory-mtextbox-add-item{display:block;margin-top:10px}
libs/factory/bootstrap/assets/css-min/control.pattern.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-454 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-454 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-454 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-454 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-454 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-454 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-454 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-454 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-454 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-454 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-454 .factory-pattern .factory-color,.factory-bootstrap-454 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-454 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-454 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-454 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-454 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-454 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-454 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-454 .factory-pattern .factory-patterns-item,.factory-bootstrap-454 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-454 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-454 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-454 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-454 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-454 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-454 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-454 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-454 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-454 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-454 .factory-pattern .factory-change-color-btn{margin-left:5px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-459 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-459 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-459 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-459 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-459 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-459 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-459 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-459 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-459 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-459 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-459 .factory-pattern .factory-color,.factory-bootstrap-459 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-459 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-459 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-459 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-459 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-459 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-459 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-459 .factory-pattern .factory-patterns-item,.factory-bootstrap-459 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-459 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-459 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-459 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-459 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-459 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-459 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-459 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-459 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-459 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-459 .factory-pattern .factory-change-color-btn{margin-left:5px}
libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-from-radio-label,.factory-bootstrap-454 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-454 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-454 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-454 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-454 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-454 .factory-radio-color{opacity:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-from-radio-label,.factory-bootstrap-459 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-459 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-459 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-459 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-459 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-459 .factory-radio-color{opacity:0}
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-454 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-454 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-454 .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-454 .factory-tab .factory-more-link-hide:hover{color:#999}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-459 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-459 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-459 .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-459 .factory-tab .factory-more-link-hide:hover{color:#999}
libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-454 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-454 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-454 .factory-point,.factory-bootstrap-454 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-454 .factory-point-color{border-radius:0}.factory-bootstrap-454 .factory-point{background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-454 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-454 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-454 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-454 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-454 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-454 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-454 .factory-preset-gradient,.factory-bootstrap-454 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-454 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-454 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-454 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-454 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-454 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-454 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-454 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-454 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-454 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-459 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-459 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-459 .factory-point,.factory-bootstrap-459 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-459 .factory-point-color{border-radius:0}.factory-bootstrap-459 .factory-point{background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-459 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-459 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-459 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-459 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-459 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-459 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-459 .factory-preset-gradient,.factory-bootstrap-459 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-459 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-459 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-459 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-459 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-459 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-459 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-459 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-459 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-459 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-454 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-454 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-454 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-454 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-454 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-454 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-454 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-454 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-454 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-454 .factory-paddings-editor .factory-side-left,.factory-bootstrap-454 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-454 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-454 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-459 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-459 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-459 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-459 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-459 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-459 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-459 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-459 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-459 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-459 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-459 .factory-paddings-editor .factory-side-left,.factory-bootstrap-459 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-459 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-459 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a,b,c,d){"use strict";a.fn.factoryBootstrap454_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-454 .factory-accordion").factoryBootstrap454_accordion()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";a.fn.factoryBootstrap459_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-459 .factory-accordion").factoryBootstrap459_accordion()})}(jQuery,window,document);
libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- +function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.factoryBootstrap454_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap454_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ +function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.factoryBootstrap459_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap459_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
  !function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
11
- return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.factoryBootstrap454_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap454_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap454_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap454_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-454 .factory-datetimepicker").factoryBootstrap454_DatetimePickerControl(),a(".factory-bootstrap-454 .factory-datetimepicker-range-0").factoryBootstrap454_DatetimePickerControl(),a(".factory-bootstrap-454 .factory-datetimepicker-range-1").factoryBootstrap454_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-454 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-454 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-454 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-454 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
8
  */
9
 
10
  !function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
11
+ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.factoryBootstrap459_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap459_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap459_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap459_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-459 .factory-datetimepicker").factoryBootstrap459_DatetimePickerControl(),a(".factory-bootstrap-459 .factory-datetimepicker-range-0").factoryBootstrap459_DatetimePickerControl(),a(".factory-bootstrap-459 .factory-datetimepicker-range-1").factoryBootstrap459_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-459 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-459 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-459 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-459 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- +function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap454_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.factoryBootstrap454_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ +function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap459_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.factoryBootstrap459_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- +function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-454-modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.factoryBootstrap454_modal;a.fn.factoryBootstrap454_modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.factoryBootstrap454_modal.Constructor=b,a.fn.factoryBootstrap454_modal.noConflict=function(){return a.fn.factoryBootstrap454_modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="factory-modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("factory-modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.factoryBootstrap454_modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ +function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-459-modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.factoryBootstrap459_modal;a.fn.factoryBootstrap459_modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.factoryBootstrap459_modal.Constructor=b,a.fn.factoryBootstrap459_modal.noConflict=function(){return a.fn.factoryBootstrap459_modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="factory-modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("factory-modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.factoryBootstrap459_modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.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.factoryBootstrap454_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.factoryBootstrap454_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-checkbox.factory-buttons-way").factoryBootstrap454_checkboxControl(),a(".factory-bootstrap-454 .factory-checkbox").not(".factory-buttons-way").click(function(){a(this).prop("checked")?a(this).val(1):a(this).val(0)})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap459_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.factoryBootstrap459_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-checkbox.factory-buttons-way").factoryBootstrap459_checkboxControl(),a(".factory-bootstrap-459 .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-and-opacity.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a,b){a(function(){a(function(){a(".factory-bootstrap-454 .factory-color-and-opacity").each(function(){var b=a(this),c=b.find(".factory-color"),d=b.find(".factory-integer");d.change(function(){var a=d.find(".factory-result").val()/100;c.find(".factory-background").css("opacity",a)}),d.change(),d.on("click.color.factory",function(a){a.stopPropagation()})})})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b){a(function(){a(function(){a(".factory-bootstrap-459 .factory-color-and-opacity").each(function(){var b=a(this),c=b.find(".factory-color"),d=b.find(".factory-integer");d.change(function(){var a=d.find(".factory-result").val()/100;c.find(".factory-background").css("opacity",a)}),d.change(),d.on("click.color.factory",function(a){a.stopPropagation()})})})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.color.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){a.widget("factoryBootstrap454.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.factoryBootstrap454_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap454_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap454_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap454_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap454_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("factoryBootstrap454_colorControl",a.factoryBootstrap454.colorControl),a(".factory-bootstrap-454 .factory-color").factoryBootstrap454_colorControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap459.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.factoryBootstrap459_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap459_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap459_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap459_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap459_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("factoryBootstrap459_colorControl",a.factoryBootstrap459.colorControl),a(".factory-bootstrap-459 .factory-color").factoryBootstrap459_colorControl({})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.factoryBootstrap454_dropdownAndColors=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdownAndColors.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdownAndColors.control");d||c.data("factory.dropdownAndColors.control",d=new b(this))})},a.fn.factoryBootstrap454_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-dropdown-and-colors").factoryBootstrap454_dropdownAndColors()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.factoryBootstrap459_dropdownAndColors=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdownAndColors.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdownAndColors.control");d||c.data("factory.dropdownAndColors.control",d=new b(this))})},a.fn.factoryBootstrap459_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-dropdown-and-colors").factoryBootstrap459_dropdownAndColors()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap454_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.factoryBootstrap454_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-dropdown").factoryBootstrap454_dropdownControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap459_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.factoryBootstrap459_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-dropdown").factoryBootstrap459_dropdownControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.fonts.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){a.widget("factoryBootstrap454.fontControl",{_create:function(){this.$element=this.element,this.$family=this.$element.find(".factory-family-wrap select"),this.$googleFontData=this.$element.find(".factory-google-font-data"),this.fontSelectorName=this.$family.attr("name"),this.googleFontsOptions={frameName:this.element.data("google-fonts-frame-name")},this.googleFontsOptions.frameName||(this.googleFontsOptions.frameName="preview"),this._initUI(),this._bindEvents()},_initUI:function(){this.$family.chosen()},_bindEvents:function(){var a=this;this.$family.change(function(b){var c=a._getCurrentOption(),d=c.data("google-font");if(d){var e=c.data("family"),f=c.data("variants").split(","),g=c.data("subsets").split(",");a._loadGoogleFont(e,f,g)}else a.$googleFontData.val("")})},_getCurrentOption:function(){var a=this.$family.val();return this._getOptionByValue(a)},_getOptionByValue:function(a){var b=this.$family.find("option[value='"+a+"']");return b},_loadGoogleFont:function(b,c,d){var c=this._filterGoogleFontVariantsBeforeLoading(b,c,d),d=this._filterGoogleFontSubsetsBeforeLoading(b,c,d);this.$googleFontData.val(this._encode64(JSON.stringify({name:b,styles:c,subsets:d})));var e=this._getTargetToLoadGoogleFont(),f=this.fontSelectorName+"-font-loader",g=e.find("#"+f);e.find("#"+f).length>0&&g.remove();var h="http://fonts.googleapis.com/css";c&&c.length&&(b=b+":"+c.join(",")),h=h+"?family="+b,d&&d.length&&(h=h+"&subset="+d.join(",")),a('<link id="'+f+'" rel="stylesheet" type="text/css" href="'+h+'" >').appendTo(e)},_filterGoogleFontVariantsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-variants",[c,e.$element,b,d]),c},_filterGoogleFontSubsetsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-subsets",[d,e.$element,c,d]),d},_getTargetToLoadGoogleFont:function(){var b=this.googleFontsOptions.frameName,c=a("head");if(b){var d=a('iframe[name="'+b+'"]');if(0===d.length)return console.error("The preview container not found.");c=d.contents().find("head")}return c},_base64KeyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_encode64:function(a){a=escape(a);var b,c,d,e,f,g="",h="",i="",j=0;do b=a.charCodeAt(j++),c=a.charCodeAt(j++),h=a.charCodeAt(j++),d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this._base64KeyStr.charAt(d)+this._base64KeyStr.charAt(e)+this._base64KeyStr.charAt(f)+this._base64KeyStr.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g}}),a(function(){a.widget.bridge("factoryBootstrap454_fontControl",a.factoryBootstrap454.fontControl),a(".factory-bootstrap-454 .factory-font").factoryBootstrap454_fontControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap459.fontControl",{_create:function(){this.$element=this.element,this.$family=this.$element.find(".factory-family-wrap select"),this.$googleFontData=this.$element.find(".factory-google-font-data"),this.fontSelectorName=this.$family.attr("name"),this.googleFontsOptions={frameName:this.element.data("google-fonts-frame-name")},this.googleFontsOptions.frameName||(this.googleFontsOptions.frameName="preview"),this._initUI(),this._bindEvents()},_initUI:function(){this.$family.chosen()},_bindEvents:function(){var a=this;this.$family.change(function(b){var c=a._getCurrentOption(),d=c.data("google-font");if(d){var e=c.data("family"),f=c.data("variants").split(","),g=c.data("subsets").split(",");a._loadGoogleFont(e,f,g)}else a.$googleFontData.val("")})},_getCurrentOption:function(){var a=this.$family.val();return this._getOptionByValue(a)},_getOptionByValue:function(a){var b=this.$family.find("option[value='"+a+"']");return b},_loadGoogleFont:function(b,c,d){var c=this._filterGoogleFontVariantsBeforeLoading(b,c,d),d=this._filterGoogleFontSubsetsBeforeLoading(b,c,d);this.$googleFontData.val(this._encode64(JSON.stringify({name:b,styles:c,subsets:d})));var e=this._getTargetToLoadGoogleFont(),f=this.fontSelectorName+"-font-loader",g=e.find("#"+f);e.find("#"+f).length>0&&g.remove();var h="http://fonts.googleapis.com/css";c&&c.length&&(b=b+":"+c.join(",")),h=h+"?family="+b,d&&d.length&&(h=h+"&subset="+d.join(",")),a('<link id="'+f+'" rel="stylesheet" type="text/css" href="'+h+'" >').appendTo(e)},_filterGoogleFontVariantsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-variants",[c,e.$element,b,d]),c},_filterGoogleFontSubsetsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-subsets",[d,e.$element,c,d]),d},_getTargetToLoadGoogleFont:function(){var b=this.googleFontsOptions.frameName,c=a("head");if(b){var d=a('iframe[name="'+b+'"]');if(0===d.length)return console.error("The preview container not found.");c=d.contents().find("head")}return c},_base64KeyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_encode64:function(a){a=escape(a);var b,c,d,e,f,g="",h="",i="",j=0;do b=a.charCodeAt(j++),c=a.charCodeAt(j++),h=a.charCodeAt(j++),d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this._base64KeyStr.charAt(d)+this._base64KeyStr.charAt(e)+this._base64KeyStr.charAt(f)+this._base64KeyStr.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g}}),a(function(){a.widget.bridge("factoryBootstrap459_fontControl",a.factoryBootstrap459.fontControl),a(".factory-bootstrap-459 .factory-font").factoryBootstrap459_fontControl({})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.gradient.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.factoryBootstrap454_gradientControl=function(c){return this.each(function(){var d=a(this),e=d.data("factory.gradient-control");e||d.data("factory.gradient-control",e=new b(this)),"string"==typeof c&&e[c].call(e)})},a.fn.factoryBootstrap454_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-gradient").factoryBootstrap454_gradientControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.factoryBootstrap459_gradientControl=function(c){return this.each(function(){var d=a(this),e=d.data("factory.gradient-control");e||d.data("factory.gradient-control",e=new b(this)),"string"==typeof c&&e[c].call(e)})},a.fn.factoryBootstrap459_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-gradient").factoryBootstrap459_gradientControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.integer.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.factoryBootstrap454_integerControl=function(c){if("string"==typeof c){var d=a(this).data("factory.integer-control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.integer-control");d||c.data("factory.integer-control",d=new b(this))})},a.fn.factoryBootstrap454_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-integer").factoryBootstrap454_integerControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.factoryBootstrap459_integerControl=function(c){if("string"==typeof c){var d=a(this).data("factory.integer-control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.integer-control");d||c.data("factory.integer-control",d=new b(this))})},a.fn.factoryBootstrap459_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-integer").factoryBootstrap459_integerControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.list.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap454_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.factoryBootstrap454_listControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-list").factoryBootstrap454_listControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap459_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.factoryBootstrap459_listControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-list").factoryBootstrap459_listControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap454_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-454 .factory-multiple-textbox-group").factoryBootstrap454_MultipleTextboxControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap459_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-459 .factory-multiple-textbox-group").factoryBootstrap459_MultipleTextboxControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.pattern.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){a.widget("factoryBootstrap454.patternControl",{_create:function(){this.$element=this.element,this.$preview=this.$element.find(".factory-preview"),this.$patternResult=this.$element.find(".factory-pattern-result"),this.$colorResult=this.$element.find(".factory-color-result"),this.$patterns=this.$element.find(".factory-patterns-panel"),this.$patternItems=this.$element.find(".factory-patterns-item"),this.$btnUpload=this.$element.find(".factory-upload-btn"),this.$btnChangeColor=this.$element.find(".factory-change-color-btn"),this.$colorPanel=this.$element.find(".factory-color-panel"),this.$colorContol=this.$element.find(".factory-color"),this._initMainPanel(),this._initColorPickerPanel(),this._initPatternsPanel()},_initMainPanel:function(){var a=this;this.$preview.on("click",function(){return a.togglePatternsPanel(),!1}),this.$btnChangeColor.on("click",function(){return a.toggleColorPanel(),!1})},togglePatternsPanel:function(){this.$element.hasClass("factory-patterns-panel-active")?this.hidePatternsPanel():this.showPatternsPanel()},hidePatternsPanel:function(){this.$element.removeClass("factory-patterns-panel-active")},showPatternsPanel:function(){this.$element.addClass("factory-patterns-panel-active")},hasColor:function(){return this.$element.hasClass("factory-color-panel-active")},toggleColorPanel:function(){this.hasColor()?this.hideColorPanel():this.showColorPanel()},hideColorPanel:function(){this.$element.removeClass("factory-color-panel-active"),this.$btnChangeColor.removeClass("button-active"),this.$colorResult.val(""),this.$colorResult.trigger("change"),this.$element.trigger("change")},showColorPanel:function(){this.$element.addClass("factory-color-panel-active"),this.$btnChangeColor.addClass("button-active"),this.$colorResult.val(this.$colorContol.factoryBootstrap454_colorControl("getValue")),this.$colorResult.trigger("change"),this.$element.trigger("change")},_initColorPickerPanel:function(){var a=this;this.$colorContol.bind("updated.color.factory",function(b,c){return a.$colorResult.val(c),!1})},_initPatternsPanel:function(){var b=this,c=!0,d=wp.media.editor.send.attachment;this.$btnUpload.on("click",function(){return c=!0,wp.media.editor.send.attachment=function(a,e){return c?(b.$preview.css({background:"url("+e.url+") repeat",border:"0",fontSize:"0"}),void b.$patternResult.attr("value",e.url).trigger("change")):d.apply(this,[a,e])},wp.media.editor.open(b.$btnUpload),a(".add_media").on("click",function(){c=!1}),!1}),this.$patternItems.on("click",function(){if(a(this).data("pattern")){var c=a(this).data("pattern");b.$preview.removeClass("factory-empty"),b.$preview.css({background:"url("+c+") repeat"}),b.$patternResult.attr("value",c).trigger("change")}})}}),a(function(){a.widget.bridge("factoryBootstrap454_patternControl",a.factoryBootstrap454.patternControl),a(".factory-bootstrap-454 .factory-pattern").factoryBootstrap454_patternControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap459.patternControl",{_create:function(){this.$element=this.element,this.$preview=this.$element.find(".factory-preview"),this.$patternResult=this.$element.find(".factory-pattern-result"),this.$colorResult=this.$element.find(".factory-color-result"),this.$patterns=this.$element.find(".factory-patterns-panel"),this.$patternItems=this.$element.find(".factory-patterns-item"),this.$btnUpload=this.$element.find(".factory-upload-btn"),this.$btnChangeColor=this.$element.find(".factory-change-color-btn"),this.$colorPanel=this.$element.find(".factory-color-panel"),this.$colorContol=this.$element.find(".factory-color"),this._initMainPanel(),this._initColorPickerPanel(),this._initPatternsPanel()},_initMainPanel:function(){var a=this;this.$preview.on("click",function(){return a.togglePatternsPanel(),!1}),this.$btnChangeColor.on("click",function(){return a.toggleColorPanel(),!1})},togglePatternsPanel:function(){this.$element.hasClass("factory-patterns-panel-active")?this.hidePatternsPanel():this.showPatternsPanel()},hidePatternsPanel:function(){this.$element.removeClass("factory-patterns-panel-active")},showPatternsPanel:function(){this.$element.addClass("factory-patterns-panel-active")},hasColor:function(){return this.$element.hasClass("factory-color-panel-active")},toggleColorPanel:function(){this.hasColor()?this.hideColorPanel():this.showColorPanel()},hideColorPanel:function(){this.$element.removeClass("factory-color-panel-active"),this.$btnChangeColor.removeClass("button-active"),this.$colorResult.val(""),this.$colorResult.trigger("change"),this.$element.trigger("change")},showColorPanel:function(){this.$element.addClass("factory-color-panel-active"),this.$btnChangeColor.addClass("button-active"),this.$colorResult.val(this.$colorContol.factoryBootstrap459_colorControl("getValue")),this.$colorResult.trigger("change"),this.$element.trigger("change")},_initColorPickerPanel:function(){var a=this;this.$colorContol.bind("updated.color.factory",function(b,c){return a.$colorResult.val(c),!1})},_initPatternsPanel:function(){var b=this,c=!0,d=wp.media.editor.send.attachment;this.$btnUpload.on("click",function(){return c=!0,wp.media.editor.send.attachment=function(a,e){return c?(b.$preview.css({background:"url("+e.url+") repeat",border:"0",fontSize:"0"}),void b.$patternResult.attr("value",e.url).trigger("change")):d.apply(this,[a,e])},wp.media.editor.open(b.$btnUpload),a(".add_media").on("click",function(){c=!1}),!1}),this.$patternItems.on("click",function(){if(a(this).data("pattern")){var c=a(this).data("pattern");b.$preview.removeClass("factory-empty"),b.$preview.css({background:"url("+c+") repeat"}),b.$patternResult.attr("value",c).trigger("change")}})}}),a(function(){a.widget.bridge("factoryBootstrap459_patternControl",a.factoryBootstrap459.patternControl),a(".factory-bootstrap-459 .factory-pattern").factoryBootstrap459_patternControl({})})}(jQuery);
libs/factory/bootstrap/assets/js-min/holder.more-link.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a,b,c,d){"use strict";var e="factoryBootstrap454_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-454 .factory-more-link").factoryBootstrap454_moreLink()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";var e="factoryBootstrap459_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-459 .factory-more-link").factoryBootstrap459_moreLink()})}(jQuery,window,document);
libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.factoryBootstrap454_iris({width:217,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(b,c){a.currentPoint.updateColor(c.color.toString()),a._colorLock||a.$colorHex.val(c.color.toString())}}),a.$colorHex.on("change paste keyup",function(){a._colorLock=!0,a.$colorPicker.factoryBootstrap454_iris("color",a.$colorHex.val()),a._cancelColorLock()}),this.$opacitySlider.noUiSlider({start:100,range:{min:0,max:100},step:1}),this.$opacitySlider.on("slide",function(){var b=parseInt(a.$opacitySlider.val()),c=b+"%";a.$opacitySliderContainer.find(".factory-visible-value").text(c),a.currentPoint.updateOpacity(b/100)}),this.$opacitySlider.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},_repeatColorLock:!1,_colorLock:!1,_colorLockTimer:!1,_cancelColorLock:function(a){var b=this;return b._colorLockTimer&&!a?(this._repeatColorLock=!0,!1):void(this._colorLockTimer=setTimeout(function(){return b._repeatColorLock?(b._repeatColorLock=!1,b._cancelColorLock(!0),!1):(b._colorLock=!1,b._colorLockTimer=!1,void(b._repeatColorLock=!1))},500))},_createDirectionDropdown:function(){var a=this,b=factory&&factory.res&&factory.res.resVertical||"vertical",c=factory&&factory.res&&factory.res.resHorizontal||"horizontal";this.$directionDropdown=$('<select class="gradientPicker-filldirection"><option value="vertical"'+("top"===a.opts.fillDirection?" selected":"")+">"+b+'</option><option value="horizontal"'+("left"===a.opts.fillDirection?" selected":"")+">"+c+"</option></select>"),this.$el.append(this.$directionDropdown),this.$directionDropdown.chosen(),this.$directionDropdown.change(function(){a.setGradientDirection($(this).val())})},showColorPicker:function(a){this.currentPoint=a,$(".factory-current-point").removeClass("factory-current-point"),a.$el.addClass("factory-current-point"),this.$colorPickerContainer.show(),this.$colorPicker.factoryBootstrap454_iris("show"),this.$colorPicker.factoryBootstrap454_iris("option","color",a.color),this.$opacitySlider.val(100*a.opacity),this.$opacitySlider.trigger("slide")},hideColorPicker:function(){$(".factory-current-point").removeClass("factory-current-point"),this.currentPoint=!1,this.$colorPickerContainer.hide()},isColorPickerShown:function(){return this.currentPoint},docClicked:function(){$(".gradientPicker-iris-wrap").hide(),$(".gradientPicker-ctrlPt").removeClass("open")},createCtrlPt:function(a){return new ControlPoint(this,a,this.opts.orientation)},updateOptions:function(a,b){if($.extend(this.opts,a),b){this.controlPoints=[],this.$pointsContainer.html("");for(var c=0;c<this.opts.controlPoints.length;++c){var d=this.createCtrlPt(this.opts.controlPoints[c]);this.controlPoints.push(d)}}switch(this.updatePreview(),this.opts.fillDirection){case"top":fillDirectCheck="horizontal";break;case"left":fillDirectCheck="vertical";break;default:fillDirectCheck=!1}fillDirectCheck&&$(".gradientPicker-filldirection",this.$el).find('option[value="'+fillDirectCheck+'"]').prop("selected",!0)},updatePreview:function(){var a=[];if(this.controlPoints.sort(ctrlPtComparator),this.g2d.clearRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),"horizontal"===this.opts.orientation)for(var b=this.g2d.createLinearGradient(0,0,this.g2d.canvas.width,0),c=0;c<this.controlPoints.length;++c){var d=this.controlPoints[c];b.addColorStop(d.position,"rgba("+hexToRgb(d.color).r+","+hexToRgb(d.color).g+","+hexToRgb(d.color).b+", "+d.opacity+")"),a.push({position:d.position,color:d.color,opacity:d.opacity})}if(this.g2d.fillStyle=b,this.g2d.fillRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),this.opts.generateStyles)var e=this._generatePreviewStyles();this.opts.change(a,e)},removeControlPoint:function(a){var b=this.controlPoints.indexOf(a);-1!=b&&(this.controlPoints.splice(b,1),a.$el.remove())},placePoint:function(a){a.stopPropagation();var b=$(a.target).offset(),c=a.pageX-b.left,d=a.pageY-b.top,e=this.g2d.getImageData(c,d,1,1),f="rgb("+e.data[0]+","+e.data[1]+","+e.data[2]+")",g=1/255*e.data[3],h=this.createCtrlPt({position:c/this.g2d.canvas.width,color:rgb2hex(f),opacity:g});this.controlPoints.push(h),this.controlPoints.sort(ctrlPtComparator),this.showColorPicker(h)},setGradient:function(a){this.updateOptions({controlPoints:a},!0),this.updatePreview()},setGradientDirection:function(a){switch(a){case"horizontal":this.updateOptions({type:"linear",fillDirection:"top"},!1);break;case"vertical":this.updateOptions({type:"linear",fillDirection:"left"},!1)}},_generatePreviewStyles:function(){var a={};a.filldirection=this.opts.fillDirection,a.color_points=[];for(var b=0;b<this.controlPoints.length;++b){var c=this.controlPoints[b];a.color_points.push(c.color+" "+(100*c.position|0)+"% "+c.opacity)}return JSON.stringify(a)},_genPalletsBackground:function(a,b){return cssRules="linear-gradient(90deg, "+a+" 0%, "+b+" 100%)",agent.indexOf("WebKit")>=0?crossBrowserRule=browserPrefix[0]+cssRules:agent.indexOf("Mozilla")>=0?crossBrowserRule=browserPrefix[1]+cssRules:agent.indexOf("Microsoft")>=0?crossBrowserRule=browserPrefix[2]+cssRules:crossBrowserRule=cssRules,crossBrowserRule}},ControlPoint.prototype={updateColor:function(a){this.color=a,this.$pointColor.css("background-color",a),this.parent.updatePreview()},updateOpacity:function(a){this.opacity=a,this.$pointColor.css("opacity",a),this.parent.updatePreview()},drag:function(e,ui){var stopPointPosition=eval(this.$el.parent().offset().top+this.$el.parent().height()+20);e.pageY>stopPointPosition&&this.remove();var left=ui.position.left;this.position=left/(this.$container.width()-this.outerWidth),this.parent.updatePreview()},stop:function(){this.parent.updatePreview()},remove:function(){this.parent.removeControlPoint(this),this.parent.hideColorPicker(),this.parent.updatePreview()}};var methods={init:function(a){a=$.extend({controlPoints:["#FFF 0% 1","#000 100% 1"],orientation:"horizontal",type:"linear",fillDirection:"left",generateStyles:!0,change:function(){}},a),this.each(function(){var b=$(this),c=new GradientSelection(b,a);b.data("gradientPicker-sel",c)})},update:function(a){this.each(function(){var b=$(this),c=b.data("gradientPicker-sel");null!=c&&c.updateOptions(a,!0)})}};$.fn.gradientPicker=function(a,b){"string"==typeof a&&"init"!==a?methods[a].call(this,b):(b=a,methods.init.call(this,b))}}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.factoryBootstrap459_iris({width:217,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(b,c){a.currentPoint.updateColor(c.color.toString()),a._colorLock||a.$colorHex.val(c.color.toString())}}),a.$colorHex.on("change paste keyup",function(){a._colorLock=!0,a.$colorPicker.factoryBootstrap459_iris("color",a.$colorHex.val()),a._cancelColorLock()}),this.$opacitySlider.noUiSlider({start:100,range:{min:0,max:100},step:1}),this.$opacitySlider.on("slide",function(){var b=parseInt(a.$opacitySlider.val()),c=b+"%";a.$opacitySliderContainer.find(".factory-visible-value").text(c),a.currentPoint.updateOpacity(b/100)}),this.$opacitySlider.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},_repeatColorLock:!1,_colorLock:!1,_colorLockTimer:!1,_cancelColorLock:function(a){var b=this;return b._colorLockTimer&&!a?(this._repeatColorLock=!0,!1):void(this._colorLockTimer=setTimeout(function(){return b._repeatColorLock?(b._repeatColorLock=!1,b._cancelColorLock(!0),!1):(b._colorLock=!1,b._colorLockTimer=!1,void(b._repeatColorLock=!1))},500))},_createDirectionDropdown:function(){var a=this,b=factory&&factory.res&&factory.res.resVertical||"vertical",c=factory&&factory.res&&factory.res.resHorizontal||"horizontal";this.$directionDropdown=$('<select class="gradientPicker-filldirection"><option value="vertical"'+("top"===a.opts.fillDirection?" selected":"")+">"+b+'</option><option value="horizontal"'+("left"===a.opts.fillDirection?" selected":"")+">"+c+"</option></select>"),this.$el.append(this.$directionDropdown),this.$directionDropdown.chosen(),this.$directionDropdown.change(function(){a.setGradientDirection($(this).val())})},showColorPicker:function(a){this.currentPoint=a,$(".factory-current-point").removeClass("factory-current-point"),a.$el.addClass("factory-current-point"),this.$colorPickerContainer.show(),this.$colorPicker.factoryBootstrap459_iris("show"),this.$colorPicker.factoryBootstrap459_iris("option","color",a.color),this.$opacitySlider.val(100*a.opacity),this.$opacitySlider.trigger("slide")},hideColorPicker:function(){$(".factory-current-point").removeClass("factory-current-point"),this.currentPoint=!1,this.$colorPickerContainer.hide()},isColorPickerShown:function(){return this.currentPoint},docClicked:function(){$(".gradientPicker-iris-wrap").hide(),$(".gradientPicker-ctrlPt").removeClass("open")},createCtrlPt:function(a){return new ControlPoint(this,a,this.opts.orientation)},updateOptions:function(a,b){if($.extend(this.opts,a),b){this.controlPoints=[],this.$pointsContainer.html("");for(var c=0;c<this.opts.controlPoints.length;++c){var d=this.createCtrlPt(this.opts.controlPoints[c]);this.controlPoints.push(d)}}switch(this.updatePreview(),this.opts.fillDirection){case"top":fillDirectCheck="horizontal";break;case"left":fillDirectCheck="vertical";break;default:fillDirectCheck=!1}fillDirectCheck&&$(".gradientPicker-filldirection",this.$el).find('option[value="'+fillDirectCheck+'"]').prop("selected",!0)},updatePreview:function(){var a=[];if(this.controlPoints.sort(ctrlPtComparator),this.g2d.clearRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),"horizontal"===this.opts.orientation)for(var b=this.g2d.createLinearGradient(0,0,this.g2d.canvas.width,0),c=0;c<this.controlPoints.length;++c){var d=this.controlPoints[c];b.addColorStop(d.position,"rgba("+hexToRgb(d.color).r+","+hexToRgb(d.color).g+","+hexToRgb(d.color).b+", "+d.opacity+")"),a.push({position:d.position,color:d.color,opacity:d.opacity})}if(this.g2d.fillStyle=b,this.g2d.fillRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),this.opts.generateStyles)var e=this._generatePreviewStyles();this.opts.change(a,e)},removeControlPoint:function(a){var b=this.controlPoints.indexOf(a);-1!=b&&(this.controlPoints.splice(b,1),a.$el.remove())},placePoint:function(a){a.stopPropagation();var b=$(a.target).offset(),c=a.pageX-b.left,d=a.pageY-b.top,e=this.g2d.getImageData(c,d,1,1),f="rgb("+e.data[0]+","+e.data[1]+","+e.data[2]+")",g=1/255*e.data[3],h=this.createCtrlPt({position:c/this.g2d.canvas.width,color:rgb2hex(f),opacity:g});this.controlPoints.push(h),this.controlPoints.sort(ctrlPtComparator),this.showColorPicker(h)},setGradient:function(a){this.updateOptions({controlPoints:a},!0),this.updatePreview()},setGradientDirection:function(a){switch(a){case"horizontal":this.updateOptions({type:"linear",fillDirection:"top"},!1);break;case"vertical":this.updateOptions({type:"linear",fillDirection:"left"},!1)}},_generatePreviewStyles:function(){var a={};a.filldirection=this.opts.fillDirection,a.color_points=[];for(var b=0;b<this.controlPoints.length;++b){var c=this.controlPoints[b];a.color_points.push(c.color+" "+(100*c.position|0)+"% "+c.opacity)}return JSON.stringify(a)},_genPalletsBackground:function(a,b){return cssRules="linear-gradient(90deg, "+a+" 0%, "+b+" 100%)",agent.indexOf("WebKit")>=0?crossBrowserRule=browserPrefix[0]+cssRules:agent.indexOf("Mozilla")>=0?crossBrowserRule=browserPrefix[1]+cssRules:agent.indexOf("Microsoft")>=0?crossBrowserRule=browserPrefix[2]+cssRules:crossBrowserRule=cssRules,crossBrowserRule}},ControlPoint.prototype={updateColor:function(a){this.color=a,this.$pointColor.css("background-color",a),this.parent.updatePreview()},updateOpacity:function(a){this.opacity=a,this.$pointColor.css("opacity",a),this.parent.updatePreview()},drag:function(e,ui){var stopPointPosition=eval(this.$el.parent().offset().top+this.$el.parent().height()+20);e.pageY>stopPointPosition&&this.remove();var left=ui.position.left;this.position=left/(this.$container.width()-this.outerWidth),this.parent.updatePreview()},stop:function(){this.parent.updatePreview()},remove:function(){this.parent.removeControlPoint(this),this.parent.hideColorPicker(),this.parent.updatePreview()}};var methods={init:function(a){a=$.extend({controlPoints:["#FFF 0% 1","#000 100% 1"],orientation:"horizontal",type:"linear",fillDirection:"left",generateStyles:!0,change:function(){}},a),this.each(function(){var b=$(this),c=new GradientSelection(b,a);b.data("gradientPicker-sel",c)})},update:function(a){this.each(function(){var b=$(this),c=b.data("gradientPicker-sel");null!=c&&c.updateOptions(a,!0)})}};$.fn.gradientPicker=function(a,b){"string"==typeof a&&"init"!==a?methods[a].call(this,b):(b=a,methods.init.call(this,b))}}(jQuery);
libs/factory/bootstrap/assets/js-min/plugin.iris.min.js CHANGED
@@ -7,4 +7,4 @@
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.factoryBootstrap454_iris=!0,a.fn.factoryBootstrap454_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap454_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).factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
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.factoryBootstrap459_iris=!0,a.fn.factoryBootstrap459_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap459_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).factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){this.$element=a(b),this.$rectangle=this.$element.find(".factory-rectangle"),this.$center=this.$element.find(".factory-side-center"),this.$bar=this.$element.find(".factory-bar"),this.$sides=this.$element.find(".factory-side"),this.$result=this.$element.find(".factory-result"),this.units=this.$element.data("units"),this.rangeStart=this.$element.data("range-start"),this.rangeEnd=this.$element.data("range-end"),this.step=this.$element.data("step"),this._createCanvas(),this._createSlider(),this._initMouse(),this.selectSide("center")};b.prototype._createCanvas=function(){var b=this;this._recalculateSizes(),this.$canvas=a("<canvas width='"+b.elementWidth+"' height='"+b.elementHeight+"'>").appendTo(this.$rectangle),this.canvasContext=this.$canvas.get(0).getContext("2d"),this._redraw()},b.prototype._createSlider=function(){var a=this;this.$bar.noUiSlider({start:parseInt(a.$center.data("value")),range:{min:a.rangeStart,max:a.rangeEnd},step:a.step}),this.$bar.on("slide",function(){var b=parseInt(a.$bar.val()),c=b+a.units;"center"===a.activeSide?(a.$sides.data("value",b),a.$sides.find(".factory-visible-value").text(c)):(a.$activeSide.data("value",b),a.$activeSide.find(".factory-visible-value").text(c))}),this.$bar.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},b.prototype.getValue=function(){var a=this.$element.find(".factory-side-top").data("value"),b=this.$element.find(".factory-side-right").data("value"),c=this.$element.find(".factory-side-bottom").data("value"),d=this.$element.find(".factory-side-left").data("value");return a+this.units+" "+b+this.units+" "+c+this.units+" "+d+this.units},b.prototype.selectSide=function(a){this.activeSide!==a&&(this.activeSide=a,this.$activeSide=this.$element.find(".factory-side-"+this.activeSide),this.$element.find(".factory-side.factory-active").removeClass("factory-active"),this.$activeSide.addClass("factory-active"),this._redraw(),this.$bar.val(this.$activeSide.data("value")))},b.prototype._initMouse=function(){var a=this;this._recalculateSizes(),this.$rectangle.on("mousemove.paddings-editor",function(b){a.hoveredSide=a._getCurrentSide(b.pageX,b.pageY),a.hoveredSide!==a.lastHoveredSide&&(a.lastHoveredSide=a.hoveredSide,a._redraw())}),this.$rectangle.on("mouseleave.paddings-editor",function(b){a.hoveredSide=a.lastHoveredSide=null,a._redraw()}),this.$rectangle.on("click.paddings-editor",function(b){var c=a._getCurrentSide(b.pageX,b.pageY);a.selectSide(c)})},b.prototype._getCurrentSide=function(a,b){var c=this.$element.offset(),d=a-c.left,e=b-c.top,f=d-this.centerX,g=e-this.centerY,h=Math.sqrt(Math.pow(f,2)+Math.pow(g,2));if(h<=this.centerR)return"center";var i=this.elementHeight,j=this.elementWidth,k=-this.elementWidth*this.elementHeight,l=-(k+i*d)/j,m=-this.elementHeight,n=this.elementWidth,o=0,p=-(o+m*d)/n;return e>l&&p>e?"right":l>e&&e>p?"left":l>e&&p>e?"top":e>l&&e>p?"bottom":null},b.prototype._redraw=function(){this.canvasContext.clearRect(0,0,this.elementWidth,this.elementHeight),this._highlightSide("top","#a6b6b6"),this._highlightSide("bottom","#a6b6b6"),this._highlightSide("left","#aec0c0"),this._highlightSide("right","#aec0c0"),this._highlightSide(this.hoveredSide,"#c0cece"),this.activeSide&&this._highlightSide(this.activeSide,"#829595")},b.prototype._highlightSide=function(a,b){a&&"center"!==a&&(this.canvasContext.fillStyle=b,this.canvasContext.beginPath(),"top"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,0)):"bottom"===a?(this.canvasContext.moveTo(0,this.elementHeight),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)):"left"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(0,this.elementHeight)):"right"===a&&(this.canvasContext.moveTo(this.elementWidth,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)),this.canvasContext.closePath(),this.canvasContext.fill())},b.prototype._recalculateSizes=function(){this.elementOffset=this.$element.offset(),this.elementWidth=this.$rectangle.innerWidth(),this.elementHeight=this.$rectangle.innerHeight(),this.centerSize=this.$center.innerWidth(),this.centerR=this.centerSize/2,this.centerX=this.elementWidth/2,this.centerY=this.elementHeight/2},a.fn.factoryBootstrap454_paddingsEditor=function(c){if("string"==typeof c){var d=a(this).data("factory.paddings-editor");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.paddings-editor");d||c.data("factory.paddings-editor",d=new b(this))})},a.fn.factoryBootstrap454_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-paddings-editor").factoryBootstrap454_paddingsEditor()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){this.$element=a(b),this.$rectangle=this.$element.find(".factory-rectangle"),this.$center=this.$element.find(".factory-side-center"),this.$bar=this.$element.find(".factory-bar"),this.$sides=this.$element.find(".factory-side"),this.$result=this.$element.find(".factory-result"),this.units=this.$element.data("units"),this.rangeStart=this.$element.data("range-start"),this.rangeEnd=this.$element.data("range-end"),this.step=this.$element.data("step"),this._createCanvas(),this._createSlider(),this._initMouse(),this.selectSide("center")};b.prototype._createCanvas=function(){var b=this;this._recalculateSizes(),this.$canvas=a("<canvas width='"+b.elementWidth+"' height='"+b.elementHeight+"'>").appendTo(this.$rectangle),this.canvasContext=this.$canvas.get(0).getContext("2d"),this._redraw()},b.prototype._createSlider=function(){var a=this;this.$bar.noUiSlider({start:parseInt(a.$center.data("value")),range:{min:a.rangeStart,max:a.rangeEnd},step:a.step}),this.$bar.on("slide",function(){var b=parseInt(a.$bar.val()),c=b+a.units;"center"===a.activeSide?(a.$sides.data("value",b),a.$sides.find(".factory-visible-value").text(c)):(a.$activeSide.data("value",b),a.$activeSide.find(".factory-visible-value").text(c))}),this.$bar.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},b.prototype.getValue=function(){var a=this.$element.find(".factory-side-top").data("value"),b=this.$element.find(".factory-side-right").data("value"),c=this.$element.find(".factory-side-bottom").data("value"),d=this.$element.find(".factory-side-left").data("value");return a+this.units+" "+b+this.units+" "+c+this.units+" "+d+this.units},b.prototype.selectSide=function(a){this.activeSide!==a&&(this.activeSide=a,this.$activeSide=this.$element.find(".factory-side-"+this.activeSide),this.$element.find(".factory-side.factory-active").removeClass("factory-active"),this.$activeSide.addClass("factory-active"),this._redraw(),this.$bar.val(this.$activeSide.data("value")))},b.prototype._initMouse=function(){var a=this;this._recalculateSizes(),this.$rectangle.on("mousemove.paddings-editor",function(b){a.hoveredSide=a._getCurrentSide(b.pageX,b.pageY),a.hoveredSide!==a.lastHoveredSide&&(a.lastHoveredSide=a.hoveredSide,a._redraw())}),this.$rectangle.on("mouseleave.paddings-editor",function(b){a.hoveredSide=a.lastHoveredSide=null,a._redraw()}),this.$rectangle.on("click.paddings-editor",function(b){var c=a._getCurrentSide(b.pageX,b.pageY);a.selectSide(c)})},b.prototype._getCurrentSide=function(a,b){var c=this.$element.offset(),d=a-c.left,e=b-c.top,f=d-this.centerX,g=e-this.centerY,h=Math.sqrt(Math.pow(f,2)+Math.pow(g,2));if(h<=this.centerR)return"center";var i=this.elementHeight,j=this.elementWidth,k=-this.elementWidth*this.elementHeight,l=-(k+i*d)/j,m=-this.elementHeight,n=this.elementWidth,o=0,p=-(o+m*d)/n;return e>l&&p>e?"right":l>e&&e>p?"left":l>e&&p>e?"top":e>l&&e>p?"bottom":null},b.prototype._redraw=function(){this.canvasContext.clearRect(0,0,this.elementWidth,this.elementHeight),this._highlightSide("top","#a6b6b6"),this._highlightSide("bottom","#a6b6b6"),this._highlightSide("left","#aec0c0"),this._highlightSide("right","#aec0c0"),this._highlightSide(this.hoveredSide,"#c0cece"),this.activeSide&&this._highlightSide(this.activeSide,"#829595")},b.prototype._highlightSide=function(a,b){a&&"center"!==a&&(this.canvasContext.fillStyle=b,this.canvasContext.beginPath(),"top"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,0)):"bottom"===a?(this.canvasContext.moveTo(0,this.elementHeight),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)):"left"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(0,this.elementHeight)):"right"===a&&(this.canvasContext.moveTo(this.elementWidth,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)),this.canvasContext.closePath(),this.canvasContext.fill())},b.prototype._recalculateSizes=function(){this.elementOffset=this.$element.offset(),this.elementWidth=this.$rectangle.innerWidth(),this.elementHeight=this.$rectangle.innerHeight(),this.centerSize=this.$center.innerWidth(),this.centerR=this.centerSize/2,this.centerX=this.elementWidth/2,this.centerY=this.elementHeight/2},a.fn.factoryBootstrap459_paddingsEditor=function(c){if("string"==typeof c){var d=a(this).data("factory.paddings-editor");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.paddings-editor");d||c.data("factory.paddings-editor",d=new b(this))})},a.fn.factoryBootstrap459_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-paddings-editor").factoryBootstrap459_paddingsEditor()})}(jQuery);
libs/factory/bootstrap/boot.php CHANGED
@@ -19,27 +19,27 @@ if( !is_admin() ) {
19
  return;
20
  }
21
 
22
- if( defined('FACTORY_BOOTSTRAP_454_LOADED') ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_BOOTSTRAP_454_VERSION', '4.5.4');
27
- define('FACTORY_BOOTSTRAP_454_LOADED', true);
28
 
29
  if( !defined('FACTORY_FLAT_ADMIN') ) {
30
  define('FACTORY_FLAT_ADMIN', true);
31
  }
32
 
33
- define('FACTORY_BOOTSTRAP_454_DIR', dirname(__FILE__));
34
- define('FACTORY_BOOTSTRAP_454_URL', plugins_url(null, __FILE__));
35
 
36
- require_once(FACTORY_BOOTSTRAP_454_DIR . '/includes/functions.php');
37
 
38
  /**
39
- * @param Wbcr_Factory453_Plugin $plugin
40
  */
41
- add_action('wbcr_factory_bootstrap_454_plugin_created', function ($plugin) {
42
- $manager = new Wbcr_FactoryBootstrap454_Manager($plugin);
43
  $plugin->setBootstap($manager);
44
  });
45
 
19
  return;
20
  }
21
 
22
+ if( defined('FACTORY_BOOTSTRAP_459_LOADED') ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_BOOTSTRAP_459_VERSION', '4.5.9');
27
+ define('FACTORY_BOOTSTRAP_459_LOADED', true);
28
 
29
  if( !defined('FACTORY_FLAT_ADMIN') ) {
30
  define('FACTORY_FLAT_ADMIN', true);
31
  }
32
 
33
+ define('FACTORY_BOOTSTRAP_459_DIR', dirname(__FILE__));
34
+ define('FACTORY_BOOTSTRAP_459_URL', plugins_url(null, __FILE__));
35
 
36
+ require_once(FACTORY_BOOTSTRAP_459_DIR . '/includes/functions.php');
37
 
38
  /**
39
+ * @param Wbcr_Factory458_Plugin $plugin
40
  */
41
+ add_action('wbcr_factory_bootstrap_459_plugin_created', function ($plugin) {
42
+ $manager = new Wbcr_FactoryBootstrap459_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_FactoryBootstrap454_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
- * @var Wbcr_Factory453_Plugin
30
  */
31
  public $plugin;
32
 
@@ -51,7 +51,7 @@ class Wbcr_FactoryBootstrap454_Manager {
51
  *
52
  * @since 1.0.0
53
  */
54
- public function __construct(Wbcr_Factory453_Plugin $plugin)
55
  {
56
  $this->plugin = $plugin;
57
 
@@ -115,8 +115,8 @@ class Wbcr_FactoryBootstrap454_Manager {
115
  public function loadAssets($hook)
116
  {
117
 
118
- do_action('wbcr_factory_453_bootstrap_enqueue_scripts', $hook);
119
- do_action('wbcr_factory_453_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook);
120
 
121
  $dependencies = [];
122
  if( !empty($this->scripts) ) {
@@ -161,8 +161,8 @@ class Wbcr_FactoryBootstrap454_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_454_DIR . '/assets/cache/';
165
- $cache_dir_url = FACTORY_BOOTSTRAP_454_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_FactoryBootstrap454_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_454_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_FactoryBootstrap454_Manager {
197
  }
198
  } else {
199
  if( $type == 'js' ) {
200
- wp_enqueue_script(md5($script_to_load), FACTORY_BOOTSTRAP_454_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_454_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_FactoryBootstrap459_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
+ * @var Wbcr_Factory458_Plugin
30
  */
31
  public $plugin;
32
 
51
  *
52
  * @since 1.0.0
53
  */
54
+ public function __construct(Wbcr_Factory458_Plugin $plugin)
55
  {
56
  $this->plugin = $plugin;
57
 
115
  public function loadAssets($hook)
116
  {
117
 
118
+ do_action('wbcr_factory_458_bootstrap_enqueue_scripts', $hook);
119
+ do_action('wbcr_factory_458_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_459_DIR . '/assets/cache/';
165
+ $cache_dir_url = FACTORY_BOOTSTRAP_459_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_459_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_459_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_459_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_453_install_components($plugin_instance)
19
  {
20
  check_ajax_referer('updates');
21
 
@@ -24,11 +24,11 @@ function wfactory_453_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_453'), __('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_453')]);
32
  }
33
  $success = false;
34
  $send_data = [];
@@ -44,7 +44,7 @@ function wfactory_453_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_453')]);
48
  }
49
  } else if( $storage == 'wordpress' || $storage == 'creativemotion' ) {
50
  if( !empty($slug) ) {
@@ -80,7 +80,7 @@ function wfactory_453_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_453' ), admin_url( 'options-permalink.php' ) . '</span>' );
84
  }
85
  }*/
86
 
@@ -94,7 +94,7 @@ function wfactory_453_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_453')]);
98
  }
99
 
100
  /**
@@ -102,18 +102,18 @@ function wfactory_453_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_453_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_453')], 403);
113
  }
114
 
115
  if( empty($component_name) ) {
116
- wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_453')]);
117
  }
118
  // todo: для совместимости с плагином Clearfy
119
  if( "wbcr_clearfy" === $plugin_instance->getPluginName() ) {
@@ -133,7 +133,7 @@ function wfactory_453_prepare_component($plugin_instance)
133
  *
134
  * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
135
  */
136
- function wfactory_453_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_458_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_458'), __('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_458')]);
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_458')]);
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_458' ), 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_458')]);
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_458_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_458')], 403);
113
  }
114
 
115
  if( empty($component_name) ) {
116
+ wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_458')]);
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_458_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-453-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-453-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-453-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_453.hooks.run('core/components/pre_update', [$this, data]);
58
 
59
  self.sendRequest(data, function(response) {
60
  if( !response || !response.success ) {
61
- $.wfactory_453.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_453.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_453.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_453.hooks.run('core/components/deactivated', [
128
  $this,
129
  data,
130
  response
@@ -134,7 +134,7 @@
134
 
135
  plugin_action = 'install';
136
 
137
- $.wfactory_453.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_453.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-453-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_453.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_453.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_453.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-458-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-458-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-458-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_458.hooks.run('core/components/pre_update', [$this, data]);
58
 
59
  self.sendRequest(data, function(response) {
60
  if( !response || !response.success ) {
61
+ $.wfactory_458.hooks.run('core/components/update_error', [
62
  $this,
63
  data,
64
  response
80
  $this.removeClass('button-default').addClass('button-primary');
81
  }
82
 
83
+ $.wfactory_458.hooks.run('core/components/installed', [
84
  $this,
85
  data,
86
  response
96
  $this.removeClass('button-primary').addClass('button-default');
97
  }
98
 
99
+ $.wfactory_458.hooks.run('core/components/pre_activate', [
100
  $this,
101
  data,
102
  response
124
  $this.removeClass('button-default').addClass('button-primary');
125
  }
126
 
127
+ $.wfactory_458.hooks.run('core/components/deactivated', [
128
  $this,
129
  data,
130
  response
134
 
135
  plugin_action = 'install';
136
 
137
+ $.wfactory_458.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_458.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-458-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_458.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_458.hooks.run('core/components/activated', [
191
  componentButton,
192
  sendData,
193
  response
210
  console.log(xhr.responseText);
211
  console.log(thrownError);
212
 
213
+ $.wfactory_458.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_453 ) {
12
- $.wfactory_453 = {};
13
  }
14
 
15
- $.wfactory_453.filters = $.wfactory_453.filters || {
16
 
17
  /**
18
  * A set of registered filters.
@@ -79,20 +79,20 @@
79
  }
80
  };
81
 
82
- $.wfactory_453.hooks = $.wfactory_453.hooks || {
83
 
84
  /**
85
  * Applies filters to a given input value.
86
  */
87
  run: function(filterName, args) {
88
- $.wfactory_453.filters.run(filterName, args);
89
  },
90
 
91
  /**
92
  * Registers a new filter.
93
  */
94
  add: function(filterName, callback, priority) {
95
- $.wfactory_453.filters.add(filterName, callback, priority);
96
  }
97
  };
98
 
8
  (function($) {
9
  'use strict';
10
 
11
+ if( !$.wfactory_458 ) {
12
+ $.wfactory_458 = {};
13
  }
14
 
15
+ $.wfactory_458.filters = $.wfactory_458.filters || {
16
 
17
  /**
18
  * A set of registered filters.
79
  }
80
  };
81
 
82
+ $.wfactory_458.hooks = $.wfactory_458.hooks || {
83
 
84
  /**
85
  * Applies filters to a given input value.
86
  */
87
  run: function(filterName, args) {
88
+ $.wfactory_458.filters.run(filterName, args);
89
  },
90
 
91
  /**
92
  * Registers a new filter.
93
  */
94
  add: function(filterName, callback, priority) {
95
+ $.wfactory_458.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_453_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_453_LOADED', true);
22
 
23
- define('FACTORY_453_VERSION', '4.5.3');
24
 
25
- define('FACTORY_453_DIR', dirname(__FILE__));
26
- define('FACTORY_453_URL', plugins_url(null, __FILE__));
27
 
28
- load_plugin_textdomain('wbcr_factory_453', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
  #comp merge
31
- require_once(FACTORY_453_DIR . '/includes/functions.php');
32
 
33
- require_once(FACTORY_453_DIR . '/includes/entities/class-factory-paths.php');
34
- require_once(FACTORY_453_DIR . '/includes/entities/class-factory-support.php');
35
 
36
- require_once(FACTORY_453_DIR . '/includes/class-factory-requests.php');
37
- require_once(FACTORY_453_DIR . '/includes/class-factory-options.php');
38
- require_once(FACTORY_453_DIR . '/includes/class-factory-plugin-base.php');
39
- require_once(FACTORY_453_DIR . '/includes/class-factory-migrations.php');
40
- require_once(FACTORY_453_DIR . '/includes/class-factory-notices.php');
41
 
42
  // ASSETS
43
- require_once(FACTORY_453_DIR . '/includes/assets-managment/class-factory-assets-list.php');
44
- require_once(FACTORY_453_DIR . '/includes/assets-managment/class-factory-script-list.php');
45
- require_once(FACTORY_453_DIR . '/includes/assets-managment/class-factory-style-list.php');
46
 
47
  // PREMIUM
48
- require_once(FACTORY_453_DIR . '/includes/premium/class-factory-license-interface.php');
49
- require_once(FACTORY_453_DIR . '/includes/premium/class-factory-provider-abstract.php');
50
- require_once(FACTORY_453_DIR . '/includes/premium/class-factory-manager.php');
51
 
52
  // UPDATES
53
- require_once(FACTORY_453_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
54
- require_once(FACTORY_453_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
55
- require_once(FACTORY_453_DIR . '/includes/updates/repositories/class-factory-github.php');
56
- require_once(FACTORY_453_DIR . '/includes/updates/class-factory-upgrader.php');
57
- require_once(FACTORY_453_DIR . '/includes/updates/class-factory-premium-upgrader.php');
58
 
59
- require_once(FACTORY_453_DIR . '/includes/class-factory-plugin-abstract.php');
60
 
61
- require_once(FACTORY_453_DIR . '/includes/activation/class-factory-activator.php');
62
- require_once(FACTORY_453_DIR . '/includes/activation/class-factory-update.php');
63
  #endcomp
64
 
65
  add_action('admin_enqueue_scripts', function () {
66
- wp_enqueue_script('wfactory-453-core-general', FACTORY_453_URL . '/assets/js/core-general.js', [
67
  'jquery'
68
- ], FACTORY_453_VERSION);
69
- wp_enqueue_script('wfactory-453-core-components', FACTORY_453_URL . '/assets/js/core-components.js', [
70
  'jquery',
71
- 'wfactory-453-core-general'
72
- ], FACTORY_453_VERSION);
73
  });
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_458_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_458_LOADED', true);
22
 
23
+ define('FACTORY_458_VERSION', '4.5.8');
24
 
25
+ define('FACTORY_458_DIR', dirname(__FILE__));
26
+ define('FACTORY_458_URL', plugins_url(null, __FILE__));
27
 
28
+ load_plugin_textdomain('wbcr_factory_458', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
  #comp merge
31
+ require_once(FACTORY_458_DIR . '/includes/functions.php');
32
 
33
+ require_once(FACTORY_458_DIR . '/includes/entities/class-factory-paths.php');
34
+ require_once(FACTORY_458_DIR . '/includes/entities/class-factory-support.php');
35
 
36
+ require_once(FACTORY_458_DIR . '/includes/class-factory-requests.php');
37
+ require_once(FACTORY_458_DIR . '/includes/class-factory-options.php');
38
+ require_once(FACTORY_458_DIR . '/includes/class-factory-plugin-base.php');
39
+ require_once(FACTORY_458_DIR . '/includes/class-factory-migrations.php');
40
+ require_once(FACTORY_458_DIR . '/includes/class-factory-notices.php');
41
 
42
  // ASSETS
43
+ require_once(FACTORY_458_DIR . '/includes/assets-managment/class-factory-assets-list.php');
44
+ require_once(FACTORY_458_DIR . '/includes/assets-managment/class-factory-script-list.php');
45
+ require_once(FACTORY_458_DIR . '/includes/assets-managment/class-factory-style-list.php');
46
 
47
  // PREMIUM
48
+ require_once(FACTORY_458_DIR . '/includes/premium/class-factory-license-interface.php');
49
+ require_once(FACTORY_458_DIR . '/includes/premium/class-factory-provider-abstract.php');
50
+ require_once(FACTORY_458_DIR . '/includes/premium/class-factory-manager.php');
51
 
52
  // UPDATES
53
+ require_once(FACTORY_458_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
54
+ require_once(FACTORY_458_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
55
+ require_once(FACTORY_458_DIR . '/includes/updates/repositories/class-factory-github.php');
56
+ require_once(FACTORY_458_DIR . '/includes/updates/class-factory-upgrader.php');
57
+ require_once(FACTORY_458_DIR . '/includes/updates/class-factory-premium-upgrader.php');
58
 
59
+ require_once(FACTORY_458_DIR . '/includes/class-factory-plugin-abstract.php');
60
 
61
+ require_once(FACTORY_458_DIR . '/includes/activation/class-factory-activator.php');
62
+ require_once(FACTORY_458_DIR . '/includes/activation/class-factory-update.php');
63
  #endcomp
64
 
65
  add_action('admin_enqueue_scripts', function () {
66
+ wp_enqueue_script('wfactory-458-core-general', FACTORY_458_URL . '/assets/js/core-general.js', [
67
  'jquery'
68
+ ], FACTORY_458_VERSION);
69
+ wp_enqueue_script('wfactory-458-core-components', FACTORY_458_URL . '/assets/js/core-components.js', [
70
  'jquery',
71
+ 'wfactory-458-core-general'
72
+ ], FACTORY_458_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_Factory453_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
- * @var Wbcr_Factory453_Plugin
28
  */
29
  public $plugin;
30
 
31
- public function __construct( Wbcr_Factory453_Plugin $plugin ) {
32
  $this->plugin = $plugin;
33
  }
34
 
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_Factory458_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
+ * @var Wbcr_Factory458_Plugin
28
  */
29
  public $plugin;
30
 
31
+ public function __construct( Wbcr_Factory458_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_Factory453_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
- * @var Wbcr_Factory453_Plugin
29
  */
30
  var $plugin;
31
 
32
- public function __construct( Wbcr_Factory453_Plugin $plugin ) {
33
  $this->plugin = $plugin;
34
  }
35
 
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_Factory458_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
+ * @var Wbcr_Factory458_Plugin
29
  */
30
  var $plugin;
31
 
32
+ public function __construct( Wbcr_Factory458_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_Factory453_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
@@ -29,15 +29,15 @@ class Wbcr_Factory453_AssetsList {
29
  protected $default_place;
30
 
31
  /**
32
- * @var Wbcr_Factory453_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
- * @param Wbcr_Factory453_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
- public function __construct( Wbcr_Factory453_Plugin $plugin, $defaultIsFooter = true ) {
41
  $this->plugin = $plugin;
42
 
43
  if ( $defaultIsFooter ) {
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_Factory458_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
29
  protected $default_place;
30
 
31
  /**
32
+ * @var Wbcr_Factory458_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
+ * @param Wbcr_Factory458_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
+ public function __construct( Wbcr_Factory458_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_Factory453_ScriptList extends Wbcr_Factory453_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
@@ -149,7 +149,7 @@ class Wbcr_Factory453_ScriptList extends Wbcr_Factory453_AssetsList {
149
  * @param string $varname
150
  * @param array $data
151
  *
152
- * @return Wbcr_Factory453_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_Factory458_ScriptList extends Wbcr_Factory458_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
149
  * @param string $varname
150
  * @param array $data
151
  *
152
+ * @return Wbcr_Factory458_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_Factory453_StyleList extends Wbcr_Factory453_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory458_StyleList extends Wbcr_Factory458_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_106' ), $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_453' ), $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_453' ), $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_110' ), $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_458' ), $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_458' ), $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_453;
4
 
5
  use Exception;
6
- use Wbcr_Factory453_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -35,11 +35,11 @@ class Migrations {
35
  /**
36
  * Migrations constructor.
37
  *
38
- * @param Wbcr_Factory453_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
- public function __construct( Wbcr_Factory453_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
@@ -77,13 +77,13 @@ class Migrations {
77
  public function check_migrations() {
78
  if ( $this->is_migration_error() && isset( $_GET['wbcr_factory_fix_migration_error'] ) ) {
79
  $this->fix_migration_error();
80
- wp_redirect( remove_query_arg( 'wbcr_factory_fix_migration_error' ) );
81
  die();
82
  }
83
 
84
  if ( $this->is_debug() && isset( $_GET['wbcr_factory_test_migration'] ) ) {
85
  $this->make_migration();
86
- wp_redirect( remove_query_arg( 'wbcr_factory_test_migration' ) );
87
  die();
88
  }
89
 
@@ -126,17 +126,17 @@ class Migrations {
126
  $migration_error_text = get_option( $this->plugin->getOptionName( 'plugin_migration_error' ), '' );
127
  }
128
 
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_453' ) . "</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_453' ) . '</b><br>' . $notice_text . '</p>'
140
  ];
141
 
142
  return $notices;
@@ -160,21 +160,21 @@ class Migrations {
160
  return $notices;
161
  }
162
 
163
- $migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
164
 
165
- $notice_text = __( "Plugin activated:", "wbcr_factory_453" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
- $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_453" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
- $notice_text .= __( "Current plugin version:", "wbcr_factory_453" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
- $notice_text .= __( "Need migration:", "wbcr_factory_453" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
- $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_453" ) . "</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_453' ) . '</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_453' ) );
509
  }
510
 
511
  $tokens = token_get_all( $phpCode );
1
  <?php
2
 
3
+ namespace WBCR\Factory_458;
4
 
5
  use Exception;
6
+ use Wbcr_Factory458_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
35
  /**
36
  * Migrations constructor.
37
  *
38
+ * @param Wbcr_Factory458_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
+ public function __construct( Wbcr_Factory458_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
77
  public function check_migrations() {
78
  if ( $this->is_migration_error() && isset( $_GET['wbcr_factory_fix_migration_error'] ) ) {
79
  $this->fix_migration_error();
80
+ wp_safe_redirect( esc_url_raw(remove_query_arg( 'wbcr_factory_fix_migration_error' )) );
81
  die();
82
  }
83
 
84
  if ( $this->is_debug() && isset( $_GET['wbcr_factory_test_migration'] ) ) {
85
  $this->make_migration();
86
+ wp_safe_redirect( esc_url_raw(remove_query_arg( 'wbcr_factory_test_migration' )) );
87
  die();
88
  }
89
 
126
  $migration_error_text = get_option( $this->plugin->getOptionName( 'plugin_migration_error' ), '' );
127
  }
128
 
129
+ $fix_migration_error_url = esc_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_458' ) . "</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_458' ) . '</b><br>' . $notice_text . '</p>'
140
  ];
141
 
142
  return $notices;
160
  return $notices;
161
  }
162
 
163
+ $migrate_url = esc_url(add_query_arg( 'wbcr_factory_test_migration', 1 ));
164
 
165
+ $notice_text = __( "Plugin activated:", "wbcr_factory_458" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
+ $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_458" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
+ $notice_text .= __( "Current plugin version:", "wbcr_factory_458" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
+ $notice_text .= __( "Need migration:", "wbcr_factory_458" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
+ $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_458" ) . "</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_458' ) . '</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_458' ) );
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_453;
4
 
5
- use Wbcr_Factory453_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_Factory453_Plugin
31
  */
32
  protected $plugin;
33
  /**
@@ -58,7 +58,7 @@ class Notices {
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
- * @param Wbcr_Factory453_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_453
90
  */
91
  $this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
92
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_458;
4
 
5
+ use Wbcr_Factory458_Plugin;
6
 
7
  // Exit if accessed directly
8
  if( !defined('ABSPATH') ) {
27
  class Notices {
28
 
29
  /**
30
+ * @var Wbcr_Factory458_Plugin
31
  */
32
  protected $plugin;
33
  /**
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
+ * @param Wbcr_Factory458_Plugin $plugin
62
  */
63
  public function __construct($plugin)
64
  {
86
  public function currentScreenAction()
87
  {
88
  /**
89
+ * @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_458
90
  */
91
  $this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
92
 
libs/factory/core/includes/class-factory-options.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_453;
4
 
5
  // Exit if accessed directly
6
  use Exception;
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  }
11
 
12
  /**
13
- * Трейт используется для расширения базового класса плагина Wbcr_Factory453_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_458;
4
 
5
  // Exit if accessed directly
6
  use Exception;
10
  }
11
 
12
  /**
13
+ * Трейт используется для расширения базового класса плагина Wbcr_Factory458_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_Factory453_Plugin extends Wbcr_Factory453_Base {
28
 
29
  /**
30
- * Instance class Wbcr_Factory453_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
- * @var Wbcr_Factory453_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
- * @var \WBCR\Factory_453\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
- * @var Wbcr_FactoryBootstrap454_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
- * @var Wbcr_FactoryForms450_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
- * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory453_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
- * @var array[] Wbcr_Factory453_Activator
63
  */
64
  protected $activator_class = [];
65
 
@@ -86,7 +86,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
88
  * @since 4.1.9
89
- * @var WBCR\Factory_Adverts_130\Base
90
  */
91
  private $adverts;
92
 
@@ -95,7 +95,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
95
  *
96
  * @author Artem Prihodko <webtemyk@yandex.ru>
97
  * @since 4.3.7
98
- * @var WBCR\Factory_Logger_118\Logger
99
  */
100
  public $logger;
101
 
@@ -115,8 +115,8 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
115
 
116
  parent::__construct($plugin_path, $data);
117
 
118
- $this->request = new Wbcr_Factory453_Request();
119
- //$this->route = new Wbcr_Factory453_Route();
120
 
121
  // INIT PLUGIN FRAMEWORK MODULES
122
  // Framework modules should always be loaded first,
@@ -144,15 +144,15 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
144
  $this->init_plugin_components();
145
 
146
  if( wp_doing_ajax() && isset($_REQUEST['action']) ) {
147
- if( "wfactory-453-intall-component" == $_REQUEST['action'] ) {
148
- add_action('wp_ajax_wfactory-453-intall-component', [$this, 'ajax_handler_install_components']);
149
  }
150
 
151
- if( "wfactory-453-prepare-component" == $_REQUEST['action'] ) {
152
- add_action('wp_ajax_wfactory-453-prepare-component', [$this, 'ajax_handler_prepare_component']);
153
  }
154
- if( "wfactory-453-creativemotion-install-plugin" == $_REQUEST['action'] ) {
155
- add_action('wp_ajax_wfactory-453-creativemotion-install-plugin', [
156
  $this,
157
  'ajax_handler_install_creativemotion_plugins'
158
  ]);
@@ -165,20 +165,20 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
165
 
166
  public function ajax_handler_install_components()
167
  {
168
- require_once FACTORY_453_DIR . '/ajax/install-addons.php';
169
- wfactory_453_install_components($this);
170
  }
171
 
172
  public function ajax_handler_prepare_component()
173
  {
174
- require_once FACTORY_453_DIR . '/ajax/install-addons.php';
175
- wfactory_453_prepare_component($this);
176
  }
177
 
178
  public function ajax_handler_install_creativemotion_plugins()
179
  {
180
- require_once FACTORY_453_DIR . '/ajax/install-addons.php';
181
- wfactory_453_creativemotion_install_plugin($this);
182
  }
183
  // --------------------------------------------------------
184
 
@@ -186,9 +186,9 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
186
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
187
  * скриптов, стилей) фреймворка.
188
  *
189
- * @param Wbcr_FactoryBootstrap454_Manager $bootstrap
190
  */
191
- public function setBootstap(Wbcr_FactoryBootstrap454_Manager $bootstrap)
192
  {
193
  $this->bootstrap = $bootstrap;
194
  }
@@ -196,9 +196,9 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
196
  /**
197
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
198
  *
199
- * @param Wbcr_FactoryForms450_Manager $forms
200
  */
201
- public function setForms(Wbcr_FactoryForms450_Manager $forms)
202
  {
203
  $this->forms = $forms;
204
  }
@@ -246,8 +246,8 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
246
  */
247
  public function set_license_provider($name, $class_name)
248
  {
249
- if( !isset(WBCR\Factory_453\Premium\Manager::$providers[$name]) ) {
250
- WBCR\Factory_453\Premium\Manager::$providers[$name] = $class_name;
251
  }
252
  }
253
 
@@ -265,8 +265,8 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
265
  */
266
  public function set_update_repository($name, $class_name)
267
  {
268
- if( !isset(WBCR\Factory_453\Updates\Upgrader::$repositories[$name]) ) {
269
- WBCR\Factory_453\Updates\Upgrader::$repositories[$name] = $class_name;
270
  }
271
  }
272
 
@@ -276,7 +276,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
276
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
277
  * рекламных объявлений.
278
  *
279
- * @return \WBCR\Factory_Adverts_130\Base
280
  * @since 1.1
281
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
282
  */
@@ -312,18 +312,18 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
312
 
313
  public function newScriptList()
314
  {
315
- return new Wbcr_Factory453_ScriptList($this);
316
  }
317
 
318
  public function newStyleList()
319
  {
320
- return new Wbcr_Factory453_StyleList($this);
321
  }
322
 
323
  /**
324
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
325
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
326
- * Wbcr_FactoryPages452_AdminPage, а затем регистрирует его через этот метод.
327
  * Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
328
  * pages.
329
  *
@@ -333,7 +333,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
333
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
334
  *
335
  * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
336
- * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages452_AdminPage.
337
  * @param string $file_path Абсолютный путь к файлу с классом страницы.
338
  *
339
  * @throws Exception
@@ -355,11 +355,11 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
355
  throw new Exception('A class with this name {' . $class_name . '} does not exist.');
356
  }
357
 
358
- if( !class_exists('Wbcr_FactoryPages452') ) {
359
- throw new Exception('The factory_pages_452 module is not included.');
360
  }
361
 
362
- Wbcr_FactoryPages452::register($this, $class_name);
363
  }
364
 
365
  /**
@@ -409,16 +409,16 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
409
  /**
410
  * @since 4.1.1 - change hook name
411
  */
412
- if( apply_filters("wbcr/factory_453/cancel_plugin_activation_{$this->plugin_name}", false) ) {
413
  return;
414
  }
415
 
416
  /**
417
- * wbcr_factory_453_plugin_activation
418
  *
419
  * @since 4.1.1 - deprecated
420
  */
421
- wbcr_factory_453_do_action_deprecated('wbcr_factory_453_plugin_activation', [
422
  $this
423
  ], '4.1.1', "wbcr/factory/plugin_activation");
424
 
@@ -427,7 +427,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
427
  *
428
  * @since 4.1.2 - deprecated
429
  */
430
- wbcr_factory_453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
443
  *
444
  * @since 4.1.2 - deprecated
445
  */
446
- wbcr_factory_453_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_453_plugin_activation_' . $this->plugin_name
452
  *
453
  * @since 4.1.1 - deprecated
454
  */
455
- wbcr_factory_453_do_action_deprecated('wbcr_factory_453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
493
  /**
494
  * @since 4.1.1 - change hook name
495
  */
496
- if( apply_filters("wbcr/factory_453/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
497
  return;
498
  }
499
 
500
  /**
501
- * wbcr_factory_453_plugin_deactivation
502
  *
503
  * @since 4.1.1 - deprecated
504
  */
505
- wbcr_factory_453_do_action_deprecated('wbcr_factory_453_plugin_deactivation', [
506
  $this
507
  ], '4.1.1', "wbcr/factory/plugin_deactivation");
508
 
@@ -511,7 +511,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
511
  *
512
  * @since 4.1.2 - deprecated
513
  */
514
- wbcr_factory_453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
523
  do_action('wbcr/factory/plugin_deactivation', $this);
524
 
525
  /**
526
- * wbcr_factory_453_plugin_deactivation_ . $this->plugin_name
527
  *
528
  * @since 4.1.1 - deprecated
529
  */
530
- wbcr_factory_453_do_action_deprecated('wbcr_factory_453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
536
  *
537
  * @since 4.1.2 - deprecated
538
  */
539
- wbcr_factory_453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
574
  */
575
  public function getPluginPageUrl($page_id, $args = [])
576
  {
577
- if( !class_exists('Wbcr_FactoryPages452') ) {
578
- throw new Exception('The factory_pages_452 module is not included.');
579
  }
580
 
581
  if( !is_admin() ) {
@@ -584,7 +584,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
584
  return null;
585
  }
586
 
587
- return Wbcr_FactoryPages452::getPageUrl($this, $page_id, $args);
588
  }
589
 
590
  /**
@@ -594,13 +594,13 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
594
  * @param $slug
595
  * param $premium
596
  *
597
- * @return \WBCR\Factory_453\Components\Install_Button
598
  */
599
  public function get_install_component_button($component_type, $slug)
600
  {
601
- require_once FACTORY_453_DIR . '/includes/components/class-install-component-button.php';
602
 
603
- return new \WBCR\Factory_453\Components\Install_Button($this, $component_type, $slug);
604
  }
605
 
606
  /**
@@ -609,13 +609,13 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
609
  * @param $component_type
610
  * @param $slug
611
  *
612
- * @return \WBCR\Factory_453\Components\Delete_Button
613
  */
614
  public function get_delete_component_button($component_type, $slug)
615
  {
616
- require_once FACTORY_453_DIR . '/includes/components/class-delete-component-button.php';
617
 
618
- return new WBCR\Factory_453\Components\Delete_Button($this, $component_type, $slug);
619
  }
620
 
621
  /**
@@ -798,12 +798,12 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
798
  /**
799
  * @since 4.1.1 - deprecated
800
  */
801
- wbcr_factory_453_do_action_deprecated('wbcr_factory_453_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_453/modules_loaded-" . $this->plugin_name);
802
 
803
  /**
804
  * @since 4.1.1 - add
805
  */
806
- do_action('wbcr/factory_453/modules_loaded-' . $this->plugin_name);
807
  }
808
 
809
 
@@ -830,7 +830,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
830
  });
831
 
832
  if( is_admin() ) {
833
- add_filter('wbcr_factory_453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
846
  */
847
  protected function init_plugin_migrations()
848
  {
849
- new WBCR\Factory_453\Migrations($this);
850
  }
851
 
852
  /**
@@ -857,7 +857,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
857
  */
858
  protected function init_plugin_notices()
859
  {
860
- new Wbcr\Factory_453\Notices($this);
861
  }
862
 
863
  /**
@@ -873,7 +873,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
873
  protected function init_plugin_updates()
874
  {
875
  if( $this->has_updates ) {
876
- new WBCR\Factory_453\Updates\Upgrader($this);
877
  }
878
  }
879
 
@@ -896,11 +896,11 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
896
  }
897
 
898
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
899
- $this->premium = WBCR\Factory_453\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_453\Updates\Premium_Upgrader($this);
904
  }
905
  }
906
  }
24
  * @package factory-core
25
  *
26
  */
27
+ abstract class Wbcr_Factory458_Plugin extends Wbcr_Factory458_Base {
28
 
29
  /**
30
+ * Instance class Wbcr_Factory458_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
+ * @var Wbcr_Factory458_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
+ * @var \WBCR\Factory_458\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
+ * @var Wbcr_FactoryBootstrap459_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
+ * @var Wbcr_FactoryForms455_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
+ * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory458_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
+ * @var array[] Wbcr_Factory458_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_135\Base
90
  */
91
  private $adverts;
92
 
95
  *
96
  * @author Artem Prihodko <webtemyk@yandex.ru>
97
  * @since 4.3.7
98
+ * @var WBCR\Factory_Logger_123\Logger
99
  */
100
  public $logger;
101
 
115
 
116
  parent::__construct($plugin_path, $data);
117
 
118
+ $this->request = new Wbcr_Factory458_Request();
119
+ //$this->route = new Wbcr_Factory458_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-458-intall-component" == $_REQUEST['action'] ) {
148
+ add_action('wp_ajax_wfactory-458-intall-component', [$this, 'ajax_handler_install_components']);
149
  }
150
 
151
+ if( "wfactory-458-prepare-component" == $_REQUEST['action'] ) {
152
+ add_action('wp_ajax_wfactory-458-prepare-component', [$this, 'ajax_handler_prepare_component']);
153
  }
154
+ if( "wfactory-458-creativemotion-install-plugin" == $_REQUEST['action'] ) {
155
+ add_action('wp_ajax_wfactory-458-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_458_DIR . '/ajax/install-addons.php';
169
+ wfactory_458_install_components($this);
170
  }
171
 
172
  public function ajax_handler_prepare_component()
173
  {
174
+ require_once FACTORY_458_DIR . '/ajax/install-addons.php';
175
+ wfactory_458_prepare_component($this);
176
  }
177
 
178
  public function ajax_handler_install_creativemotion_plugins()
179
  {
180
+ require_once FACTORY_458_DIR . '/ajax/install-addons.php';
181
+ wfactory_458_creativemotion_install_plugin($this);
182
  }
183
  // --------------------------------------------------------
184
 
186
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
187
  * скриптов, стилей) фреймворка.
188
  *
189
+ * @param Wbcr_FactoryBootstrap459_Manager $bootstrap
190
  */
191
+ public function setBootstap(Wbcr_FactoryBootstrap459_Manager $bootstrap)
192
  {
193
  $this->bootstrap = $bootstrap;
194
  }
196
  /**
197
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
198
  *
199
+ * @param Wbcr_FactoryForms455_Manager $forms
200
  */
201
+ public function setForms(Wbcr_FactoryForms455_Manager $forms)
202
  {
203
  $this->forms = $forms;
204
  }
246
  */
247
  public function set_license_provider($name, $class_name)
248
  {
249
+ if( !isset(WBCR\Factory_458\Premium\Manager::$providers[$name]) ) {
250
+ WBCR\Factory_458\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_458\Updates\Upgrader::$repositories[$name]) ) {
269
+ WBCR\Factory_458\Updates\Upgrader::$repositories[$name] = $class_name;
270
  }
271
  }
272
 
276
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
277
  * рекламных объявлений.
278
  *
279
+ * @return \WBCR\Factory_Adverts_135\Base
280
  * @since 1.1
281
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
282
  */
312
 
313
  public function newScriptList()
314
  {
315
+ return new Wbcr_Factory458_ScriptList($this);
316
  }
317
 
318
  public function newStyleList()
319
  {
320
+ return new Wbcr_Factory458_StyleList($this);
321
  }
322
 
323
  /**
324
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
325
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
326
+ * Wbcr_FactoryPages457_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_FactoryPages457_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_FactoryPages457') ) {
359
+ throw new Exception('The factory_pages_457 module is not included.');
360
  }
361
 
362
+ Wbcr_FactoryPages457::register($this, $class_name);
363
  }
364
 
365
  /**
409
  /**
410
  * @since 4.1.1 - change hook name
411
  */
412
+ if( apply_filters("wbcr/factory_458/cancel_plugin_activation_{$this->plugin_name}", false) ) {
413
  return;
414
  }
415
 
416
  /**
417
+ * wbcr_factory_458_plugin_activation
418
  *
419
  * @since 4.1.1 - deprecated
420
  */
421
+ wbcr_factory_458_do_action_deprecated('wbcr_factory_458_plugin_activation', [
422
  $this
423
  ], '4.1.1', "wbcr/factory/plugin_activation");
424
 
427
  *
428
  * @since 4.1.2 - deprecated
429
  */
430
+ wbcr_factory_458_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_458_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_458_plugin_activation_' . $this->plugin_name
452
  *
453
  * @since 4.1.1 - deprecated
454
  */
455
+ wbcr_factory_458_do_action_deprecated('wbcr_factory_458_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_458/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
497
  return;
498
  }
499
 
500
  /**
501
+ * wbcr_factory_458_plugin_deactivation
502
  *
503
  * @since 4.1.1 - deprecated
504
  */
505
+ wbcr_factory_458_do_action_deprecated('wbcr_factory_458_plugin_deactivation', [
506
  $this
507
  ], '4.1.1', "wbcr/factory/plugin_deactivation");
508
 
511
  *
512
  * @since 4.1.2 - deprecated
513
  */
514
+ wbcr_factory_458_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_458_plugin_deactivation_ . $this->plugin_name
527
  *
528
  * @since 4.1.1 - deprecated
529
  */
530
+ wbcr_factory_458_do_action_deprecated('wbcr_factory_458_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_458_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_FactoryPages457') ) {
578
+ throw new Exception('The factory_pages_457 module is not included.');
579
  }
580
 
581
  if( !is_admin() ) {
584
  return null;
585
  }
586
 
587
+ return Wbcr_FactoryPages457::getPageUrl($this, $page_id, $args);
588
  }
589
 
590
  /**
594
  * @param $slug
595
  * param $premium
596
  *
597
+ * @return \WBCR\Factory_458\Components\Install_Button
598
  */
599
  public function get_install_component_button($component_type, $slug)
600
  {
601
+ require_once FACTORY_458_DIR . '/includes/components/class-install-component-button.php';
602
 
603
+ return new \WBCR\Factory_458\Components\Install_Button($this, $component_type, $slug);
604
  }
605
 
606
  /**
609
  * @param $component_type
610
  * @param $slug
611
  *
612
+ * @return \WBCR\Factory_458\Components\Delete_Button
613
  */
614
  public function get_delete_component_button($component_type, $slug)
615
  {
616
+ require_once FACTORY_458_DIR . '/includes/components/class-delete-component-button.php';
617
 
618
+ return new WBCR\Factory_458\Components\Delete_Button($this, $component_type, $slug);
619
  }
620
 
621
  /**
798
  /**
799
  * @since 4.1.1 - deprecated
800
  */
801
+ wbcr_factory_458_do_action_deprecated('wbcr_factory_458_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_458/modules_loaded-" . $this->plugin_name);
802
 
803
  /**
804
  * @since 4.1.1 - add
805
  */
806
+ do_action('wbcr/factory_458/modules_loaded-' . $this->plugin_name);
807
  }
808
 
809
 
830
  });
831
 
832
  if( is_admin() ) {
833
+ add_filter('wbcr_factory_458_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_458\Migrations($this);
850
  }
851
 
852
  /**
857
  */
858
  protected function init_plugin_notices()
859
  {
860
+ new Wbcr\Factory_458\Notices($this);
861
  }
862
 
863
  /**
873
  protected function init_plugin_updates()
874
  {
875
  if( $this->has_updates ) {
876
+ new WBCR\Factory_458\Updates\Upgrader($this);
877
  }
878
  }
879
 
896
  }
897
 
898
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
899
+ $this->premium = WBCR\Factory_458\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_458\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_Factory453_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_Factory453_Base {
21
 
22
- use WBCR\Factory_453\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
@@ -81,7 +81,7 @@ class Wbcr_Factory453_Base {
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
- * экземпляр класса \WBCR\Factory_453\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
@@ -127,7 +127,7 @@ class Wbcr_Factory453_Base {
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
- * WBCR\Factory_453\Premium\Provider > WBCR\Factory_Freemius_140\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
@@ -177,9 +177,9 @@ class Wbcr_Factory453_Base {
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
- ['libs/factory/bootstrap', 'factory_bootstrap_454', 'admin'],
181
- ['libs/factory/forms', 'factory_forms_450', 'admin'],
182
- ['libs/factory/pages', 'factory_pages_452', 'admin'],
183
  ];
184
 
185
  /**
@@ -209,20 +209,20 @@ class Wbcr_Factory453_Base {
209
 
210
 
211
  /**
212
- * Экземпляр класса \WBCR\Factory_453\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
- * @var \WBCR\Factory_453\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
- * Экземпляр класса \WBCR\Factory_453\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
- * @var \WBCR\Factory_453\Entities\Paths
226
  */
227
  protected $paths;
228
 
@@ -271,8 +271,8 @@ class Wbcr_Factory453_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_453\Entities\Support($this->support_details);
275
- $this->paths = new \WBCR\Factory_453\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_Factory453_Base {
394
  * Проверяет, включен ли премиум для этого плагина или нет.
395
  *
396
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
397
- * См. Wbcr_Factory453_Base::has_premium
398
  */
399
  public function has_premium()
400
  {
@@ -404,7 +404,7 @@ class Wbcr_Factory453_Base {
404
  /**
405
  * Позволяет получить заголовок плагина.
406
  *
407
- * @return string Возвращает заголовок плагина. См. Wbcr_Factory453_Base::plugin_title
408
  */
409
  public function getPluginTitle()
410
  {
@@ -414,7 +414,7 @@ class Wbcr_Factory453_Base {
414
  /**
415
  * Позволяет получить префикс плагина.
416
  *
417
- * @return string Возвращает префикс плагина.См. Wbcr_Factory453_Base::prefix
418
  */
419
  public function getPrefix()
420
  {
@@ -424,7 +424,7 @@ class Wbcr_Factory453_Base {
424
  /**
425
  * Позволяет получить имя плагина.
426
  *
427
- * @return string Возвращает имя плагина. См. Wbcr_Factory453_Base::plugin_name
428
  */
429
  public function getPluginName()
430
  {
@@ -434,7 +434,7 @@ class Wbcr_Factory453_Base {
434
  /**
435
  * Позволяет получить версию плагина.
436
  *
437
- * @return string Возвращает версию плагина. См. Wbcr_Factory453_Base::plugin_version
438
  */
439
  public function getPluginVersion()
440
  {
@@ -458,7 +458,7 @@ class Wbcr_Factory453_Base {
458
  * какие-то данные не описанные в интерфейсе этого плагина.
459
  *
460
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
461
- * Wbcr_Factory453_Base::plugin_data
462
  *
463
  * @return null
464
  */
@@ -472,9 +472,9 @@ class Wbcr_Factory453_Base {
472
  }
473
 
474
  /**
475
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_453\Entities\Support.
476
  *
477
- * @return \WBCR\Factory_453\Entities\Support
478
  */
479
  public function get_support()
480
  {
@@ -482,9 +482,9 @@ class Wbcr_Factory453_Base {
482
  }
483
 
484
  /**
485
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_453\Entities\Paths.
486
  *
487
- * @return \WBCR\Factory_453\Entities\Paths
488
  */
489
  public function get_paths()
490
  {
@@ -494,7 +494,7 @@ class Wbcr_Factory453_Base {
494
  /**
495
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
496
  *
497
- * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory453_Base::plugin_data
498
  */
499
  public function getPluginInfo()
500
  {
5
  }
6
 
7
  /**
8
+ * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory458_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_Factory458_Base {
21
 
22
+ use WBCR\Factory_458\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
+ * экземпляр класса \WBCR\Factory_458\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
+ * WBCR\Factory_458\Premium\Provider > WBCR\Factory_Freemius_145\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
+ ['libs/factory/bootstrap', 'factory_bootstrap_459', 'admin'],
181
+ ['libs/factory/forms', 'factory_forms_455', 'admin'],
182
+ ['libs/factory/pages', 'factory_pages_457', 'admin'],
183
  ];
184
 
185
  /**
209
 
210
 
211
  /**
212
+ * Экземпляр класса \WBCR\Factory_458\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
+ * @var \WBCR\Factory_458\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
+ * Экземпляр класса \WBCR\Factory_458\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
+ * @var \WBCR\Factory_458\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_458\Entities\Support($this->support_details);
275
+ $this->paths = new \WBCR\Factory_458\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_Factory458_Base::has_premium
398
  */
399
  public function has_premium()
400
  {
404
  /**
405
  * Позволяет получить заголовок плагина.
406
  *
407
+ * @return string Возвращает заголовок плагина. См. Wbcr_Factory458_Base::plugin_title
408
  */
409
  public function getPluginTitle()
410
  {
414
  /**
415
  * Позволяет получить префикс плагина.
416
  *
417
+ * @return string Возвращает префикс плагина.См. Wbcr_Factory458_Base::prefix
418
  */
419
  public function getPrefix()
420
  {
424
  /**
425
  * Позволяет получить имя плагина.
426
  *
427
+ * @return string Возвращает имя плагина. См. Wbcr_Factory458_Base::plugin_name
428
  */
429
  public function getPluginName()
430
  {
434
  /**
435
  * Позволяет получить версию плагина.
436
  *
437
+ * @return string Возвращает версию плагина. См. Wbcr_Factory458_Base::plugin_version
438
  */
439
  public function getPluginVersion()
440
  {
458
  * какие-то данные не описанные в интерфейсе этого плагина.
459
  *
460
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
461
+ * Wbcr_Factory458_Base::plugin_data
462
  *
463
  * @return null
464
  */
472
  }
473
 
474
  /**
475
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_458\Entities\Support.
476
  *
477
+ * @return \WBCR\Factory_458\Entities\Support
478
  */
479
  public function get_support()
480
  {
482
  }
483
 
484
  /**
485
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_458\Entities\Paths.
486
  *
487
+ * @return \WBCR\Factory_458\Entities\Paths
488
  */
489
  public function get_paths()
490
  {
494
  /**
495
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
496
  *
497
+ * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory458_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_Factory453_Request {
15
 
16
  /**
17
  * @param null $param
11
  * @package factory-core
12
  */
13
 
14
+ class Wbcr_Factory458_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_Factory453_Requirements' ) ) {
16
- class Wbcr_Factory453_Requirements {
17
 
18
  /**
19
  * Factory framework version
@@ -242,7 +242,7 @@ if ( ! class_exists( 'Wbcr_Factory453_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_106' ), $this->plugin_title ) . ' ';
246
  $notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
247
 
248
  $has_one = false;
@@ -273,21 +273,21 @@ if ( ! class_exists( 'Wbcr_Factory453_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_453' ), $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_453' ), $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_453' ), $this->plugin_title );
291
  }
292
  }
293
  }
12
  * @since 4.0.9
13
  */
14
  // @formatter:off
15
+ if ( ! class_exists( 'Wbcr_Factory458_Requirements' ) ) {
16
+ class Wbcr_Factory458_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_110' ), $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_458' ), $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_458' ), $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_458' ), $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_453\Components;
4
 
5
  /**
6
  * This file groups the settings for quick setup
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\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_453\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-453-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_Factory453_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_106\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_453'),
424
- 'install' => __('Install', 'wbcr_factory_453'),
425
- 'deactivate' => __('Deactivate', 'wbcr_factory_453'),
426
- 'delete' => __('Delete', 'wbcr_factory_453'),
427
- 'loading' => __('Please wait...', 'wbcr_factory_453'),
428
- 'preparation' => __('Preparation...', 'wbcr_factory_453'),
429
- 'read' => __('Read more', 'wbcr_factory_453')
430
  ];
431
  }
432
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Components;
4
 
5
  /**
6
  * This file groups the settings for quick setup
22
 
23
  protected $classes = [
24
  'button',
25
+ 'wfactory-458-process-button'
26
  ];
27
  protected $data = [];
28
  protected $base_path;
37
  * @throws \Exception
38
  * @since 4.3.3
39
  */
40
+ public function __construct(\Wbcr_Factory458_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_110\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_458'),
424
+ 'install' => __('Install', 'wbcr_factory_458'),
425
+ 'deactivate' => __('Deactivate', 'wbcr_factory_458'),
426
+ 'delete' => __('Delete', 'wbcr_factory_458'),
427
+ 'loading' => __('Please wait...', 'wbcr_factory_458'),
428
+ 'preparation' => __('Preparation...', 'wbcr_factory_458'),
429
+ 'read' => __('Read more', 'wbcr_factory_458')
430
  ];
431
  }
432
 
libs/factory/core/includes/entities/class-factory-paths.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_453\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\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_453\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\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_453_deprecated_hook()
57
  *
58
  */
59
- function wbcr_factory_453_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_453_deprecated_hook( $tag, $version, $replacement, $message );
67
 
68
  return apply_filters_ref_array( $tag, $args );
69
  }
@@ -89,7 +89,7 @@ function wbcr_factory_453_apply_filters_deprecated( $tag, $args, $version, $repl
89
  * @see _deprecated_hook()
90
  *
91
  */
92
- function wbcr_factory_453_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_453_do_action_deprecated( $tag, $args, $version, $replacem
98
  if ( ! has_action( $tag ) ) {
99
  return;
100
  }
101
- wbcr_factory_453_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_453_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_453_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_453_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_458_deprecated_hook()
57
  *
58
  */
59
+ function wbcr_factory_458_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_458_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_458_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_458_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_458_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_458_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_453\Premium\Interfaces;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\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_453\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory453_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_Factory453_Plugin
28
  */
29
  protected $plugin;
30
 
@@ -36,24 +36,24 @@ class Manager {
36
  /**
37
  * Manager constructor.
38
  *
39
- * @param Wbcr_Factory453_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
- public function __construct( Wbcr_Factory453_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
- * @param Wbcr_Factory453_Plugin $plugin
51
  * @param array $settings
52
  *
53
- * @return \WBCR\Factory_Freemius_140\Premium\Provider
54
  * @throws Exception
55
  */
56
- public static function instance( Wbcr_Factory453_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_140\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_453\Premium\Provider interface!" );
74
  }
75
 
76
  return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory458_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
24
  public static $providers;
25
 
26
  /**
27
+ * @var Wbcr_Factory458_Plugin
28
  */
29
  protected $plugin;
30
 
36
  /**
37
  * Manager constructor.
38
  *
39
+ * @param Wbcr_Factory458_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
+ public function __construct( Wbcr_Factory458_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
+ * @param Wbcr_Factory458_Plugin $plugin
51
  * @param array $settings
52
  *
53
+ * @return \WBCR\Factory_Freemius_145\Premium\Provider
54
  * @throws Exception
55
  */
56
+ public static function instance( Wbcr_Factory458_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_145\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_458\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_453\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory453_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_Factory453_Plugin
25
  */
26
  protected $plugin;
27
 
@@ -38,10 +38,10 @@ abstract class Provider {
38
  /**
39
  * Provider constructor.
40
  *
41
- * @param Wbcr_Factory453_Plugin $plugin
42
  * @param array $settings
43
  */
44
- public function __construct(Wbcr_Factory453_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_453\Premium\Interfaces\License
248
  */
249
  abstract public function get_license();
250
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory458_Plugin;
7
 
8
  // Exit if accessed directly
9
  if( !defined('ABSPATH') ) {
21
  abstract class Provider {
22
 
23
  /**
24
+ * @var Wbcr_Factory458_Plugin
25
  */
26
  protected $plugin;
27
 
38
  /**
39
  * Provider constructor.
40
  *
41
+ * @param Wbcr_Factory458_Plugin $plugin
42
  * @param array $settings
43
  */
44
+ public function __construct(Wbcr_Factory458_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_458\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_453\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
- use Wbcr_Factory453_Plugin;
9
- use Wbcr_FactoryPages452_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_Factory453_Plugin $plugin
49
  *
50
  * @throws Exception
51
  * @since 4.1.1
52
  *
53
  */
54
- public function __construct(Wbcr_Factory453_Plugin $plugin)
55
  {
56
  parent::__construct($plugin);
57
 
@@ -242,9 +242,9 @@ class Premium_Upgrader extends Upgrader {
242
  /**
243
  * Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
244
  *
245
- * @param Wbcr_FactoryPages452_ImpressiveThemplate $obj
246
  *
247
- * @param Wbcr_Factory453_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_453'),
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_453'),
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_453'), $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_453'), $activate_plugin_url, $cancel_license_url)
818
  ];
819
 
820
  if( isset($texts[$type]) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
+ use Wbcr_Factory458_Plugin;
9
+ use Wbcr_FactoryPages457_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_Factory458_Plugin $plugin
49
  *
50
  * @throws Exception
51
  * @since 4.1.1
52
  *
53
  */
54
+ public function __construct(Wbcr_Factory458_Plugin $plugin)
55
  {
56
  parent::__construct($plugin);
57
 
242
  /**
243
  * Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
244
  *
245
+ * @param Wbcr_FactoryPages457_ImpressiveThemplate $obj
246
  *
247
+ * @param Wbcr_Factory458_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_458'),
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_458'),
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_458'), $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_458'), $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_453\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
- use Wbcr_Factory453_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_140\Updates\Freemius_Repository',
32
- * 'freemius' => '\WBCR\Factory_453\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
@@ -42,7 +42,7 @@ class Upgrader {
42
  protected $type = 'default';
43
 
44
  /**
45
- * @var Wbcr_Factory453_Plugin
46
  */
47
  protected $plugin;
48
 
@@ -88,7 +88,7 @@ class Upgrader {
88
  /**
89
  * Manager constructor.
90
  *
91
- * @param Wbcr_Factory453_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_Factory453_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_453\Updates\Wordpress_Repository';
111
- self::$repositories['github'] = '\WBCR\Factory_453\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_453\Updates\Repository interface!");
302
  }
303
 
304
  return new self::$repositories[$repository_name]($this->plugin, $this->get_settings());
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
+ use Wbcr_Factory458_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_145\Updates\Freemius_Repository',
32
+ * 'freemius' => '\WBCR\Factory_458\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
42
  protected $type = 'default';
43
 
44
  /**
45
+ * @var Wbcr_Factory458_Plugin
46
  */
47
  protected $plugin;
48
 
88
  /**
89
  * Manager constructor.
90
  *
91
+ * @param Wbcr_Factory458_Plugin $plugin
92
  * @param $args
93
  * @param bool $is_premium
94
  *
96
  * @since 4.1.1
97
  *
98
  */
99
+ public function __construct(Wbcr_Factory458_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_458\Updates\Wordpress_Repository';
111
+ self::$repositories['github'] = '\WBCR\Factory_458\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_458\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_453\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory453_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_Factory453_Plugin $plugin
61
  * @param bool $is_premium
62
  * @since 4.4.1
63
  */
64
- public function __construct(Wbcr_Factory453_Plugin $plugin, array $settings = [])
65
  {
66
  $settings = wp_parse_args($settings, [
67
  'github_username' => '',
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory458_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
57
  /**
58
  * Wordpress constructor.
59
  *
60
+ * @param Wbcr_Factory458_Plugin $plugin
61
  * @param bool $is_premium
62
  * @since 4.4.1
63
  */
64
+ public function __construct(Wbcr_Factory458_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_453\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory453_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
@@ -23,17 +23,17 @@ abstract class Repository {
23
  protected $initialized = false;
24
 
25
  /**
26
- * @var Wbcr_Factory453_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
- * @param Wbcr_Factory453_Plugin $plugin
34
  * @param array $settings
35
  */
36
- abstract public function __construct(Wbcr_Factory453_Plugin $plugin, array $settings = []);
37
 
38
  /**
39
  * @return void
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory458_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
23
  protected $initialized = false;
24
 
25
  /**
26
+ * @var Wbcr_Factory458_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
+ * @param Wbcr_Factory458_Plugin $plugin
34
  * @param array $settings
35
  */
36
+ abstract public function __construct(Wbcr_Factory458_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_453\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory453_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_Factory453_Plugin $plugin
24
  * @param array $settings
25
  */
26
- public function __construct(Wbcr_Factory453_Plugin $plugin, array $settings = [])
27
  {
28
  $this->plugin = $plugin;
29
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_458\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory458_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
20
  /**
21
  * Wordpress constructor.
22
  *
23
+ * @param Wbcr_Factory458_Plugin $plugin
24
  * @param array $settings
25
  */
26
+ public function __construct(Wbcr_Factory458_Plugin $plugin, array $settings = [])
27
  {
28
  $this->plugin = $plugin;
29
  }
libs/factory/core/langs/{wbcr_factory_453-ru_RU.mo → wbcr_factory_458-ru_RU.mo} RENAMED
File without changes
libs/factory/core/langs/{wbcr_factory_453-ru_RU.po → wbcr_factory_458-ru_RU.po} RENAMED
File without changes
libs/factory/feedback/assets/css/dialog-boxes.css CHANGED
@@ -1,4 +1,4 @@
1
- .wbcr-factory-feedback-114-modal {
2
  position: fixed;
3
  overflow: auto;
4
  height: 100%;
@@ -9,7 +9,7 @@
9
  background: rgba(0, 0, 0, 0.6)
10
  }
11
 
12
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-dialog {
13
  background: transparent;
14
  position: absolute;
15
  left: 50%;
@@ -21,7 +21,7 @@
21
  }
22
 
23
  @media (max-width: 650px) {
24
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-dialog {
25
  margin-left: -50%;
26
  box-sizing: border-box;
27
  padding-left: 10px;
@@ -29,54 +29,54 @@
29
  width: 100%
30
  }
31
 
32
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-dialog .wbcr-factory-feedback-114-modal-panel > h3 > strong {
33
  font-size: 1.3em
34
  }
35
  }
36
 
37
- .wbcr-factory-feedback-114-modal.active {
38
  display: block
39
  }
40
 
41
- .wbcr-factory-feedback-114-modal.active:before {
42
  display: block
43
  }
44
 
45
- .wbcr-factory-feedback-114-modal.active .wbcr-factory-feedback-114-modal-dialog {
46
  top: 10%
47
  }
48
 
49
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-success .wbcr-factory-feedback-114-modal-header {
50
  border-bottom-color: #46b450
51
  }
52
 
53
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-success .wbcr-factory-feedback-114-modal-body {
54
  background-color: #f7fff7
55
  }
56
 
57
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-warn .wbcr-factory-feedback-114-modal-header {
58
  border-bottom-color: #ffb900
59
  }
60
 
61
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-warn .wbcr-factory-feedback-114-modal-body {
62
  background-color: #fff8e5
63
  }
64
 
65
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-error .wbcr-factory-feedback-114-modal-header {
66
  border-bottom-color: #dc3232
67
  }
68
 
69
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-error .wbcr-factory-feedback-114-modal-body {
70
  background-color: #ffeaea
71
  }
72
 
73
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-body, .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-footer {
74
  border: 0;
75
  background: #fefefe;
76
  padding: 20px
77
  }
78
 
79
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header {
80
  border-bottom: #eeeeee solid 1px;
81
  background: #fbfbfb;
82
  padding: 15px 20px;
@@ -84,7 +84,7 @@
84
  margin-bottom: -10px
85
  }
86
 
87
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header h4 {
88
  margin: 0;
89
  padding: 0;
90
  text-transform: uppercase;
@@ -96,7 +96,7 @@
96
  -webkit-font-smoothing: antialiased
97
  }
98
 
99
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header .wbcr-factory-feedback-114-close {
100
  position: absolute;
101
  right: 10px;
102
  top: 12px;
@@ -113,166 +113,166 @@
113
  transition: all 0.2s ease-in-out
114
  }
115
 
116
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header .wbcr-factory-feedback-114-close:hover {
117
  color: #fff;
118
  background: #aaa
119
  }
120
 
121
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header .wbcr-factory-feedback-114-close .dashicons, .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header .wbcr-factory-feedback-114-close:hover .dashicons {
122
  text-decoration: none
123
  }
124
 
125
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-body {
126
  border-bottom: 0
127
  }
128
 
129
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-body p {
130
  font-size: 14px
131
  }
132
 
133
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-body h2 {
134
  font-size: 20px;
135
  line-height: 1.5em
136
  }
137
 
138
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-body > div {
139
  margin-top: 10px
140
  }
141
 
142
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-body > div h2 {
143
  font-weight: bold;
144
  font-size: 20px;
145
  margin-top: 0
146
  }
147
 
148
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-footer {
149
  border-top: #eeeeee solid 1px;
150
  text-align: right
151
  }
152
 
153
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-footer > .button {
154
  margin: 0 7px
155
  }
156
 
157
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-footer > .button:first-child {
158
  margin: 0
159
  }
160
 
161
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-panel > .notice.inline {
162
  margin: 0;
163
  display: none
164
  }
165
 
166
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-panel:not(.active) {
167
  display: none
168
  }
169
 
170
- .rtl .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header .wbcr-factory-feedback-114-close {
171
  right: auto;
172
  left: 20px
173
  }
174
 
175
- body.has-wbcr-factory-feedback-114-modal {
176
  overflow: hidden
177
  }
178
 
179
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .reason-input, .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .internal-message {
180
  margin: 3px 0 3px 22px
181
  }
182
 
183
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .reason-input input, .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .reason-input textarea, .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .internal-message input, .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .internal-message textarea {
184
  width: 100%
185
  }
186
 
187
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback li.reason.has-internal-message .internal-message {
188
  border: 1px solid #ccc;
189
  padding: 7px;
190
  display: none
191
  }
192
 
193
  @media (max-width: 650px) {
194
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback li.reason li.reason {
195
  margin-bottom: 10px
196
  }
197
 
198
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback li.reason li.reason .reason-input, .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback li.reason li.reason .internal-message {
199
  margin-left: 29px
200
  }
201
 
202
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback li.reason li.reason label {
203
  display: table
204
  }
205
 
206
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback li.reason li.reason label > span {
207
  display: table-cell;
208
  font-size: 1.3em
209
  }
210
  }
211
 
212
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .wbcr-factory-feedback-114-anonymous-feedback-label {
213
  float: left
214
  }
215
 
216
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .wbcr-factory-feedback-114-modal-panel {
217
  margin-top: 0 !important
218
  }
219
 
220
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-deactivation-feedback .wbcr-factory-feedback-114-modal-panel h3 {
221
  margin-top: 0;
222
  line-height: 1.5em
223
  }
224
 
225
- #the-list .deactivate > .wbcr-factory-feedback-114-slug {
226
  display: none
227
  }
228
 
229
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-subscription-cancellation .wbcr-factory-feedback-114-price-increase-warning {
230
  color: red;
231
  font-weight: bold;
232
  padding: 0 25px;
233
  margin-bottom: 0
234
  }
235
 
236
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-subscription-cancellation ul.subscription-actions label input {
237
  float: left;
238
  top: 5px;
239
  position: relative
240
  }
241
 
242
- .rtl .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-subscription-cancellation ul.subscription-actions label input {
243
  float: right
244
  }
245
 
246
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-subscription-cancellation ul.subscription-actions label span {
247
  display: block;
248
  margin-left: 24px
249
  }
250
 
251
- .rtl .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-subscription-cancellation ul.subscription-actions label span {
252
  margin-left: 0;
253
  margin-right: 24px
254
  }
255
 
256
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-activation .wbcr-factory-feedback-114-modal-body input.wbcr-factory-feedback-114-license-key {
257
  width: 100%
258
  }
259
 
260
- .wbcr-factory-feedback-114-license-options-container table, .wbcr-factory-feedback-114-license-options-container table select, .wbcr-factory-feedback-114-license-options-container table .wbcr-factory-feedback-114-available-license-key {
261
  width: 100%
262
  }
263
 
264
- .wbcr-factory-feedback-114-license-options-container table td:first-child {
265
  width: 1%
266
  }
267
 
268
- .wbcr-factory-feedback-114-license-options-container table .wbcr-factory-feedback-114-other-license-key-container label {
269
  position: relative;
270
  top: 6px;
271
  float: left;
272
  margin-right: 5px
273
  }
274
 
275
- .wbcr-factory-feedback-114-license-options-container table .wbcr-factory-feedback-114-other-license-key-container div {
276
  overflow: hidden;
277
  width: auto;
278
  height: 30px;
@@ -281,90 +281,90 @@ body.has-wbcr-factory-feedback-114-modal {
281
  position: relative
282
  }
283
 
284
- .wbcr-factory-feedback-114-license-options-container table .wbcr-factory-feedback-114-other-license-key-container div input {
285
  margin: 0
286
  }
287
 
288
- .wbcr-factory-feedback-114-sites-list-container td {
289
  cursor: pointer
290
  }
291
 
292
- .wbcr-factory-feedback-114-multisite-options-container {
293
  margin-top: 10px;
294
  border: 1px solid #ccc;
295
  padding: 5px
296
  }
297
 
298
- .wbcr-factory-feedback-114-multisite-options-container a {
299
  text-decoration: none
300
  }
301
 
302
- .wbcr-factory-feedback-114-multisite-options-container a:focus {
303
  box-shadow: none
304
  }
305
 
306
- .wbcr-factory-feedback-114-multisite-options-container a.selected {
307
  font-weight: bold
308
  }
309
 
310
- .wbcr-factory-feedback-114-multisite-options-container.wbcr-factory-feedback-114-apply-on-all-sites {
311
  border: 0 none;
312
  padding: 0
313
  }
314
 
315
- .wbcr-factory-feedback-114-multisite-options-container.wbcr-factory-feedback-114-apply-on-all-sites .wbcr-factory-feedback-114-all-sites-options {
316
  border-spacing: 0
317
  }
318
 
319
- .wbcr-factory-feedback-114-multisite-options-container.wbcr-factory-feedback-114-apply-on-all-sites .wbcr-factory-feedback-114-all-sites-options td:not(:first-child) {
320
  display: none
321
  }
322
 
323
- .wbcr-factory-feedback-114-multisite-options-container .wbcr-factory-feedback-114-sites-list-container {
324
  display: none;
325
  overflow: auto
326
  }
327
 
328
- .wbcr-factory-feedback-114-multisite-options-container .wbcr-factory-feedback-114-sites-list-container table td {
329
  border-top: 1px solid #ccc;
330
  padding: 4px 2px
331
  }
332
 
333
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend .email-address-container {
334
  overflow: hidden;
335
  padding-right: 2px
336
  }
337
 
338
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend.wbcr-factory-feedback-114-freemium input.email-address {
339
  width: 300px
340
  }
341
 
342
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend.wbcr-factory-feedback-114-freemium label {
343
  display: block;
344
  margin-bottom: 10px
345
  }
346
 
347
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend.wbcr-factory-feedback-114-premium input.email-address {
348
  width: 100%
349
  }
350
 
351
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend.wbcr-factory-feedback-114-premium .button-container {
352
  float: right;
353
  margin-left: 7px
354
  }
355
 
356
  @media (max-width: 650px) {
357
- .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend.wbcr-factory-feedback-114-premium .button-container {
358
  margin-top: 2px
359
  }
360
  }
361
 
362
- .rtl .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend .wbcr-factory-feedback-114-modal-body .input-container > .email-address-container {
363
  padding-left: 2px;
364
  padding-right: 0
365
  }
366
 
367
- .rtl .wbcr-factory-feedback-114-modal.wbcr-factory-feedback-114-modal-license-key-resend .wbcr-factory-feedback-114-modal-body .button-container {
368
  float: left;
369
  margin-right: 7px;
370
  margin-left: 0
@@ -375,14 +375,14 @@ a.show-license-resend-modal {
375
  display: inline-block
376
  }
377
 
378
- .wbcr-factory-feedback-114-ajax-loader {
379
  position: relative;
380
  width: 170px;
381
  height: 20px;
382
  margin: auto
383
  }
384
 
385
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar {
386
  position: absolute;
387
  top: 0;
388
  background-color: #0074a3;
@@ -415,7 +415,7 @@ a.show-license-resend-modal {
415
  transform: 0.3
416
  }
417
 
418
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-1 {
419
  left: 0px;
420
  animation-delay: 0.6s;
421
  -o-animation-delay: 0.6s;
@@ -424,7 +424,7 @@ a.show-license-resend-modal {
424
  -moz-animation-delay: 0.6s
425
  }
426
 
427
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-2 {
428
  left: 19px;
429
  animation-delay: 0.75s;
430
  -o-animation-delay: 0.75s;
@@ -433,7 +433,7 @@ a.show-license-resend-modal {
433
  -moz-animation-delay: 0.75s
434
  }
435
 
436
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-3 {
437
  left: 38px;
438
  animation-delay: 0.9s;
439
  -o-animation-delay: 0.9s;
@@ -442,7 +442,7 @@ a.show-license-resend-modal {
442
  -moz-animation-delay: 0.9s
443
  }
444
 
445
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-4 {
446
  left: 57px;
447
  animation-delay: 1.05s;
448
  -o-animation-delay: 1.05s;
@@ -451,7 +451,7 @@ a.show-license-resend-modal {
451
  -moz-animation-delay: 1.05s
452
  }
453
 
454
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-5 {
455
  left: 76px;
456
  animation-delay: 1.2s;
457
  -o-animation-delay: 1.2s;
@@ -460,7 +460,7 @@ a.show-license-resend-modal {
460
  -moz-animation-delay: 1.2s
461
  }
462
 
463
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-6 {
464
  left: 95px;
465
  animation-delay: 1.35s;
466
  -o-animation-delay: 1.35s;
@@ -469,7 +469,7 @@ a.show-license-resend-modal {
469
  -moz-animation-delay: 1.35s
470
  }
471
 
472
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-7 {
473
  left: 114px;
474
  animation-delay: 1.5s;
475
  -o-animation-delay: 1.5s;
@@ -478,7 +478,7 @@ a.show-license-resend-modal {
478
  -moz-animation-delay: 1.5s
479
  }
480
 
481
- .wbcr-factory-feedback-114-ajax-loader .wbcr-factory-feedback-114-ajax-loader-bar-8 {
482
  left: 133px;
483
  animation-delay: 1.65s;
484
  -o-animation-delay: 1.65s;
@@ -582,18 +582,18 @@ a.show-license-resend-modal {
582
  }
583
  }
584
 
585
- .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form h2, .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons {
586
  display: none
587
  }
588
 
589
- .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form input[type=password], .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form input[type=email], .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form input[type=text] {
590
  -webkit-appearance: none;
591
  padding: 10px 10px 5px 10px;
592
  width: 300px;
593
  max-width: 100%
594
  }
595
 
596
- .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form > div, .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form label, .wbcr-factory-feedback-114-modal-auto-install #request-filesystem-credentials-form fieldset {
597
  width: 300px;
598
  max-width: 100%;
599
  margin: 0 auto;
@@ -629,21 +629,21 @@ a.show-license-resend-modal {
629
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) !important
630
  }
631
 
632
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header {
633
  background: black;
634
  color: #fff;
635
  }
636
 
637
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-header h4 {
638
  text-shadow: none;
639
  color: #fff;
640
  }
641
 
642
- .wbcr-factory-feedback-114-modal .wbcr-factory-feedback-114-modal-body {
643
  padding-top: 35px;
644
  }
645
 
646
- .wbcr-factory-feedback-114-modal a.button-primary {
647
  background-color: #9fbb1a !important;
648
  color: #fff !important;
649
  border: none !important;
@@ -659,7 +659,7 @@ a.show-license-resend-modal {
659
  font-family: Lato, sans-serif;
660
  }
661
 
662
- .wbcr-factory-feedback-114-modal a.button-secondary {
663
  border: none !important;
664
  box-shadow: none !important;
665
  text-shadow: none !important;
1
+ .wbcr-factory-feedback-118-modal {
2
  position: fixed;
3
  overflow: auto;
4
  height: 100%;
9
  background: rgba(0, 0, 0, 0.6)
10
  }
11
 
12
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-dialog {
13
  background: transparent;
14
  position: absolute;
15
  left: 50%;
21
  }
22
 
23
  @media (max-width: 650px) {
24
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-dialog {
25
  margin-left: -50%;
26
  box-sizing: border-box;
27
  padding-left: 10px;
29
  width: 100%
30
  }
31
 
32
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-dialog .wbcr-factory-feedback-118-modal-panel > h3 > strong {
33
  font-size: 1.3em
34
  }
35
  }
36
 
37
+ .wbcr-factory-feedback-118-modal.active {
38
  display: block
39
  }
40
 
41
+ .wbcr-factory-feedback-118-modal.active:before {
42
  display: block
43
  }
44
 
45
+ .wbcr-factory-feedback-118-modal.active .wbcr-factory-feedback-118-modal-dialog {
46
  top: 10%
47
  }
48
 
49
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-success .wbcr-factory-feedback-118-modal-header {
50
  border-bottom-color: #46b450
51
  }
52
 
53
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-success .wbcr-factory-feedback-118-modal-body {
54
  background-color: #f7fff7
55
  }
56
 
57
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-warn .wbcr-factory-feedback-118-modal-header {
58
  border-bottom-color: #ffb900
59
  }
60
 
61
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-warn .wbcr-factory-feedback-118-modal-body {
62
  background-color: #fff8e5
63
  }
64
 
65
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-error .wbcr-factory-feedback-118-modal-header {
66
  border-bottom-color: #dc3232
67
  }
68
 
69
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-error .wbcr-factory-feedback-118-modal-body {
70
  background-color: #ffeaea
71
  }
72
 
73
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-body, .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-footer {
74
  border: 0;
75
  background: #fefefe;
76
  padding: 20px
77
  }
78
 
79
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header {
80
  border-bottom: #eeeeee solid 1px;
81
  background: #fbfbfb;
82
  padding: 15px 20px;
84
  margin-bottom: -10px
85
  }
86
 
87
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header h4 {
88
  margin: 0;
89
  padding: 0;
90
  text-transform: uppercase;
96
  -webkit-font-smoothing: antialiased
97
  }
98
 
99
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header .wbcr-factory-feedback-118-close {
100
  position: absolute;
101
  right: 10px;
102
  top: 12px;
113
  transition: all 0.2s ease-in-out
114
  }
115
 
116
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header .wbcr-factory-feedback-118-close:hover {
117
  color: #fff;
118
  background: #aaa
119
  }
120
 
121
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header .wbcr-factory-feedback-118-close .dashicons, .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header .wbcr-factory-feedback-118-close:hover .dashicons {
122
  text-decoration: none
123
  }
124
 
125
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-body {
126
  border-bottom: 0
127
  }
128
 
129
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-body p {
130
  font-size: 14px
131
  }
132
 
133
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-body h2 {
134
  font-size: 20px;
135
  line-height: 1.5em
136
  }
137
 
138
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-body > div {
139
  margin-top: 10px
140
  }
141
 
142
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-body > div h2 {
143
  font-weight: bold;
144
  font-size: 20px;
145
  margin-top: 0
146
  }
147
 
148
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-footer {
149
  border-top: #eeeeee solid 1px;
150
  text-align: right
151
  }
152
 
153
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-footer > .button {
154
  margin: 0 7px
155
  }
156
 
157
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-footer > .button:first-child {
158
  margin: 0
159
  }
160
 
161
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-panel > .notice.inline {
162
  margin: 0;
163
  display: none
164
  }
165
 
166
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-panel:not(.active) {
167
  display: none
168
  }
169
 
170
+ .rtl .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header .wbcr-factory-feedback-118-close {
171
  right: auto;
172
  left: 20px
173
  }
174
 
175
+ body.has-wbcr-factory-feedback-118-modal {
176
  overflow: hidden
177
  }
178
 
179
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .reason-input, .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .internal-message {
180
  margin: 3px 0 3px 22px
181
  }
182
 
183
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .reason-input input, .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .reason-input textarea, .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .internal-message input, .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .internal-message textarea {
184
  width: 100%
185
  }
186
 
187
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback li.reason.has-internal-message .internal-message {
188
  border: 1px solid #ccc;
189
  padding: 7px;
190
  display: none
191
  }
192
 
193
  @media (max-width: 650px) {
194
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback li.reason li.reason {
195
  margin-bottom: 10px
196
  }
197
 
198
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback li.reason li.reason .reason-input, .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback li.reason li.reason .internal-message {
199
  margin-left: 29px
200
  }
201
 
202
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback li.reason li.reason label {
203
  display: table
204
  }
205
 
206
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback li.reason li.reason label > span {
207
  display: table-cell;
208
  font-size: 1.3em
209
  }
210
  }
211
 
212
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .wbcr-factory-feedback-118-anonymous-feedback-label {
213
  float: left
214
  }
215
 
216
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .wbcr-factory-feedback-118-modal-panel {
217
  margin-top: 0 !important
218
  }
219
 
220
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-deactivation-feedback .wbcr-factory-feedback-118-modal-panel h3 {
221
  margin-top: 0;
222
  line-height: 1.5em
223
  }
224
 
225
+ #the-list .deactivate > .wbcr-factory-feedback-118-slug {
226
  display: none
227
  }
228
 
229
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-subscription-cancellation .wbcr-factory-feedback-118-price-increase-warning {
230
  color: red;
231
  font-weight: bold;
232
  padding: 0 25px;
233
  margin-bottom: 0
234
  }
235
 
236
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-subscription-cancellation ul.subscription-actions label input {
237
  float: left;
238
  top: 5px;
239
  position: relative
240
  }
241
 
242
+ .rtl .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-subscription-cancellation ul.subscription-actions label input {
243
  float: right
244
  }
245
 
246
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-subscription-cancellation ul.subscription-actions label span {
247
  display: block;
248
  margin-left: 24px
249
  }
250
 
251
+ .rtl .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-subscription-cancellation ul.subscription-actions label span {
252
  margin-left: 0;
253
  margin-right: 24px
254
  }
255
 
256
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-activation .wbcr-factory-feedback-118-modal-body input.wbcr-factory-feedback-118-license-key {
257
  width: 100%
258
  }
259
 
260
+ .wbcr-factory-feedback-118-license-options-container table, .wbcr-factory-feedback-118-license-options-container table select, .wbcr-factory-feedback-118-license-options-container table .wbcr-factory-feedback-118-available-license-key {
261
  width: 100%
262
  }
263
 
264
+ .wbcr-factory-feedback-118-license-options-container table td:first-child {
265
  width: 1%
266
  }
267
 
268
+ .wbcr-factory-feedback-118-license-options-container table .wbcr-factory-feedback-118-other-license-key-container label {
269
  position: relative;
270
  top: 6px;
271
  float: left;
272
  margin-right: 5px
273
  }
274
 
275
+ .wbcr-factory-feedback-118-license-options-container table .wbcr-factory-feedback-118-other-license-key-container div {
276
  overflow: hidden;
277
  width: auto;
278
  height: 30px;
281
  position: relative
282
  }
283
 
284
+ .wbcr-factory-feedback-118-license-options-container table .wbcr-factory-feedback-118-other-license-key-container div input {
285
  margin: 0
286
  }
287
 
288
+ .wbcr-factory-feedback-118-sites-list-container td {
289
  cursor: pointer
290
  }
291
 
292
+ .wbcr-factory-feedback-118-multisite-options-container {
293
  margin-top: 10px;
294
  border: 1px solid #ccc;
295
  padding: 5px
296
  }
297
 
298
+ .wbcr-factory-feedback-118-multisite-options-container a {
299
  text-decoration: none
300
  }
301
 
302
+ .wbcr-factory-feedback-118-multisite-options-container a:focus {
303
  box-shadow: none
304
  }
305
 
306
+ .wbcr-factory-feedback-118-multisite-options-container a.selected {
307
  font-weight: bold
308
  }
309
 
310
+ .wbcr-factory-feedback-118-multisite-options-container.wbcr-factory-feedback-118-apply-on-all-sites {
311
  border: 0 none;
312
  padding: 0
313
  }
314
 
315
+ .wbcr-factory-feedback-118-multisite-options-container.wbcr-factory-feedback-118-apply-on-all-sites .wbcr-factory-feedback-118-all-sites-options {
316
  border-spacing: 0
317
  }
318
 
319
+ .wbcr-factory-feedback-118-multisite-options-container.wbcr-factory-feedback-118-apply-on-all-sites .wbcr-factory-feedback-118-all-sites-options td:not(:first-child) {
320
  display: none
321
  }
322
 
323
+ .wbcr-factory-feedback-118-multisite-options-container .wbcr-factory-feedback-118-sites-list-container {
324
  display: none;
325
  overflow: auto
326
  }
327
 
328
+ .wbcr-factory-feedback-118-multisite-options-container .wbcr-factory-feedback-118-sites-list-container table td {
329
  border-top: 1px solid #ccc;
330
  padding: 4px 2px
331
  }
332
 
333
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend .email-address-container {
334
  overflow: hidden;
335
  padding-right: 2px
336
  }
337
 
338
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend.wbcr-factory-feedback-118-freemium input.email-address {
339
  width: 300px
340
  }
341
 
342
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend.wbcr-factory-feedback-118-freemium label {
343
  display: block;
344
  margin-bottom: 10px
345
  }
346
 
347
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend.wbcr-factory-feedback-118-premium input.email-address {
348
  width: 100%
349
  }
350
 
351
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend.wbcr-factory-feedback-118-premium .button-container {
352
  float: right;
353
  margin-left: 7px
354
  }
355
 
356
  @media (max-width: 650px) {
357
+ .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend.wbcr-factory-feedback-118-premium .button-container {
358
  margin-top: 2px
359
  }
360
  }
361
 
362
+ .rtl .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend .wbcr-factory-feedback-118-modal-body .input-container > .email-address-container {
363
  padding-left: 2px;
364
  padding-right: 0
365
  }
366
 
367
+ .rtl .wbcr-factory-feedback-118-modal.wbcr-factory-feedback-118-modal-license-key-resend .wbcr-factory-feedback-118-modal-body .button-container {
368
  float: left;
369
  margin-right: 7px;
370
  margin-left: 0
375
  display: inline-block
376
  }
377
 
378
+ .wbcr-factory-feedback-118-ajax-loader {
379
  position: relative;
380
  width: 170px;
381
  height: 20px;
382
  margin: auto
383
  }
384
 
385
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar {
386
  position: absolute;
387
  top: 0;
388
  background-color: #0074a3;
415
  transform: 0.3
416
  }
417
 
418
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-1 {
419
  left: 0px;
420
  animation-delay: 0.6s;
421
  -o-animation-delay: 0.6s;
424
  -moz-animation-delay: 0.6s
425
  }
426
 
427
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-2 {
428
  left: 19px;
429
  animation-delay: 0.75s;
430
  -o-animation-delay: 0.75s;
433
  -moz-animation-delay: 0.75s
434
  }
435
 
436
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-3 {
437
  left: 38px;
438
  animation-delay: 0.9s;
439
  -o-animation-delay: 0.9s;
442
  -moz-animation-delay: 0.9s
443
  }
444
 
445
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-4 {
446
  left: 57px;
447
  animation-delay: 1.05s;
448
  -o-animation-delay: 1.05s;
451
  -moz-animation-delay: 1.05s
452
  }
453
 
454
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-5 {
455
  left: 76px;
456
  animation-delay: 1.2s;
457
  -o-animation-delay: 1.2s;
460
  -moz-animation-delay: 1.2s
461
  }
462
 
463
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-6 {
464
  left: 95px;
465
  animation-delay: 1.35s;
466
  -o-animation-delay: 1.35s;
469
  -moz-animation-delay: 1.35s
470
  }
471
 
472
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-7 {
473
  left: 114px;
474
  animation-delay: 1.5s;
475
  -o-animation-delay: 1.5s;
478
  -moz-animation-delay: 1.5s
479
  }
480
 
481
+ .wbcr-factory-feedback-118-ajax-loader .wbcr-factory-feedback-118-ajax-loader-bar-8 {
482
  left: 133px;
483
  animation-delay: 1.65s;
484
  -o-animation-delay: 1.65s;
582
  }
583
  }
584
 
585
+ .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form h2, .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons {
586
  display: none
587
  }
588
 
589
+ .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form input[type=password], .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form input[type=email], .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form input[type=text] {
590
  -webkit-appearance: none;
591
  padding: 10px 10px 5px 10px;
592
  width: 300px;
593
  max-width: 100%
594
  }
595
 
596
+ .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form > div, .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form label, .wbcr-factory-feedback-118-modal-auto-install #request-filesystem-credentials-form fieldset {
597
  width: 300px;
598
  max-width: 100%;
599
  margin: 0 auto;
629
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) !important
630
  }
631
 
632
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header {
633
  background: black;
634
  color: #fff;
635
  }
636
 
637
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-header h4 {
638
  text-shadow: none;
639
  color: #fff;
640
  }
641
 
642
+ .wbcr-factory-feedback-118-modal .wbcr-factory-feedback-118-modal-body {
643
  padding-top: 35px;
644
  }
645
 
646
+ .wbcr-factory-feedback-118-modal a.button-primary {
647
  background-color: #9fbb1a !important;
648
  color: #fff !important;
649
  border: none !important;
659
  font-family: Lato, sans-serif;
660
  }
661
 
662
+ .wbcr-factory-feedback-118-modal a.button-secondary {
663
  border: none !important;
664
  box-shadow: none !important;
665
  text-shadow: none !important;
libs/factory/feedback/assets/js/deactivate-feedback.js CHANGED
@@ -5,8 +5,8 @@
5
  var plugin_slug = '';
6
 
7
  $(document).ready(function() {
8
- var modal = $('#wbcr-factory-feedback-114-deactivate-form');
9
- var deact_button = $('#the-list .deactivate > .wbcr-factory-feedback-114-plugin-slug').prev();
10
  var deact_button_close = modal.find('a.button-close');
11
  var selectedReasonID = false;
12
 
@@ -26,7 +26,7 @@
26
  var $target = $(evt.target);
27
 
28
  // If the user has clicked anywhere in the modal dialog, just return.
29
- if( $target.hasClass('wbcr-factory-feedback-114-modal-body') || $target.hasClass('wbcr-factory-feedback-114-modal-footer') ) {
30
  return;
31
  }
32
 
@@ -34,7 +34,7 @@
34
  // return.
35
  if(
36
  !$target.hasClass('button-close') &&
37
- ($target.parents('.wbcr-factory-feedback-114-modal-body').length > 0 || $target.parents('.wbcr-factory-feedback-114-modal-footer').length > 0)
38
  ) {
39
  return;
40
  }
@@ -82,13 +82,13 @@
82
 
83
  //-----------------------------------------------------------
84
 
85
- modal.on('click', '.wbcr-factory-feedback-114-modal-footer .button', function(evt) {
86
  evt.preventDefault();
87
  if( $(this).hasClass('disabled') ) {
88
  return;
89
  }
90
 
91
- var _parent = $(this).parents('.wbcr-factory-feedback-114-modal:first');
92
  var _this = $(this);
93
 
94
  if( _this.hasClass('allow-deactivate') ) {
@@ -107,18 +107,18 @@
107
  url: ajaxurl,
108
  method: 'POST',
109
  data: {
110
- action: 'wbcr-factory-feedback-114-save_' + plugin_slug,
111
  plugin: plugin_slug,
112
  reason_id: $radio.val(),
113
  reason_more: userReason,
114
- anonymous: modal.find('#wbcr-factory-feedback-114-anonymous-checkbox').is(':checked')
115
  ? 1
116
  : 0,
117
  _wpnonce: modal.data('nonce')
118
  },
119
  beforeSend: function() {
120
- _parent.find('.wbcr-factory-feedback-114-modal-footer .button').addClass('disabled');
121
- _parent.find('.wbcr-factory-feedback-114-modal-footer .button-secondary').text('Processing...');
122
  },
123
  error: function() {
124
  window.location.href = redirectLink;
5
  var plugin_slug = '';
6
 
7
  $(document).ready(function() {
8
+ var modal = $('#wbcr-factory-feedback-118-deactivate-form');
9
+ var deact_button = $('#the-list .deactivate > .wbcr-factory-feedback-118-plugin-slug').prev();
10
  var deact_button_close = modal.find('a.button-close');
11
  var selectedReasonID = false;
12
 
26
  var $target = $(evt.target);
27
 
28
  // If the user has clicked anywhere in the modal dialog, just return.
29
+ if( $target.hasClass('wbcr-factory-feedback-118-modal-body') || $target.hasClass('wbcr-factory-feedback-118-modal-footer') ) {
30
  return;
31
  }
32
 
34
  // return.
35
  if(
36
  !$target.hasClass('button-close') &&
37
+ ($target.parents('.wbcr-factory-feedback-118-modal-body').length > 0 || $target.parents('.wbcr-factory-feedback-118-modal-footer').length > 0)
38
  ) {
39
  return;
40
  }
82
 
83
  //-----------------------------------------------------------
84
 
85
+ modal.on('click', '.wbcr-factory-feedback-118-modal-footer .button', function(evt) {
86
  evt.preventDefault();
87
  if( $(this).hasClass('disabled') ) {
88
  return;
89
  }
90
 
91
+ var _parent = $(this).parents('.wbcr-factory-feedback-118-modal:first');
92
  var _this = $(this);
93
 
94
  if( _this.hasClass('allow-deactivate') ) {
107
  url: ajaxurl,
108
  method: 'POST',
109
  data: {
110
+ action: 'wbcr-factory-feedback-118-save_' + plugin_slug,
111
  plugin: plugin_slug,
112
  reason_id: $radio.val(),
113
  reason_more: userReason,
114
+ anonymous: modal.find('#wbcr-factory-feedback-118-anonymous-checkbox').is(':checked')
115
  ? 1
116
  : 0,
117
  _wpnonce: modal.data('nonce')
118
  },
119
  beforeSend: function() {
120
+ _parent.find('.wbcr-factory-feedback-118-modal-footer .button').addClass('disabled');
121
+ _parent.find('.wbcr-factory-feedback-118-modal-footer .button-secondary').text('Processing...');
122
  },
123
  error: function() {
124
  window.location.href = redirectLink;
libs/factory/feedback/boot.php CHANGED
@@ -17,31 +17,31 @@ if( !defined('ABSPATH') ) {
17
  exit;
18
  }
19
 
20
- if( defined('FACTORY_FEEDBACK_114_LOADED') || (defined('FACTORY_FEEDBACK_BLOCK') && FACTORY_FEEDBACK_BLOCK) ) {
21
  return;
22
  }
23
 
24
  # Устанавливаем константу, что модуль уже загружен
25
- define('FACTORY_FEEDBACK_114_LOADED', true);
26
 
27
  # Устанавливаем версию модуля
28
- define( 'FACTORY_FEEDBACK_114_VERSION', '1.1.4' );
29
 
30
  # Регистрируем текстовый домен, для интернализации интерфейса модуля
31
- load_plugin_textdomain('wbcr_factory_feedback_114', false, dirname(plugin_basename(__FILE__)) . '/langs');
32
 
33
  # Устанавливаем директорию модуля
34
- define('FACTORY_FEEDBACK_114_DIR', dirname(__FILE__));
35
 
36
  # Устанавливаем url модуля
37
- define('FACTORY_FEEDBACK_114_URL', plugins_url(null, __FILE__));
38
 
39
- require_once(FACTORY_FEEDBACK_114_DIR . '/includes/class-base.php');
40
- require_once(FACTORY_FEEDBACK_114_DIR . '/includes/class-rest-request.php');
41
 
42
  /**
43
- * @param Wbcr_Factory453_Plugin $plugin
44
  */
45
- add_action('wbcr_factory_feedback_114_plugin_created', function ($plugin) {
46
- new WBCR\Factory_Feedback_114\Base($plugin);
47
  });
17
  exit;
18
  }
19
 
20
+ if( defined('FACTORY_FEEDBACK_118_LOADED') || (defined('FACTORY_FEEDBACK_BLOCK') && FACTORY_FEEDBACK_BLOCK) ) {
21
  return;
22
  }
23
 
24
  # Устанавливаем константу, что модуль уже загружен
25
+ define('FACTORY_FEEDBACK_118_LOADED', true);
26
 
27
  # Устанавливаем версию модуля
28
+ define( 'FACTORY_FEEDBACK_118_VERSION', '1.1.8' );
29
 
30
  # Регистрируем текстовый домен, для интернализации интерфейса модуля
31
+ load_plugin_textdomain('wbcr_factory_feedback_118', false, dirname(plugin_basename(__FILE__)) . '/langs');
32
 
33
  # Устанавливаем директорию модуля
34
+ define('FACTORY_FEEDBACK_118_DIR', dirname(__FILE__));
35
 
36
  # Устанавливаем url модуля
37
+ define('FACTORY_FEEDBACK_118_URL', plugins_url(null, __FILE__));
38
 
39
+ require_once(FACTORY_FEEDBACK_118_DIR . '/includes/class-base.php');
40
+ require_once(FACTORY_FEEDBACK_118_DIR . '/includes/class-rest-request.php');
41
 
42
  /**
43
+ * @param Wbcr_Factory458_Plugin $plugin
44
  */
45
+ add_action('wbcr_factory_feedback_118_plugin_created', function ($plugin) {
46
+ new WBCR\Factory_Feedback_118\Base($plugin);
47
  });
libs/factory/feedback/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Feedback_114;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -28,7 +28,7 @@ class Base {
28
  * Plugin instance this module interacts with
29
  *
30
  * @since 1.0.0 Added
31
- * @var \Wbcr_Factory453_Plugin
32
  */
33
  private $plugin;
34
 
@@ -36,19 +36,19 @@ class Base {
36
  * Экземпляр класса для работы API CreativeMotion
37
  *
38
  * @since 1.0.0
39
- * @var \WBCR\Factory_Feedback_114\Creative_Motion_API
40
  */
41
  private $api;
42
 
43
  /**
44
  * Wbcr_Factory_Feedback constructor.
45
  *
46
- * @param \Wbcr_Factory453_Plugin $plugin
47
  *
48
  * @since 1.0.0 Added
49
  *
50
  */
51
- public function __construct( \Wbcr_Factory453_Plugin $plugin ) {
52
  $this->plugin = $plugin;
53
 
54
  $this->api = new Creative_Motion_API( $this->plugin );
@@ -64,7 +64,7 @@ class Base {
64
  }
65
 
66
  if ( wp_doing_ajax() ) {
67
- add_action( "wp_ajax_wbcr-factory-feedback-114-save_{$plugin->getPluginName()}", [
68
  $this,
69
  'send_feedback'
70
  ] );
@@ -82,8 +82,8 @@ class Base {
82
  */
83
  public function admin_assets( $hook_suffix ) {
84
  if ( 'plugins.php' === $hook_suffix ) {
85
- wp_enqueue_script( 'wbcr-factory-feedback-114-deactivate', FACTORY_FEEDBACK_114_URL . '/assets/js/deactivate-feedback.js', [ 'jquery' ], FACTORY_FEEDBACK_114_VERSION, true );
86
- wp_enqueue_style( 'wbcr-factory-feedback-114-deactivate', FACTORY_FEEDBACK_114_URL . '/assets/css/dialog-boxes.css' );
87
  }
88
  }
89
 
@@ -94,7 +94,7 @@ class Base {
94
  * @since 1.0.0 Added
95
  */
96
  public function render_deactivate_form() {
97
- include FACTORY_FEEDBACK_114_DIR . "/views/deactivate-form.php";
98
  }
99
 
100
  /**
@@ -111,7 +111,7 @@ class Base {
111
  if ( $plugin_file !== $this->plugin->get_paths()->basename ) {
112
  return $actions;
113
  }
114
- $actions['deactivate'] = $actions['deactivate'] . '<i class="wbcr-factory-feedback-114-plugin-slug" data-plugin="' . $this->plugin->getPluginName() . '"></i>';
115
 
116
  return $actions;
117
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Feedback_118;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
28
  * Plugin instance this module interacts with
29
  *
30
  * @since 1.0.0 Added
31
+ * @var \Wbcr_Factory458_Plugin
32
  */
33
  private $plugin;
34
 
36
  * Экземпляр класса для работы API CreativeMotion
37
  *
38
  * @since 1.0.0
39
+ * @var \WBCR\Factory_Feedback_118\Creative_Motion_API
40
  */
41
  private $api;
42
 
43
  /**
44
  * Wbcr_Factory_Feedback constructor.
45
  *
46
+ * @param \Wbcr_Factory458_Plugin $plugin
47
  *
48
  * @since 1.0.0 Added
49
  *
50
  */
51
+ public function __construct( \Wbcr_Factory458_Plugin $plugin ) {
52
  $this->plugin = $plugin;
53
 
54
  $this->api = new Creative_Motion_API( $this->plugin );
64
  }
65
 
66
  if ( wp_doing_ajax() ) {
67
+ add_action( "wp_ajax_wbcr-factory-feedback-118-save_{$plugin->getPluginName()}", [
68
  $this,
69
  'send_feedback'
70
  ] );
82
  */
83
  public function admin_assets( $hook_suffix ) {
84
  if ( 'plugins.php' === $hook_suffix ) {
85
+ wp_enqueue_script( 'wbcr-factory-feedback-118-deactivate', FACTORY_FEEDBACK_118_URL . '/assets/js/deactivate-feedback.js', [ 'jquery' ], FACTORY_FEEDBACK_118_VERSION, true );
86
+ wp_enqueue_style( 'wbcr-factory-feedback-118-deactivate', FACTORY_FEEDBACK_118_URL . '/assets/css/dialog-boxes.css' );
87
  }
88
  }
89
 
94
  * @since 1.0.0 Added
95
  */
96
  public function render_deactivate_form() {
97
+ include FACTORY_FEEDBACK_118_DIR . "/views/deactivate-form.php";
98
  }
99
 
100
  /**
111
  if ( $plugin_file !== $this->plugin->get_paths()->basename ) {
112
  return $actions;
113
  }
114
+ $actions['deactivate'] = $actions['deactivate'] . '<i class="wbcr-factory-feedback-118-plugin-slug" data-plugin="' . $this->plugin->getPluginName() . '"></i>';
115
 
116
  return $actions;
117
  }
libs/factory/feedback/includes/class-rest-request.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Feedback_114;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -45,7 +45,7 @@ class Creative_Motion_API {
45
  *
46
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
47
  * @since 1.0.0
48
- * @var \Wbcr_Factory453_Plugin
49
  */
50
  private $plugin;
51
 
@@ -57,9 +57,9 @@ class Creative_Motion_API {
57
  *
58
  * @since 1.0.0 Added
59
  *
60
- * @param \Wbcr_Factory453_Plugin $plugin_name
61
  */
62
- public function __construct( \Wbcr_Factory453_Plugin $plugin ) {
63
  $this->plugin = $plugin;
64
  }
65
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Feedback_118;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
45
  *
46
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
47
  * @since 1.0.0
48
+ * @var \Wbcr_Factory458_Plugin
49
  */
50
  private $plugin;
51
 
57
  *
58
  * @since 1.0.0 Added
59
  *
60
+ * @param \Wbcr_Factory458_Plugin $plugin_name
61
  */
62
+ public function __construct( \Wbcr_Factory458_Plugin $plugin ) {
63
  $this->plugin = $plugin;
64
  }
65
 
libs/factory/feedback/views/deactivate-form.php CHANGED
@@ -1,11 +1,11 @@
1
- <div class="wbcr-factory-feedback-114-modal wbcr-factory-feedback-114-modal-deactivation-feedback no-confirmation-message" id="wbcr-factory-feedback-114-deactivate-form" data-nonce="<?php echo wp_create_nonce( 'wbcr_factory_send_feedback' ) ?>">
2
- <div class="wbcr-factory-feedback-114-modal-dialog">
3
- <div class="wbcr-factory-feedback-114-modal-header">
4
- <h4><?php _e( 'Quick Feedback', 'wbcr_factory_feedback_114' ) ?></h4></div>
5
- <div class="wbcr-factory-feedback-114-modal-body">
6
- <div class="wbcr-factory-feedback-114-modal-panel active" data-panel-id="reasons">
7
  <h3>
8
- <strong><?php _e( 'If you have a moment, please let us know why you are deactivating', 'wbcr_factory_feedback_114' ) ?>
9
  :</strong></h3>
10
  <ul id="reasons-list">
11
  <li class="reason has-input" data-input-type="textfield" data-input-placeholder="Название плагина">
@@ -13,7 +13,7 @@
13
  <span>
14
  <input type="radio" name="wbcr_factory_feedback_reason" value="2">
15
  </span>
16
- <span><?php _e( 'I found a better plugin', 'wbcr_factory_feedback_114' ) ?></span>
17
  </label>
18
  <div class="internal-message"></div>
19
  </li>
@@ -22,7 +22,7 @@
22
  <span>
23
  <input type="radio" name="wbcr_factory_feedback_reason" value="5">
24
  </span>
25
- <span><?php _e( 'The plugin suddenly stopped working', 'wbcr_factory_feedback_114' ) ?></span>
26
  </label>
27
  <div class="internal-message"></div>
28
  </li>
@@ -31,7 +31,7 @@
31
  <span>
32
  <input type="radio" name="wbcr_factory_feedback_reason" value="3">
33
  </span>
34
- <span><?php _e( 'I only needed the plugin for a short period', 'wbcr_factory_feedback_114' ) ?></span>
35
  </label>
36
  <div class="internal-message"></div>
37
  </li>
@@ -40,7 +40,7 @@
40
  <span>
41
  <input type="radio" name="wbcr_factory_feedback_reason" value="1">
42
  </span>
43
- <span><?php _e( 'I no longer need the plugin', 'wbcr_factory_feedback_114' ) ?></span>
44
  </label>
45
  <div class="internal-message"></div>
46
  </li>
@@ -49,7 +49,7 @@
49
  <span>
50
  <input type="radio" name="wbcr_factory_feedback_reason" value="4">
51
  </span>
52
- <span><?php _e( 'The plugin broke my site', 'wbcr_factory_feedback_114' ) ?></span>
53
  </label>
54
  <div class="internal-message"></div>
55
  </li>
@@ -58,7 +58,7 @@
58
  <span>
59
  <input type="radio" name="wbcr_factory_feedback_reason" value="15">
60
  </span>
61
- <span><?php _e( "It's a temporary deactivation. I'm just debugging an issue.", 'wbcr_factory_feedback_114' ) ?></span>
62
  </label>
63
  <div class="internal-message"></div>
64
  </li>
@@ -67,20 +67,20 @@
67
  <span>
68
  <input type="radio" name="wbcr_factory_feedback_reason" value="7">
69
  </span>
70
- <span><?php _e( 'Other', 'wbcr_factory_feedback_114' ) ?></span>
71
  </label>
72
  <div class="internal-message"></div>
73
  </li>
74
  </ul>
75
- <p><?php _e( 'We will receive the following information from you: site address, php version, Wordpress version, version of our plugin, this will help us better understand the causes of the problem. If you don\'t want to send this data, click the "Anonymous" checkbox.', 'wbcr_factory_feedback_114' ) ?></p>
76
  </div>
77
  </div>
78
- <div class="wbcr-factory-feedback-114-modal-footer">
79
- <label for="wbcr-factory-feedback-114-anonymous-checkbox" class="wbcr-factory-feedback-114-anonymous-feedback-label" style="display: block;">
80
- <input type="checkbox" id="wbcr-factory-feedback-114-anonymous-checkbox"> <?php _e( 'Anonymous feedback', 'wbcr_factory_feedback_114' ) ?>
81
  </label>
82
- <a href="#" class="button button-secondary button-deactivate allow-deactivate"><?php _e( 'Skip & Deactivate', 'wbcr_factory_feedback_114' ) ?></a>
83
- <a href="#" class="button button-primary button-close"><?php _e( 'Cancel', 'wbcr_factory_feedback_114' ) ?></a>
84
  </div>
85
  </div>
86
  </div>
1
+ <div class="wbcr-factory-feedback-118-modal wbcr-factory-feedback-118-modal-deactivation-feedback no-confirmation-message" id="wbcr-factory-feedback-118-deactivate-form" data-nonce="<?php echo wp_create_nonce( 'wbcr_factory_send_feedback' ) ?>">
2
+ <div class="wbcr-factory-feedback-118-modal-dialog">
3
+ <div class="wbcr-factory-feedback-118-modal-header">
4
+ <h4><?php _e( 'Quick Feedback', 'wbcr_factory_feedback_118' ) ?></h4></div>
5
+ <div class="wbcr-factory-feedback-118-modal-body">
6
+ <div class="wbcr-factory-feedback-118-modal-panel active" data-panel-id="reasons">
7
  <h3>
8
+ <strong><?php _e( 'If you have a moment, please let us know why you are deactivating', 'wbcr_factory_feedback_118' ) ?>
9
  :</strong></h3>
10
  <ul id="reasons-list">
11
  <li class="reason has-input" data-input-type="textfield" data-input-placeholder="Название плагина">
13
  <span>
14
  <input type="radio" name="wbcr_factory_feedback_reason" value="2">
15
  </span>
16
+ <span><?php _e( 'I found a better plugin', 'wbcr_factory_feedback_118' ) ?></span>
17
  </label>
18
  <div class="internal-message"></div>
19
  </li>
22
  <span>
23
  <input type="radio" name="wbcr_factory_feedback_reason" value="5">
24
  </span>
25
+ <span><?php _e( 'The plugin suddenly stopped working', 'wbcr_factory_feedback_118' ) ?></span>
26
  </label>
27
  <div class="internal-message"></div>
28
  </li>
31
  <span>
32
  <input type="radio" name="wbcr_factory_feedback_reason" value="3">
33
  </span>
34
+ <span><?php _e( 'I only needed the plugin for a short period', 'wbcr_factory_feedback_118' ) ?></span>
35
  </label>
36
  <div class="internal-message"></div>
37
  </li>
40
  <span>
41
  <input type="radio" name="wbcr_factory_feedback_reason" value="1">
42
  </span>
43
+ <span><?php _e( 'I no longer need the plugin', 'wbcr_factory_feedback_118' ) ?></span>
44
  </label>
45
  <div class="internal-message"></div>
46
  </li>
49
  <span>
50
  <input type="radio" name="wbcr_factory_feedback_reason" value="4">
51
  </span>
52
+ <span><?php _e( 'The plugin broke my site', 'wbcr_factory_feedback_118' ) ?></span>
53
  </label>
54
  <div class="internal-message"></div>
55
  </li>
58
  <span>
59
  <input type="radio" name="wbcr_factory_feedback_reason" value="15">
60
  </span>
61
+ <span><?php _e( "It's a temporary deactivation. I'm just debugging an issue.", 'wbcr_factory_feedback_118' ) ?></span>
62
  </label>
63
  <div class="internal-message"></div>
64
  </li>
67
  <span>
68
  <input type="radio" name="wbcr_factory_feedback_reason" value="7">
69
  </span>
70
+ <span><?php _e( 'Other', 'wbcr_factory_feedback_118' ) ?></span>
71
  </label>
72
  <div class="internal-message"></div>
73
  </li>
74
  </ul>
75
+ <p><?php _e( 'We will receive the following information from you: site address, php version, Wordpress version, version of our plugin, this will help us better understand the causes of the problem. If you don\'t want to send this data, click the "Anonymous" checkbox.', 'wbcr_factory_feedback_118' ) ?></p>
76
  </div>
77
  </div>
78
+ <div class="wbcr-factory-feedback-118-modal-footer">
79
+ <label for="wbcr-factory-feedback-118-anonymous-checkbox" class="wbcr-factory-feedback-118-anonymous-feedback-label" style="display: block;">
80
+ <input type="checkbox" id="wbcr-factory-feedback-118-anonymous-checkbox"> <?php _e( 'Anonymous feedback', 'wbcr_factory_feedback_118' ) ?>
81
  </label>
82
+ <a href="#" class="button button-secondary button-deactivate allow-deactivate"><?php _e( 'Skip & Deactivate', 'wbcr_factory_feedback_118' ) ?></a>
83
+ <a href="#" class="button button-primary button-close"><?php _e( 'Cancel', 'wbcr_factory_feedback_118' ) ?></a>
84
  </div>
85
  </div>
86
  </div>
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_450_LOADED') ) {
26
  return;
27
  }
28
 
29
- define('FACTORY_FORMS_450_LOADED', true);
30
 
31
- define('FACTORY_FORMS_450_VERSION', '4.5.0');
32
 
33
  // absolute path and URL to the files and resources of the module.
34
- define('FACTORY_FORMS_450_DIR', dirname(__FILE__));
35
- define('FACTORY_FORMS_450_URL', plugins_url(null, __FILE__));
36
 
37
  #comp merge
38
- require_once(FACTORY_FORMS_450_DIR . '/includes/providers/value-provider.interface.php');
39
- require_once(FACTORY_FORMS_450_DIR . '/includes/providers/meta-value-provider.class.php');
40
- require_once(FACTORY_FORMS_450_DIR . '/includes/providers/options-value-provider.class.php');
41
 
42
- require_once(FACTORY_FORMS_450_DIR . '/includes/form.class.php');
43
  #endcomp
44
 
45
- load_plugin_textdomain('wbcr_factory_forms_450', 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_450_register_controls' hook
53
  *
54
  */
55
- if( !function_exists('wbcr_factory_forms_450_register_default_controls') ) {
56
 
57
  /**
58
- * @param Wbcr_Factory453_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
- function wbcr_factory_forms_450_register_default_controls(Wbcr_Factory453_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_450_DIR . '/includes/html-builder.class.php');
70
- require_once(FACTORY_FORMS_450_DIR . '/includes/form-element.class.php');
71
- require_once(FACTORY_FORMS_450_DIR . '/includes/control.class.php');
72
- require_once(FACTORY_FORMS_450_DIR . '/includes/complex-control.class.php');
73
- require_once(FACTORY_FORMS_450_DIR . '/includes/holder.class.php');
74
- require_once(FACTORY_FORMS_450_DIR . '/includes/control-holder.class.php');
75
- require_once(FACTORY_FORMS_450_DIR . '/includes/custom-element.class.php');
76
- require_once(FACTORY_FORMS_450_DIR . '/includes/form-layout.class.php');
77
 
78
  // registration of controls
79
  $plugin->forms->registerControls([
80
  [
81
  'type' => 'checkbox',
82
- 'class' => 'Wbcr_FactoryForms450_CheckboxControl',
83
- 'include' => FACTORY_FORMS_450_DIR . '/controls/checkbox.php'
84
  ],
85
  [
86
  'type' => 'list',
87
- 'class' => 'Wbcr_FactoryForms450_ListControl',
88
- 'include' => FACTORY_FORMS_450_DIR . '/controls/list.php'
89
  ],
90
  [
91
  'type' => 'dropdown',
92
- 'class' => 'Wbcr_FactoryForms450_DropdownControl',
93
- 'include' => FACTORY_FORMS_450_DIR . '/controls/dropdown.php'
94
  ],
95
  [
96
  'type' => 'dropdown-and-colors',
97
- 'class' => 'Wbcr_FactoryForms450_DropdownAndColorsControl',
98
- 'include' => FACTORY_FORMS_450_DIR . '/controls/dropdown-and-colors.php'
99
  ],
100
  [
101
  'type' => 'hidden',
102
- 'class' => 'Wbcr_FactoryForms450_HiddenControl',
103
- 'include' => FACTORY_FORMS_450_DIR . '/controls/hidden.php'
104
  ],
105
  [
106
  'type' => 'hidden',
107
- 'class' => 'Wbcr_FactoryForms450_HiddenControl',
108
- 'include' => FACTORY_FORMS_450_DIR . '/controls/hidden.php'
109
  ],
110
  [
111
  'type' => 'radio',
112
- 'class' => 'Wbcr_FactoryForms450_RadioControl',
113
- 'include' => FACTORY_FORMS_450_DIR . '/controls/radio.php'
114
  ],
115
  [
116
  'type' => 'radio-colors',
117
- 'class' => 'Wbcr_FactoryForms450_RadioColorsControl',
118
- 'include' => FACTORY_FORMS_450_DIR . '/controls/radio-colors.php'
119
  ],
120
  [
121
  'type' => 'textarea',
122
- 'class' => 'Wbcr_FactoryForms450_TextareaControl',
123
- 'include' => FACTORY_FORMS_450_DIR . '/controls/textarea.php'
124
  ],
125
  [
126
  'type' => 'textbox',
127
- 'class' => 'Wbcr_FactoryForms450_TextboxControl',
128
- 'include' => FACTORY_FORMS_450_DIR . '/controls/textbox.php'
129
  ],
130
  [
131
  'type' => 'multiple-textbox',
132
- 'class' => 'Wbcr_FactoryForms450_MultipleTextboxControl',
133
- 'include' => FACTORY_FORMS_450_DIR . '/controls/multiple-textbox.php'
134
  ],
135
  [
136
  'type' => 'datetimepicker-range',
137
- 'class' => 'Wbcr_FactoryForms450_DatepickerRangeControl',
138
- 'include' => FACTORY_FORMS_450_DIR . '/controls/datepicker-range.php'
139
  ],
140
  [
141
  'type' => 'url',
142
- 'class' => 'Wbcr_FactoryForms450_UrlControl',
143
- 'include' => FACTORY_FORMS_450_DIR . '/controls/url.php'
144
  ],
145
  [
146
  'type' => 'wp-editor',
147
- 'class' => 'Wbcr_FactoryForms450_WpEditorControl',
148
- 'include' => FACTORY_FORMS_450_DIR . '/controls/wp-editor.php'
149
  ],
150
  [
151
  'type' => 'color',
152
- 'class' => 'Wbcr_FactoryForms450_ColorControl',
153
- 'include' => FACTORY_FORMS_450_DIR . '/controls/color.php'
154
  ],
155
  [
156
  'type' => 'color-and-opacity',
157
- 'class' => 'Wbcr_FactoryForms450_ColorAndOpacityControl',
158
- 'include' => FACTORY_FORMS_450_DIR . '/controls/color-and-opacity.php'
159
  ],
160
  [
161
  'type' => 'gradient',
162
- 'class' => 'Wbcr_FactoryForms450_GradientControl',
163
- 'include' => FACTORY_FORMS_450_DIR . '/controls/gradient.php'
164
  ],
165
  [
166
  'type' => 'font',
167
- 'class' => 'Wbcr_FactoryForms450_FontControl',
168
- 'include' => FACTORY_FORMS_450_DIR . '/controls/font.php'
169
  ],
170
  [
171
  'type' => 'google-font',
172
- 'class' => 'Wbcr_FactoryForms450_GoogleFontControl',
173
- 'include' => FACTORY_FORMS_450_DIR . '/controls/google-font.php'
174
  ],
175
  [
176
  'type' => 'pattern',
177
- 'class' => 'Wbcr_FactoryForms450_PatternControl',
178
- 'include' => FACTORY_FORMS_450_DIR . '/controls/pattern.php'
179
  ],
180
  [
181
  'type' => 'integer',
182
- 'class' => 'Wbcr_FactoryForms450_IntegerControl',
183
- 'include' => FACTORY_FORMS_450_DIR . '/controls/integer.php'
184
  ],
185
  [
186
  'type' => 'control-group',
187
- 'class' => 'Wbcr_FactoryForms450_ControlGroupHolder',
188
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/control-group.php'
189
  ],
190
  [
191
  'type' => 'paddings-editor',
192
- 'class' => 'Wbcr_FactoryForms450_PaddingsEditorControl',
193
- 'include' => FACTORY_FORMS_450_DIR . '/controls/paddings-editor.php'
194
  ],
195
  ]);
196
 
@@ -198,53 +198,53 @@ if( !function_exists('wbcr_factory_forms_450_register_default_controls') ) {
198
  $plugin->forms->registerHolders([
199
  [
200
  'type' => 'tab',
201
- 'class' => 'Wbcr_FactoryForms450_TabHolder',
202
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/tab.php'
203
  ],
204
  [
205
  'type' => 'tab-item',
206
- 'class' => 'Wbcr_FactoryForms450_TabItemHolder',
207
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/tab-item.php'
208
  ],
209
  [
210
  'type' => 'accordion',
211
- 'class' => 'Wbcr_FactoryForms450_AccordionHolder',
212
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/accordion.php'
213
  ],
214
  [
215
  'type' => 'accordion-item',
216
- 'class' => 'Wbcr_FactoryForms450_AccordionItemHolder',
217
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/accordion-item.php'
218
  ],
219
  [
220
  'type' => 'control-group',
221
- 'class' => 'Wbcr_FactoryForms450_ControlGroupHolder',
222
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/control-group.php'
223
  ],
224
  [
225
  'type' => 'control-group-item',
226
- 'class' => 'Wbcr_FactoryForms450_ControlGroupItem',
227
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/control-group-item.php'
228
  ],
229
  [
230
  'type' => 'form-group',
231
- 'class' => 'Wbcr_FactoryForms450_FormGroupHolder',
232
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/form-group.php'
233
  ],
234
  [
235
  'type' => 'more-link',
236
- 'class' => 'Wbcr_FactoryForms450_MoreLinkHolder',
237
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/more-link.php'
238
  ],
239
  [
240
  'type' => 'div',
241
- 'class' => 'Wbcr_FactoryForms450_DivHolder',
242
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/div.php'
243
  ],
244
  [
245
  'type' => 'columns',
246
- 'class' => 'Wbcr_FactoryForms450_ColumnsHolder',
247
- 'include' => FACTORY_FORMS_450_DIR . '/controls/holders/columns.php'
248
  ]
249
  ]);
250
 
@@ -252,23 +252,23 @@ if( !function_exists('wbcr_factory_forms_450_register_default_controls') ) {
252
  $plugin->forms->registerCustomElements([
253
  [
254
  'type' => 'html',
255
- 'class' => 'Wbcr_FactoryForms450_Html',
256
- 'include' => FACTORY_FORMS_450_DIR . '/controls/customs/html.php',
257
  ],
258
  [
259
  'type' => 'separator',
260
- 'class' => 'Wbcr_FactoryForms450_Separator',
261
- 'include' => FACTORY_FORMS_450_DIR . '/controls/customs/separator.php',
262
  ],
263
  ]);
264
 
265
  // registration of form layouts
266
  $plugin->forms->registerFormLayout([
267
  'name' => 'bootstrap-3',
268
- 'class' => 'Wbcr_FactoryForms450_Bootstrap3FormLayout',
269
- 'include' => FACTORY_FORMS_450_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
270
  ]);
271
  }
272
 
273
- add_action('wbcr_factory_forms_450_register_controls', 'wbcr_factory_forms_450_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_455_LOADED') ) {
26
  return;
27
  }
28
 
29
+ define('FACTORY_FORMS_455_LOADED', true);
30
 
31
+ define('FACTORY_FORMS_455_VERSION', '4.5.5');
32
 
33
  // absolute path and URL to the files and resources of the module.
34
+ define('FACTORY_FORMS_455_DIR', dirname(__FILE__));
35
+ define('FACTORY_FORMS_455_URL', plugins_url(null, __FILE__));
36
 
37
  #comp merge
38
+ require_once(FACTORY_FORMS_455_DIR . '/includes/providers/value-provider.interface.php');
39
+ require_once(FACTORY_FORMS_455_DIR . '/includes/providers/meta-value-provider.class.php');
40
+ require_once(FACTORY_FORMS_455_DIR . '/includes/providers/options-value-provider.class.php');
41
 
42
+ require_once(FACTORY_FORMS_455_DIR . '/includes/form.class.php');
43
  #endcomp
44
 
45
+ load_plugin_textdomain('wbcr_factory_forms_455', 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_455_register_controls' hook
53
  *
54
  */
55
+ if( !function_exists('wbcr_factory_forms_455_register_default_controls') ) {
56
 
57
  /**
58
+ * @param Wbcr_Factory458_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
+ function wbcr_factory_forms_455_register_default_controls(Wbcr_Factory458_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_455_DIR . '/includes/html-builder.class.php');
70
+ require_once(FACTORY_FORMS_455_DIR . '/includes/form-element.class.php');
71
+ require_once(FACTORY_FORMS_455_DIR . '/includes/control.class.php');
72
+ require_once(FACTORY_FORMS_455_DIR . '/includes/complex-control.class.php');
73
+ require_once(FACTORY_FORMS_455_DIR . '/includes/holder.class.php');
74
+ require_once(FACTORY_FORMS_455_DIR . '/includes/control-holder.class.php');
75
+ require_once(FACTORY_FORMS_455_DIR . '/includes/custom-element.class.php');
76
+ require_once(FACTORY_FORMS_455_DIR . '/includes/form-layout.class.php');
77
 
78
  // registration of controls
79
  $plugin->forms->registerControls([
80
  [
81
  'type' => 'checkbox',
82
+ 'class' => 'Wbcr_FactoryForms455_CheckboxControl',
83
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/checkbox.php'
84
  ],
85
  [
86
  'type' => 'list',
87
+ 'class' => 'Wbcr_FactoryForms455_ListControl',
88
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/list.php'
89
  ],
90
  [
91
  'type' => 'dropdown',
92
+ 'class' => 'Wbcr_FactoryForms455_DropdownControl',
93
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/dropdown.php'
94
  ],
95
  [
96
  'type' => 'dropdown-and-colors',
97
+ 'class' => 'Wbcr_FactoryForms455_DropdownAndColorsControl',
98
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/dropdown-and-colors.php'
99
  ],
100
  [
101
  'type' => 'hidden',
102
+ 'class' => 'Wbcr_FactoryForms455_HiddenControl',
103
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/hidden.php'
104
  ],
105
  [
106
  'type' => 'hidden',
107
+ 'class' => 'Wbcr_FactoryForms455_HiddenControl',
108
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/hidden.php'
109
  ],
110
  [
111
  'type' => 'radio',
112
+ 'class' => 'Wbcr_FactoryForms455_RadioControl',
113
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/radio.php'
114
  ],
115
  [
116
  'type' => 'radio-colors',
117
+ 'class' => 'Wbcr_FactoryForms455_RadioColorsControl',
118
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/radio-colors.php'
119
  ],
120
  [
121
  'type' => 'textarea',
122
+ 'class' => 'Wbcr_FactoryForms455_TextareaControl',
123
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/textarea.php'
124
  ],
125
  [
126
  'type' => 'textbox',
127
+ 'class' => 'Wbcr_FactoryForms455_TextboxControl',
128
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/textbox.php'
129
  ],
130
  [
131
  'type' => 'multiple-textbox',
132
+ 'class' => 'Wbcr_FactoryForms455_MultipleTextboxControl',
133
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/multiple-textbox.php'
134
  ],
135
  [
136
  'type' => 'datetimepicker-range',
137
+ 'class' => 'Wbcr_FactoryForms455_DatepickerRangeControl',
138
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/datepicker-range.php'
139
  ],
140
  [
141
  'type' => 'url',
142
+ 'class' => 'Wbcr_FactoryForms455_UrlControl',
143
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/url.php'
144
  ],
145
  [
146
  'type' => 'wp-editor',
147
+ 'class' => 'Wbcr_FactoryForms455_WpEditorControl',
148
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/wp-editor.php'
149
  ],
150
  [
151
  'type' => 'color',
152
+ 'class' => 'Wbcr_FactoryForms455_ColorControl',
153
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/color.php'
154
  ],
155
  [
156
  'type' => 'color-and-opacity',
157
+ 'class' => 'Wbcr_FactoryForms455_ColorAndOpacityControl',
158
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/color-and-opacity.php'
159
  ],
160
  [
161
  'type' => 'gradient',
162
+ 'class' => 'Wbcr_FactoryForms455_GradientControl',
163
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/gradient.php'
164
  ],
165
  [
166
  'type' => 'font',
167
+ 'class' => 'Wbcr_FactoryForms455_FontControl',
168
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/font.php'
169
  ],
170
  [
171
  'type' => 'google-font',
172
+ 'class' => 'Wbcr_FactoryForms455_GoogleFontControl',
173
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/google-font.php'
174
  ],
175
  [
176
  'type' => 'pattern',
177
+ 'class' => 'Wbcr_FactoryForms455_PatternControl',
178
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/pattern.php'
179
  ],
180
  [
181
  'type' => 'integer',
182
+ 'class' => 'Wbcr_FactoryForms455_IntegerControl',
183
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/integer.php'
184
  ],
185
  [
186
  'type' => 'control-group',
187
+ 'class' => 'Wbcr_FactoryForms455_ControlGroupHolder',
188
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/control-group.php'
189
  ],
190
  [
191
  'type' => 'paddings-editor',
192
+ 'class' => 'Wbcr_FactoryForms455_PaddingsEditorControl',
193
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/paddings-editor.php'
194
  ],
195
  ]);
196
 
198
  $plugin->forms->registerHolders([
199
  [
200
  'type' => 'tab',
201
+ 'class' => 'Wbcr_FactoryForms455_TabHolder',
202
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/tab.php'
203
  ],
204
  [
205
  'type' => 'tab-item',
206
+ 'class' => 'Wbcr_FactoryForms455_TabItemHolder',
207
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/tab-item.php'
208
  ],
209
  [
210
  'type' => 'accordion',
211
+ 'class' => 'Wbcr_FactoryForms455_AccordionHolder',
212
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/accordion.php'
213
  ],
214
  [
215
  'type' => 'accordion-item',
216
+ 'class' => 'Wbcr_FactoryForms455_AccordionItemHolder',
217
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/accordion-item.php'
218
  ],
219
  [
220
  'type' => 'control-group',
221
+ 'class' => 'Wbcr_FactoryForms455_ControlGroupHolder',
222
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/control-group.php'
223
  ],
224
  [
225
  'type' => 'control-group-item',
226
+ 'class' => 'Wbcr_FactoryForms455_ControlGroupItem',
227
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/control-group-item.php'
228
  ],
229
  [
230
  'type' => 'form-group',
231
+ 'class' => 'Wbcr_FactoryForms455_FormGroupHolder',
232
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/form-group.php'
233
  ],
234
  [
235
  'type' => 'more-link',
236
+ 'class' => 'Wbcr_FactoryForms455_MoreLinkHolder',
237
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/more-link.php'
238
  ],
239
  [
240
  'type' => 'div',
241
+ 'class' => 'Wbcr_FactoryForms455_DivHolder',
242
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/div.php'
243
  ],
244
  [
245
  'type' => 'columns',
246
+ 'class' => 'Wbcr_FactoryForms455_ColumnsHolder',
247
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/holders/columns.php'
248
  ]
249
  ]);
250
 
252
  $plugin->forms->registerCustomElements([
253
  [
254
  'type' => 'html',
255
+ 'class' => 'Wbcr_FactoryForms455_Html',
256
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/customs/html.php',
257
  ],
258
  [
259
  'type' => 'separator',
260
+ 'class' => 'Wbcr_FactoryForms455_Separator',
261
+ 'include' => FACTORY_FORMS_455_DIR . '/controls/customs/separator.php',
262
  ],
263
  ]);
264
 
265
  // registration of form layouts
266
  $plugin->forms->registerFormLayout([
267
  'name' => 'bootstrap-3',
268
+ 'class' => 'Wbcr_FactoryForms455_Bootstrap3FormLayout',
269
+ 'include' => FACTORY_FORMS_455_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
270
  ]);
271
  }
272
 
273
+ add_action('wbcr_factory_forms_455_register_controls', 'wbcr_factory_forms_455_register_default_controls');
274
  }
libs/factory/forms/controls/checkbox.php CHANGED
@@ -20,9 +20,9 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms450_CheckboxControl') ) {
24
 
25
- class Wbcr_FactoryForms450_CheckboxControl extends Wbcr_FactoryForms450_Control {
26
 
27
  public $type = 'checkbox';
28
 
@@ -130,10 +130,10 @@
130
  <div <?php $this->attrs() ?>>
131
  <button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
132
  echo 'active';
133
- } ?>"><?php _e('On', 'wbcr_factory_forms_450') ?></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_450') ?></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
  } ?>" />
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms455_CheckboxControl') ) {
24
 
25
+ class Wbcr_FactoryForms455_CheckboxControl extends Wbcr_FactoryForms455_Control {
26
 
27
  public $type = 'checkbox';
28
 
130
  <div <?php $this->attrs() ?>>
131
  <button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
132
  echo 'active';
133
+ } ?>"><?php _e('On', 'wbcr_factory_forms_455') ?></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_455') ?></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
  } ?>" />
libs/factory/forms/controls/color-and-opacity.php CHANGED
@@ -20,10 +20,10 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms450_ColorAndOpacityControl') ) {
24
  }
25
 
26
- class Wbcr_FactoryForms450_ColorAndOpacityControl extends Wbcr_FactoryForms450_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
@@ -57,8 +57,8 @@
57
  'way' => 'slider'
58
  ));
59
 
60
- $this->color = new Wbcr_FactoryForms450_ColorControl($options['color'], $form, $provider);
61
- $this->opacity = new Wbcr_FactoryForms450_IntegerControl($options['opacity'], $form, $provider);
62
 
63
  $this->innerControls = array($this->color, $this->opacity);
64
  }
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms455_ColorAndOpacityControl') ) {
24
  }
25
 
26
+ class Wbcr_FactoryForms455_ColorAndOpacityControl extends Wbcr_FactoryForms455_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
57
  'way' => 'slider'
58
  ));
59
 
60
+ $this->color = new Wbcr_FactoryForms455_ColorControl($options['color'], $form, $provider);
61
+ $this->opacity = new Wbcr_FactoryForms455_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_FactoryForms450_ColorControl') ) {
24
 
25
- class Wbcr_FactoryForms450_ColorControl extends Wbcr_FactoryForms450_Control {
26
 
27
  public $type = 'color';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms455_ColorControl') ) {
24
 
25
+ class Wbcr_FactoryForms455_ColorControl extends Wbcr_FactoryForms455_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_FactoryForms450_Html') ) {
18
 
19
- class Wbcr_FactoryForms450_Html extends Wbcr_FactoryForms450_CustomElement {
20
 
21
  public $type = 'html';
22
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_Html') ) {
18
 
19
+ class Wbcr_FactoryForms455_Html extends Wbcr_FactoryForms455_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_FactoryForms450_Separator') ) {
18
- class Wbcr_FactoryForms450_Separator extends Wbcr_FactoryForms450_CustomElement {
19
 
20
  public $type = 'separator';
21
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_Separator') ) {
18
+ class Wbcr_FactoryForms455_Separator extends Wbcr_FactoryForms455_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_FactoryForms450_DatepickerRangeControl') ) {
33
 
34
- class Wbcr_FactoryForms450_DatepickerRangeControl extends Wbcr_FactoryForms450_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_FactoryForms450_TextboxControl($options['range_1'], $form, $provider);
69
- $this->range_2 = new Wbcr_FactoryForms450_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_FactoryForms455_DatepickerRangeControl') ) {
33
 
34
+ class Wbcr_FactoryForms455_DatepickerRangeControl extends Wbcr_FactoryForms455_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_FactoryForms455_TextboxControl($options['range_1'], $form, $provider);
69
+ $this->range_2 = new Wbcr_FactoryForms455_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 FactoryForms450_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 FactoryForms450_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_FactoryForms450_DropdownAndColorsControl') ) {
41
 
42
- class Wbcr_FactoryForms450_DropdownAndColorsControl extends Wbcr_FactoryForms450_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_FactoryForms450_DropdownControl($options['dropdown'], $form, $provider);
73
- $this->colors = new Wbcr_FactoryForms450_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 FactoryForms455_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 FactoryForms455_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_FactoryForms455_DropdownAndColorsControl') ) {
41
 
42
+ class Wbcr_FactoryForms455_DropdownAndColorsControl extends Wbcr_FactoryForms455_ComplexControl {
43
 
44
  public $type = 'dropdown-and-colors';
45
 
69
  'name' => $this->options['name'] . '__colors',
70
  ));
71
 
72
+ $this->dropdown = new Wbcr_FactoryForms455_DropdownControl($options['dropdown'], $form, $provider);
73
+ $this->colors = new Wbcr_FactoryForms455_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_FactoryForms450_DropdownControl' ) ) {
25
 
26
- class Wbcr_FactoryForms450_DropdownControl extends Wbcr_FactoryForms450_Control {
27
 
28
  public $type = 'dropdown';
29
 
@@ -123,7 +123,7 @@
123
  'url': '<?php echo $data['url'] ?>',
124
  'data': <?php echo json_encode( $data['data'] ) ?>,
125
  'selected': '<?php echo $value ?>',
126
- 'empty_list': '<?php echo $this->getOption( 'empty', __( 'The list is empty.', 'wbcr_factory_forms_450' ) ) ?>'
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_450' ) );
272
 
273
  ?>
274
  <select <?php $this->attrs() ?>>
@@ -349,7 +349,7 @@
349
  }
350
 
351
  $value = isset( $item['value'] ) ? $item['value'] : '';
352
- $title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', 'wbcr_factory_forms_450' );
353
 
354
  $data = isset( $item['data'] ) ? $item['data'] : null;
355
  } else {
21
  exit;
22
  }
23
 
24
+ if ( ! class_exists( 'Wbcr_FactoryForms455_DropdownControl' ) ) {
25
 
26
+ class Wbcr_FactoryForms455_DropdownControl extends Wbcr_FactoryForms455_Control {
27
 
28
  public $type = 'dropdown';
29
 
123
  'url': '<?php echo $data['url'] ?>',
124
  'data': <?php echo json_encode( $data['data'] ) ?>,
125
  'selected': '<?php echo $value ?>',
126
+ 'empty_list': '<?php echo $this->getOption( 'empty', __( 'The list is empty.', 'wbcr_factory_forms_455' ) ) ?>'
127
  };
128
  </script>
129
  <?php
268
  }
269
 
270
  $is_empty = $this->isAjax() || empty( $items );
271
+ $empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_455' ) );
272
 
273
  ?>
274
  <select <?php $this->attrs() ?>>
349
  }
350
 
351
  $value = isset( $item['value'] ) ? $item['value'] : '';
352
+ $title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', 'wbcr_factory_forms_455' );
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_FactoryForms450_FontControl') ) {
24
 
25
- class Wbcr_FactoryForms450_FontControl extends Wbcr_FactoryForms450_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_FactoryForms450_IntegerControl($option_font_size, $form, $provider);
58
- $this->family = new Wbcr_FactoryForms450_DropdownControl($option_font_family, $form, $provider);
59
- $this->color = new Wbcr_FactoryForms450_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_450_fonts', $fonts);
70
- $fonts = apply_filters('wbcr_factory_forms_450_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_450')),
81
  array(
82
  'group',
83
- __('Sans Serif:', 'wbcr_factory_forms_450'),
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_450'),
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_450'),
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_FactoryForms455_FontControl') ) {
24
 
25
+ class Wbcr_FactoryForms455_FontControl extends Wbcr_FactoryForms455_ComplexControl {
26
 
27
  public $type = 'font';
28
 
54
  'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
55
  );
56
 
57
+ $this->size = new Wbcr_FactoryForms455_IntegerControl($option_font_size, $form, $provider);
58
+ $this->family = new Wbcr_FactoryForms455_DropdownControl($option_font_family, $form, $provider);
59
+ $this->color = new Wbcr_FactoryForms455_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_455_fonts', $fonts);
70
+ $fonts = apply_filters('wbcr_factory_forms_455_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_455')),
81
  array(
82
  'group',
83
+ __('Sans Serif:', 'wbcr_factory_forms_455'),
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_455'),
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_455'),
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_FactoryForms450_GoogleFontControl extends Wbcr_FactoryForms450_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_FactoryForms450_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_450'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
- __('Standard:', 'wbcr_factory_forms_450'),
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_450'), 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_450');
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_450');
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_450');
137
 
138
  return $body;
139
  }
15
  * @package core
16
  * @since 1.0.0
17
  */
18
+ class Wbcr_FactoryForms455_GoogleFontControl extends Wbcr_FactoryForms455_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_FactoryForms455_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_455'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
+ __('Standard:', 'wbcr_factory_forms_455'),
58
  array(
59
 
60
  array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
65
  )
66
  );
67
 
68
+ $fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_455'), 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_455');
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_455');
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_455');
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_FactoryForms450_GradientControl') ) {
29
- class Wbcr_FactoryForms450_GradientControl extends Wbcr_FactoryForms450_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_450' ) ?>';
70
- factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_450' ) ?>';
71
  </script>
72
  <div <?php $this->attrs() ?>>
73
  <div class="factory-gradient-picker">
25
  exit;
26
  }
27
 
28
+ if( !class_exists('Wbcr_FactoryForms455_GradientControl') ) {
29
+ class Wbcr_FactoryForms455_GradientControl extends Wbcr_FactoryForms455_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_455' ) ?>';
70
+ factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_455' ) ?>';
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_FactoryForms450_HiddenControl') ) {
24
 
25
- class Wbcr_FactoryForms450_HiddenControl extends Wbcr_FactoryForms450_Control {
26
 
27
  public $type = 'hidden';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms455_HiddenControl') ) {
24
 
25
+ class Wbcr_FactoryForms455_HiddenControl extends Wbcr_FactoryForms455_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_FactoryForms450_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms450_AccordionItemHolder extends Wbcr_FactoryForms450_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms455_AccordionItemHolder extends Wbcr_FactoryForms455_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_FactoryForms450_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms450_AccordionHolder extends Wbcr_FactoryForms450_Holder {
23
 
24
  /**
25
  * A holder type.
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms455_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms455_AccordionHolder extends Wbcr_FactoryForms455_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_FactoryForms450_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms450_ColumnsHolder extends Wbcr_FactoryForms450_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms455_ColumnsHolder extends Wbcr_FactoryForms455_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_FactoryForms450_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms450_ControlGroupItem extends Wbcr_FactoryForms450_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms455_ControlGroupItem extends Wbcr_FactoryForms455_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_FactoryForms450_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms450_ControlGroupHolder extends Wbcr_FactoryForms450_ControlHolder {
25
 
26
  /**
27
  * A holder type.
@@ -61,7 +61,7 @@
61
  continue;
62
  }
63
 
64
- $builder = new Wbcr_FactoryForms450_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_FactoryForms455_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms455_ControlGroupHolder extends Wbcr_FactoryForms455_ControlHolder {
25
 
26
  /**
27
  * A holder type.
61
  continue;
62
  }
63
 
64
+ $builder = new Wbcr_FactoryForms455_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_FactoryForms450_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms450_DivHolder extends Wbcr_FactoryForms450_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms455_DivHolder extends Wbcr_FactoryForms455_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_FactoryForms450_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms450_FormGroupHolder extends Wbcr_FactoryForms450_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms455_FormGroupHolder extends Wbcr_FactoryForms455_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_FactoryForms450_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms450_MoreLinkHolder extends Wbcr_FactoryForms450_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms455_MoreLinkHolder extends Wbcr_FactoryForms455_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_FactoryForms450_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms450_TabItemHolder extends Wbcr_FactoryForms450_Holder {
23
 
24
  /**
25
  * A holder type.
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms455_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms455_TabItemHolder extends Wbcr_FactoryForms455_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_FactoryForms450_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms450_TabHolder extends Wbcr_FactoryForms450_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 FactoryForms450_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_FactoryForms450_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_FactoryForms455_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms455_TabHolder extends Wbcr_FactoryForms455_Holder {
25
 
26
  /**
27
  * A holder type.
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param FactoryForms455_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_FactoryForms455_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_FactoryForms450_IntegerControl') ) {
36
 
37
- class Wbcr_FactoryForms450_IntegerControl extends Wbcr_FactoryForms450_Control {
38
 
39
  public $type = 'integer';
40
 
32
  exit;
33
  }
34
 
35
+ if( !class_exists('Wbcr_FactoryForms455_IntegerControl') ) {
36
 
37
+ class Wbcr_FactoryForms455_IntegerControl extends Wbcr_FactoryForms455_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_FactoryForms450_ListControl') ) {
25
 
26
- class Wbcr_FactoryForms450_ListControl extends Wbcr_FactoryForms450_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_450') ) ?>'
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_450'));
140
 
141
  if( $is_empty ) {
142
  $this->addCssClass('factory-empty');
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms455_ListControl') ) {
25
 
26
+ class Wbcr_FactoryForms455_ListControl extends Wbcr_FactoryForms455_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_455') ) ?>'
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_455'));
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_FactoryForms450_MultipleTextboxControl') ) {
19
 
20
- class Wbcr_FactoryForms450_MultipleTextboxControl extends Wbcr_FactoryForms450_Control {
21
 
22
  public $type = 'multiple-textbox';
23
 
@@ -86,7 +86,7 @@
86
  <?php endif; ?>
87
  </div>
88
  <button class="btn btn-default btn-small factory-mtextbox-add-item">
89
- <i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', 'wbcr_factory_forms_450') ?>
90
  </button>
91
  </div>
92
 
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms455_MultipleTextboxControl') ) {
19
 
20
+ class Wbcr_FactoryForms455_MultipleTextboxControl extends Wbcr_FactoryForms455_Control {
21
 
22
  public $type = 'multiple-textbox';
23
 
86
  <?php endif; ?>
87
  </div>
88
  <button class="btn btn-default btn-small factory-mtextbox-add-item">
89
+ <i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', 'wbcr_factory_forms_455') ?>
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_FactoryForms450_PaddingsEditorControl') ) {
18
 
19
- class Wbcr_FactoryForms450_PaddingsEditorControl extends Wbcr_FactoryForms450_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_450') ?>
71
  </label>
72
 
73
  <div class="factory-slider">
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_PaddingsEditorControl') ) {
18
 
19
+ class Wbcr_FactoryForms455_PaddingsEditorControl extends Wbcr_FactoryForms455_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_455') ?>
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_FactoryForms450_PatternControl') ) {
19
 
20
- class Wbcr_FactoryForms450_PatternControl extends Wbcr_FactoryForms450_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_450_patterns', array());
56
- $this->patterns = apply_filters('wbcr_factory_forms_450_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
- $this->color = new Wbcr_FactoryForms450_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_450') ?>">
106
  <i class="fa fa-flask"></i>
107
- <span><?php _e('re-color', 'wbcr_factory_forms_450') ?></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_450') ?></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_450') ?></i>
118
  </div>
119
  </div>
120
  <div class="factory-picker-target"></div>
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms455_PatternControl') ) {
19
 
20
+ class Wbcr_FactoryForms455_PatternControl extends Wbcr_FactoryForms455_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_455_patterns', array());
56
+ $this->patterns = apply_filters('wbcr_factory_forms_455_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
+ $this->color = new Wbcr_FactoryForms455_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_455') ?>">
106
  <i class="fa fa-flask"></i>
107
+ <span><?php _e('re-color', 'wbcr_factory_forms_455') ?></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_455') ?></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_455') ?></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_FactoryForms450_RadioColorsControl') ) {
31
 
32
- class Wbcr_FactoryForms450_RadioColorsControl extends Wbcr_FactoryForms450_Control {
33
 
34
  public $type = 'radio-color';
35
 
27
  exit;
28
  }
29
 
30
+ if( !class_exists('Wbcr_FactoryForms455_RadioColorsControl') ) {
31
 
32
+ class Wbcr_FactoryForms455_RadioColorsControl extends Wbcr_FactoryForms455_Control {
33
 
34
  public $type = 'radio-color';
35
 
libs/factory/forms/controls/radio.php CHANGED
@@ -21,9 +21,9 @@
21
  exit;
22
  }
23
 
24
- if( !class_exists('Wbcr_FactoryForms450_RadioControl') ) {
25
 
26
- class Wbcr_FactoryForms450_RadioControl extends Wbcr_FactoryForms450_Control {
27
 
28
  public $type = 'radio';
29
 
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms455_RadioControl') ) {
25
 
26
+ class Wbcr_FactoryForms455_RadioControl extends Wbcr_FactoryForms455_Control {
27
 
28
  public $type = 'radio';
29
 
libs/factory/forms/controls/textarea.php CHANGED
@@ -20,9 +20,9 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms450_TextareaControl') ) {
24
 
25
- class Wbcr_FactoryForms450_TextareaControl extends Wbcr_FactoryForms450_Control {
26
 
27
  public $type = 'textarea';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms455_TextareaControl') ) {
24
 
25
+ class Wbcr_FactoryForms455_TextareaControl extends Wbcr_FactoryForms455_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_FactoryForms450_TextboxControl') ) {
33
 
34
- class Wbcr_FactoryForms450_TextboxControl extends Wbcr_FactoryForms450_Control {
35
 
36
  public $type = 'textbox';
37
 
29
  exit;
30
  }
31
 
32
+ if( !class_exists('Wbcr_FactoryForms455_TextboxControl') ) {
33
 
34
+ class Wbcr_FactoryForms455_TextboxControl extends Wbcr_FactoryForms455_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 FactoryForms450_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_FactoryForms450_UrlControl') ) {
22
 
23
- class Wbcr_FactoryForms450_UrlControl extends Wbcr_FactoryForms450_TextboxControl {
24
 
25
  public $type = 'url';
26
 
4
  * Url Control
5
  *
6
  * Main options:
7
+ * @see FactoryForms455_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_FactoryForms455_UrlControl') ) {
22
 
23
+ class Wbcr_FactoryForms455_UrlControl extends Wbcr_FactoryForms455_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_FactoryForms450_WpEditorControl') ) {
26
 
27
- class Wbcr_FactoryForms450_WpEditorControl extends Wbcr_FactoryForms450_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_450_URL . '/assets/css/editor.css';
46
  }
47
  }
48
 
22
  exit;
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms455_WpEditorControl') ) {
26
 
27
+ class Wbcr_FactoryForms455_WpEditorControl extends Wbcr_FactoryForms455_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_455_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_FactoryForms450_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
- abstract class Wbcr_FactoryForms450_ComplexControl extends Wbcr_FactoryForms450_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_FactoryForms450_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_IFactoryForms450_ValueProvider $provider
45
  * @return void
46
  */
47
  public function setProvider($provider)
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms455_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_FactoryForms455_ComplexControl extends Wbcr_FactoryForms455_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_FactoryForms455_Control[]
37
  */
38
  public $inner_controls = array();
39
 
41
  * Sets a provider for the control.
42
  *
43
  * @since 1.0.0
44
+ * @param Wbcr_IFactoryForms455_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_FactoryForms450_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms450_ControlHolder extends Wbcr_FactoryForms450_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
- * @var Wbcr_FactoryForms450_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_FactoryForms450_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_FactoryForms450_FormElement[].
64
  */
65
  public function getElements()
66
  {
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms455_ControlHolder extends Wbcr_FactoryForms455_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
+ * @var Wbcr_FactoryForms455_Control[]
30
  */
31
  protected $elements = array();
32
 
43
  *
44
  * @since 1.0.0
45
  * @param mixed[] $options A holder options.
46
+ * @param Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms450_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms450_Control extends Wbcr_FactoryForms450_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_IFactoryForms450_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 FactoryForms450_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 IFactoryForms450_ValueProvider $provider
70
  * @return void
71
  */
72
  public function setProvider($provider)
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms455_Control extends Wbcr_FactoryForms455_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_IFactoryForms455_ValueProvider
47
  */
48
  protected $provider = null;
49
 
51
  * Create a new instance of the control.
52
  *
53
  * @param mixed[] $options
54
+ * @param FactoryForms455_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 IFactoryForms455_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_FactoryForms450_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms450_CustomElement extends Wbcr_FactoryForms450_FormElement {
24
 
25
  /**
26
  * Is this element a custom form element?
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms455_CustomElement extends Wbcr_FactoryForms455_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
@@ -53,7 +53,7 @@
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
- * @var Wbcr_FactoryForms450_Form
57
  */
58
  protected $form;
59
 
@@ -61,7 +61,7 @@
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
- * @var Wbcr_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms455_FormElement') ) {
18
 
19
  /**
20
  * The base class for all form element (controls, holders).
23
  *
24
  * @since 1.0.0
25
  */
26
+ abstract class Wbcr_FactoryForms455_FormElement {
27
 
28
  /**
29
  * A type of an elemnt.
37
  * An html attribute builder.
38
  *
39
  * @since 1.0.0
40
+ * @var Wbcr_FactoryForms455_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
+ * @var Wbcr_FactoryForms455_Form
57
  */
58
  protected $form;
59
 
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
+ * @var Wbcr_FactoryForms455_FormLayout
65
  */
66
  protected $layout;
67
 
94
  *
95
  * @since 1.0.0
96
  * @param mixed[] $options A holder options.
97
+ * @param Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms450_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
- abstract class Wbcr_FactoryForms450_FormLayout extends Wbcr_FactoryForms450_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_FactoryForms450_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-450-' . $this->type);
56
- $this->addCssClass('factory-forms-450-' . $this->name);
57
  }
58
 
59
  /**
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
+ abstract class Wbcr_FactoryForms455_FormLayout extends Wbcr_FactoryForms455_Holder {
23
 
24
  /**
25
  * A form layout name.
42
  *
43
  * @since 1.0.0
44
  * @param mixed[] $options A holder options.
45
+ * @param Wbcr_FactoryForms455_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-455-' . $this->type);
56
+ $this->addCssClass('factory-forms-455-' . $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_450_plugin_created', 'wbcr_factory_forms_450_plugin_created');
19
 
20
- function wbcr_factory_forms_450_plugin_created($plugin)
21
  {
22
- $plugin->forms = new Wbcr_FactoryForms450_Manager($plugin);
23
  }
24
 
25
- if( !class_exists('Wbcr_FactoryForms450_Manager') ) {
26
 
27
- class Wbcr_FactoryForms450_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
@@ -57,7 +57,7 @@
57
  /**
58
  * Registers a set of new controls.
59
  *
60
- * @see FactoryForms450_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 FactoryForms450_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 FactoryForms450_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_FactoryForms450_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
- class Wbcr_FactoryForms450_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_IFactoryForms450_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_FactoryForms450_FormLayout
249
  */
250
  public $layout;
251
 
@@ -261,20 +261,20 @@
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
- * @param Wbcr_Factory453_Plugin $plugin
265
  */
266
- public function __construct(array $options, Wbcr_Factory453_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
- if( !Wbcr_FactoryForms450_Manager::$controls_registered ) {
270
 
271
- do_action('wbcr_factory_forms_450_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
- do_action('wbcr_factory_forms_450_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
- Wbcr_FactoryForms450_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_FactoryForms450_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
- * @param Wbcr_IFactoryForms450_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_453_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
- * @return Wbcr_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_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_FactoryForms450_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
- $haystack = Wbcr_FactoryForms450_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_FactoryForms450_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
@@ -672,7 +672,7 @@
672
  */
673
  public static function isControlHolder($item)
674
  {
675
- return isset(Wbcr_FactoryForms450_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
@@ -684,7 +684,7 @@
684
  */
685
  public static function isCustomElement($item)
686
  {
687
- return isset(Wbcr_FactoryForms450_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_455_plugin_created', 'wbcr_factory_forms_455_plugin_created');
19
 
20
+ function wbcr_factory_forms_455_plugin_created($plugin)
21
  {
22
+ $plugin->forms = new Wbcr_FactoryForms455_Manager($plugin);
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms455_Manager') ) {
26
 
27
+ class Wbcr_FactoryForms455_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
57
  /**
58
  * Registers a set of new controls.
59
  *
60
+ * @see FactoryForms455_Form::registerControl()
61
  *
62
  * @since 1.0.0
63
  * @return void
95
  /**
96
  * Registers a set of new holder controls.
97
  *
98
+ * @see FactoryForms455_Form::registerHolder()
99
  *
100
  * @since 1.0.0
101
  * @return void
129
  /**
130
  * Registers a set of new custom form elements.
131
  *
132
+ * @see FactoryForms455_Form::registerCustomElement()
133
  *
134
  * @since 1.0.0
135
  * @return void
180
  public static $controls_registered = false;
181
  }
182
  }
183
+ if( !class_exists('Wbcr_FactoryForms455_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
+ class Wbcr_FactoryForms455_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_IFactoryForms455_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_FactoryForms455_FormLayout
249
  */
250
  public $layout;
251
 
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
+ * @param Wbcr_Factory458_Plugin $plugin
265
  */
266
+ public function __construct(array $options, Wbcr_Factory458_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
+ if( !Wbcr_FactoryForms455_Manager::$controls_registered ) {
270
 
271
+ do_action('wbcr_factory_forms_455_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
+ do_action('wbcr_factory_forms_455_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
+ Wbcr_FactoryForms455_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_FactoryForms455_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
+ * @param Wbcr_IFactoryForms455_ValueProvider $provider
300
  * @return void
301
  */
302
  public function setProvider($provider)
332
  */
333
  public function getItems()
334
  {
335
+ return apply_filters('wbcr_factory_458_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
+ * @return Wbcr_FactoryForms455_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_FactoryForms455_Control[]
359
  */
360
 
361
  public function createControls($holder = null)
395
  *
396
  * @since 1.0.0
397
  * @param array $item Item data.
398
+ * @return Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms455_Control A control object.
437
  */
438
  public function createControl($item)
439
  {
441
 
442
  if( is_array($item) ) {
443
 
444
+ $control_data = Wbcr_FactoryForms455_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_FactoryForms455_Holder A control holder object.
469
  */
470
  public function createHolder($item)
471
  {
473
 
474
  if( is_array($item) ) {
475
 
476
+ $holderData = Wbcr_FactoryForms455_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_FactoryForms455_FormElement A custom form element object.
495
  */
496
  public function createCustomElement($item)
497
  {
499
 
500
  if( is_array($item) ) {
501
 
502
+ $data = Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms455_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_FactoryForms455_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_FactoryForms455_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
+ $haystack = Wbcr_FactoryForms455_Manager::$registered_holders;
608
  }
609
 
610
  if( isset($haystack[$type]) ) {
660
  */
661
  public static function isControl($item)
662
  {
663
+ return isset(Wbcr_FactoryForms455_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
672
  */
673
  public static function isControlHolder($item)
674
  {
675
+ return isset(Wbcr_FactoryForms455_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
684
  */
685
  public static function isCustomElement($item)
686
  {
687
+ return isset(Wbcr_FactoryForms455_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_FactoryForms450_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms450_Holder extends Wbcr_FactoryForms450_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
- * @var Wbcr_FactoryForms450_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_FactoryForms450_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_FactoryForms450_Control[].
60
  */
61
  public function getElements()
62
  {
@@ -84,7 +84,7 @@
84
  $is_first_item = false;
85
  }
86
 
87
- do_action('wbcr_factory_453_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_FactoryForms455_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms455_Holder extends Wbcr_FactoryForms455_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
+ * @var Wbcr_FactoryForms455_Control[]
31
  */
32
  protected $elements = array();
33
 
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param Wbcr_FactoryForms455_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_FactoryForms455_Control[].
60
  */
61
  public function getElements()
62
  {
84
  $is_first_item = false;
85
  }
86
 
87
+ do_action('wbcr_factory_458_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_FactoryForms450_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms450_HtmlAttributeBuilder {
24
 
25
  /**
26
  * An array to store css classes.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms455_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_FactoryForms450_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
@@ -24,7 +24,7 @@
24
  *
25
  * @since 1.0.0
26
  */
27
- class Wbcr_FactoryForms450_MetaValueProvider implements Wbcr_IFactoryForms450_ValueProvider {
28
 
29
 
30
  public $scope;
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
24
  *
25
  * @since 1.0.0
26
  */
27
+ class Wbcr_FactoryForms455_MetaValueProvider implements Wbcr_IFactoryForms455_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_FactoryForms450_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
@@ -22,7 +22,7 @@
22
  *
23
  * @since 1.0.0
24
  */
25
- class Wbcr_FactoryForms450_OptionsValueProvider implements Wbcr_IFactoryForms450_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_Factory453_Plugin $plugin)
47
  {
48
  $this->plugin = $plugin;
49
  }
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms455_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
22
  *
23
  * @since 1.0.0
24
  */
25
+ class Wbcr_FactoryForms455_OptionsValueProvider implements Wbcr_IFactoryForms455_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_Factory458_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_IFactoryForms450_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
- interface Wbcr_IFactoryForms450_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_IFactoryForms455_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
+ interface Wbcr_IFactoryForms455_ValueProvider {
24
 
25
  /**
26
  * Inits a form a provider to get data from a storage.
libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.mo → wbcr_factory_forms_455-ru_RU.mo} RENAMED
File without changes
libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.po → wbcr_factory_forms_455-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_FactoryForms450_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
- class Wbcr_FactoryForms450_Bootstrap3FormLayout extends Wbcr_FactoryForms450_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_FactoryForms450_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
@@ -68,7 +68,7 @@
68
  }
69
 
70
  /**
71
- * @param Wbcr_FactoryForms450_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
@@ -116,7 +116,7 @@
116
  }
117
 
118
  /**
119
- * @param Wbcr_FactoryForms450_Control $control
120
  */
121
  public function afterControl($control)
122
  {
@@ -168,7 +168,7 @@
168
  }
169
 
170
  /**
171
- * @param Wbcr_FactoryForms450_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
@@ -193,7 +193,7 @@
193
  }
194
 
195
  /**
196
- * @param Wbcr_FactoryForms450_Control $control
197
  * @param int $index
198
  * @param int $total
199
  */
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms455_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
+ class Wbcr_FactoryForms455_Bootstrap3FormLayout extends Wbcr_FactoryForms455_FormLayout {
22
 
23
  public $name = 'default';
24
 
27
  *
28
  * @since 1.0.0
29
  * @param array $options A holder options.
30
+ * @param Wbcr_FactoryForms455_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
68
  }
69
 
70
  /**
71
+ * @param Wbcr_FactoryForms455_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
116
  }
117
 
118
  /**
119
+ * @param Wbcr_FactoryForms455_Control $control
120
  */
121
  public function afterControl($control)
122
  {
168
  }
169
 
170
  /**
171
+ * @param Wbcr_FactoryForms455_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
193
  }
194
 
195
  /**
196
+ * @param Wbcr_FactoryForms455_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_140_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_FREEMIUS_140_VERSION', '1.4.0');
22
 
23
- define('FACTORY_FREEMIUS_140_LOADED', true);
24
- define('FACTORY_FREEMIUS_140_DIR', dirname(__FILE__));
25
- define('FACTORY_FREEMIUS_140_URL', plugins_url(null, __FILE__));
26
 
27
  #comp merge
28
  // Freemius
29
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/entities/class-freemius-entity.php');
30
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/entities/class-freemius-scope.php');
31
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/entities/class-freemius-user.php');
32
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/entities/class-freemius-site.php');
33
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/entities/class-freemius-license.php');
34
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/licensing/class-freemius-provider.php');
35
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/updates/class-freemius-repository.php');
36
 
37
  if( !class_exists('Freemius_Api_WordPress') ) {
38
- require_once FACTORY_FREEMIUS_140_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
- require_once(FACTORY_FREEMIUS_140_DIR . '/includes/class-freemius-api.php');
42
 
43
  /**
44
- * @param Wbcr_Factory453_Plugin $plugin
45
  */
46
- add_action('wbcr_factory_freemius_140_plugin_created', function ($plugin) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
- $plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_140\Premium\Provider');
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
- $plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_140\Updates\Freemius_Repository');
51
  });
52
  #endcomp
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_FREEMIUS_145_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_FREEMIUS_145_VERSION', '1.4.5');
22
 
23
+ define('FACTORY_FREEMIUS_145_LOADED', true);
24
+ define('FACTORY_FREEMIUS_145_DIR', dirname(__FILE__));
25
+ define('FACTORY_FREEMIUS_145_URL', plugins_url(null, __FILE__));
26
 
27
  #comp merge
28
  // Freemius
29
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-entity.php');
30
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-scope.php');
31
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-user.php');
32
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-site.php');
33
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-license.php');
34
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/licensing/class-freemius-provider.php');
35
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/updates/class-freemius-repository.php');
36
 
37
  if( !class_exists('Freemius_Api_WordPress') ) {
38
+ require_once FACTORY_FREEMIUS_145_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
+ require_once(FACTORY_FREEMIUS_145_DIR . '/includes/class-freemius-api.php');
42
 
43
  /**
44
+ * @param Wbcr_Factory458_Plugin $plugin
45
  */
46
+ add_action('wbcr_factory_freemius_145_plugin_created', function ($plugin) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
+ $plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_145\Premium\Provider');
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
+ $plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_145\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_140;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
- use Wbcr_Factory453_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
@@ -33,7 +33,7 @@ final class Api {
33
  private $api;
34
 
35
  /**
36
- * @var Wbcr_Factory453_Plugin
37
  */
38
  private $plugin;
39
 
@@ -48,14 +48,14 @@ final class Api {
48
  private static $clock_diff;
49
 
50
  /**
51
- * @param Wbcr_Factory453_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_Factory453_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_Factory453_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_Factory453_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_145;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
+ use Wbcr_Factory458_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
33
  private $api;
34
 
35
  /**
36
+ * @var Wbcr_Factory458_Plugin
37
  */
38
  private $plugin;
39
 
48
  private static $clock_diff;
49
 
50
  /**
51
+ * @param Wbcr_Factory458_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_Factory458_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_Factory458_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_Factory458_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_140\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\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_140\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_453\Premium\Interfaces\License {
18
 
19
  /**
20
  * @var number
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\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_458\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_140\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\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_140\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\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_140\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\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_140\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\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_140\Premium;
4
-
5
- use WBCR\Factory_Freemius_140\Entities\License;
6
- use WBCR\Factory_Freemius_140\Entities\Plugin;
7
- use WBCR\Factory_Freemius_140\Entities\Site;
8
- use WBCR\Factory_Freemius_140\Entities\User;
9
- use WBCR\Factory_453\Premium\Provider as License_Provider;
10
- use Wbcr_Factory453_Plugin;
11
- use WBCR\Factory_Freemius_140\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_140\Api
44
  */
45
  private $site_api;
46
 
47
  /**
48
- * @var \WBCR\Factory_Freemius_140\Api
49
  */
50
  private $plugin_api;
51
 
52
  /**
53
- * @var \WBCR\Factory_Freemius_140\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_Factory453_Plugin $plugin
86
  *
87
  * @throws Exception
88
  */
89
- public function __construct(Wbcr_Factory453_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_140\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_140\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_140\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_140\Api
647
  * @throws Exception
648
  */
649
  private function get_api_plugin_scope()
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\Premium;
4
+
5
+ use WBCR\Factory_Freemius_145\Entities\License;
6
+ use WBCR\Factory_Freemius_145\Entities\Plugin;
7
+ use WBCR\Factory_Freemius_145\Entities\Site;
8
+ use WBCR\Factory_Freemius_145\Entities\User;
9
+ use WBCR\Factory_458\Premium\Provider as License_Provider;
10
+ use Wbcr_Factory458_Plugin;
11
+ use WBCR\Factory_Freemius_145\Api;
12
  use WP_Error;
13
  use Exception;
14
 
40
  private $slug;
41
 
42
  /**
43
+ * @var \WBCR\Factory_Freemius_145\Api
44
  */
45
  private $site_api;
46
 
47
  /**
48
+ * @var \WBCR\Factory_Freemius_145\Api
49
  */
50
  private $plugin_api;
51
 
52
  /**
53
+ * @var \WBCR\Factory_Freemius_145\Api
54
  */
55
  private $user_api;
56
 
82
  /**
83
  * Manager constructor.
84
  *
85
+ * @param Wbcr_Factory458_Plugin $plugin
86
  *
87
  * @throws Exception
88
  */
89
+ public function __construct(Wbcr_Factory458_Plugin $plugin, array $settings)
90
  {
91
  parent::__construct($plugin, $settings);
92
 
150
  }
151
 
152
  /**
153
+ * @return \WBCR\Factory_Freemius_145\Entities\License|null
154
  * @throws Exception
155
  */
156
  public function get_license()
613
  /**
614
  * @param bool $flush
615
  *
616
+ * @return \WBCR\Factory_Freemius_145\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_145\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_145\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_140\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
- use Wbcr_Factory453_Plugin;
8
- use WBCR\Factory_453\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_140\Premium\Provider
24
  */
25
  private $premium;
26
 
27
  /**
28
  * Freemius constructor.
29
- * @param Wbcr_Factory453_Plugin $plugin
30
  *
31
  * @throws Exception
32
  * @since 4.0.0
33
  *
34
  */
35
- public function __construct(Wbcr_Factory453_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_140\Premium\Provider ) {
47
  throw new Exception("This repository type requires Freemius premium provider.");
48
  }
49
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_145\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
+ use Wbcr_Factory458_Plugin;
8
+ use WBCR\Factory_458\Updates\Repository;
9
 
10
  if( !defined('ABSPATH') ) {
11
  exit;
20
  class Freemius_Repository extends Repository {
21
 
22
  /**
23
+ * @var \WBCR\Factory_Freemius_145\Premium\Provider
24
  */
25
  private $premium;
26
 
27
  /**
28
  * Freemius constructor.
29
+ * @param Wbcr_Factory458_Plugin $plugin
30
  *
31
  * @throws Exception
32
  * @since 4.0.0
33
  *
34
  */
35
+ public function __construct(Wbcr_Factory458_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_145\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_118_LogCleanup(element) {
2
  var btn = jQuery(element),
3
  currentBtnText = btn.html();
4
 
@@ -10,18 +10,18 @@ function wbcr_factory_logger_118_LogCleanup(element) {
10
  url: ajaxurl,
11
  method: 'post',
12
  data: {
13
- action: 'wbcr_factory_logger_118_logs_cleanup',
14
- nonce: wbcr_factory_logger_118.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_106.app.showNotice(data.message, data.type);
22
  },
23
  error: function (jqXHR, textStatus, errorThrown) {
24
- jQuery.wbcr_factory_templates_106.app.showNotice('Error: ' + errorThrown + ', status: ' + textStatus, 'danger');
25
  btn.html(currentBtnText);
26
  }
27
  });
1
+ function wbcr_factory_logger_123_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_123_'+wbcr_factory_logger_123.plugin_prefix+'logs_cleanup',
14
+ nonce: wbcr_factory_logger_123.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_110.app.showNotice(data.message, data.type);
22
  },
23
  error: function (jqXHR, textStatus, errorThrown) {
24
+ jQuery.wbcr_factory_templates_110.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_118\Logger;
4
 
5
  /**
6
  * Factory Logger
@@ -19,31 +19,31 @@ if( !defined('ABSPATH') ) {
19
  exit;
20
  }
21
 
22
- if( defined('FACTORY_LOGGER_118_LOADED') || (defined('FACTORY_LOGGER_STOP') && FACTORY_LOGGER_STOP) ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_LOGGER_118_LOADED', true);
27
- define('FACTORY_LOGGER_118_VERSION', '1.1.8');
28
- define('FACTORY_LOGGER_118_DIR', dirname(__FILE__));
29
- define('FACTORY_LOGGER_118_URL', plugins_url(null, __FILE__));
30
 
31
- load_plugin_textdomain('wbcr_factory_logger_118', false, dirname(plugin_basename(__FILE__)) . '/langs');
32
 
33
- require_once(FACTORY_LOGGER_118_DIR . '/includes/class-logger.php');
34
 
35
  if( is_admin() ) {
36
- require_once(FACTORY_LOGGER_118_DIR . '/includes/class-log-export.php');
37
- require_once(FACTORY_LOGGER_118_DIR . '/pages/class-logger-impressive-page.php');
38
- require_once(FACTORY_LOGGER_118_DIR . '/pages/class-logger-impressive-lite.php');
39
- require_once(FACTORY_LOGGER_118_DIR . '/pages/class-logger-admin-page.php');
40
  }
41
 
42
  /**
43
- * @param Wbcr_Factory453_Plugin $plugin
44
  */
45
- add_action('wbcr_factory_logger_118_plugin_created', function ($plugin) {
46
- /* @var Wbcr_Factory453_Plugin $plugin */
47
 
48
  /* Settings of Logger
49
  $settings = [
@@ -54,7 +54,7 @@ add_action('wbcr_factory_logger_118_plugin_created', function ($plugin) {
54
  'rotate_limit' => 3,
55
  ];
56
 
57
- $plugin->set_logger( "WBCR\Factory_Logger_118\Logger", $settings );
58
  */
59
- $plugin->set_logger("WBCR\Factory_Logger_118\Logger");
60
  });
1
  <?php
2
 
3
+ use WBCR\Factory_Logger_123\Logger;
4
 
5
  /**
6
  * Factory Logger
19
  exit;
20
  }
21
 
22
+ if( defined('FACTORY_LOGGER_123_LOADED') || (defined('FACTORY_LOGGER_STOP') && FACTORY_LOGGER_STOP) ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_LOGGER_123_LOADED', true);
27
+ define('FACTORY_LOGGER_123_VERSION', '1.2.3');
28
+ define('FACTORY_LOGGER_123_DIR', dirname(__FILE__));
29
+ define('FACTORY_LOGGER_123_URL', plugins_url(null, __FILE__));
30
 
31
+ load_plugin_textdomain('wbcr_factory_logger_123', false, dirname(plugin_basename(__FILE__)) . '/langs');
32
 
33
+ require_once(FACTORY_LOGGER_123_DIR . '/includes/class-logger.php');
34
 
35
  if( is_admin() ) {
36
+ require_once(FACTORY_LOGGER_123_DIR . '/includes/class-log-export.php');
37
+ require_once(FACTORY_LOGGER_123_DIR . '/pages/class-logger-impressive-page.php');
38
+ require_once(FACTORY_LOGGER_123_DIR . '/pages/class-logger-impressive-lite.php');
39
+ require_once(FACTORY_LOGGER_123_DIR . '/pages/class-logger-admin-page.php');
40
  }
41
 
42
  /**
43
+ * @param Wbcr_Factory458_Plugin $plugin
44
  */
45
+ add_action('wbcr_factory_logger_123_plugin_created', function ($plugin) {
46
+ /* @var Wbcr_Factory458_Plugin $plugin */
47
 
48
  /* Settings of Logger
49
  $settings = [
54
  'rotate_limit' => 3,
55
  ];
56
 
57
+ $plugin->set_logger( "WBCR\Factory_Logger_123\Logger", $settings );
58
  */
59
+ $plugin->set_logger("WBCR\Factory_Logger_123\Logger");
60
  });
libs/factory/logger/includes/class-log-export.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Logger_118;
4
 
5
  /**
6
  * Prepares export files, ZIPs them and allows to download the package.
1
  <?php
2
 
3
+ namespace WBCR\Factory_Logger_123;
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_118;
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_Factory453_Plugin Plugin class.
52
  */
53
  public $plugin;
54
 
@@ -92,7 +92,7 @@ class Logger {
92
  /**
93
  * Logger constructor.
94
  *
95
- * @param \Wbcr_Factory453_Plugin $plugin
96
  * @param array $settings
97
  */
98
  public function __construct( $plugin, $settings = [] ) {
@@ -373,15 +373,7 @@ class Logger {
373
  */
374
  public function add( $level, $message ) {
375
 
376
- //if ( $level === $this->LEVEL_DEBUG ) {
377
- //$log_debug = defined( 'WP_DEBUG' ) && WP_DEBUG;
378
-
379
- //if ( ! $log_debug ) {
380
- //return false;
381
- //}
382
- //}
383
-
384
- $this->_logs[] = $this->get_format( $level, htmlspecialchars( $message ) );
385
 
386
  if ( count( $this->_logs ) >= $this->flush_interval ) {
387
  $this->flush();
1
  <?php
2
 
3
+ namespace WBCR\Factory_Logger_123;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
48
  const LEVEL_DEBUG = 'debug';
49
 
50
  /**
51
+ * @var \Wbcr_Factory458_Plugin Plugin class.
52
  */
53
  public $plugin;
54
 
92
  /**
93
  * Logger constructor.
94
  *
95
+ * @param \Wbcr_Factory458_Plugin $plugin
96
  * @param array $settings
97
  */
98
  public function __construct( $plugin, $settings = [] ) {
373
  */
374
  public function add( $level, $message ) {
375
 
376
+ $this->_logs[] = $this->get_format( $level, $message );
 
 
 
 
 
 
 
 
377
 
378
  if ( count( $this->_logs ) >= $this->flush_interval ) {
379
  $this->flush();
libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.mo → wbcr_factory_logger_123-ru_RU.mo} RENAMED
File without changes
libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.po → wbcr_factory_logger_123-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_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
16
 
17
  /**
18
  * {@inheritdoc}
@@ -30,16 +30,16 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
30
  public $type = 'page';
31
 
32
  /**
33
- * @param Wbcr_Factory453_Plugin $plugin
34
  */
35
  public function __construct( $plugin ) {
36
  $this->id = $plugin->getPrefix() . "logger";
37
 
38
- $this->menu_title = __( 'Plugin Log', 'wbcr_factory_logger_118' );
39
- $this->page_title = __( 'Plugin log', 'wbcr_factory_logger_118' );
40
  $this->capabilitiy = "manage_options";
41
 
42
- add_action( 'wp_ajax_wbcr_factory_logger_118_logs_cleanup', [ $this, 'ajax_cleanup' ] );
43
 
44
  parent::__construct( $plugin );
45
  }
@@ -53,10 +53,11 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
53
  public function assets( $scripts, $styles ) {
54
  parent::assets( $scripts, $styles );
55
 
56
- $this->styles->add( FACTORY_LOGGER_118_URL . '/assets/css/logger.css' );
57
- $this->scripts->add( FACTORY_LOGGER_118_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_118', FACTORY_LOGGER_118_VERSION );
58
- wp_localize_script( 'wbcr_factory_logger_118', 'wbcr_factory_logger_118', [
59
- 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_118_clean_logs' ),
 
60
  ] );
61
  }
62
 
@@ -64,7 +65,7 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
64
  * {@inheritdoc}
65
  */
66
  public function getMenuTitle() {
67
- return __( 'Plugin Log', 'wbcr_factory_logger_118' );
68
  }
69
 
70
  /**
@@ -81,22 +82,22 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_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_118' ) . "</a>
85
  <a href='#'
86
  class='button button-secondary'
87
- onclick='wbcr_factory_logger_118_LogCleanup(this);return false;'
88
- data-working='" . __( 'Working...', 'wbcr_factory_logger_118' ) . "'>" .
89
- sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_118' ), $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_118' ) ?>
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_118' ) ?>
100
  </p>
101
  </div>
102
  <?php echo $buttons; ?>
@@ -109,7 +110,7 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
109
  }
110
 
111
  public function ajax_cleanup() {
112
- check_admin_referer( 'wbcr_factory_logger_118_clean_logs', 'nonce' );
113
 
114
  if ( ! current_user_can( 'manage_options' ) ) {
115
  wp_die( - 1 );
@@ -117,13 +118,13 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_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_118' ),
121
  'type' => 'danger',
122
  ] );
123
  }
124
 
125
  wp_send_json( [
126
- 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_118' ),
127
  'type' => 'success',
128
  ] );
129
  }
@@ -132,7 +133,7 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
132
  * Processing log export action in form of ZIP archive.
133
  */
134
  public function exportAction() {
135
- $export = new WBCR\Factory_Logger_118\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_FactoryLogger123_AdminPage extends Wbcr_FactoryPages457_AdminPage {
16
 
17
  /**
18
  * {@inheritdoc}
30
  public $type = 'page';
31
 
32
  /**
33
+ * @param Wbcr_Factory458_Plugin $plugin
34
  */
35
  public function __construct( $plugin ) {
36
  $this->id = $plugin->getPrefix() . "logger";
37
 
38
+ $this->menu_title = __( 'Plugin Log', 'wbcr_factory_logger_123' );
39
+ $this->page_title = __( 'Plugin log', 'wbcr_factory_logger_123' );
40
  $this->capabilitiy = "manage_options";
41
 
42
+ add_action( 'wp_ajax_wbcr_factory_logger_123_'.$plugin->getPrefix().'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_123_URL . '/assets/css/logger.css' );
57
+ $this->scripts->add( FACTORY_LOGGER_123_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_123', FACTORY_LOGGER_123_VERSION );
58
+ wp_localize_script( 'wbcr_factory_logger_123', 'wbcr_factory_logger_123', [
59
+ 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_123_clean_logs' ),
60
+ 'plugin_prefix' => $this->plugin->getPrefix(),
61
  ] );
62
  }
63
 
65
  * {@inheritdoc}
66
  */
67
  public function getMenuTitle() {
68
+ return __( 'Plugin Log', 'wbcr_factory_logger_123' );
69
  }
70
 
71
  /**
82
  $buttons = "
83
  <div class='wbcr_factory_logger_buttons'>
84
  <a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
85
+ class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_123' ) . "</a>
86
  <a href='#'
87
  class='button button-secondary'
88
+ onclick='wbcr_factory_logger_123_LogCleanup(this);return false;'
89
+ data-working='" . __( 'Working...', 'wbcr_factory_logger_123' ) . "'>" .
90
+ sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_123' ), $this->get_log_size_formatted() ) . "
91
  </a>
92
  </div>";
93
 
94
  ?>
95
  <div class="wbcr_factory_logger_container">
96
  <div class="wbcr_factory_logger_page_title">
97
+ <h1><?php _e( 'Logs of the', 'wbcr_factory_logger_123' ) ?>
98
  &nbsp;<?php echo $this->plugin->getPluginTitle() . " " . $this->plugin->getPluginVersion(); ?></h1>
99
  <p>
100
+ <?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_123' ) ?>
101
  </p>
102
  </div>
103
  <?php echo $buttons; ?>
110
  }
111
 
112
  public function ajax_cleanup() {
113
+ check_admin_referer( 'wbcr_factory_logger_123_clean_logs', 'nonce' );
114
 
115
  if ( ! current_user_can( 'manage_options' ) ) {
116
  wp_die( - 1 );
118
 
119
  if ( ! $this->plugin->logger->clean_up() ) {
120
  wp_send_json_error( [
121
+ 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_123' ),
122
  'type' => 'danger',
123
  ] );
124
  }
125
 
126
  wp_send_json( [
127
+ 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_123' ),
128
  'type' => 'success',
129
  ] );
130
  }
133
  * Processing log export action in form of ZIP archive.
134
  */
135
  public function exportAction() {
136
+ $export = new WBCR\Factory_Logger_123\Log_Export( $this->plugin->logger );
137
 
138
  if ( $export->prepare() ) {
139
  $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_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveLite {
16
 
17
  /**
18
  * {@inheritdoc}
@@ -30,14 +30,14 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveL
30
  public $type = 'page';
31
 
32
  /**
33
- * @param Wbcr_Factory453_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_118' );
39
 
40
- add_action( 'wp_ajax_wbcr_factory_logger_118_logs_cleanup', [ $this, 'ajax_cleanup' ] );
41
 
42
  parent::__construct( $plugin );
43
  }
@@ -51,10 +51,11 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveL
51
  public function assets( $scripts, $styles ) {
52
  parent::assets( $scripts, $styles );
53
 
54
- $this->styles->add( FACTORY_LOGGER_118_URL . '/assets/css/logger.css' );
55
- $this->scripts->add( FACTORY_LOGGER_118_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_118', FACTORY_LOGGER_118_VERSION );
56
- $this->scripts->localize( 'wbcr_factory_logger_118', [
57
- 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_118_clean_logs' ),
 
58
  ] );
59
  }
60
 
@@ -62,7 +63,7 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveL
62
  * {@inheritdoc}
63
  */
64
  public function getMenuTitle() {
65
- return __( 'Plugin Log', 'wbcr_factory_logger_118' );
66
  }
67
 
68
  /**
@@ -72,18 +73,18 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\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_118' ) . "</a>
76
  <a href='#'
77
  class='button button-secondary'
78
- onclick='wbcr_factory_logger_118_LogCleanup(this);return false;'
79
- data-working='" . __( 'Working...', 'wbcr_factory_logger_118' ) . "'>" . sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_118' ), $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_118' ) ?></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_118' ) ?>
87
  </p>
88
  </div>
89
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
@@ -97,7 +98,7 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveL
97
  }
98
 
99
  public function ajax_cleanup() {
100
- check_admin_referer( 'wbcr_factory_logger_118_clean_logs', 'nonce' );
101
 
102
  if ( ! current_user_can( 'manage_options' ) ) {
103
  wp_die( - 1 );
@@ -105,13 +106,13 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\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_118' ),
109
  'type' => 'danger',
110
  ] );
111
  }
112
 
113
  wp_send_json( [
114
- 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_118' ),
115
  'type' => 'success',
116
  ] );
117
  }
@@ -120,7 +121,7 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveL
120
  * Processing log export action in form of ZIP archive.
121
  */
122
  public function exportAction() {
123
- $export = new WBCR\Factory_Logger_118\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_FactoryLogger123_Lite extends \WBCR\Factory_Templates_110\ImpressiveLite {
16
 
17
  /**
18
  * {@inheritdoc}
30
  public $type = 'page';
31
 
32
  /**
33
+ * @param Wbcr_Factory458_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_123' );
39
 
40
+ add_action( 'wp_ajax_wbcr_factory_logger_123_'.$plugin->getPrefix().'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_123_URL . '/assets/css/logger.css' );
55
+ $this->scripts->add( FACTORY_LOGGER_123_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_123', FACTORY_LOGGER_123_VERSION );
56
+ $this->scripts->localize( 'wbcr_factory_logger_123', [
57
+ 'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_123_clean_logs' ),
58
+ 'plugin_prefix' => $this->plugin->getPrefix(),
59
  ] );
60
  }
61
 
63
  * {@inheritdoc}
64
  */
65
  public function getMenuTitle() {
66
+ return __( 'Plugin Log', 'wbcr_factory_logger_123' );
67
  }
68
 
69
  /**
73
  $buttons = "
74
  <div class='btn-group'>
75
  <a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
76
+ class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_123' ) . "</a>
77
  <a href='#'
78
  class='button button-secondary'
79
+ onclick='wbcr_factory_logger_123_LogCleanup(this);return false;'
80
+ data-working='" . __( 'Working...', 'wbcr_factory_logger_123' ) . "'>" . sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_123' ), $this->get_log_size_formatted() ) . "
81
  </a>
82
  </div>";
83
  ?>
84
  <div class="wbcr-factory-page-group-header" style="margin-top:0;">
85
+ <strong><?php _e( 'Plugin Log', 'wbcr_factory_logger_123' ) ?></strong>
86
  <p>
87
+ <?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_123' ) ?>
88
  </p>
89
  </div>
90
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
98
  }
99
 
100
  public function ajax_cleanup() {
101
+ check_admin_referer( 'wbcr_factory_logger_123_clean_logs', 'nonce' );
102
 
103
  if ( ! current_user_can( 'manage_options' ) ) {
104
  wp_die( - 1 );
106
 
107
  if ( ! $this->plugin->logger->clean_up() ) {
108
  wp_send_json_error( [
109
+ 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_123' ),
110
  'type' => 'danger',
111
  ] );
112
  }
113
 
114
  wp_send_json( [
115
+ 'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_123' ),
116
  'type' => 'success',
117
  ] );
118
  }
121
  * Processing log export action in form of ZIP archive.
122
  */
123
  public function exportAction() {
124
+ $export = new WBCR\Factory_Logger_123\Log_Export( $this->plugin->logger );
125
 
126
  if ( $export->prepare() ) {
127
  $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_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\PageBase {
16
 
17
  /**
18
  * {@inheritdoc}
@@ -30,16 +30,16 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\P
30
  public $type = 'page';
31
 
32
  /**
33
- * @param Wbcr_Factory453_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_118');
40
- $this->page_menu_short_description = __('Plugin debug report', 'wbcr_factory_logger_118');
41
 
42
- add_action('wp_ajax_wbcr_factory_logger_118_logs_cleanup', [$this, 'ajax_cleanup']);
43
 
44
  parent::__construct($plugin);
45
  }
@@ -54,10 +54,11 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\P
54
  {
55
  parent::assets($scripts, $styles);
56
 
57
- $this->styles->add(FACTORY_LOGGER_118_URL . '/assets/css/logger.css');
58
- $this->scripts->add(FACTORY_LOGGER_118_URL . '/assets/js/logger.js', ['jquery'], 'wbcr_factory_logger_118', FACTORY_LOGGER_118_VERSION);
59
- $this->scripts->localize('wbcr_factory_logger_118', [
60
- 'clean_logs_nonce' => wp_create_nonce('wbcr_factory_logger_118_clean_logs'),
 
61
  ]);
62
  }
63
 
@@ -66,7 +67,7 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\P
66
  */
67
  public function getMenuTitle()
68
  {
69
- return __('Plugin Log', 'wbcr_factory_logger_118');
70
  }
71
 
72
  /**
@@ -77,18 +78,18 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\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_118') . "</a>
81
  <a href='#'
82
  class='button button-secondary'
83
- onclick='wbcr_factory_logger_118_LogCleanup(this);return false;'
84
- data-working='" . __('Working...', 'wbcr_factory_logger_118') . "'>" . sprintf(__('Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_118'), $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_118') ?></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_118') ?>
92
  </p>
93
  </div>
94
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
@@ -103,7 +104,7 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\P
103
 
104
  public function ajax_cleanup()
105
  {
106
- check_admin_referer('wbcr_factory_logger_118_clean_logs', 'nonce');
107
 
108
  if( !current_user_can('manage_options') ) {
109
  wp_die(-1);
@@ -111,13 +112,13 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\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_118'),
115
  'type' => 'danger',
116
  ]);
117
  }
118
 
119
  wp_send_json([
120
- 'message' => esc_html__('Logs clean-up successfully', 'wbcr_factory_logger_118'),
121
  'type' => 'success',
122
  ]);
123
  }
@@ -127,7 +128,7 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\P
127
  */
128
  public function exportAction()
129
  {
130
- $export = new WBCR\Factory_Logger_118\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_FactoryLogger123_PageBase extends \WBCR\Factory_Templates_110\Pages\PageBase {
16
 
17
  /**
18
  * {@inheritdoc}
30
  public $type = 'page';
31
 
32
  /**
33
+ * @param Wbcr_Factory458_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_123');
40
+ $this->page_menu_short_description = __('Plugin debug report', 'wbcr_factory_logger_123');
41
 
42
+ add_action( 'wp_ajax_wbcr_factory_logger_123_'.$plugin->getPrefix().'logs_cleanup', [ $this, 'ajax_cleanup' ] );
43
 
44
  parent::__construct($plugin);
45
  }
54
  {
55
  parent::assets($scripts, $styles);
56
 
57
+ $this->styles->add(FACTORY_LOGGER_123_URL . '/assets/css/logger.css');
58
+ $this->scripts->add(FACTORY_LOGGER_123_URL . '/assets/js/logger.js', ['jquery'], 'wbcr_factory_logger_123', FACTORY_LOGGER_123_VERSION);
59
+ $this->scripts->localize('wbcr_factory_logger_123', [
60
+ 'clean_logs_nonce' => wp_create_nonce('wbcr_factory_logger_123_clean_logs'),
61
+ 'plugin_prefix' => $this->plugin->getPrefix(),
62
  ]);
63
  }
64
 
67
  */
68
  public function getMenuTitle()
69
  {
70
+ return __('Plugin Log', 'wbcr_factory_logger_123');
71
  }
72
 
73
  /**
78
  $buttons = "
79
  <div class='btn-group'>
80
  <a href='" . wp_nonce_url($this->getActionUrl('export')) . "'
81
+ class='button button-primary'>" . __('Export Debug Information', 'wbcr_factory_logger_123') . "</a>
82
  <a href='#'
83
  class='button button-secondary'
84
+ onclick='wbcr_factory_logger_123_LogCleanup(this);return false;'
85
+ data-working='" . __('Working...', 'wbcr_factory_logger_123') . "'>" . sprintf(__('Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_123'), $this->get_log_size_formatted()) . "
86
  </a>
87
  </div>";
88
  ?>
89
  <div class="wbcr-factory-page-group-header" style="margin-top:0;">
90
+ <strong><?php _e('Plugin Log', 'wbcr_factory_logger_123') ?></strong>
91
  <p>
92
+ <?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_123') ?>
93
  </p>
94
  </div>
95
  <div class="wbcr-factory-page-group-body" style="padding: 0 20px">
104
 
105
  public function ajax_cleanup()
106
  {
107
+ check_admin_referer('wbcr_factory_logger_123_clean_logs', 'nonce');
108
 
109
  if( !current_user_can('manage_options') ) {
110
  wp_die(-1);
112
 
113
  if( !$this->plugin->logger->clean_up() ) {
114
  wp_send_json_error([
115
+ 'message' => esc_html__('Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_123'),
116
  'type' => 'danger',
117
  ]);
118
  }
119
 
120
  wp_send_json([
121
+ 'message' => esc_html__('Logs clean-up successfully', 'wbcr_factory_logger_123'),
122
  'type' => 'success',
123
  ]);
124
  }
128
  */
129
  public function exportAction()
130
  {
131
+ $export = new WBCR\Factory_Logger_123\Log_Export($this->plugin->logger);
132
 
133
  if( $export->prepare() ) {
134
  $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_452_LOADED') ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_PAGES_452_LOADED', true);
27
 
28
- define('FACTORY_PAGES_452_VERSION', '4.5.2');
29
 
30
- define('FACTORY_PAGES_452_DIR', dirname(__FILE__));
31
- define('FACTORY_PAGES_452_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_452', false, dirname(plugin_basename(__FILE__)) . '/langs');
38
 
39
- require(FACTORY_PAGES_452_DIR . '/pages.php');
40
- require(FACTORY_PAGES_452_DIR . '/includes/page.class.php');
41
- require(FACTORY_PAGES_452_DIR . '/includes/admin-page.class.php');
42
 
43
 
19
  return;
20
  }
21
 
22
+ if( defined('FACTORY_PAGES_457_LOADED') ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_PAGES_457_LOADED', true);
27
 
28
+ define('FACTORY_PAGES_457_VERSION', '4.5.7');
29
 
30
+ define('FACTORY_PAGES_457_DIR', dirname(__FILE__));
31
+ define('FACTORY_PAGES_457_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_457', false, dirname(plugin_basename(__FILE__)) . '/langs');
38
 
39
+ require(FACTORY_PAGES_457_DIR . '/pages.php');
40
+ require(FACTORY_PAGES_457_DIR . '/includes/page.class.php');
41
+ require(FACTORY_PAGES_457_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_FactoryPages452_AdminPage') ) {
18
 
19
- class Wbcr_FactoryPages452_AdminPage extends Wbcr_FactoryPages452_Page {
20
 
21
  /**
22
  * Visible page title.
@@ -209,7 +209,7 @@ if( !class_exists('Wbcr_FactoryPages452_AdminPage') ) {
209
  */
210
  public $add_link_to_plugin_actions = false;
211
 
212
- public function __construct(Wbcr_Factory453_Plugin $plugin)
213
  {
214
  parent::__construct($plugin);
215
  $this->configure();
@@ -325,13 +325,13 @@ if( !class_exists('Wbcr_FactoryPages452_AdminPage') ) {
325
  {
326
  $result_id = $this->getResultId();
327
 
328
- $this->hidden = apply_filters('wbcr_factory_453_page_is_hidden_' . $result_id, $this->hidden);
329
 
330
  if( $this->hidden ) {
331
  return;
332
  }
333
 
334
- $this->internal = apply_filters('wbcr_factory_453_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_FactoryPages452_AdminPage') ) {
370
  $this->assets($this->scripts, $this->styles);
371
 
372
  if( !$this->scripts->isEmpty('bootstrap') || !$this->styles->isEmpty('bootstrap') ) {
373
- add_action('wbcr_factory_453_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
374
  $this,
375
  'actionAdminBootstrapScripts'
376
  ]);
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryPages457_AdminPage') ) {
18
 
19
+ class Wbcr_FactoryPages457_AdminPage extends Wbcr_FactoryPages457_Page {
20
 
21
  /**
22
  * Visible page title.
209
  */
210
  public $add_link_to_plugin_actions = false;
211
 
212
+ public function __construct(Wbcr_Factory458_Plugin $plugin)
213
  {
214
  parent::__construct($plugin);
215
  $this->configure();
325
  {
326
  $result_id = $this->getResultId();
327
 
328
+ $this->hidden = apply_filters('wbcr_factory_458_page_is_hidden_' . $result_id, $this->hidden);
329
 
330
  if( $this->hidden ) {
331
  return;
332
  }
333
 
334
+ $this->internal = apply_filters('wbcr_factory_458_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_458_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_FactoryPages452_Page' ) ) {
18
 
19
- class Wbcr_FactoryPages452_Page {
20
 
21
 
22
  /**
@@ -30,7 +30,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages452_Page' ) ) {
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
- * @see FactoryPages452_AdminPage
34
  *
35
  * @var string
36
  */
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages452_Page' ) ) {
39
  /**
40
  * Current Factory Plugin.
41
  *
42
- * @var Wbcr_Factory453_Plugin
43
  */
44
  public $plugin;
45
 
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages452_Page' ) ) {
51
  //private $default_actions = array();
52
 
53
  /**
54
- * @param Wbcr_Factory453_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
- public function __construct( Wbcr_Factory453_Plugin $plugin ) {
59
  $this->plugin = $plugin;
60
 
61
  if ( $plugin ) {
@@ -111,7 +111,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages452_Page' ) ) {
111
 
112
  if ( ! method_exists( $this, $actionFunction ) ) {
113
  // todo: продумать и доработать выполнение произвольных и глобальных дейтсвия для всех страниц
114
- /*$custom_actions = apply_filters('wbcr/factory_pages_452/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_FactoryPages457_Page' ) ) {
18
 
19
+ class Wbcr_FactoryPages457_Page {
20
 
21
 
22
  /**
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
+ * @see FactoryPages457_AdminPage
34
  *
35
  * @var string
36
  */
39
  /**
40
  * Current Factory Plugin.
41
  *
42
+ * @var Wbcr_Factory458_Plugin
43
  */
44
  public $plugin;
45
 
51
  //private $default_actions = array();
52
 
53
  /**
54
+ * @param Wbcr_Factory458_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
+ public function __construct( Wbcr_Factory458_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_457/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_452-fr_FR.mo → wbcr_factory_pages_457-fr_FR.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_452-fr_FR.po → wbcr_factory_pages_457-fr_FR.po} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.mo → wbcr_factory_pages_457-ru_RU.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.po → wbcr_factory_pages_457-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_FactoryPages452::actionAdminMenu');
18
- add_action('network_admin_menu', 'Wbcr_FactoryPages452::actionAdminMenu');
19
 
20
- if( !class_exists('Wbcr_FactoryPages452') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
- class Wbcr_FactoryPages452 {
27
 
28
  /**
29
- * @var Wbcr_FactoryPages452_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
- * @param Wbcr_Factory453_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_Factory453_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_Factory453_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_452_get_page_id') ) {
97
  /**
98
  *
99
- * @param Wbcr_Factory453_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
- function wbcr_factory_pages_452_get_page_id($plugin, $page_id)
104
  {
105
  return $page_id . '-' . $plugin->getPluginName();
106
  }
14
  exit;
15
  }
16
 
17
+ add_action('admin_menu', 'Wbcr_FactoryPages457::actionAdminMenu');
18
+ add_action('network_admin_menu', 'Wbcr_FactoryPages457::actionAdminMenu');
19
 
20
+ if( !class_exists('Wbcr_FactoryPages457') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
+ class Wbcr_FactoryPages457 {
27
 
28
  /**
29
+ * @var Wbcr_FactoryPages457_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
+ * @param Wbcr_Factory458_Plugin $plugin
35
  * @param $class_name
36
  */
37
  public static function register($plugin, $class_name)
59
  }
60
  }
61
 
62
+ public static function getPageUrl(Wbcr_Factory458_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_Factory458_Plugin $plugin
79
  * @return array
80
  */
81
  public static function getIds($plugin)
93
  }
94
  }
95
 
96
+ if( !function_exists('wbcr_factory_pages_457_get_page_id') ) {
97
  /**
98
  *
99
+ * @param Wbcr_Factory458_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
+ function wbcr_factory_pages_457_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-106-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-106-impressive-page-template .wbcr-factory-templates-106-multisite-suggetion {
30
  padding: 30px 80px;
31
  }
32
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-templates-106-multisite-suggetion h3 {
33
  margin: 0 0 20px;
34
  }
35
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-templates-106-multisite-suggetion .wbcr-factory-inner-contanier {
36
  border: 2px dashed #8bc34a;
37
  background: #fff;
38
  padding: 20px;
39
  }
40
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-templates-106-multisite-suggetion .wbcr-factory-activate-premium:focus {
65
  outline: none;
66
  border: 0;
67
  }
68
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-templates-106-multisite-suggetion .wbcr-factory-purchase-premium:focus {
93
  outline: none;
94
  border: 0;
95
  }
96
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-pro-suggettion {
97
  background: #fff;
98
  color: #353535;
99
  font-weight: 600;
100
  border: 2px dashed #8bc34a;
101
  }
102
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-pro-suggettion ul {
114
  position: relative;
115
  margin-bottom: 20px;
116
  }
117
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-pro-suggettion ul li {
118
  font-size: 15px;
119
  padding: 7px;
120
  padding-left: 20px;
121
  }
122
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-templates-106-multisite-pro-suggetion {
224
  padding: 10px 80px;
225
  }
226
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-pro-suggettion {
227
  padding: 10px;
228
  }
229
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-pro-suggettion ul {
236
  margin-bottom: 20px;
237
  }
238
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-pro-suggettion ul li {
239
  font-size: 13px;
240
  padding: 2px;
241
  padding-left: 10px;
242
  }
243
- #WBCR .wbcr-factory-templates-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-106-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-106-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-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion {
30
  padding: 30px 80px;
31
  }
32
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion h3 {
33
  margin: 0 0 20px;
34
  }
35
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion .wbcr-factory-inner-contanier {
36
  border: 2px dashed #8bc34a;
37
  background: #fff;
38
  padding: 20px;
39
  }
40
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion .wbcr-factory-activate-premium:focus {
65
  outline: none;
66
  border: 0;
67
  }
68
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion .wbcr-factory-purchase-premium:focus {
93
  outline: none;
94
  border: 0;
95
  }
96
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion {
97
  background: #fff;
98
  color: #353535;
99
  font-weight: 600;
100
  border: 2px dashed #8bc34a;
101
  }
102
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul {
114
  position: relative;
115
  margin-bottom: 20px;
116
  }
117
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul li {
118
  font-size: 15px;
119
  padding: 7px;
120
  padding-left: 20px;
121
  }
122
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-pro-suggetion {
224
  padding: 10px 80px;
225
  }
226
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion {
227
  padding: 10px;
228
  }
229
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul {
236
  margin-bottom: 20px;
237
  }
238
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul li {
239
  font-size: 13px;
240
  padding: 2px;
241
  padding-left: 10px;
242
  }
243
+ #WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-106-components {
7
  padding: 0 20px 20px;
8
  text-align: center;
9
  }
10
- #WBCR .wbc-factory-templates-106-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-106-components .plugin-card:first-child {
22
  margin-left: 0;
23
  }
24
- #WBCR .wbc-factory-templates-106-components .plugin-card .plugin-card-bottom {
25
  position: absolute;
26
  bottom: 0;
27
  right: 0;
28
  left: 0;
29
  }
30
- #WBCR .wbc-factory-templates-106-components .plugin-card .plugin-card-top {
31
  min-height: 163px;
32
  }
33
- #WBCR .wbc-factory-templates-106-components .plugin-card .desc,
34
- #WBCR .wbc-factory-templates-106-components .plugin-card .name {
35
  margin-right: 0 !important;
36
  }
37
- #WBCR .wbc-factory-templates-106-components .plugin-card .name h3 {
38
  font-size: 17px;
39
  margin-top: 0 !important;
40
  }
41
- #WBCR .wbc-factory-templates-106-components .plugin-card .install-now {
42
  float: right;
43
  }
44
- #WBCR .wbc-factory-templates-106-components .plugin-card .delete-now {
45
  float: right;
46
  margin-left: 5px;
47
  }
48
- #WBCR .wbc-factory-templates-106-components .plugin-card .delete-now .dashicons,
49
- #WBCR .wbc-factory-templates-106-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-106-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-106-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-106-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-106-components .plugin-card .plugin-card-freemium-ribbon {
3
  * @author Alex Kovalev <alex.kovalevv@gmail.com>
4
  * @copyright Alex Kovalev 30.09.2017
5
  */
6
+ #WBCR .wbc-factory-templates-110-components {
7
  padding: 0 20px 20px;
8
  text-align: center;
9
  }
10
+ #WBCR .wbc-factory-templates-110-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-110-components .plugin-card:first-child {
22
  margin-left: 0;
23
  }
24
+ #WBCR .wbc-factory-templates-110-components .plugin-card .plugin-card-bottom {
25
  position: absolute;
26
  bottom: 0;
27
  right: 0;
28
  left: 0;
29
  }
30
+ #WBCR .wbc-factory-templates-110-components .plugin-card .plugin-card-top {
31
  min-height: 163px;
32
  }
33
+ #WBCR .wbc-factory-templates-110-components .plugin-card .desc,
34
+ #WBCR .wbc-factory-templates-110-components .plugin-card .name {
35
  margin-right: 0 !important;
36
  }
37
+ #WBCR .wbc-factory-templates-110-components .plugin-card .name h3 {
38
  font-size: 17px;
39
  margin-top: 0 !important;
40
  }
41
+ #WBCR .wbc-factory-templates-110-components .plugin-card .install-now {
42
  float: right;
43
  }
44
+ #WBCR .wbc-factory-templates-110-components .plugin-card .delete-now {
45
  float: right;
46
  margin-left: 5px;
47
  }
48
+ #WBCR .wbc-factory-templates-110-components .plugin-card .delete-now .dashicons,
49
+ #WBCR .wbc-factory-templates-110-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-110-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-110-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-110-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-110-components .plug