Instagram Slider Widget - Version 1.6.3

Version Description

  • Bug fix
Download this release

Release Info

Developer studiopioneer
Plugin Icon 128x128 Instagram Slider Widget
Version 1.6.3
Comparing to
See all releases

Code changes from version 1.5.0 to 1.6.3

Files changed (194) hide show
  1. admin/assets/css/jr-insta-admin.css +70 -1
  2. admin/assets/css/license-manager.css +1 -1
  3. admin/assets/img/instagram_bg.png +0 -0
  4. admin/assets/img/loader.gif +0 -0
  5. admin/assets/img/slider icon.png +0 -0
  6. admin/assets/img/spinner.gif +0 -0
  7. admin/assets/img/wis.png +0 -0
  8. admin/assets/img/wis_icon.png +0 -0
  9. admin/assets/img/wis_in.png +0 -0
  10. admin/assets/js/jr-insta-admin.js +87 -10
  11. admin/assets/js/license-manager.js +9 -9
  12. admin/assets/js/tinymce_button.js +41 -0
  13. admin/class-wis-activation.php +2 -2
  14. admin/class-wis-page.php +2 -2
  15. {libs/factory/adverts/assets → admin}/index.php +0 -0
  16. admin/pages/about.php +3 -3
  17. admin/pages/license.php +8 -8
  18. admin/pages/settings.php +26 -59
  19. admin/pages/widgets.php +2 -2
  20. admin/views/tab-about.php +138 -20
  21. admin/views/tab-license.php +3 -3
  22. admin/views/tab-settings.php +86 -22
  23. admin/views/tab-widgets.php +9 -0
  24. assets/css/instag-slider.css +61 -3
  25. assets/css/wis-header.css +57 -0
  26. assets/in.png +0 -0
  27. assets/js/jr-insta-admin.js +1 -7
  28. html_templates/feed_header_template.php +36 -0
  29. includes/class-wis-plugin.php +58 -11
  30. includes/class-wis_instagram_slider.php +682 -376
  31. {libs/factory/adverts/assets/js → includes}/index.php +0 -0
  32. instaram_slider.php +18 -16
  33. languages/index.php +2 -0
  34. languages/instagram-slider-widget-en_US.mo +0 -0
  35. languages/instagram-slider-widget-en_US.po +628 -0
  36. languages/instagram-slider-widget-ru_RU.mo +0 -0
  37. languages/instagram-slider-widget-ru_RU.po +644 -0
  38. languages/instagram-slider-widget.pot +629 -0
  39. libs/factory/adverts/assets/js/script.js +0 -13
  40. libs/factory/adverts/boot.php +12 -12
  41. libs/factory/adverts/includes/class-adverts-base.php +0 -261
  42. libs/factory/adverts/includes/class-adverts-dashboard-widget.php +0 -107
  43. libs/factory/adverts/includes/class-adverts-rest-request.php +0 -180
  44. libs/factory/adverts/includes/class-base.php +10 -14
  45. libs/factory/adverts/includes/class-dashboard-widget.php +39 -13
  46. libs/factory/adverts/includes/class-rest-request.php +5 -5
  47. libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.mo → wbcr_factory_adverts_104-ru_RU.mo} +0 -0
  48. libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.po → wbcr_factory_adverts_104-ru_RU.po} +0 -0
  49. libs/factory/adverts/readme.txt +0 -98
  50. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
  51. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
  52. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
  53. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
  54. libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +1 -1
  55. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
  56. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
  57. libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +1 -1
  58. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
  59. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
  60. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
  61. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
  62. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
  63. libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +1 -1
  64. libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +1 -1
  65. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
  66. libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +1 -1
  67. libs/factory/bootstrap/assets/css-min/control.color.min.css +1 -1
  68. libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +1 -1
  69. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
  70. libs/factory/bootstrap/assets/css-min/control.fonts.min.css +1 -1
  71. libs/factory/bootstrap/assets/css-min/control.list.min.css +1 -1
  72. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
  73. libs/factory/bootstrap/assets/css-min/control.pattern.min.css +1 -1
  74. libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +1 -1
  75. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
  76. libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +1 -1
  77. libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +1 -1
  78. libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +1 -1
  79. libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +1 -1
  80. libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +1 -1
  81. libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
  82. libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js +1 -1
  83. libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
  84. libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js +1 -1
  85. libs/factory/bootstrap/assets/js-min/control.color.min.js +1 -1
  86. libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js +1 -1
  87. libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
  88. libs/factory/bootstrap/assets/js-min/control.fonts.min.js +1 -1
  89. libs/factory/bootstrap/assets/js-min/control.gradient.min.js +1 -1
  90. libs/factory/bootstrap/assets/js-min/control.integer.min.js +1 -1
  91. libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
  92. libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
  93. libs/factory/bootstrap/assets/js-min/control.pattern.min.js +1 -1
  94. libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +1 -1
  95. libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js +1 -1
  96. libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +1 -1
  97. libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js +1 -1
  98. libs/factory/bootstrap/boot.php +9 -9
  99. libs/factory/bootstrap/includes/functions.php +15 -15
  100. libs/factory/core/boot.php +27 -27
  101. libs/factory/core/includes/activation/class-factory-activator.php +3 -3
  102. libs/factory/core/includes/activation/class-factory-update.php +3 -3
  103. libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
  104. libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
  105. libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
  106. libs/factory/core/includes/class-check-compatibility.php +2 -2
  107. libs/factory/core/includes/class-factory-migrations.php +15 -15
  108. libs/factory/core/includes/class-factory-notices.php +51 -41
  109. libs/factory/core/includes/class-factory-options.php +2 -2
  110. libs/factory/core/includes/class-factory-plugin-abstract.php +103 -89
  111. libs/factory/core/includes/class-factory-plugin-base.php +84 -30
  112. libs/factory/core/includes/class-factory-requests.php +1 -1
  113. libs/factory/core/includes/class-factory-requirements.php +15 -14
  114. libs/factory/core/includes/entities/class-factory-paths.php +1 -1
  115. libs/factory/core/includes/entities/class-factory-support.php +1 -1
  116. libs/factory/core/includes/functions.php +7 -7
  117. libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
  118. libs/factory/core/includes/premium/class-factory-manager.php +10 -10
  119. libs/factory/core/includes/premium/class-factory-provider-abstract.php +40 -41
  120. libs/factory/core/includes/updates/class-factory-premium-upgrader.php +21 -15
  121. libs/factory/core/includes/updates/class-factory-upgrader.php +9 -9
  122. libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php +5 -5
  123. libs/factory/core/includes/updates/repositories/class-factory-wordpress.php +4 -4
  124. libs/factory/core/langs/{wbcr_factory_420-ru_RU.mo → wbcr_factory_422-ru_RU.mo} +0 -0
  125. libs/factory/core/langs/{wbcr_factory_420-ru_RU.po → wbcr_factory_422-ru_RU.po} +0 -0
  126. libs/factory/forms/boot.php +95 -95
  127. libs/factory/forms/controls/checkbox.php +4 -4
  128. libs/factory/forms/controls/color-and-opacity.php +4 -4
  129. libs/factory/forms/controls/color.php +2 -2
  130. libs/factory/forms/controls/customs/html.php +2 -2
  131. libs/factory/forms/controls/customs/separator.php +2 -2
  132. libs/factory/forms/controls/datepicker-range.php +4 -4
  133. libs/factory/forms/controls/dropdown-and-colors.php +6 -6
  134. libs/factory/forms/controls/dropdown.php +5 -5
  135. libs/factory/forms/controls/font.php +11 -11
  136. libs/factory/forms/controls/google-font.php +8 -8
  137. libs/factory/forms/controls/gradient.php +4 -4
  138. libs/factory/forms/controls/hidden.php +2 -2
  139. libs/factory/forms/controls/holders/accordion-item.php +2 -2
  140. libs/factory/forms/controls/holders/accordion.php +2 -2
  141. libs/factory/forms/controls/holders/columns.php +2 -2
  142. libs/factory/forms/controls/holders/control-group-item.php +2 -2
  143. libs/factory/forms/controls/holders/control-group.php +3 -3
  144. libs/factory/forms/controls/holders/div.php +2 -2
  145. libs/factory/forms/controls/holders/form-group.php +2 -2
  146. libs/factory/forms/controls/holders/more-link.php +2 -2
  147. libs/factory/forms/controls/holders/tab-item.php +2 -2
  148. libs/factory/forms/controls/holders/tab.php +4 -4
  149. libs/factory/forms/controls/integer.php +2 -2
  150. libs/factory/forms/controls/list.php +4 -4
  151. libs/factory/forms/controls/multiple-textbox.php +3 -3
  152. libs/factory/forms/controls/paddings-editor.php +3 -3
  153. libs/factory/forms/controls/pattern.php +9 -9
  154. libs/factory/forms/controls/radio-colors.php +2 -2
  155. libs/factory/forms/controls/radio.php +2 -2
  156. libs/factory/forms/controls/textarea.php +2 -2
  157. libs/factory/forms/controls/textbox.php +2 -2
  158. libs/factory/forms/controls/url.php +3 -3
  159. libs/factory/forms/controls/wp-editor.php +3 -3
  160. libs/factory/forms/includes/complex-control.class.php +4 -4
  161. libs/factory/forms/includes/control-holder.class.php +5 -5
  162. libs/factory/forms/includes/control.class.php +5 -5
  163. libs/factory/forms/includes/custom-element.class.php +2 -2
  164. libs/factory/forms/includes/form-element.class.php +7 -7
  165. libs/factory/forms/includes/form-layout.class.php +5 -5
  166. libs/factory/forms/includes/form.class.php +39 -39
  167. libs/factory/forms/includes/holder.class.php +6 -6
  168. libs/factory/forms/includes/html-builder.class.php +2 -2
  169. libs/factory/forms/includes/providers/meta-value-provider.class.php +2 -2
  170. libs/factory/forms/includes/providers/options-value-provider.class.php +3 -3
  171. libs/factory/forms/includes/providers/value-provider.interface.php +2 -2
  172. libs/factory/forms/langs/{wbcr_factory_forms_418-ru_RU.mo → wbcr_factory_forms_420-ru_RU.mo} +0 -0
  173. libs/factory/forms/langs/{wbcr_factory_forms_418-ru_RU.po → wbcr_factory_forms_420-ru_RU.po} +0 -0
  174. libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +7 -7
  175. libs/factory/freemius/boot.php +18 -18
  176. libs/factory/freemius/includes/class-freemius-api.php +7 -7
  177. libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
  178. libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
  179. libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
  180. libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
  181. libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
  182. libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
  183. libs/factory/freemius/includes/licensing/class-freemius-provider.php +61 -34
  184. libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
  185. libs/factory/pages/boot.php +10 -10
  186. libs/factory/pages/includes/admin-page.class.php +7 -8
  187. libs/factory/pages/includes/page.class.php +7 -7
  188. libs/factory/pages/langs/{wbcr_factory_pages_420-fr_FR.mo → wbcr_factory_pages_422-fr_FR.mo} +0 -0
  189. libs/factory/pages/langs/{wbcr_factory_pages_420-fr_FR.po → wbcr_factory_pages_422-fr_FR.po} +0 -0
  190. libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.mo → wbcr_factory_pages_422-ru_RU.mo} +0 -0
  191. libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.po → wbcr_factory_pages_422-ru_RU.po} +0 -0
  192. libs/factory/pages/pages.php +11 -11
  193. libs/factory/pages/templates/assets/css/impressive.page.template.css +116 -116
  194. libs/factory/pages/templates/impressive-page.class.php +29 -29
admin/assets/css/jr-insta-admin.css CHANGED
@@ -28,4 +28,73 @@
28
  .jr-container .slider.round { border-radius: 34px; }
29
  .jr-container .slider.round:before { border-radius: 50%; }
30
  .jr-container .donate-buttons { text-align: center }
31
- .jr-container .donate-button-link { cursor: pointer }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  .jr-container .slider.round { border-radius: 34px; }
29
  .jr-container .slider.round:before { border-radius: 50%; }
30
  .jr-container .donate-buttons { text-align: center }
31
+ .jr-container .donate-button-link { cursor: pointer }
32
+
33
+ .wis-btn-instagram-account
34
+ {
35
+ padding: 0 24px 0 120px;
36
+ height: 44px;
37
+ line-height: 44px;
38
+ text-transform: uppercase;
39
+ color: rgba(255,255,255,0.8)!important;
40
+ text-decoration: none;
41
+ border-radius: 5px;
42
+ transition: all .5s ease-in-out;
43
+ font-weight: 600;
44
+ display: inline-block;
45
+ background: #408bd1 url(../img/instagram_bg.png) no-repeat 16px 13.5px !important;
46
+ background-size: auto 20px !important;
47
+ }
48
+ .btn-instagram-account-disabled
49
+ {
50
+ opacity: 0.5;
51
+ }
52
+
53
+ .instagram-account-pro
54
+ {
55
+ padding: 5px;
56
+ }
57
+
58
+ .wis-spinner
59
+ {
60
+ background: url(../img/spinner.gif) no-repeat;
61
+ background-size: 20px 20px;
62
+ display: inline-block;
63
+ visibility: hidden;
64
+ float: right;
65
+ vertical-align: middle;
66
+ opacity: 0.7;
67
+ filter: alpha(opacity=70);
68
+ width: 20px;
69
+ height: 20px;
70
+ margin: 4px 10px 0;
71
+ }
72
+ .wis-table > tbody > tr > td
73
+ {
74
+ background-color: white;
75
+ }
76
+ .wis-table > thead > tr > th
77
+ {
78
+ font-weight: bold;
79
+ background-color: #e8e8e8;
80
+ }
81
+ .wis-text-token
82
+ {
83
+ background: transparent !important;
84
+ border: 0 !important;
85
+ box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.00) !important;
86
+ }
87
+ .wis-help-text
88
+ {
89
+ font-size: 16px;
90
+ margin: 10px 0px 0px 10px;
91
+ }
92
+ .wis-help-text p
93
+ {
94
+ font-size: 14px;
95
+ }
96
+
97
+ i.wis-shortcode-icon
98
+ {
99
+ background: url(../img/wis_icon.png) center no-repeat;
100
+ }
admin/assets/css/license-manager.css CHANGED
@@ -653,7 +653,7 @@
653
  border-bottom: 3px solid #ccc;
654
  }
655
 
656
- .winp-loader {
657
  float: right;
658
  width: 32px;
659
  }
653
  border-bottom: 3px solid #ccc;
654
  }
655
 
656
+ .wis-loader {
657
  float: right;
658
  width: 32px;
659
  }
admin/assets/img/instagram_bg.png ADDED
Binary file
admin/assets/img/loader.gif ADDED
Binary file
admin/assets/img/slider icon.png ADDED
Binary file
admin/assets/img/spinner.gif ADDED
Binary file
admin/assets/img/wis.png CHANGED
Binary file
admin/assets/img/wis_icon.png ADDED
Binary file
admin/assets/img/wis_in.png ADDED
Binary file
admin/assets/js/jr-insta-admin.js CHANGED
@@ -1,13 +1,7 @@
1
  (function($) {
2
 
3
  $(document).ready(function($){
4
- $('.donate-bitcoin-qr-address').hide();
5
- $('.donate-button-link').on('click', function (e) {
6
- e.preventDefault();
7
- //$(this).slideUp(100);
8
- $('.donate-bitcoin-qr-address').slideToggle();
9
- });
10
-
11
  // Hide Custom Url if image link is not set to custom url
12
  $('body').on('change', '.jr-container select[id$="images_link"]', function(e){
13
  var images_link = $(this);
@@ -28,26 +22,68 @@
28
  template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'show' , height: 'show'}, 200);
29
  template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
30
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  });
32
 
33
  // Modfiy options when search for is changed
34
  $('body').on('change', '.jr-container input:radio[id$="search_for"]', function(e){
35
  var search_for = $(this);
36
- if ( search_for.val() != 'username' ) {
37
  search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
38
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
39
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
40
  search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
41
  search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
42
  search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
 
 
43
 
44
- } else {
 
45
  search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
46
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'show' , height: 'show'}, 200);
47
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
48
  search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
49
  search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'show' , height: 'show'}, 200);
50
  search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  }
53
  });
@@ -108,7 +144,48 @@
108
  }
109
  });
110
  });
 
 
 
 
 
 
 
 
 
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  }); // Document Ready
113
 
114
- })(jQuery);
1
  (function($) {
2
 
3
  $(document).ready(function($){
4
+
 
 
 
 
 
 
5
  // Hide Custom Url if image link is not set to custom url
6
  $('body').on('change', '.jr-container select[id$="images_link"]', function(e){
7
  var images_link = $(this);
22
  template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'show' , height: 'show'}, 200);
23
  template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
24
  }
25
+ if( template.val() != 'masonry') {
26
+ template.closest('.jr-container').find('.masonry_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
27
+ template.closest('.jr-container').find('.masonry_notice').animate({opacity: 'hide' , height: 'hide'}, 200);
28
+ } else {
29
+ template.closest('.jr-container').find('.masonry_settings').animate({opacity: 'show' , height: 'show'}, 200);
30
+ template.closest('.jr-container').find('.masonry_notice').animate({opacity: 'show' , height: 'show'}, 200);
31
+ }
32
+ if( template.val() != 'slick_slider') {
33
+ template.closest('.jr-container').find('.slick_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
34
+ } else {
35
+ template.closest('.jr-container').find('.slick_settings').animate({opacity: 'show' , height: 'show'}, 200);
36
+ }
37
+ if( template.val() != 'highlight') {
38
+ template.closest('.jr-container').find('.highlight_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
39
+ } else {
40
+ template.closest('.jr-container').find('.highlight_settings').animate({opacity: 'show' , height: 'show'}, 200);
41
+ }
42
+ if( template.val() != 'slider' && template.val() != 'slider-overlay') {
43
+ template.closest('.jr-container').find('.slider_normal_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
44
+ } else {
45
+ template.closest('.jr-container').find('.slider_normal_settings').animate({opacity: 'show' , height: 'show'}, 200);
46
+ }
47
+ if( template.val() == 'highlight' || template.val() == 'slick_slider' || template.val() == 'thumbs' || template.val() == 'thumbs-no-border'){
48
+ template.closest('.jr-container').find('.words_in_caption').animate({opacity: 'hide' , height: 'hide'}, 200);
49
+ } else {
50
+ template.closest('.jr-container').find('.words_in_caption').animate({opacity: 'show' , height: 'show'}, 200);
51
+ }
52
  });
53
 
54
  // Modfiy options when search for is changed
55
  $('body').on('change', '.jr-container input:radio[id$="search_for"]', function(e){
56
  var search_for = $(this);
57
+ if ( search_for.val() === 'hashtag' ) {
58
  search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
59
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
60
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
61
  search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
62
  search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
63
  search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
64
+ search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
65
+ $('#img_to_show').animate({opacity: 'hide' , height: 'hide'}, 200);
66
 
67
+
68
+ } else if(search_for.val() === 'username') {
69
  search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
70
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'show' , height: 'show'}, 200);
71
  search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
72
  search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
73
  search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'show' , height: 'show'}, 200);
74
  search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
75
+ search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
76
+ $('#img_to_show').animate({opacity: 'hide' , height: 'hide'}, 200);
77
+
78
+ } else if(search_for.val() === 'account') {
79
+ search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
80
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
81
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
82
+ search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
83
+ search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
84
+ search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
85
+ search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
86
+ $('#img_to_show').animate({opacity: 'show' , height: 'show'}, 200);
87
 
88
  }
89
  });
144
  }
145
  });
146
  });
147
+ // Delete account with ajax
148
+ $('.wis-delete-account').on('click', function (e) {
149
+ e.preventDefault();
150
+
151
+ var c = confirm(wis.remove_account);
152
+
153
+ if (!c) {
154
+ return false;
155
+ }
156
 
157
+ var $item = $(this),
158
+ $tr = $item.closest('tr'),
159
+ $spinner = $('#wis-delete-spinner');
160
+
161
+ $.ajax({
162
+ url: ajaxurl,
163
+ type: 'post',
164
+ data: {
165
+ action: 'wis_delete_account',
166
+ item_id: $item.data('item_id'),
167
+ _ajax_nonce: wis.nonce
168
+ },
169
+ beforeSend: function () {
170
+ $spinner.addClass('is-active');
171
+ },
172
+ success: function (response) {
173
+ if (response.success) {
174
+ $tr.fadeOut();
175
+ window.location.reload();
176
+ } else {
177
+ alert(response.data);
178
+ }
179
+ },
180
+ complete: function () {
181
+ $spinner.removeClass('is-active');
182
+ },
183
+ error: function (jqXHR, textStatus) {
184
+ console.log(textStatus);
185
+ }
186
+ });
187
+
188
+ });
189
  }); // Document Ready
190
 
191
+ })(jQuery);
admin/assets/js/license-manager.js CHANGED
@@ -12,17 +12,17 @@
12
 
13
  jQuery(function ($) {
14
 
15
- $(document).on('click', '.wapt-control-btn', function () {
16
 
17
- $('.wapt-control-btn').hide();
18
 
19
- var wrapper = $('#wapt-license-wrapper'),
20
  loader = wrapper.data('loader');
21
 
22
- $(this).after('<img class="wapt-loader" src="' + loader + '">');
23
 
24
  var data = {
25
- action: 'wapt_check_license',
26
  _wpnonce: $('#_wpnonce').val(),
27
  license_action: $(this).data('action'),
28
  licensekey: ''
@@ -41,8 +41,8 @@ jQuery(function ($) {
41
 
42
  if (!response || !response.success) {
43
 
44
- $('.wapt-control-btn').show();
45
- $('.wapt-loader').remove();
46
 
47
  if (response.data) {
48
  console.log(response.data.error_message);
@@ -62,8 +62,8 @@ jQuery(function ($) {
62
  },
63
  error: function (xhr, ajaxOptions, thrownError) {
64
 
65
- $('.wapt-control-btn').show();
66
- $('.wapt-loader').remove();
67
 
68
  console.log(xhr.status, xhr.responseText, thrownError);
69
 
12
 
13
  jQuery(function ($) {
14
 
15
+ $(document).on('click', '.wis-control-btn', function () {
16
 
17
+ $('.wis-control-btn').hide();
18
 
19
+ var wrapper = $('#wis-license-wrapper'),
20
  loader = wrapper.data('loader');
21
 
22
+ $(this).after('<img class="wis-loader" src="' + loader + '">');
23
 
24
  var data = {
25
+ action: 'wis_check_license',
26
  _wpnonce: $('#_wpnonce').val(),
27
  license_action: $(this).data('action'),
28
  licensekey: ''
41
 
42
  if (!response || !response.success) {
43
 
44
+ $('.wis-control-btn').show();
45
+ $('.wis-loader').remove();
46
 
47
  if (response.data) {
48
  console.log(response.data.error_message);
62
  },
63
  error: function (xhr, ajaxOptions, thrownError) {
64
 
65
+ $('.wis-control-btn').show();
66
+ $('.wis-loader').remove();
67
 
68
  console.log(xhr.status, xhr.responseText, thrownError);
69
 
admin/assets/js/tinymce_button.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($) {
2
+ $(document).on('tinymce-editor-setup', function(event, editor) {
3
+
4
+ if( void 0 === wis_shortcodes ) {
5
+ console.log('Unknown error (wis).');
6
+ return;
7
+ }
8
+
9
+ if( $.isEmptyObject(wis_shortcodes) ) {
10
+ return;
11
+ }
12
+
13
+ editor.settings.toolbar1 += ',wis_insert_button';
14
+
15
+ var menu = [];
16
+
17
+ $.each(wis_shortcodes, function(index, item) {
18
+ menu.push({
19
+ text: item.title,
20
+ value: item.id,
21
+ onclick: function() {
22
+ var selected_content = editor.selection.getContent();
23
+
24
+ if( '' === selected_content ) {
25
+ editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
26
+ } else {
27
+ editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
28
+ }
29
+ }
30
+ });
31
+ });
32
+
33
+ editor.addButton('wis_insert_button', {
34
+ title: 'WIS',
35
+ type: 'menubutton',
36
+ icon: 'icon wis-shortcode-icon',
37
+ menu: menu
38
+ });
39
+
40
+ });
41
+ })(jQuery);
admin/class-wis-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_Factory420_Activator
8
  *
9
  * @version 1.0.1
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WIS_Activation extends Wbcr_Factory420_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_Factory422_Activator
8
  *
9
  * @version 1.0.1
10
  */
14
  exit;
15
  }
16
 
17
+ class WIS_Activation extends Wbcr_Factory422_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
admin/class-wis-page.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_FactoryPages420_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WIS_Page extends Wbcr_FactoryPages420_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_FactoryPages422_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
14
  exit;
15
  }
16
 
17
+ class WIS_Page extends Wbcr_FactoryPages422_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
{libs/factory/adverts/assets → admin}/index.php RENAMED
File without changes
admin/pages/about.php CHANGED
@@ -35,11 +35,11 @@ class WIS_AboutPage extends WIS_Page {
35
  public $page_menu_dashicon;
36
 
37
  /**
38
- * @param WAPT_Plugin $plugin
39
  */
40
  public function __construct( $plugin ) {
41
- $this->id = $plugin->getPrefix()."about";
42
- $this->menu_target= $plugin->getPrefix()."settings-".$plugin->getPluginName();
43
  $this->page_title = __( 'About Social Slider Widget', 'instagram-slider-widget' );
44
  $this->menu_title = __( 'About', 'instagram-slider-widget' );
45
  $this->template_name = "about";
35
  public $page_menu_dashicon;
36
 
37
  /**
38
+ * @param WIS_Plugin $plugin
39
  */
40
  public function __construct( $plugin ) {
41
+ $this->id = "about";
42
+ $this->menu_target= "widgets-".$plugin->getPluginName();
43
  $this->page_title = __( 'About Social Slider Widget', 'instagram-slider-widget' );
44
  $this->menu_title = __( 'About', 'instagram-slider-widget' );
45
  $this->template_name = "about";
admin/pages/license.php CHANGED
@@ -52,7 +52,7 @@ class WIS_LicensePage extends WIS_Page {
52
 
53
  /**
54
  * @since 2.0.7
55
- * @var \WBCR\Factory_413\Premium\Provider
56
  */
57
  protected $premium;
58
 
@@ -70,7 +70,7 @@ class WIS_LicensePage extends WIS_Page {
70
 
71
  /**
72
  * @since 2.0.7
73
- * @var \WBCR\Factory_413\Premium\Interfaces\License
74
  */
75
  protected $premium_license;
76
 
@@ -79,18 +79,18 @@ class WIS_LicensePage extends WIS_Page {
79
 
80
  /**
81
  * {@inheritdoc}
82
- * @param Wbcr_Factory420_Plugin $plugin
83
  */
84
- public function __construct ( Wbcr_Factory420_Plugin $plugin ) {
85
  $this->plugin = $plugin;
86
 
87
  parent::__construct( $plugin );
88
 
89
- $this->id = $plugin->getPrefix().'license';
90
- $this->menu_title = __( 'License', 'instagram-slider-widget' );
91
- $this->page_title = __( 'License of APT', 'instagram-slider-widget' );
92
  $this->template_name = "license";
93
- $this->menu_target= $plugin->getPrefix()."settings-".$plugin->getPluginName();
94
  $this->capabilitiy = "manage_options";
95
 
96
  $this->premium = WIS_Plugin::app()->premium;
52
 
53
  /**
54
  * @since 2.0.7
55
+ * @var \WBCR\Factory_422\Premium\Provider
56
  */
57
  protected $premium;
58
 
70
 
71
  /**
72
  * @since 2.0.7
73
+ * @var \WBCR\Factory_422\Premium\Interfaces\License
74
  */
75
  protected $premium_license;
76
 
79
 
80
  /**
81
  * {@inheritdoc}
82
+ * @param WIS_Plugin $plugin
83
  */
84
+ public function __construct ( $plugin ) {
85
  $this->plugin = $plugin;
86
 
87
  parent::__construct( $plugin );
88
 
89
+ $this->id = 'license';
90
+ $this->menu_title = '<span style="color:#f18500">'.__( 'License', 'instagram-slider-widget' ).'</span>';
91
+ $this->page_title = __( 'License of Social Slider Widget', 'instagram-slider-widget' );
92
  $this->template_name = "license";
93
+ $this->menu_target= "widgets-".$plugin->getPluginName();
94
  $this->capabilitiy = "manage_options";
95
 
96
  $this->premium = WIS_Plugin::app()->premium;
admin/pages/settings.php CHANGED
@@ -27,7 +27,7 @@ class WIS_SettingsPage extends WIS_Page {
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
- * @see FactoryPages420_AdminPage
31
  *
32
  * @var string
33
  */
@@ -103,10 +103,10 @@ class WIS_SettingsPage extends WIS_Page {
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
- $this->id = $plugin->getPrefix()."settings";
107
  $this->page_title = __( 'Settings of Social Slider Widget', 'instagram-slider-widget' );
108
  $this->menu_title = __( 'Settings', 'instagram-slider-widget' );
109
- $this->menu_target= $plugin->getPrefix()."widgets-".$plugin->getPluginName();
110
  $this->menu_icon = '~/admin/assets/img/wis.png';
111
  $this->capabilitiy = "manage_options";
112
  $this->template_name = "settings";
@@ -133,63 +133,30 @@ class WIS_SettingsPage extends WIS_Page {
133
  ], 'bootstrap' );
134
  }
135
 
136
- /**
137
- * Returns options for the Basic Settings screen.
138
- *
139
- * @since 1.0.0
140
- * @return array
141
- */
142
- public function getOptions() {
143
-
144
- $options = [];
145
-
146
- $options[] = [
147
- 'type' => 'html',
148
- 'html' => '<h3 style="margin-left:0">General</h3>'
149
- ];
150
-
151
- $options[] = [
152
- 'type' => 'separator'
153
- ];
154
-
155
- /*
156
- $options[] = [
157
- 'type' => 'checkbox',
158
- 'way' => 'buttons',
159
- 'name' => 'auto-generation',
160
- 'title' => __( 'Enable automatic post thumbnail generation', 'instagram-slider-widget' ),
161
- 'default' => false,
162
- 'hint' => __( 'Enable automatic post thumbnail generation', 'instagram-slider-widget' )
163
- ];
164
- */
165
-
166
- return $options;
167
- }
168
-
169
  public function indexAction() {
170
 
171
- // creating a form
172
- global $form;
173
- $form = new Wbcr_FactoryForms418_Form( [
174
- 'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
175
- 'name' => 'setting'
176
- ], $this->plugin );
177
-
178
- $form->setProvider( new Wbcr_FactoryForms418_OptionsValueProvider( $this->plugin ) );
179
-
180
- $form->add( $this->getOptions() );
181
-
182
- $wapt_saved = WIS_Plugin::app()->request->post( $this->plugin->getPrefix() . 'saved', '' );
183
- if ( ! empty( $wapt_saved ) ) {
184
- $wapt_nonce = WIS_Plugin::app()->request->post( $this->plugin->getPrefix() . 'nonce', '' );
185
- if ( ! wp_verify_nonce( $wapt_nonce, $this->plugin->getPrefix() . 'settings_form' ) ) {
186
- wp_die( 'Permission error. You can not edit this page.' );
187
- }
188
- $form->save();
189
-
190
- do_action( 'wis/settings/after_form_save' );
191
- }
192
-
193
  parent::indexAction();
194
  }
195
- }
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
+ * @see FactoryPages422_AdminPage
31
  *
32
  * @var string
33
  */
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
+ $this->id = "settings";
107
  $this->page_title = __( 'Settings of Social Slider Widget', 'instagram-slider-widget' );
108
  $this->menu_title = __( 'Settings', 'instagram-slider-widget' );
109
+ $this->menu_target= "widgets-".$plugin->getPluginName();
110
  $this->menu_icon = '~/admin/assets/img/wis.png';
111
  $this->capabilitiy = "manage_options";
112
  $this->template_name = "settings";
133
  ], 'bootstrap' );
134
  }
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  public function indexAction() {
137
 
138
+ ?>
139
+ <script>
140
+ var hash = document.location.hash;
141
+ var token = hash.split('=')[1];
142
+ if("string" == typeof token)
143
+ {
144
+ jQuery('#wis-spinner').addClass('is-active');
145
+ jQuery('#wis-spinner').css('visibility','visible');
146
+
147
+ jQuery.post ( ajaxurl, {
148
+ action: 'add_account_by_token',
149
+ token: token,
150
+ _ajax_nonce: '<?php echo wp_create_nonce("addAccountByToken"); ?>',
151
+ }).done( function( html ) {
152
+ document.location.hash = "";
153
+ window.location.reload();
154
+ });
155
+ // $(document).ready(function(){
156
+ // });
157
+ }
158
+ </script>
159
+ <?php
160
  parent::indexAction();
161
  }
162
+ }
admin/pages/widgets.php CHANGED
@@ -27,7 +27,7 @@ class WIS_WidgetsPage extends WIS_Page {
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
- * @see FactoryPages420_AdminPage
31
  *
32
  * @var string
33
  */
@@ -103,7 +103,7 @@ class WIS_WidgetsPage extends WIS_Page {
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
- $this->id = $plugin->getPrefix()."widgets";
107
  $this->page_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
108
  $this->menu_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
109
  $this->menu_sub_title = __( 'Widgets', 'instagram-slider-widget' );;
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
+ * @see FactoryPages422_AdminPage
31
  *
32
  * @var string
33
  */
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
+ $this->id = "widgets";
107
  $this->page_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
108
  $this->menu_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
109
  $this->menu_sub_title = __( 'Widgets', 'instagram-slider-widget' );;
admin/views/tab-about.php CHANGED
@@ -1,15 +1,54 @@
1
  <style>
2
-
3
  .wis-section-wrapper {
4
- width: 100%;
5
  margin-top: 10px;
 
6
  }
7
 
8
  .wis-section {
9
- padding: 29px 29px 29px 29px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  }
11
 
12
- .wis-section .container {
13
  display: -webkit-box;
14
  display: -webkit-flex;
15
  display: -ms-flexbox;
@@ -64,41 +103,120 @@
64
  .wis-section-changelog ul {
65
  list-style: inherit;
66
  margin-left: 40px;
 
67
  }
68
 
69
  #wpfooter {
70
  position: relative !important;
71
  }
 
 
 
 
72
 
73
 
74
  </style>
75
 
76
  <div class="wis-section-wrapper">
77
- <section class="wis-section wis-section-intro">
 
 
 
 
78
  <div class="container">
79
-
80
  <div>
81
- <h2><?php esc_html_e( 'Social Slider Widget', 'instagram-slider-widget' ) ?></h2>
82
-
83
- <p><?php esc_html_e( 'We didn’t please you with updated lately. However, great news today! We are about to tell you about all the spectacular changes that are planned for our plugin!', 'instagram-slider-widget' ) ?></p>
84
-
85
- <p><?php echo __( 'First of all, we proudly announce that a new group of developers, <span style="text-decoration: underline;"><strong>Creative Motion</strong></span>, are helping us with plugin improvement.', 'instagram-slider-widget' ) ?></p>
86
-
87
- <p><?php esc_html_e( 'Auto Post Thumbnails has perfectly fit in our close family of popular plugins with more than 600,000 users worldwide.', 'instagram-slider-widget' ) ?></p>
88
-
89
- <p><?php esc_html_e( 'What you can expect soon:', 'instagram-slider-widget' ) ?></p>
90
-
 
 
91
  </div>
92
  </div>
93
-
94
  </section>
95
-
 
 
96
  <section class="wis-section wis-section-changelog">
97
  <div class="container">
98
  <div>
99
- <h4>1.4.4</h4>
100
- <p><?php echo __( 'Bug fixes', 'instagram-slider-widget' ); ?></p>
 
 
 
 
 
 
101
  </div>
102
  </div>
103
  </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  </div>
1
  <style>
 
2
  .wis-section-wrapper {
3
+ width: auto;
4
  margin-top: 10px;
5
+ margin-right: 15px;
6
  }
7
 
8
  .wis-section {
9
+ padding: 20px 29px 0px 29px;
10
+ }
11
+
12
+ .container
13
+ {
14
+ width: 100%;
15
+ }
16
+ .wis-section-thin
17
+ {
18
+ padding: 5px 0px 5px 0px;
19
+ }
20
+ .wis-section-thin .subheader
21
+ {
22
+ font-style: italic;
23
+ }
24
+ .wis-section-wrapper h1
25
+ {
26
+ text-transform: uppercase;
27
+ color: whitesmoke;
28
+ }
29
+ .wis-section-wrapper h2
30
+ {
31
+ text-transform: uppercase;
32
+ color: #e53030;
33
+ }
34
+
35
+ .wis-section img
36
+ {
37
+ border-radius: 10px;
38
+ margin: 10px 0px 0px 10px;
39
+ }
40
+ .wis-section-img
41
+ {
42
+ text-align: center;
43
+ }
44
+
45
+ .black-background
46
+ {
47
+ background-color: rgba(0,0,0,0.8);
48
+ color: whitesmoke;
49
  }
50
 
51
+ .wis-section {
52
  display: -webkit-box;
53
  display: -webkit-flex;
54
  display: -ms-flexbox;
103
  .wis-section-changelog ul {
104
  list-style: inherit;
105
  margin-left: 40px;
106
+ width: 100%;
107
  }
108
 
109
  #wpfooter {
110
  position: relative !important;
111
  }
112
+ .center-section
113
+ {
114
+ text-align: center;
115
+ }
116
 
117
 
118
  </style>
119
 
120
  <div class="wis-section-wrapper">
121
+ <section class="wis-section-thin center-section black-background">
122
+ <h1><?php echo __( 'Social Slider Widget', 'instagram-slider-widget' ); ?></h1>
123
+ <p class="subheader"><?php echo __( 'Display Instagram feeds in widgets, posts, pages, or anywhere else using shortcodes.', 'instagram-slider-widget' ); ?></p>
124
+ </section>
125
+ <section class="wis-section wis-section-changelog">
126
  <div class="container">
 
127
  <div>
128
+ <h2><?php echo __( 'FEATURES', 'instagram-slider-widget' ); ?></h2>
129
+ <ul>
130
+ <li>Super easy to set up. Just create a widget with the necessary settings and add it anywhere on your website using shortcodes.</li>
131
+ <li>Show Instagram feeds on your website without authorization. Just enter a username and see the result (make sure to check the Instagram limitations on showing feeds without authorization).</li>
132
+ <li>Show Instagram feeds on your website without authorization using hashtags (make sure to check the Instagram limitations on showing feeds without authorization).</li>
133
+ <li>Authorize several Instagram accounts and show multiple feeds simultaneously with no limitations.</li>
134
+ <li>Fully responsive for mobile devices. Great view on any screen size and width.</li>
135
+ <li>Flexible layout settings. Customize the size, the number of images and columns, image spacing and much more!</li>
136
+ <li>Show thumbnails, medium or full-size images from your Instagram feed</li>
137
+ <li>Customize the display order by date, popularity or random.</li>
138
+ <li>Show or hide the account title.</li>
139
+ </ul>
140
  </div>
141
  </div>
 
142
  </section>
143
+ <section class="wis-section-thin center-section">
144
+ <iframe width="720" height="405" src="https://www.youtube.com/embed/7EQirSL0xm4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
145
+ </section>
146
  <section class="wis-section wis-section-changelog">
147
  <div class="container">
148
  <div>
149
+ <h2><?php echo __( 'BENEFITS', 'instagram-slider-widget' ); ?></h2>
150
+ <ul>
151
+ <li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
152
+ <li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload them on Instagram, and your website visitors will know about it instantly.</li>
153
+ <li>A new way of posting news. Flexible settings for widget display templates give your content a seamless and attractive view on any website design.</li>
154
+ <li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care of the rest.</li>
155
+ <li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on your website; no need to authorize on Instagram or handle tokens. And you can authorize your account in one click!</li>
156
+ </ul>
157
  </div>
158
  </div>
159
  </section>
160
+ <section class="wis-section wis-section-changelog">
161
+ <div class="container">
162
+ <div>
163
+ <h2><?php echo __( 'PRO VERSION', 'instagram-slider-widget' ); ?></h2>
164
+ <p>To maintain the free version and provide prompt, effective & free support, we offer the Pro version.</p>
165
+ <p>In the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a>, you can:</p>
166
+ <ul>
167
+ <li>
168
+ Authorize several accounts and display multiple feeds simultaneously (fully compatible with Instagram December 11, 2018, API changes)
169
+ <br>
170
+ <div class="wis-section-img"><img width="672" height="226" src="https://cm-wp.com/wp-content/uploads/2019/11/pic1.jpg" alt=""></div>
171
+ </li>
172
+ <li>
173
+ Display how many likes and comments each post has
174
+ <br>
175
+ <div class="wis-section-img"><img width="660" height="234" src="https://cm-wp.com/wp-content/uploads/2019/11/pic2.jpg" alt=""></div>
176
+ </li>
177
+ <li>
178
+ Create carousels of posts
179
+ </li>
180
+ <li>
181
+ Use <a href="https://cm-wp.com/instagram-slider-widget/masonry/">Masonry</a> or <a href="https://cm-wp.com/instagram-slider-widget/highlight/">Highlight</a> for feeds
182
+ <br>
183
+ <div class="wis-section-img"><img width="450" height="389" src="https://cm-wp.com/wp-content/uploads/2019/11/slider5.jpg" alt="">
184
+ <img width="450" height="389" src="https://cm-wp.com/wp-content/uploads/2019/11/slider6.jpg" alt="">
185
+ </div>
186
+ </li>
187
+ <li>
188
+ Display captions for images and videos.
189
+ <br>
190
+ <div class="wis-section-img"><img width="490" height="622" src="https://cm-wp.com/wp-content/uploads/2019/11/2019-11-01_11-03-07.png" alt=""></div>
191
+ </li>
192
+ </ul>
193
+ <p>Learn more about the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a> or watch the <a href="https://cm-wp.com/instagram-slider-widget/#demos">demo</a>.</p>
194
+ </div>
195
+ </div>
196
+ </section>
197
+ <section class="wis-section wis-section-changelog">
198
+ <div class="container">
199
+ <div>
200
+ <h2><?php echo __( 'FEEDBACK AND SUPPORT', 'instagram-slider-widget' ); ?></h2>
201
+ <p>Our goal is to create a simple yet powerful plugin – customized and multifunctional, with prompt and helpful support.
202
+ For any difficulties or questions about the setup, open a ticket on the <a href="https://cm-wp.com/support/">support</a> and get support in no time.</p>
203
+ </div>
204
+ </div>
205
+ </section>
206
+ <section class="wis-section wis-section-changelog">
207
+ <div class="container">
208
+ <div>
209
+ <h2><?php echo __( 'WHY DO YOU NEED IT?', 'instagram-slider-widget' ); ?></h2>
210
+ <ul>
211
+ <li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
212
+ <li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload them on Instagram, and your website visitors will know about it instantly.</li>
213
+ <li>A new way of posting news. Flexible settings for widget display templates give your content a seamless and attractive view on any website design.</li>
214
+ <li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care of the rest.</li>
215
+ <li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on your website; no need to authorize on Instagram or handle tokens. And you can authorize your account in one click!</li>
216
+ <li>Great user support.</li>
217
+ </ul>
218
+ </div>
219
+ </div>
220
+ </section>
221
+
222
  </div>
admin/views/tab-license.php CHANGED
@@ -1,11 +1,11 @@
1
  <div class="wrap">
2
- <div class="factory-bootstrap-421 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
  <div id="wis-license-wrapper"
5
  data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
6
  data-plugin="<?php echo get_class( $this->plugin ) ?>">
7
 
8
- <div class="factory-bootstrap-413 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
9
  id="license-manager">
10
  <div>
11
  <h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
@@ -19,7 +19,7 @@
19
  <a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
20
  class="purchase-premium" target="_blank" rel="noopener">
21
  <span class="btn btn-gold btn-inner-wrap">
22
- <?php printf( __( 'Upgrade to Premium for $%s', 'instagram-slider-widget' ), $this->premium->get_price() ) ?>
23
  </span>
24
  </a>
25
  <p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
1
  <div class="wrap">
2
+ <div class="factory-bootstrap-423 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
  <div id="wis-license-wrapper"
5
  data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
6
  data-plugin="<?php echo get_class( $this->plugin ) ?>">
7
 
8
+ <div class="factory-bootstrap-423 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
9
  id="license-manager">
10
  <div>
11
  <h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
19
  <a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
20
  class="purchase-premium" target="_blank" rel="noopener">
21
  <span class="btn btn-gold btn-inner-wrap">
22
+ <?php printf( __( 'Upgrade to Premium', 'instagram-slider-widget' ), $this->premium->get_price() ) ?>
23
  </span>
24
  </a>
25
  <p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
admin/views/tab-settings.php CHANGED
@@ -1,37 +1,101 @@
1
- <?php global $form; ?>
 
2
 
 
 
 
 
 
 
 
 
 
 
3
  <div class="wrap">
4
- <div class="factory-bootstrap-421 factory-fontawesome-000">
5
  <h3><?php _e( 'Settings', 'insert-php' ) ?></h3>
6
  <div class="row">
7
  <div class="col-md-9">
8
- <form method="post" class="form-horizontal">
9
- <?php if ( ! empty( $wbcr_saved ) ) { ?>
10
- <div id="message" class="alert alert-success">
11
- <p><?php _e( 'The settings have been updated successfully!', 'insert-php' ) ?></p>
12
- </div>
13
- <?php } ?>
14
- <div style="padding-top: 10px;">
15
- <?php $form->html(); ?>
16
  </div>
17
- <div class="form-group form-horizontal">
18
- <label class="col-sm-2 control-label"> </label>
19
- <div class="control-group controls col-sm-10">
20
- <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
21
- <input name="<?php echo $this->plugin->getPrefix() . 'saved' ?>" class="btn btn-primary" type="submit" value="<?php _e( 'Save settings', 'insert-php' ) ?>"/>
 
 
 
 
 
 
 
 
 
 
22
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  </div>
24
- </form>
25
  </div>
26
  <div class="col-md-3">
27
- <div id="wapt-dashboard-widget" class="wapt-right-widget">
28
  <?php
29
- global $wbcr_isw_adinserter;
30
- echo $wbcr_isw_adinserter->get_adverts( 'right_sidebar' );
31
- //apply_filters( 'wbcr/inp/dashboard/widget/print', '' );
32
- ?>
 
33
  </div>
34
  </div>
35
  </div>
36
  </div>
37
- </div>
1
+ <?php
2
+ global $form;
3
 
4
+ $args = [
5
+ "client_id" => WIS_INSTAGRAM_CLIENT_ID,
6
+ "redirect_uri" => "http://instagram.cm-wp.com/?state=" . admin_url( 'admin.php?page=settings-' . WIS_Plugin::app()->getPluginName() ),
7
+ "response_type" => "token",
8
+ "scope" => "basic",
9
+ //"hl" => "en"
10
+ ];
11
+ $autorize_url = "https://instagram.com/oauth/authorize/?" . http_build_query( $args );
12
+
13
+ ?>
14
  <div class="wrap">
15
+ <div class="factory-bootstrap-423 factory-fontawesome-000">
16
  <h3><?php _e( 'Settings', 'insert-php' ) ?></h3>
17
  <div class="row">
18
  <div class="col-md-9">
19
+ <div class="row">
20
+ <div class="col-md-12 wis-help-text">
21
+ <p><?php
22
+ echo __( 'Without authorization Instagram limits the number of requests, and after exceeding the limit asks to log in, so an error is displayed that no images were found.', 'instagram-slider-widget' ); ?>
23
+ </p>
 
 
 
24
  </div>
25
+ </div>
26
+ <?php $accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles', array() ); ?>
27
+ <div class="row">
28
+ <div class="col-md-12">
29
+ <div id="wis-add-account-button" class="">
30
+ <?php
31
+ if ( count( $accounts ) && !WIS_Plugin::app()->is_premium()) : ?>
32
+ <span class="wis-btn-instagram-account btn-instagram-account-disabled">
33
+ <?php _e('Add Account','instagram-slider-widget')?></span>
34
+ <span class="instagram-account-pro"><?php echo sprintf( __( "More accounts in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), WIS_Plugin::app()->get_support()->get_pricing_url(true, "wis_settings") );?></span>
35
+ <?php else: ?>
36
+ <a class="wis-btn-instagram-account" target="_self" href="<?php echo $autorize_url; ?>" title="Add Account">
37
+ <?php _e('Add Account','instagram-slider-widget')?></a>
38
+ <?php endif; ?>
39
+ <span style="float: none; margin-top: 0;" class="spinner" id="wis-spinner"> </span>
40
  </div>
41
+ <div class="wis-help-text"><?php echo sprintf( __( "After adding an account, go to the <a href='%s'>widget settings</a> and change the \"Search Instagram for\" setting to Account", 'instagram-slider-widget' ), admin_url('widgets.php')) ?></div>
42
+ <?php
43
+ if ( count( $accounts ) ) : ?>
44
+ <br>
45
+ <table class="widefat wis-table">
46
+ <thead>
47
+ <tr>
48
+ <th><?php echo __( 'Image', 'instagram-slider-widget' ); ?></th>
49
+ <th><?php echo __( 'ID', 'instagram-slider-widget' ); ?></th>
50
+ <th><?php echo __( 'User', 'instagram-slider-widget' ); ?></th>
51
+ <th><?php echo __( 'Name', 'instagram-slider-widget' ); ?></th>
52
+ <th><?php echo __( 'Token', 'instagram-slider-widget' ); ?></th>
53
+ <th><?php echo __( 'Action', 'instagram-slider-widget' ); ?></th>
54
+ </tr>
55
+ </thead>
56
+ <tbody>
57
+ <?php
58
+ foreach ( $accounts as $profile_info ) {
59
+ ?>
60
+ <tr>
61
+ <td class="profile-picture">
62
+ <img src="<?php echo esc_url( $profile_info['profile_picture'] ); ?>" width="30"/>
63
+ </td>
64
+ <td><?php echo esc_attr( $profile_info['id'] ); ?></td>
65
+ <td>
66
+ <a href="https://www.instagram.com/<?php echo esc_html( $profile_info['username'] ); ?>">@<?php echo esc_html( $profile_info['username'] ); ?></a>
67
+ </td>
68
+ <td><?php echo esc_html( $profile_info['full_name'] ); ?></td>
69
+ <td>
70
+ <input id="<?php echo esc_attr( $profile_info['id'] ); ?>-access-token" type="text" value="<?php echo esc_attr( $profile_info['token'] ); ?>" class="wis-text-token" readonly/>
71
+ </td>
72
+ <td>
73
+ <a href="#" data-item_id="<?php echo esc_attr( $profile_info['id'] ); ?>" class="btn btn-danger wis-delete-account">
74
+ <span class="dashicons dashicons-trash"></span><?php echo __( 'Delete', 'instagram-slider-widget' ); ?>
75
+ </a>
76
+ <span class="spinner" id="wis-delete-spinner"></span>
77
+ </td>
78
+ </tr>
79
+ <?php
80
+ }
81
+ ?>
82
+ </tbody>
83
+ </table>
84
+ <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
85
+ <?php endif; ?>
86
  </div>
87
+ </div>
88
  </div>
89
  <div class="col-md-3">
90
+ <div id="wis-dashboard-widget" class="wis-right-widget">
91
  <?php
92
+ if(!WIS_Plugin::app()->is_premium())
93
+ {
94
+ WIS_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar');
95
+ }
96
+ ?>
97
  </div>
98
  </div>
99
  </div>
100
  </div>
101
+ </div>
admin/views/tab-widgets.php CHANGED
@@ -13,11 +13,20 @@ if ( !empty( $sidebars_widgets ) )
13
  if(strstr($widget, 'jr_insta_slider'))
14
  {
15
  wp_list_widget_controls($key, $wp_registered_sidebars[$key]['name']);
 
16
  }
17
  }
18
  }
19
  }
20
  ?>
 
 
 
 
 
 
 
 
21
  <script>
22
  jQuery(document).ready(function($) {
23
  $('.widget:not([id*="jr_insta_slider"])').remove();
13
  if(strstr($widget, 'jr_insta_slider'))
14
  {
15
  wp_list_widget_controls($key, $wp_registered_sidebars[$key]['name']);
16
+ break;
17
  }
18
  }
19
  }
20
  }
21
  ?>
22
+ <style>
23
+ .widget-inside
24
+ {
25
+ border-top: none;
26
+ padding: 1px 15px 15px 15px;
27
+ line-height: 1.2;
28
+ }
29
+ </style>
30
  <script>
31
  jQuery(document).ready(function($) {
32
  $('.widget:not([id*="jr_insta_slider"])').remove();
assets/css/instag-slider.css CHANGED
@@ -24,9 +24,9 @@
24
  .pllexislider .pllex-control-paging li a:hover,
25
  .pllexislider .pllex-control-paging li a.pllex-active { background: rgba(0,0,0,0.6); -webkit-box-shadow: 0px 0px 1px 2px rgba(255,255,255,1); -moz-box-shadow: 0px 0px 1px 2px rgba(255,255,255,0.7); box-shadow: 0px 0px 1px 2px rgba(255,255,255,1);}
26
  .pllexislider .pllex-control-paging li a.pllex-active { cursor: default; }
27
-
28
  /* Direction Nav */
29
- .pllexislider .pllex-direction-nav { z-index:2; position: absolute; list-style:none; padding: 0; top: 7px; right: 7px; margin: 0; background-color: rgba(0,0,0, 0.6); -webkit-border-radius: 15%; -moz-border-radius: 15%; -o-border-radius: 15%; border-radius: 15%; }
30
  .pllexislider-overlay .pllex-direction-nav { display:none; }
31
  .pllexislider .pllex-direction-nav li a { line-height: normal; overflow: hidden; display: block; border: 0 }
32
  .pllexislider .pllex-direction-nav li a:focus { outline: 0 }
@@ -117,4 +117,62 @@
117
  .jr-insta-thumb ul.thumbnails li {
118
  width: 100% !important; /* over-ride all li styles */
119
  }
120
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  .pllexislider .pllex-control-paging li a:hover,
25
  .pllexislider .pllex-control-paging li a.pllex-active { background: rgba(0,0,0,0.6); -webkit-box-shadow: 0px 0px 1px 2px rgba(255,255,255,1); -moz-box-shadow: 0px 0px 1px 2px rgba(255,255,255,0.7); box-shadow: 0px 0px 1px 2px rgba(255,255,255,1);}
26
  .pllexislider .pllex-control-paging li a.pllex-active { cursor: default; }
27
+ .pllexislider .pllex-control-paging {width: 100%; text-align: center}
28
  /* Direction Nav */
29
+ .pllexislider .pllex-direction-nav { z-index:2; position: absolute; list-style:none; padding: 0; top: 7px; right: 2%; margin: 0; background-color: rgba(0,0,0, 0.6); -webkit-border-radius: 15%; -moz-border-radius: 15%; -o-border-radius: 15%; border-radius: 15%; }
30
  .pllexislider-overlay .pllex-direction-nav { display:none; }
31
  .pllexislider .pllex-direction-nav li a { line-height: normal; overflow: hidden; display: block; border: 0 }
32
  .pllexislider .pllex-direction-nav li a:focus { outline: 0 }
117
  .jr-insta-thumb ul.thumbnails li {
118
  width: 100% !important; /* over-ride all li styles */
119
  }
120
+ }
121
+ .graphdiv
122
+ {
123
+ -webkit-box-align: end;
124
+ align-items: flex-end;
125
+ bottom: 0;
126
+ display: flex;
127
+ -webkit-box-pack: start;
128
+ justify-content: flex-start;
129
+ left: 0;
130
+ pointer-events: none;
131
+ position: absolute;
132
+ right: 0;
133
+ top: 0;
134
+ }
135
+
136
+ .GraphImage{position: relative;}
137
+ .GraphSidecar {position: relative;}
138
+ .GraphVideo{position: relative;}
139
+
140
+ .GraphImage:before
141
+ {
142
+ position: absolute;
143
+ content: '';
144
+ background-image: url('../in.png');
145
+ background-repeat: no-repeat;
146
+ background-position: -32px -32px;
147
+ height: 32px;
148
+ width: 32px;
149
+ top: 5px;
150
+ right: 0;
151
+ z-index: 999999;
152
+ }
153
+ .GraphSidecar:before
154
+ {
155
+ position: absolute;
156
+ content: '';
157
+ background-image: url('../in.png');
158
+ background-repeat: no-repeat;
159
+ background-position: 0 0;
160
+ height: 32px;
161
+ width: 32px;
162
+ top: 5px;
163
+ right: 0;
164
+ z-index: 999999;
165
+ }
166
+ .GraphVideo:before
167
+ {
168
+ position: absolute;
169
+ content: '';
170
+ background-image: url('../in.png');
171
+ background-repeat: no-repeat;
172
+ background-position: 0 -32px;
173
+ height: 32px;
174
+ width: 32px;
175
+ top: 5px;
176
+ right: 0;
177
+ z-index: 999999;
178
+ }
assets/css/wis-header.css ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .wis-feed-header {
2
+ height: 60px;
3
+ overflow: hidden;
4
+ display: inline-flex;
5
+ margin: 0px 0px !important;
6
+ }
7
+
8
+ .wis-header-info-username {
9
+ margin-bottom: -4px !important;
10
+ margin-top: -4px !important;
11
+ vertical-align: middle;
12
+ }
13
+
14
+ .wis-header-info {
15
+ margin-left: 10px;
16
+ font-size: 17px;
17
+ }
18
+
19
+ .wis-header-neg {
20
+ opacity: 0;
21
+ position: absolute;
22
+ height: 50px;
23
+ width: 50px;
24
+ z-index: 999;
25
+ background-color: black
26
+ }
27
+
28
+ .wis-header-neg-icon {
29
+ color: white;
30
+ margin-left: 12px;
31
+ margin-top: 11px;
32
+ font-size: 29px;
33
+ }
34
+
35
+ .wis-box{
36
+ height: 50px;
37
+ }
38
+
39
+ .wis-box div {
40
+ vertical-align: top;
41
+ margin-top: 0;
42
+ display: inline-block;
43
+ }
44
+
45
+ .wis-round {
46
+ border-radius: 50px !important;
47
+ }
48
+
49
+ .wis-feed-header:hover, .wis-feed-header:hover p{
50
+ cursor: pointer;
51
+ text-decoration: none;
52
+ color: #ed1e24;
53
+ }
54
+
55
+ .wis-feed-header:hover .wis-header-neg {
56
+ opacity: 0.5;
57
+ }
assets/in.png ADDED
Binary file
assets/js/jr-insta-admin.js CHANGED
@@ -1,13 +1,7 @@
1
  (function($) {
2
 
3
  $(document).ready(function($){
4
- $('.donate-bitcoin-qr-address').hide();
5
- $('.donate-button-link').on('click', function (e) {
6
- e.preventDefault();
7
- //$(this).slideUp(100);
8
- $('.donate-bitcoin-qr-address').slideToggle();
9
- });
10
-
11
  // Hide Custom Url if image link is not set to custom url
12
  $('body').on('change', '.jr-container select[id$="images_link"]', function(e){
13
  var images_link = $(this);
1
  (function($) {
2
 
3
  $(document).ready(function($){
4
+
 
 
 
 
 
 
5
  // Hide Custom Url if image link is not set to custom url
6
  $('body').on('change', '.jr-container select[id$="images_link"]', function(e){
7
  var images_link = $(this);
html_templates/feed_header_template.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /** @var array $args account data */
3
+ /** @var string $username account username */
4
+ /** @var string $profile_pic_url URL of account profile picture */
5
+ /** @var int $posts_count count of account posts */
6
+ /** @var int $followers count of account followers */
7
+ /** @var string $profile_url ULR of account */
8
+
9
+ $username = isset($args['username']) ? $args['username'] : '';
10
+ $profile_pic_url = isset($args['profile_picture']) ? $args['profile_picture'] : '';
11
+ $posts_count = isset($args['counts']['media']) ? $args['counts']['media'] : '';
12
+ $followers = isset($args['counts']['followed_by']) ? $args['counts']['followed_by'] : '';
13
+ $profile_url = "https://www.instagram.com/$username/";
14
+ ?>
15
+
16
+ <div class="wis-feed-header">
17
+ <a href="<?php echo esc_url($profile_url)?>" target="_blank" style="text-decoration: none;border: 0 !important;">
18
+ <div class="wis-box">
19
+ <div class="wis-header-img">
20
+ <div class="wis-round wis-header-neg">
21
+ <i class="wis-header-neg-icon"></i>
22
+ </div>
23
+ <img class="wis-round" style="position: relative" src="<?php echo esc_url( $profile_pic_url ) ?>" alt=""
24
+ width="50" height="50">
25
+ </div>
26
+ <div class="wis-header-info">
27
+ <p class="wis-header-info-username"><?php echo esc_html( $username )?></p>
28
+ <p style="margin-top: 0; font-size: 11px">
29
+ <span class="fa fa-image">&nbsp;<?php echo esc_html( $posts_count ) ?></span>&nbsp;&nbsp;
30
+ <span class="fa fa-user">&nbsp;<?php echo esc_html( $followers ) ?></span>
31
+ </p>
32
+ </div>
33
+ </div>
34
+ </a>
35
+ </div>
36
+ <br>
includes/class-wis-plugin.php CHANGED
@@ -13,14 +13,19 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  * @version 1.0
14
  */
15
 
16
- class WIS_Plugin extends Wbcr_Factory420_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory420_Plugin
21
  */
22
  private static $app;
23
 
 
 
 
 
 
24
  /**
25
  * Статический метод для быстрого доступа к интерфейсу плагина.
26
  *
@@ -30,7 +35,7 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
30
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
31
  * классам.
32
  *
33
- * @return Wbcr_Factory420_Plugin
34
  */
35
  public static function app() {
36
  return self::$app;
@@ -81,11 +86,11 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
81
  * Регистрирует классы страниц в плагине
82
  */
83
  private function register_pages() {
84
- // require_once WIS_PLUGIN_DIR . '/admin/class-wis-page.php';
85
- // self::app()->registerPage( 'WIS_WidgetsPage', WIS_PLUGIN_DIR . '/admin/pages/widgets.php' );
86
- // self::app()->registerPage( 'WIS_SettingsPage', WIS_PLUGIN_DIR . '/admin/pages/settings.php' );
87
- // self::app()->registerPage( 'WIS_LicensePage', WIS_PLUGIN_DIR . '/admin/pages/license.php' );
88
- // self::app()->registerPage( 'WIS_AboutPage', WIS_PLUGIN_DIR . '/admin/pages/about.php' );
89
  }
90
 
91
  /**
@@ -107,7 +112,7 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
107
  }
108
 
109
  /**
110
- * Код для админки и фронтенда
111
  */
112
  private function front_scripts() {
113
  add_action( 'wp_enqueue_scripts', [$this, 'enqueue_assets'] );
@@ -117,11 +122,53 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
117
  {
118
  wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_URL.'/admin/assets/css/jr-insta-admin.css', array(), WIS_PLUGIN_VERSION );
119
  wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_URL.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_PLUGIN_VERSION, true );
 
 
 
 
 
 
 
120
  }
121
 
122
  public function enqueue_assets()
123
  {
124
- wp_enqueue_style( 'instag-slider', WIS_PLUGIN_URL.'/assets/css/instag-slider.css', array(), WIS_PLUGIN_VERSION );
125
- wp_enqueue_script( 'jquery-pllexi-slider', WIS_PLUGIN_URL.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), '2.2', false );
126
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  }
13
  * @version 1.0
14
  */
15
 
16
+ class WIS_Plugin extends Wbcr_Factory422_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
+ * @var Wbcr_Factory422_Plugin
21
  */
22
  private static $app;
23
 
24
+ /**
25
+ * @var array Список слайдеров
26
+ */
27
+ public $sliders = array();
28
+
29
  /**
30
  * Статический метод для быстрого доступа к интерфейсу плагина.
31
  *
35
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
36
  * классам.
37
  *
38
+ * @return Wbcr_Factory422_Plugin
39
  */
40
  public static function app() {
41
  return self::$app;
86
  * Регистрирует классы страниц в плагине
87
  */
88
  private function register_pages() {
89
+ require_once WIS_PLUGIN_DIR . '/admin/class-wis-page.php';
90
+ self::app()->registerPage( 'WIS_WidgetsPage', WIS_PLUGIN_DIR . '/admin/pages/widgets.php' );
91
+ self::app()->registerPage( 'WIS_SettingsPage', WIS_PLUGIN_DIR . '/admin/pages/settings.php' );
92
+ self::app()->registerPage( 'WIS_LicensePage', WIS_PLUGIN_DIR . '/admin/pages/license.php' );
93
+ self::app()->registerPage( 'WIS_AboutPage', WIS_PLUGIN_DIR . '/admin/pages/about.php' );
94
  }
95
 
96
  /**
112
  }
113
 
114
  /**
115
+ * Код для фронтенда
116
  */
117
  private function front_scripts() {
118
  add_action( 'wp_enqueue_scripts', [$this, 'enqueue_assets'] );
122
  {
123
  wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_URL.'/admin/assets/css/jr-insta-admin.css', array(), WIS_PLUGIN_VERSION );
124
  wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_URL.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_PLUGIN_VERSION, true );
125
+ wp_localize_script('jr-insta-admin-script', 'wis', array(
126
+ 'nonce' => wp_create_nonce('wis_nonce'),
127
+ 'remove_account' => __('Are you sure want to delete this account?', 'instagram-slider-widget'),
128
+ ));
129
+ wp_enqueue_script( 'jr-tinymce-button', WIS_PLUGIN_URL.'/admin/assets/js/tinymce_button.js', array( 'jquery' ), WIS_PLUGIN_VERSION, false );
130
+ $wis_shortcodes = $this->get_isw_widgets();
131
+ wp_localize_script('jr-insta-admin-script', 'wis_shortcodes', $wis_shortcodes);
132
  }
133
 
134
  public function enqueue_assets()
135
  {
 
 
136
  }
137
+
138
+ /**
139
+ * Метод проверяет активацию премиум плагина и наличие действующего лицензионнного ключа
140
+ *
141
+ * @return bool
142
+ */
143
+ public function is_premium()
144
+ {
145
+ if(
146
+ $this->premium->is_active() &&
147
+ $this->premium->is_activate()
148
+ //&& is_plugin_active( "{$this->premium->get_setting('slug')}/{$this->premium->get_setting('slug')}.php" )
149
+ )
150
+ return true;
151
+ else
152
+ return false;
153
+ }
154
+
155
+ /**
156
+ * Получает все виджеты этого плагина
157
+ *
158
+ * @return array
159
+ */
160
+ public function get_isw_widgets()
161
+ {
162
+ $settings = WIS_InstagramSlider::app()->get_settings();
163
+ $result = array();
164
+ foreach ($settings as $key => $widget)
165
+ {
166
+ $result[] = array(
167
+ 'title' => $widget['title'],
168
+ 'id' => $key,
169
+ );
170
+ }
171
+ return $result;
172
+ }
173
+
174
  }
includes/class-wis_instagram_slider.php CHANGED
@@ -4,20 +4,37 @@
4
  */
5
  class WIS_InstagramSlider extends WP_Widget {
6
 
 
7
  /**
8
  * Plugin version, used for cache-busting of style and script file references.
9
  *
10
  * @var string
11
  */
12
- const VERSION = '1.4.3';
13
  const USERNAME_URL = 'https://www.instagram.com/{username}/';
14
  const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
 
 
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  /**
17
  * Initialize the plugin by registering widget and loading public scripts
18
  *
19
  */
20
  public function __construct() {
 
21
 
22
  // Widget ID and Class Setup
23
  parent::__construct( 'jr_insta_slider', __( 'Social Slider', 'instagram-slider-widget' ), array(
@@ -26,6 +43,19 @@ class WIS_InstagramSlider extends WP_Widget {
26
  )
27
  );
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  // Shortcode
30
  add_shortcode( 'jr_instagram', array( $this, 'shortcode' ) );
31
 
@@ -46,6 +76,11 @@ class WIS_InstagramSlider extends WP_Widget {
46
 
47
  // Add action for single cron events
48
  add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10 , 3 );
 
 
 
 
 
49
  }
50
 
51
  /**
@@ -66,9 +101,13 @@ class WIS_InstagramSlider extends WP_Widget {
66
  */
67
  public function public_enqueue() {
68
 
69
- wp_enqueue_style( 'instag-slider', WIS_PLUGIN_DIR.'/assets/css/instag-slider.css', array(), self::VERSION );
 
 
70
 
71
- wp_enqueue_script( 'jquery-pllexi-slider', WIS_PLUGIN_DIR.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), '2.2', false );
 
 
72
  }
73
 
74
  /**
@@ -81,9 +120,9 @@ class WIS_InstagramSlider extends WP_Widget {
81
  if ( 'widgets.php' != $hook ) {
82
  return;
83
  }
 
 
84
 
85
- wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_DIR.'/admin/assets/css/jr-insta-admin.css', array(), self::VERSION );
86
- wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_DIR.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), self::VERSION, true );
87
  }
88
 
89
  /**
@@ -92,56 +131,62 @@ class WIS_InstagramSlider extends WP_Widget {
92
  */
93
  public function widget( $args, $instance ) {
94
 
95
- extract( $args );
96
-
97
  //Our variables from the widget settings.
98
  $title = apply_filters( 'widget_title', $instance['title'] );
99
 
100
- echo $before_widget;
101
 
102
  // Display the widget title
103
  if ( $title ) {
104
- echo $before_title . $title . $after_title;
105
  }
106
 
107
  do_action( 'jr_instagram', $instance );
108
 
109
- echo $after_widget;
110
  }
111
 
112
  /**
113
  * Update the widget settings
114
  *
115
  * @param array $new_instance New instance values
116
- * @param array $old_instance Old instance values
117
  *
118
  * @return array
119
  */
120
  public function update( $new_instance, $instance ) {
121
 
122
- $instance['title'] = strip_tags( $new_instance['title'] );
123
- $instance['search_for'] = $new_instance['search_for'];
124
- $instance['username'] = $new_instance['username'];
125
- $instance['hashtag'] = $new_instance['hashtag'];
126
- $instance['blocked_users'] = $new_instance['blocked_users'];
127
- $instance['attachment'] = $new_instance['attachment'];
128
- $instance['template'] = $new_instance['template'];
129
- $instance['images_link'] = $new_instance['images_link'];
130
- $instance['custom_url'] = $new_instance['custom_url'];
131
- $instance['orderby'] = $new_instance['orderby'];
132
- $instance['images_number'] = $new_instance['images_number'];
133
- $instance['columns'] = $new_instance['columns'];
134
- $instance['refresh_hour'] = $new_instance['refresh_hour'];
135
- $instance['image_size'] = $new_instance['image_size'];
136
- $instance['image_link_rel'] = $new_instance['image_link_rel'];
137
- $instance['image_link_class'] = $new_instance['image_link_class'];
138
- $instance['no_pin'] = $new_instance['no_pin'];
139
- $instance['controls'] = $new_instance['controls'];
140
- $instance['animation'] = $new_instance['animation'];
141
- $instance['caption_words'] = $new_instance['caption_words'];
142
- $instance['slidespeed'] = $new_instance['slidespeed'];
143
- $instance['description'] = $new_instance['description'];
144
- $instance['support_author'] = $new_instance['support_author'];
 
 
 
 
 
 
 
 
145
 
146
  return $instance;
147
  }
@@ -153,18 +198,23 @@ class WIS_InstagramSlider extends WP_Widget {
153
  */
154
  public function form( $instance ) {
155
 
 
 
 
 
156
  $defaults = array(
157
  'title' => __('Social Slider', 'instagram-slider-widget'),
158
- 'search_for' => 'username',
 
159
  'username' => '',
160
  'hashtag' => '',
161
  'blocked_users' => '',
162
  'attachment' => 0,
163
  'template' => 'slider',
164
- 'images_link' => 'image_url',
165
  'custom_url' => '',
166
  'orderby' => 'rand',
167
- 'images_number' => 5,
168
  'columns' => 4,
169
  'refresh_hour' => 5,
170
  'image_size' => 'standard',
@@ -173,34 +223,66 @@ class WIS_InstagramSlider extends WP_Widget {
173
  'no_pin' => 0,
174
  'controls' => 'prev_next',
175
  'animation' => 'slide',
176
- 'caption_words' => 100,
177
  'slidespeed' => 7000,
178
  'description' => array( 'username', 'time','caption' ),
179
- 'support_author' => 0
 
 
 
 
 
 
 
180
  );
181
 
182
  $instance = wp_parse_args( (array) $instance, $defaults );
183
 
184
  ?>
185
- <div class="jr-container">
186
- <p>
187
- <label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e('Title:', 'instagram-slider-widget'); ?></strong></label>
188
- <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
189
- </p>
190
- <p>
191
- <strong><?php _e( 'Search Instagram for:', 'instagram-slider-widget' ); ?></strong>
192
- <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="username" <?php checked( 'username', $instance['search_for'] ); ?> /> <?php _e( 'Username:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'username' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'username' ); ?>" value="<?php echo $instance['username']; ?>" /></span>
193
- <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="hashtag" <?php checked( 'hashtag', $instance['search_for'] ); ?> /> <?php _e( 'Hashtag:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'hashtag' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'hashtag' ); ?>" value="<?php echo $instance['hashtag']; ?>" /> <small><?php _e('without # sign', 'instagram-slider-widget'); ?></small></span>
194
- </p>
195
- <p class="<?php if ( 'hashtag' != $instance['search_for'] ) echo 'hidden'; ?>">
196
- <label for="<?php echo $this->get_field_id( 'blocked_users' ); ?>"><?php _e( 'Block Users', 'instagram-slider-widget' ); ?>:</label>
197
- <input class="widefat" id="<?php echo $this->get_field_id( 'blocked_users' ); ?>" name="<?php echo $this->get_field_name( 'blocked_users' ); ?>" value="<?php echo $instance['blocked_users']; ?>" />
198
- <span class="jr-description"><?php _e( 'Enter usernames separated by commas whose images you don\'t want to show', 'instagram-slider-widget' ); ?></span>
199
- </p>
200
- <p class="<?php if ( 'username' != $instance['search_for'] ) echo 'hidden'; ?>"><strong><?php _e( 'Save in Media Library: ', 'instagram-slider-widget' ); ?></strong>
201
- <label class="switch" for="<?php echo $this->get_field_id( 'attachment' ); ?>">
202
- <input class="widefat" id="<?php echo $this->get_field_id( 'attachment' ); ?>" name="<?php echo $this->get_field_name( 'attachment' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['attachment'] ); ?> /><span class="slider round"></span></label>
203
- <br><span class="jr-description"><?php _e( ' Turn on to save Instagram Images into WordPress media library.', 'instagram-slider-widget') ?></span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  <?php
205
  if ( isset ( $instance['username'] ) && !empty($instance['username'] ) ) {
206
  echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="'.$instance['username'].'"><strong>Remove</strong> duplicate images for <strong>'.$instance['username'].'</strong></button><span class="jr-spinner"></span>';
@@ -208,159 +290,206 @@ class WIS_InstagramSlider extends WP_Widget {
208
  wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
209
  }
210
  ?>
211
- </p>
212
- <p>
213
- <label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Number of images to show:', 'instagram-slider-widget' ); ?></strong>
214
- <input class="small-text" id="<?php echo $this->get_field_id( 'images_number' ); ?>" name="<?php echo $this->get_field_name( 'images_number' ); ?>" value="<?php echo $instance['images_number']; ?>" />
215
- </label>
216
- </p>
217
- <p>
218
- <label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'instagram-slider-widget' ); ?></strong>
219
- <input class="small-text" id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>" name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>" value="<?php echo $instance['refresh_hour']; ?>" />
220
- <span><?php _e('hours', 'instagram-slider-widget'); ?></span>
221
- </label>
222
- </p>
223
- <p>
224
- <label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'instagram-slider-widget' ); ?></strong>
225
- <select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>">
226
- <option value="slider" <?php echo ($instance['template'] == 'slider') ? ' selected="selected"' : ''; ?>><?php _e( 'Slider - Normal', 'instagram-slider-widget' ); ?></option>
227
- <option value="slider-overlay" <?php echo ($instance['template'] == 'slider-overlay') ? ' selected="selected"' : ''; ?>><?php _e( 'Slider - Overlay Text', 'instagram-slider-widget' ); ?></option>
228
- <option value="thumbs" <?php echo ($instance['template'] == 'thumbs') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnails', 'instagram-slider-widget' ); ?></option>
229
- <option value="thumbs-no-border" <?php echo ($instance['template'] == 'thumbs-no-border') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnails - Without Border', 'instagram-slider-widget' ); ?></option>
230
- </select>
231
- </label>
232
- </p>
233
- <p class="<?php if ( 'thumbs' != $instance['template'] && 'thumbs-no-border' != $instance['template'] ) echo 'hidden'; ?>">
234
- <label for="<?php echo $this->get_field_id( 'columns' ); ?>"><strong><?php _e( 'Number of Columns:', 'instagram-slider-widget' ); ?></strong>
235
- <input class="small-text" id="<?php echo $this->get_field_id( 'columns' ); ?>" name="<?php echo $this->get_field_name( 'columns' ); ?>" value="<?php echo $instance['columns']; ?>" />
236
- <span class='jr-description'><?php _e('max is 10 ( only for thumbnails template )', 'instagram-slider-widget'); ?></span>
237
- </label>
238
- </p>
239
- <p>
240
- <label for="<?php echo $this->get_field_id( 'image_size' ); ?>"><strong><?php _e( 'Image format', 'instagram-slider-widget' ); ?></strong></label>
241
- <select class="widefat" id="<?php echo $this->get_field_id( 'image_size' ); ?>" name="<?php echo $this->get_field_name( 'image_size' ); ?>">
242
- <option value="thumbnail" <?php echo ($instance['image_size'] == 'thumbnail') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnail - 150x150', 'instagram-slider-widget' ); ?></option>
243
- <option value="low" <?php echo ($instance['image_size'] == 'low') ? ' selected="selected"' : ''; ?>><?php _e( 'Low - 320x320', 'instagram-slider-widget' ); ?></option>
244
- <option value="standard" <?php echo ($instance['image_size'] == 'standard') ? ' selected="selected"' : ''; ?>><?php _e( 'Standard - 640x640', 'instagram-slider-widget' ); ?></option>
245
- <option value="full" <?php echo ($instance['image_size'] == 'full') ? ' selected="selected"' : ''; ?>><?php _e( 'Full Size', 'instagram-slider-widget' ); ?></option>
246
- </select>
247
- <span class="jr-description"><?php _e( '<strong>Square - Cropped</strong> - option will show square cropped images in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display the original user uploaded image size.', 'instagram-slider-widget' ); ?></span>
248
- </p>
249
- <p>
250
- <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'instagram-slider-widget' ); ?></strong>
251
- <select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>">
252
- <option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true); ?>><?php _e( 'Date - Ascending', 'instagram-slider-widget' ); ?></option>
253
- <option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true); ?>><?php _e( 'Date - Descending', 'instagram-slider-widget' ); ?></option>
254
- <option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true); ?>><?php _e( 'Popularity - Ascending', 'instagram-slider-widget' ); ?></option>
255
- <option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true); ?>><?php _e( 'Popularity - Descending', 'instagram-slider-widget' ); ?></option>
256
- <option value="rand" <?php selected( $instance['orderby'], 'rand', true); ?>><?php _e( 'Random', 'instagram-slider-widget' ); ?></option>
257
- </select>
258
- </label>
259
- </p>
260
- <p>
261
- <label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'instagram-slider-widget' ); ?></strong>
262
- <select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>" id="<?php echo $this->get_field_id( 'images_link' ); ?>">
263
- <option value="image_link" <?php selected( $instance['images_link'], 'image_link', true); ?>><?php _e( 'Instagram Image', 'instagram-slider-widget' ); ?></option>
264
- <option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="user_url" <?php selected( $instance['images_link'], 'user_url', true); ?>><?php _e( 'Instagram Profile', 'instagram-slider-widget' ); ?></option>
265
- <option value="image_url" <?php selected( $instance['images_link'], 'image_url', true); ?>><?php _e( 'Image URL', 'instagram-slider-widget' ); ?></option>
266
- <option class="<?php if ( ( !$instance['attachment'] ) || 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="attachment" <?php selected( $instance['images_link'], 'attachment', true); ?>><?php _e( 'Attachment Page', 'instagram-slider-widget' ); ?></option>
267
- <option value="custom_url" <?php selected( $instance['images_link'], 'custom_url', true ); ?>><?php _e( 'Custom Link', 'instagram-slider-widget' ); ?></option>
268
- <option value="none" <?php selected( $instance['images_link'], 'none', true); ?>><?php _e( 'None', 'instagram-slider-widget' ); ?></option>
269
- </select>
270
- </label>
271
- </p>
272
- <p class="<?php if ( 'custom_url' != $instance['images_link'] ) echo 'hidden'; ?>">
273
- <label for="<?php echo $this->get_field_id( 'custom_url' ); ?>"><?php _e( 'Custom link:', 'instagram-slider-widget'); ?></label>
274
- <input class="widefat" id="<?php echo $this->get_field_id( 'custom_url' ); ?>" name="<?php echo $this->get_field_name( 'custom_url' ); ?>" value="<?php echo $instance['custom_url']; ?>" />
275
- <span><?php _e('* use this field only if the above option is set to <strong>Custom Link</strong>', 'instagram-slider-widget'); ?></span>
276
- </p>
277
- <p>
278
- <strong>Advanced Options</strong>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  <?php
280
- $advanced_class = '';
281
  $advanced_text = '[ - Close ]';
282
  if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
283
- $advanced_class = 'hidden';
284
  $advanced_text = '[ + Open ]';
285
  }
286
- ?>
287
- <a href="#" class="jr-advanced"><?php echo $advanced_text; ?></a>
288
- </p>
289
- <div class="jr-advanced-input <?php echo $advanced_class; ?>">
290
- <div class="jr-image-options">
291
- <h4 class="jr-advanced-title"><?php _e( 'Advanced Image Options', 'instagram-slider-widget'); ?></h4>
292
- <p>
293
- <label for="<?php echo $this->get_field_id( 'image_link_rel' ); ?>"><?php _e( 'Image Link rel attribute', 'instagram-slider-widget' ); ?>:</label>
294
- <input class="widefat" id="<?php echo $this->get_field_id( 'image_link_rel' ); ?>" name="<?php echo $this->get_field_name( 'image_link_rel' ); ?>" value="<?php echo $instance['image_link_rel']; ?>" />
295
- <span class="jr-description"><?php _e( 'Specifies the relationship between the current page and the linked website', 'instagram-slider-widget' ); ?></span>
296
- </p>
297
- <p>
298
- <label for="<?php echo $this->get_field_id( 'image_link_class' ); ?>"><?php _e( 'Image Link class', 'instagram-slider-widget' ); ?>:</label>
299
- <input class="widefat" id="<?php echo $this->get_field_id( 'image_link_class' ); ?>" name="<?php echo $this->get_field_name( 'image_link_class' ); ?>" value="<?php echo $instance['image_link_class']; ?>" />
300
- <span class="jr-description"><?php _e( 'Usefull if you are using jQuery lightbox plugins to open links', 'instagram-slider-widget' ); ?></span>
301
- </p>
302
- <p><strong><?php _e( 'Disable Pinning:', 'instagram-slider-widget' ); ?></strong>
303
- <label class="switch" for="<?php echo $this->get_field_id( 'no_pin' ); ?>">
304
- <input class="widefat" id="<?php echo $this->get_field_id( 'no_pin' ); ?>" name="<?php echo $this->get_field_name( 'no_pin' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['no_pin'] ); ?> /><span class="slider round"></span></label>
305
- <br><span class="jr-description"><?php _e( 'Disable pinning for Pinterest on all images from this widget!', 'instagram-slider-widget') ?></span>
306
- </p>
307
- </div>
308
- <div class="jr-slider-options <?php if ( 'thumbs' == $instance['template'] || 'thumbs-no-border' == $instance['template'] ) echo 'hidden'; ?>">
309
- <h4 class="jr-advanced-title"><?php _e( 'Advanced Slider Options', 'instagram-slider-widget'); ?></h4>
310
- <p>
311
- <?php _e( 'Slider Navigation Controls:', 'instagram-slider-widget' ); ?><br>
312
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'instagram-slider-widget' ); ?></label>
313
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'instagram-slider-widget' ); ?></label>
314
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'instagram-slider-widget' ); ?></label>
315
- </p>
316
- <p>
317
- <?php _e( 'Slider Animation:', 'instagram-slider-widget' ); ?><br>
318
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'instagram-slider-widget' ); ?></label>
319
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'instagram-slider-widget' ); ?></label>
320
- </p>
321
- <p>
322
- <label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><?php _e( 'Number of words in caption:', 'instagram-slider-widget' ); ?>
323
- <input class="small-text" id="<?php echo $this->get_field_id( 'caption_words' ); ?>" name="<?php echo $this->get_field_name( 'caption_words' ); ?>" value="<?php echo $instance['caption_words']; ?>" />
324
- </label>
325
- </p>
326
- <p>
327
- <label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'instagram-slider-widget' ); ?>
328
- <input class="small-text" id="<?php echo $this->get_field_id( 'slidespeed' ); ?>" name="<?php echo $this->get_field_name( 'slidespeed' ); ?>" value="<?php echo $instance['slidespeed']; ?>" />
329
- <span><?php _e('milliseconds', 'instagram-slider-widget'); ?></span>
330
- <span class='jr-description'><?php _e('1000 milliseconds = 1 second', 'instagram-slider-widget'); ?></span>
331
- </label>
332
- </p>
333
- <p>
334
- <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e( 'Slider Text Description:', 'instagram-slider-widget' ); ?></label>
335
- <select size=3 class='widefat' id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>[]" multiple="multiple">
336
- <option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'instagram-slider-widget'); ?></option>
337
- <option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'instagram-slider-widget'); ?></option>
338
- <option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'instagram-slider-widget'); ?></option>
339
- </select>
340
- <span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'instagram-slider-widget') ?></span>
341
- </p>
342
- </div>
343
- </div>
344
  <?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id ); if ( $widget_id != '' ) : ?>
345
- <p>
346
- <label for="jr_insta_shortcode"><?php _e('Shortcode of this Widget:', 'instagram-slider-widget'); ?></label>
347
- <input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text" class="widefat" value="[jr_instagram id=&quot;<?php echo $widget_id ?>&quot;]" readonly="readonly" style="border:none; color:black; font-family:monospace;">
348
- <span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'instagram-slider-widget') ?></span>
349
- </p>
350
  <?php endif; ?>
351
- <div class="jr-advanced-input">
352
- <div class="jr-image-options">
353
- <h4 class="jr-advanced-title"><?php _e( 'Help us, help you!', 'instagram-slider-widget'); ?></h4>
354
- <p><strong><?php _e( 'Show "Powered by Link"', 'instagram-slider-widget' ); ?></strong>
355
- <label class="switch" for="<?php echo $this->get_field_id( 'support_author' ); ?>">
356
- <input class="widefat" id="<?php echo $this->get_field_id( 'support_author' ); ?>" name="<?php echo $this->get_field_name( 'support_author' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['support_author'] ); ?> /><span class="slider round"></span></label>
357
- <br><span class="jr-description"><?php _e( 'When enabled, the author is notified and a backlink website is visible at the bottom of the plugin. <br> <strong>If you enable this option you will have privileged support from our team!</strong>', 'instagram-slider-widget') ?></span>
358
- </p>
359
- <div class="donate-buttons">
360
- <a target="_blank" title="Donate with Paypal!" href="http://bit.ly/2EseW2p"><p class="donate"><span></span>Donate with Paypal!</p></a>
361
- </div>
362
- </div></div>
363
- </div><br>
364
  <?php
365
  }
366
 
@@ -402,7 +531,7 @@ class WIS_InstagramSlider extends WP_Widget {
402
  * @return void
403
  */
404
  public function instagram_images( $args ) {
405
- echo $this->display_images( $args );
406
  }
407
 
408
  /**
@@ -410,7 +539,6 @@ class WIS_InstagramSlider extends WP_Widget {
410
  * @param [type] $username [description]
411
  * @param [type] $refresh_hour [description]
412
  * @param [type] $images [description]
413
- * @return [type] [description]
414
  */
415
  public function jr_cron_trigger( $username, $refresh_hour, $images ) {
416
  $search_for = array();
@@ -426,8 +554,8 @@ class WIS_InstagramSlider extends WP_Widget {
426
  * @return string
427
  */
428
  private function display_images( $args ) {
429
-
430
- $username = isset( $args['username'] ) && !empty( $args['username'] ) ? $args['username'] : false;
431
  $hashtag = isset( $args['hashtag'] ) && !empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
432
  $blocked_users = isset( $args['blocked_users'] ) && !empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
433
  $attachment = isset( $args['attachment'] ) ? true : false;
@@ -435,7 +563,7 @@ class WIS_InstagramSlider extends WP_Widget {
435
  $orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
436
  $images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
437
  $custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
438
- $images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 5;
439
  $columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
440
  $refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
441
  $image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
@@ -444,11 +572,18 @@ class WIS_InstagramSlider extends WP_Widget {
444
  $image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
445
  $controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
446
  $animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
447
- $caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] : 100;
448
  $slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
449
  $description = isset( $args['description'] ) ? $args['description'] : array();
450
  $widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
451
  $powered_by_link = isset( $args['support_author'] ) ? true : false;
 
 
 
 
 
 
 
452
 
453
  if ( !empty( $description ) && !is_array( $description ) ) {
454
  $description = explode( ',', $description );
@@ -458,6 +593,10 @@ class WIS_InstagramSlider extends WP_Widget {
458
  $search = 'hashtag';
459
  $search_for['hashtag'] = $hashtag;
460
  $search_for['blocked_users'] = $blocked_users;
 
 
 
 
461
  } else {
462
  $search = 'user';
463
  $search_for['username'] = $username;
@@ -467,6 +606,7 @@ class WIS_InstagramSlider extends WP_Widget {
467
  $refresh_hour = 5;
468
  }
469
 
 
470
  $template_args = array(
471
  'search_for' => $search,
472
  'attachment' => $attachment,
@@ -474,7 +614,13 @@ class WIS_InstagramSlider extends WP_Widget {
474
  'link_rel' => $image_link_rel,
475
  'link_class' => $image_link_class,
476
  'no_pin' => $no_pin,
477
- 'caption_words' => $caption_words
 
 
 
 
 
 
478
  );
479
 
480
  $images_div_class = 'jr-insta-thumb';
@@ -488,7 +634,7 @@ class WIS_InstagramSlider extends WP_Widget {
488
  $control_nav = ( $controls == 'numberless' ) ? 'true': 'false';
489
  $ul_class = 'slides';
490
 
491
- if ( $template == 'slider' ) {
492
  $images_div_class = 'pllexislider pllexislider-normal instaslider-nr-'. $widget_id;
493
  $slider_script =
494
  "<script type='text/javascript'>" . "\n" .
@@ -503,7 +649,11 @@ class WIS_InstagramSlider extends WP_Widget {
503
  " });" . "\n" .
504
  " });" . "\n" .
505
  "</script>" . "\n";
506
- } else {
 
 
 
 
507
  $images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-'. $widget_id;
508
  $slider_script =
509
  "<script type='text/javascript'>" . "\n" .
@@ -518,10 +668,10 @@ class WIS_InstagramSlider extends WP_Widget {
518
  " start: function(slider){" . "\n" .
519
  " slider.hover(" . "\n" .
520
  " function () {" . "\n" .
521
- " slider.find('.jr-insta-datacontainer, .pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeIn();" . "\n" .
522
  " }," . "\n" .
523
  " function () {" . "\n" .
524
- " slider.find('.jr-insta-datacontainer, .pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeOut();" . "\n" .
525
  " }" . "\n" .
526
  " );" . "\n" .
527
  " }" . "\n" .
@@ -531,10 +681,12 @@ class WIS_InstagramSlider extends WP_Widget {
531
  }
532
  }
533
 
534
- $images_div = "<div class='{$images_div_class}'>\n";
535
- $images_ul = "<ul class='no-bullet {$ul_class}'>\n";
 
536
 
537
- $output = __( 'No images found! <br> Try some other hashtag or username', 'instagram-slider-widget' );
 
538
 
539
  if ( ( $search == 'user' && $attachment ) ) {
540
 
@@ -580,7 +732,8 @@ class WIS_InstagramSlider extends WP_Widget {
580
 
581
  $instagram_images = new WP_Query( $query_args );
582
 
583
- if ( $instagram_images->have_posts() ) {
 
584
 
585
  $output = $slider_script . $images_div . $images_ul;
586
 
@@ -607,13 +760,17 @@ class WIS_InstagramSlider extends WP_Widget {
607
 
608
  endwhile;
609
 
610
- $output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
611
 
612
  } else {
613
 
614
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
615
 
616
  if ( is_array( $images_data ) && !empty( $images_data ) ) {
 
 
 
 
617
 
618
  if ( $orderby != 'rand' ) {
619
 
@@ -640,6 +797,7 @@ class WIS_InstagramSlider extends WP_Widget {
640
  $template_args['link_to'] = $custom_url;
641
  }
642
 
 
643
  $template_args['image'] = $image_data['sizes'][$image_size];
644
  $template_args['caption'] = $image_data['caption'];
645
  $template_args['timestamp'] = $image_data['timestamp'];
@@ -649,7 +807,7 @@ class WIS_InstagramSlider extends WP_Widget {
649
  $output .= $this->get_template( $template, $template_args );
650
  }
651
 
652
- $output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
653
  }
654
 
655
  }
@@ -659,8 +817,32 @@ class WIS_InstagramSlider extends WP_Widget {
659
  } else {
660
 
661
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
662
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
663
  if ( is_array( $images_data ) && !empty( $images_data ) ) {
 
 
 
664
 
665
  if ( $orderby != 'rand' ) {
666
 
@@ -688,6 +870,7 @@ class WIS_InstagramSlider extends WP_Widget {
688
  $template_args['link_to'] = $custom_url;
689
  }
690
 
 
691
  $template_args['image'] = $image_data['sizes'][$image_size];
692
  $template_args['caption'] = $image_data['caption'];
693
  $template_args['timestamp'] = $image_data['timestamp'];
@@ -696,7 +879,7 @@ class WIS_InstagramSlider extends WP_Widget {
696
  $output .= $this->get_template( $template, $template_args );
697
  }
698
 
699
- $output .= "</ul>\n</div>" . $this->powered_by_link( $powered_by_link );
700
  }
701
  }
702
 
@@ -704,6 +887,25 @@ class WIS_InstagramSlider extends WP_Widget {
704
 
705
  }
706
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
707
 
708
  /**
709
  * Function to display Templates styles
@@ -717,8 +919,9 @@ class WIS_InstagramSlider extends WP_Widget {
717
 
718
  $link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
719
  $image_url = isset( $args['image'] ) ? $args['image'] : false;
 
720
 
721
- if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
722
  $caption = $args['caption'];
723
  $time = $args['timestamp'];
724
  $username = $args['username'];
@@ -730,62 +933,62 @@ class WIS_InstagramSlider extends WP_Widget {
730
  }
731
 
732
  $short_caption = wp_trim_words( $caption, 10, '' );
733
- $short_caption = preg_replace("/[^A-Za-z0-9?! ]/","", $short_caption);
 
734
  $caption = wp_trim_words( $caption, $args['caption_words'], '' );
735
  $nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
736
 
737
- $image_src = '<img src="' . $image_url . '" alt="' . $short_caption . '" title="' . $short_caption . '" '. $nopin . '/>';
738
  $image_output = $image_src;
739
 
740
  if ( $link_to ) {
741
- $image_output = '<a href="' . $link_to . '" target="_blank"';
742
 
743
  if ( ! empty( $args['link_rel'] ) ) {
744
- $image_output .= ' rel="' . $args['link_rel'] . '"';
745
  }
746
 
747
  if ( ! empty( $args['link_class'] ) ) {
748
- $image_output .= ' class="' . $args['link_class'] . '"';
749
  }
750
- $image_output .= ' title="' . $short_caption . '">' . $image_src . '</a>';
751
  }
752
 
753
  $output = '';
754
 
755
- // Template : Normal Slider
756
- if ( $template == 'slider' ) {
757
-
758
- $output .= "<li>";
759
 
760
  $output .= $image_output;
761
 
762
  if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
763
 
764
- $output .= "<div class='jr-insta-datacontainer'>\n";
765
 
 
 
 
 
766
  if ( $time && in_array( 'time', $args['description'] ) ) {
767
  $time = human_time_diff( $time );
768
- $output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
769
- }
770
- if ( in_array( 'username', $args['description'] ) && $username ) {
771
- $output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' target='_blank'>{$username}</a></span>\n";
772
  }
773
 
 
774
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
775
- $caption = preg_replace( '/@([a-z0-9_]+)/i', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a>&nbsp;', $caption );
776
- $caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption);
777
- $output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
778
  }
779
 
780
  $output .= "</div>\n";
781
  }
782
 
783
  $output .= "</li>";
784
-
785
  // Template : Slider with text Overlay on mouse over
786
  } elseif ( $template == 'slider-overlay' ) {
787
-
788
- $output .= "<li>";
789
 
790
  $output .= $image_output;
791
 
@@ -807,7 +1010,7 @@ class WIS_InstagramSlider extends WP_Widget {
807
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
808
  $caption = preg_replace( '/@([a-z0-9_]+)/i', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a>&nbsp;', $caption );
809
  $caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption);
810
- $output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
811
  }
812
 
813
  $output .= "</div>\n";
@@ -819,8 +1022,7 @@ class WIS_InstagramSlider extends WP_Widget {
819
 
820
  // Template : Thumbnails no text
821
  } elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
822
-
823
- $output .= "<li>";
824
  $output .= $image_output;
825
  $output .= "</li>";
826
 
@@ -835,10 +1037,10 @@ class WIS_InstagramSlider extends WP_Widget {
835
 
836
  /**
837
  * Trigger refresh for new data
838
- * @param bolean $instaData
839
  * @param array $old_args
840
  * @param array $new_args
841
- * @return bolean
842
  */
843
  private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
844
 
@@ -872,45 +1074,60 @@ class WIS_InstagramSlider extends WP_Widget {
872
  return false;
873
  }
874
 
875
-
876
  /**
877
- * Show powered by link at the end of the plugin
878
- * @param [type] $support_author [description]
879
- * @return [type] [description]
880
  */
881
- function powered_by_link( $support_author ) {
882
 
883
- if ( $support_author ) {
884
- $link = $this->domain_data();
885
 
886
- if ( isset( $link['text'] ) && !empty( $link['text'] ) && isset( $link['domain'] ) && !empty( $link['domain'] ) ) {
887
- $link = '<div style="clear:both;text-align:right;font-size:10px;" >Powered by <a href="'.$link['domain'].'" target="_blank">'.$link['text'].'</a></div>';
888
- } else if ( isset( $link['text'] ) && !empty( $link['text'] ) ) {
889
- $link = '<div style="clear:both;text-align:right;font-size:10px;" >Powered by '.$link['text'].'</div>';
890
- } else {
891
- $link = '';
892
- }
893
 
894
- return $link;
 
 
 
 
 
 
895
  }
896
- return false;
897
- }
898
 
 
 
899
 
900
- /**
901
- * Stores the fetched data from instagram in WordPress DB using transients
902
- *
903
- * @param string $username Instagram Username to fetch images from
904
- * @param string $cache_hours Cache hours for transient
905
- * @param string $nr_images Nr of images to fetch from instagram
906
- *
907
- * @return array of localy saved instagram data
908
- */
909
- private function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
910
 
911
- $nr_images = $nr_images <= 12 ? $nr_images : 12;
912
- $blocked_users = isset( $search_for['blocked_users'] ) && !empty( $search_for['blocked_users'] ) ? $search_for['blocked_users'] : false;
913
- if ( isset( $search_for['username'] ) && !empty( $search_for['username'] ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
914
  $search = 'user';
915
  $search_string = $search_for['username'];
916
  } elseif ( isset( $search_for['hashtag'] ) && !empty( $search_for['hashtag'] ) ) {
@@ -945,29 +1162,45 @@ class WIS_InstagramSlider extends WP_Widget {
945
 
946
  if ( 'user' == $search ) {
947
 
948
- $url = str_replace( '{username}', urlencode( trim( $search_string ) ), self::USERNAME_URL );
949
- $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
950
-
951
- $json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
952
-
953
- // Compatibility for version of php where strstr() doesnt accept third parameter
954
- if ( version_compare( PHP_VERSION, '5.3.0', '>=' ) ) {
955
- $json = strstr( $json, '</script>', true );
956
- } else {
957
- $json = substr( $json, 0, strpos( $json, '</script>' ) );
 
958
  }
959
- $json = rtrim( $json, ';' );
960
-
961
- // Function json_last_error() is not available before PHP * 5.3.0 version
962
- if ( function_exists( 'json_last_error' ) ) {
963
-
964
- ( $results = json_decode( $json, true ) ) && json_last_error() == JSON_ERROR_NONE;
965
-
966
- } else {
967
- $results = json_decode( $json, true );
968
- }
969
-
970
- } else {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
971
  $url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
972
  $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
973
  $results = json_decode( $response['body'], true );
@@ -985,17 +1218,19 @@ class WIS_InstagramSlider extends WP_Widget {
985
 
986
  if ( 'user' == $search ) {
987
  $entry_data = isset($results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges']) ? $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] : array();
 
 
988
  } else {
989
  $entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
990
  }
991
 
992
  if ( empty( $entry_data ) ) {
993
- return __( 'No images found', 'instagram-slider-widget');
994
  }
995
 
996
- foreach ( $entry_data as $current => $result ) {
997
-
998
- $result = $result['node'];
999
 
1000
  if ( 'hashtag' == $search ) {
1001
 
@@ -1004,24 +1239,28 @@ class WIS_InstagramSlider extends WP_Widget {
1004
  continue;
1005
  }
1006
  }
1007
-
1008
  if ( $result['is_video'] == true ) {
1009
  $nr_images++;
1010
  continue;
1011
  }
1012
-
1013
 
1014
  if ( $current >= $nr_images ) {
1015
  break;
1016
  }
1017
 
1018
- $image_data = $this->media_model( $result );
 
 
 
 
1019
 
1020
  if ( 'user' == $search ) {
1021
  $image_data['username'] = $search_string;
1022
  }
1023
 
1024
- if ( ( $search == 'hashtag' ) || ( $search == 'user' && !$attachment ) ) {
1025
 
1026
  $instaData[] = $image_data;
1027
 
@@ -1080,7 +1319,6 @@ class WIS_InstagramSlider extends WP_Widget {
1080
  return $instaData;
1081
  }
1082
 
1083
-
1084
  /**
1085
  * @param string $imageUrl
1086
  *
@@ -1125,6 +1363,9 @@ class WIS_InstagramSlider extends WP_Widget {
1125
  $medias_model['id'] = $value;
1126
  break;
1127
  case 'code':
 
 
 
1128
  case 'shortcode':
1129
  $medias_model['code'] = $value;
1130
  $medias_model['link'] = 'https://www.instagram.com/p/'. $value . '/';
@@ -1182,6 +1423,48 @@ class WIS_InstagramSlider extends WP_Widget {
1182
  return $medias_model;
1183
  }
1184
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1185
 
1186
  /**
1187
  * Remove Duplicates
@@ -1245,6 +1528,59 @@ class WIS_InstagramSlider extends WP_Widget {
1245
  wp_send_json( $return );
1246
  }
1247
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1248
  /**
1249
  * Get Instagram Ids from Usernames into array
1250
  * @param string $usernames Comma separated string with instagram users
@@ -1264,30 +1600,19 @@ class WIS_InstagramSlider extends WP_Widget {
1264
  continue;
1265
  }
1266
 
1267
- $url = str_replace( '{username}', urlencode( trim( $user ) ), self::USERNAME_URL );
1268
- $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
1269
-
1270
- if ( is_wp_error( $response ) ) {
1271
-
1272
- return $response->get_error_message();
1273
- }
1274
-
1275
- if ( $response['response']['code'] == 200 ) {
1276
-
1277
- $results = json_decode( $response['body'], true );
1278
 
1279
- if ( $results && is_array( $results ) ) {
 
1280
 
1281
- $user_id = isset( $results['user']['id'] ) ? $results['user']['id'] : false;
1282
 
1283
- if ( $user_id ) {
1284
 
1285
- $user_ids[$user] = $user_id;
1286
-
1287
- set_transient( 'jr_insta_user_ids', $user_ids );
1288
- }
1289
- }
1290
- }
1291
  }
1292
  }
1293
 
@@ -1423,50 +1748,6 @@ class WIS_InstagramSlider extends WP_Widget {
1423
  return $a['popularity'] < $b['popularity'];
1424
  }
1425
 
1426
- /**
1427
- * Plugin Data for better compatibility and Support
1428
- *
1429
- */
1430
- public function domain_data() {
1431
-
1432
- if ( false === $domain_data = get_transient( 'jr_domain_info' ) ) {
1433
-
1434
- $theme = wp_get_theme();
1435
- $domain = get_site_url();
1436
- $plugin = self::VERSION;
1437
- $url = 'http://jrwebstudio.com/wp-admin/admin-post.php';
1438
-
1439
- $response = wp_safe_remote_post( $url, array(
1440
- 'method' => 'POST',
1441
- 'timeout' => 45,
1442
- 'redirection' => 5,
1443
- 'httpversion' => '1.1',
1444
- 'blocking' => true,
1445
- 'user-agent' => 'Mozilla/4.0',
1446
- 'headers' => array(),
1447
- 'cookies' => array(),
1448
- 'body' => array(
1449
- 'action' => 'insta_users',
1450
- 'domain' => $domain,
1451
- 'theme_name' => $theme->get( 'Name' ),
1452
- 'theme_version' => $theme->get( 'Version' ),
1453
- 'plugin_version' => $plugin,
1454
- 'timestamp' => time()
1455
- )
1456
- )
1457
- );
1458
-
1459
- if ( $response['response']['code'] == 200 ) {
1460
- $domain_data = json_decode( wp_remote_retrieve_body( $response ), true );
1461
- if ( is_array( $domain_data) && !empty( $domain_data) ) {
1462
- set_transient( 'jr_domain_info', $domain_data, WEEK_IN_SECONDS );
1463
- }
1464
- }
1465
- }
1466
-
1467
- return $domain_data;
1468
- }
1469
-
1470
  /**
1471
  * Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
1472
  * This solution runs in O(n) time BUT assumes that all incoming input is
@@ -1513,5 +1794,30 @@ class WIS_InstagramSlider extends WP_Widget {
1513
  return $input;
1514
  }
1515
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1516
  } // end of class WIS_InstagramSlider
1517
- ?>
4
  */
5
  class WIS_InstagramSlider extends WP_Widget {
6
 
7
+ private static $app;
8
  /**
9
  * Plugin version, used for cache-busting of style and script file references.
10
  *
11
  * @var string
12
  */
13
+ // Потому что, разработчики будут забывать обновлять версию в этом месте.
14
  const USERNAME_URL = 'https://www.instagram.com/{username}/';
15
  const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
16
+ const USERS_SELF_URL = 'https://api.instagram.com/v1/users/self/';
17
+ const USERS_SELF_MEDIA_URL = 'https://api.instagram.com/v1/users/self/media/recent/';
18
 
19
+ /**
20
+ * @var WIS_Plugin
21
+ */
22
+ public $WIS;
23
+
24
+ /**
25
+ * @var array
26
+ */
27
+ public $sliders;
28
+
29
+ public static function app() {
30
+ return self::$app;
31
+ }
32
  /**
33
  * Initialize the plugin by registering widget and loading public scripts
34
  *
35
  */
36
  public function __construct() {
37
+ self::$app = $this;
38
 
39
  // Widget ID and Class Setup
40
  parent::__construct( 'jr_insta_slider', __( 'Social Slider', 'instagram-slider-widget' ), array(
43
  )
44
  );
45
 
46
+ $this->WIS = WIS_Plugin::app();
47
+ $this->sliders = array(
48
+ "slider" => 'Slider - Normal',
49
+ "slider-overlay" => 'Slider - Overlay Text',
50
+ "thumbs" => 'Thumbnails',
51
+ "thumbs-no-border" => 'Thumbnails - Without Border',
52
+ );
53
+ /**
54
+ * Фильтр для добавления слайдеров
55
+ */
56
+ $this->sliders = apply_filters('wis/sliders', $this->sliders);
57
+
58
+
59
  // Shortcode
60
  add_shortcode( 'jr_instagram', array( $this, 'shortcode' ) );
61
 
76
 
77
  // Add action for single cron events
78
  add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10 , 3 );
79
+
80
+ add_action( 'wp_ajax_add_account_by_token', array( $this, 'add_account_by_token' ) );
81
+
82
+ add_action( 'wp_ajax_wis_delete_account', array( $this, 'delete_account' ) );
83
+
84
  }
85
 
86
  /**
101
  */
102
  public function public_enqueue() {
103
 
104
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'font-awesome',
105
+ 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'
106
+ );
107
 
108
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'instag-slider', WIS_PLUGIN_URL.'/assets/css/instag-slider.css', array(), WIS_Plugin::app()->getPluginVersion() );
109
+ wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jquery-pllexi-slider', WIS_PLUGIN_URL.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), false );
110
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'wis-header', WIS_PLUGIN_URL.'/assets/css/wis-header.css', array(), WIS_Plugin::app()->getPluginVersion() );
111
  }
112
 
113
  /**
120
  if ( 'widgets.php' != $hook ) {
121
  return;
122
  }
123
+ wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_DIR.'/admin/assets/css/jr-insta-admin.css', array(), WIS_Plugin::app()->getPluginVersion() );
124
+ wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_DIR.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), true );
125
 
 
 
126
  }
127
 
128
  /**
131
  */
132
  public function widget( $args, $instance ) {
133
 
 
 
134
  //Our variables from the widget settings.
135
  $title = apply_filters( 'widget_title', $instance['title'] );
136
 
137
+ echo $args['before_widget'];
138
 
139
  // Display the widget title
140
  if ( $title ) {
141
+ echo $args['before_title'] . $title . $args['after_title'];
142
  }
143
 
144
  do_action( 'jr_instagram', $instance );
145
 
146
+ echo $args['after_widget'];
147
  }
148
 
149
  /**
150
  * Update the widget settings
151
  *
152
  * @param array $new_instance New instance values
153
+ * @param array $instance Old instance values
154
  *
155
  * @return array
156
  */
157
  public function update( $new_instance, $instance ) {
158
 
159
+ $instance['title'] = strip_tags( isset($new_instance['title']) ? $new_instance['title'] : null );
160
+ $instance['search_for'] = isset($new_instance['search_for']) ? $new_instance['search_for'] : null;
161
+ $instance['username'] = isset($new_instance['username']) ? $new_instance['username'] : null;
162
+ $instance['account'] = isset($new_instance['account']) ? $new_instance['account'] : null;
163
+ $instance['hashtag'] = isset($new_instance['hashtag']) ? $new_instance['hashtag'] : null;
164
+ $instance['blocked_users'] = isset($new_instance['blocked_users']) ? $new_instance['blocked_users'] : null;
165
+ $instance['attachment'] = isset($new_instance['attachment']) ? $new_instance['attachment'] : null;
166
+ $instance['template'] = isset($new_instance['template']) ? $new_instance['template'] : 'slider';
167
+ $instance['images_link'] = isset($new_instance['images_link']) ? $new_instance['images_link'] : 'image_link';
168
+ $instance['custom_url'] = isset($new_instance['custom_url']) ?$new_instance['custom_url'] : null;
169
+ $instance['orderby'] = isset($new_instance['orderby']) ? $new_instance['orderby'] : 'rand';
170
+ $instance['images_number'] = isset($new_instance['images_number']) ? $new_instance['images_number'] : 20;
171
+ $instance['columns'] = isset($new_instance['columns']) ? $new_instance['columns'] : 4;
172
+ $instance['refresh_hour'] = isset($new_instance['refresh_hour']) ? $new_instance['refresh_hour'] : 5;
173
+ $instance['image_size'] = isset($new_instance['image_size']) ? $new_instance['image_size'] : 'standard';
174
+ $instance['image_link_rel'] = isset($new_instance['image_link_rel']) ? $new_instance['image_link_rel'] : null;
175
+ $instance['image_link_class'] = isset($new_instance['image_link_class']) ? $new_instance['image_link_class'] : null;
176
+ $instance['no_pin'] = isset($new_instance['no_pin']) ? $new_instance['no_pin'] : null;
177
+ $instance['controls'] = isset($new_instance['controls']) ? $new_instance['controls'] : 'prev_next';
178
+ $instance['animation'] = isset($new_instance['animation']) ? $new_instance['animation'] : 'slide';
179
+ $instance['caption_words'] = isset($new_instance['caption_words']) ? $new_instance['caption_words'] : 20;
180
+ $instance['slidespeed'] = isset($new_instance['slidespeed']) ? $new_instance['slidespeed'] : 7000;
181
+ $instance['description'] = isset($new_instance['description']) ? $new_instance['description'] : array( 'username', 'time','caption' );
182
+ $instance['support_author'] = isset($new_instance['support_author']) ? $new_instance['support_author'] : null;
183
+ $instance['gutter'] = isset($new_instance['gutter']) ? $new_instance['gutter'] : null;
184
+ $instance['masonry_image_width'] = isset($new_instance['masonry_image_width']) ? $new_instance['masonry_image_width'] : 200;
185
+ $instance['slick_slides_to_show'] = isset($new_instance['slick_slides_to_show']) ? $new_instance['slick_slides_to_show'] : 3;
186
+ $instance['slick_slides_padding'] = isset($new_instance['slick_slides_padding']) ? $new_instance['slick_slides_padding'] : 0;
187
+ $instance['show_feed_header'] = isset($new_instance['show_feed_header']) ? $new_instance['show_feed_header'] : 0;
188
+ $instance['highlight_offset'] = isset($new_instance['highlight_offset']) ? $new_instance['highlight_offset'] : 1;
189
+ $instance['highlight_pattern'] = isset($new_instance['highlight_pattern']) ? $new_instance['highlight_pattern'] : 6;
190
 
191
  return $instance;
192
  }
198
  */
199
  public function form( $instance ) {
200
 
201
+ $accounts = WIS_Plugin::app()->getOption( 'account_profiles');
202
+ if(!is_array($accounts)) $accounts = array();
203
+ $sliders = $this->sliders;
204
+
205
  $defaults = array(
206
  'title' => __('Social Slider', 'instagram-slider-widget'),
207
+ 'search_for' => count($accounts) ? 'account' : 'username',
208
+ 'account' => '',
209
  'username' => '',
210
  'hashtag' => '',
211
  'blocked_users' => '',
212
  'attachment' => 0,
213
  'template' => 'slider',
214
+ 'images_link' => 'image_link',
215
  'custom_url' => '',
216
  'orderby' => 'rand',
217
+ 'images_number' => 20,
218
  'columns' => 4,
219
  'refresh_hour' => 5,
220
  'image_size' => 'standard',
223
  'no_pin' => 0,
224
  'controls' => 'prev_next',
225
  'animation' => 'slide',
226
+ 'caption_words' => 20,
227
  'slidespeed' => 7000,
228
  'description' => array( 'username', 'time','caption' ),
229
+ 'support_author' => 0,
230
+ 'gutter' => 0,
231
+ 'masonry_image_width' => 200,
232
+ 'slick_slides_to_show' => 3,
233
+ 'slick_slides_padding' => 0,
234
+ 'show_feed_header' => 1,
235
+ 'highlight_offset' => 1,
236
+ 'highlight_pattern' => 6,
237
  );
238
 
239
  $instance = wp_parse_args( (array) $instance, $defaults );
240
 
241
  ?>
242
+ <div class="jr-container">
243
+ <p>
244
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e('Title:', 'instagram-slider-widget'); ?></strong></label>
245
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
246
+ </p>
247
+ <p>
248
+ <strong><?php _e( 'Search Instagram for:', 'instagram-slider-widget' ); ?></strong>
249
+ <span class="jr-search-for-container">
250
+ <label class="jr-seach-for">
251
+ <input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="account" <?php checked( 'account', $instance['search_for'] ); ?> />
252
+ <?php _e( 'Account:', 'instagram-slider-widget' ); ?>
253
+ </label>
254
+ <?php $accounts = WIS_Plugin::app()->getOption( 'account_profiles');
255
+
256
+ if(count($accounts))
257
+ {?>
258
+
259
+ <select id="<?php echo $this->get_field_id( 'account' ); ?>" class="" name="<?php echo $this->get_field_name( 'account' ); ?>"><?php
260
+ foreach ($accounts as $acc)
261
+ {
262
+ $selected = $instance['account'] == $acc['username'] ? "selected='selected'" : "";
263
+ echo "<option value='{$acc['username']}' {$selected}>{$acc['username']}</option>";
264
+ }
265
+ ?>
266
+ </select><?php
267
+ }
268
+ else{
269
+ echo "<a href='".admin_url('admin.php?page=settings-wisw')."'>".__('Add account in settings','instagram-slider-widget')."</a>";
270
+ }
271
+ ?>
272
+ </span>
273
+ <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="username" <?php checked( 'username', $instance['search_for'] ); ?> /> <?php _e( 'Username:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'username' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'username' ); ?>" value="<?php echo $instance['username']; ?>" /></span>
274
+ <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="hashtag" <?php checked( 'hashtag', $instance['search_for'] ); ?> /> <?php _e( 'Hashtag:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'hashtag' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'hashtag' ); ?>" value="<?php echo $instance['hashtag']; ?>" placeholder="<?php _e('without # sign', 'instagram-slider-widget') ?>" /></span>
275
+ </p>
276
+ <p class="<?php if ( 'hashtag' != $instance['search_for'] ) echo 'hidden'; ?>">
277
+ <label for="<?php echo $this->get_field_id( 'blocked_users' ); ?>"><?php _e( 'Block Users', 'instagram-slider-widget' ); ?>:</label>
278
+ <input class="widefat" id="<?php echo $this->get_field_id( 'blocked_users' ); ?>" name="<?php echo $this->get_field_name( 'blocked_users' ); ?>" value="<?php echo $instance['blocked_users']; ?>" />
279
+ <span class="jr-description"><?php _e( 'Enter usernames separated by commas whose images you don\'t want to show', 'instagram-slider-widget' ); ?></span>
280
+ </p>
281
+ <p class="<?php if ( 'username' != $instance['search_for'] ) echo 'hidden'; ?>"><strong><?php _e( 'Save in Media Library: ', 'instagram-slider-widget' ); ?></strong>
282
+
283
+ <label class="switch" for="<?php echo $this->get_field_id( 'attachment' ); ?>">
284
+ <input class="widefat" id="<?php echo $this->get_field_id( 'attachment' ); ?>" name="<?php echo $this->get_field_name( 'attachment' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['attachment'] ); ?> /><span class="slider round"></span></label>
285
+ <br><span class="jr-description"><?php _e( ' Turn on to save Instagram Images into WordPress media library.', 'instagram-slider-widget') ?></span>
286
  <?php
287
  if ( isset ( $instance['username'] ) && !empty($instance['username'] ) ) {
288
  echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="'.$instance['username'].'"><strong>Remove</strong> duplicate images for <strong>'.$instance['username'].'</strong></button><span class="jr-spinner"></span>';
290
  wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
291
  }
292
  ?>
293
+ </p>
294
+ <p id="img_to_show">
295
+ <label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Count of images to show:', 'instagram-slider-widget' ); ?></strong>
296
+ <input class="small-text" type="number" min="1" max="" id="<?php echo $this->get_field_id( 'images_number' ); ?>" name="<?php echo $this->get_field_name( 'images_number' ); ?>" value="<?php echo $instance['images_number']; ?>" />
297
+ <span class="jr-description">
298
+ <?php if(!$this->WIS->is_premium()) {
299
+ _e( 'Maximum 20 images in free version.', 'instagram-slider-widget' );
300
+ echo " ".sprintf( __( "More in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), $this->WIS->get_support()->get_pricing_url(true, "wis_widget_settings") );
301
+ }
302
+ ?>
303
+ </span>
304
+ </label>
305
+ </p>
306
+ <p>
307
+ <label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'instagram-slider-widget' ); ?></strong>
308
+ <input class="small-text" type="number" min="1" max="200" id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>" name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>" value="<?php echo $instance['refresh_hour']; ?>" />
309
+ <span><?php _e('hours', 'instagram-slider-widget'); ?></span>
310
+ </label>
311
+ </p>
312
+ <p>
313
+ <strong><?php _e( 'Show feed header:', 'instagram-slider-widget' ); ?></strong>
314
+ <label class="switch" for="<?php echo $this->get_field_id( 'show_feed_header' ); ?>">
315
+ <input class="widefat" id="<?php echo $this->get_field_id( 'show_feed_header' ); ?>" name="<?php echo $this->get_field_name( 'show_feed_header' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['show_feed_header'] ); ?> />
316
+ <span class="slider round"></span>
317
+ </label>
318
+ </p>
319
+ <p>
320
+ <label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'instagram-slider-widget' ); ?></strong>
321
+ <select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>">
322
+ <?php
323
+ if(count($sliders)) {
324
+ foreach ($sliders as $key => $slider) {
325
+ $selected = ($instance['template'] == $key) ? "selected='selected'" : '';
326
+ echo "<option value='{$key}' {$selected}>{$slider}</option>\n";
327
+ }
328
+ }
329
+ if(!$this->WIS->is_premium())
330
+ {
331
+ ?>
332
+ <optgroup label="Available in PRO">
333
+ <option value='1' disabled="disabled">Slick</option>
334
+ <option value='2' disabled="disabled">Masonry</option>
335
+ <option value='3' disabled="disabled">Highlight</option>
336
+ </optgroup>
337
+ <?php
338
+ }
339
+ ?>
340
+ </select>
341
+ </label>
342
+ </p>
343
+ <span id="masonry_notice" class="masonry_notice jr-description <?php if ( 'masonry' != $instance['template']) echo 'hidden'; ?>"><?php _e("Not recommended for <strong>sidebar</strong>")?></span>
344
+ <p class="<?php if ( 'thumbs' != $instance['template'] && 'thumbs-no-border' != $instance['template'] ) echo 'hidden'; ?>">
345
+ <label for="<?php echo $this->get_field_id( 'columns' ); ?>"><strong><?php _e( 'Number of Columns:', 'instagram-slider-widget' ); ?></strong>
346
+ <input class="small-text" id="<?php echo $this->get_field_id( 'columns' ); ?>" name="<?php echo $this->get_field_name( 'columns' ); ?>" value="<?php echo $instance['columns']; ?>" />
347
+ <span class='jr-description'><?php _e('max is 10 ( only for thumbnails template )', 'instagram-slider-widget'); ?></span>
348
+ </label>
349
+ </p>
350
+ <p class="masonry_settings <?php if ( 'masonry' != $instance['template']) echo 'hidden'; ?>">
351
+ <label for="<?php echo $this->get_field_id( 'gutter' ); ?>"><strong><?php _e( 'Vertical space between item elements:', 'instagram-slider-widget' ); ?></strong>
352
+ <input class="small-text" id="<?php echo $this->get_field_id( 'gutter' ); ?>" name="<?php echo $this->get_field_name( 'gutter' ); ?>" value="<?php echo $instance['gutter']; ?>" />
353
+ <span><?php _e('px', 'instagram-slider-widget'); ?></span>
354
+ </label>
355
+ <br>
356
+ <label for="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>"><strong><?php _e( 'Image width:', 'instagram-slider-widget' ); ?></strong>
357
+ <input class="small-text" id="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>" name="<?php echo $this->get_field_name( 'masonry_image_width' ); ?>" value="<?php echo $instance['masonry_image_width']; ?>" />
358
+ <span><?php _e('px', 'instagram-slider-widget'); ?></span>
359
+ </label>
360
+ </p>
361
+ <p class="slick_settings <?php if ( 'slick_slider' != $instance['template']) echo 'hidden'; ?>">
362
+ <label for="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>"><strong><?php _e( 'Pictures per slide:', 'instagram-slider-widget' ); ?></strong>
363
+ <input class="small-text" id="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>" name="<?php echo $this->get_field_name( 'slick_slides_to_show' ); ?>" value="<?php echo $instance['slick_slides_to_show']; ?>" />
364
+ <span><?php _e('pictures', 'instagram-slider-widget'); ?></span>
365
+ </label>
366
+ <br>
367
+ <strong><?php _e( 'Space between pictures:', 'instagram-slider-widget' ); ?></strong>
368
+ <label class="switch" for="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>">
369
+ <input class="widefat" id="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>" name="<?php echo $this->get_field_name( 'slick_slides_padding' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['slick_slides_padding'] ); ?> />
370
+ <span class="slider round"></span>
371
+ </label>
372
+ </p>
373
+ <p class="highlight_settings <?php if ( 'highlight' != $instance['template']) echo 'hidden'; ?>">
374
+ <label for="<?php echo $this->get_field_id( 'highlight_offset' ); ?>"><strong><?php _e( 'Offset', 'instagram-slider-widget' ); ?></strong>
375
+ <input type="number" min="1" class="small-text" id="<?php echo $this->get_field_id( 'highlight_offset' ); ?>" name="<?php echo $this->get_field_name( 'highlight_offset' ); ?>" value="<?php echo $instance['highlight_offset']; ?>" />
376
+ </label>
377
+ <br>
378
+ <label for="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>"><strong><?php _e( 'Pattern', 'instagram-slider-widget' ); ?></strong>
379
+ <input type="number" min="0" class="small-text" id="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>" name="<?php echo $this->get_field_name( 'highlight_pattern' ); ?>" value="<?php echo $instance['highlight_pattern']; ?>" />
380
+ </label>
381
+ </p>
382
+ <p class="slider_normal_settings jr-slider-options <?php if ( 'slider' != $instance['template'] || 'slider-overlay' != $instance['template'] ) echo 'hidden'; ?>">
383
+
384
+ <?php _e( 'Slider Navigation Controls:', 'instagram-slider-widget' ); ?><br>
385
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'instagram-slider-widget' ); ?></label>
386
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'instagram-slider-widget' ); ?></label>
387
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'instagram-slider-widget' ); ?></label>
388
+ <br>
389
+ <?php _e( 'Slider Animation:', 'instagram-slider-widget' ); ?><br>
390
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'instagram-slider-widget' ); ?></label>
391
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'instagram-slider-widget' ); ?></label>
392
+ <br>
393
+ <label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'instagram-slider-widget' ); ?>
394
+ <input type="number" min="1000" max="10000" step="100" class="small-text" id="<?php echo $this->get_field_id( 'slidespeed' ); ?>" name="<?php echo $this->get_field_name( 'slidespeed' ); ?>" value="<?php echo $instance['slidespeed']; ?>" />
395
+ <span><?php _e('milliseconds', 'instagram-slider-widget'); ?></span>
396
+ <span class='jr-description'><?php _e('1000 milliseconds = 1 second', 'instagram-slider-widget'); ?></span>
397
+ </label>
398
+ <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e( 'Slider Text Description:', 'instagram-slider-widget' ); ?></label>
399
+ <select size=3 class='widefat' id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>[]" multiple="multiple">
400
+ <option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'instagram-slider-widget'); ?></option>
401
+ <option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'instagram-slider-widget'); ?></option>
402
+ <option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'instagram-slider-widget'); ?></option>
403
+ </select>
404
+ <span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'instagram-slider-widget') ?></span>
405
+ </p>
406
+ <p class="words_in_caption <?php if (
407
+ 'thumbs' == $instance['template'] ||
408
+ 'thumbs-no-border' == $instance['template'] ||
409
+ 'highlight' == $instance['template'] ||
410
+ 'slick_slider' == $instance['template']
411
+ ) echo 'hidden';?>">
412
+ <label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><strong><?php _e( 'Number of words in caption:', 'instagram-slider-widget' ); ?></strong>
413
+ <input class="small-text" type="number" min="0" max="200" id="<?php echo $this->get_field_id( 'caption_words' ); ?>" name="<?php echo $this->get_field_name( 'caption_words' ); ?>" value="<?php echo $instance['caption_words']; ?>" />
414
+ </label>
415
+ </p>
416
+ <p>
417
+ <label for="<?php echo $this->get_field_id( 'image_size' ); ?>"><strong><?php _e( 'Image format', 'instagram-slider-widget' ); ?></strong></label>
418
+ <select class="widefat" id="<?php echo $this->get_field_id( 'image_size' ); ?>" name="<?php echo $this->get_field_name( 'image_size' ); ?>">
419
+ <option value="thumbnail" <?php echo ($instance['image_size'] == 'thumbnail') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnail - 150x150', 'instagram-slider-widget' ); ?></option>
420
+ <option value="low" <?php echo ($instance['image_size'] == 'low') ? ' selected="selected"' : ''; ?>><?php _e( 'Low - 320x320', 'instagram-slider-widget' ); ?></option>
421
+ <option value="standard" <?php echo ($instance['image_size'] == 'standard') ? ' selected="selected"' : ''; ?>><?php _e( 'Standard - 640x640', 'instagram-slider-widget' ); ?></option>
422
+ <option value="full" <?php echo ($instance['image_size'] == 'full') ? ' selected="selected"' : ''; ?>><?php _e( 'Full Size', 'instagram-slider-widget' ); ?></option>
423
+ </select>
424
+ </p>
425
+ <p>
426
+ <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'instagram-slider-widget' ); ?></strong>
427
+ <select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>">
428
+ <option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true); ?>><?php _e( 'Date - Ascending', 'instagram-slider-widget' ); ?></option>
429
+ <option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true); ?>><?php _e( 'Date - Descending', 'instagram-slider-widget' ); ?></option>
430
+ <option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true); ?>><?php _e( 'Popularity - Ascending', 'instagram-slider-widget' ); ?></option>
431
+ <option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true); ?>><?php _e( 'Popularity - Descending', 'instagram-slider-widget' ); ?></option>
432
+ <option value="rand" <?php selected( $instance['orderby'], 'rand', true); ?>><?php _e( 'Random', 'instagram-slider-widget' ); ?></option>
433
+ </select>
434
+ </label>
435
+ </p>
436
+ <p>
437
+ <label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'instagram-slider-widget' ); ?></strong>
438
+ <select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>" id="<?php echo $this->get_field_id( 'images_link' ); ?>">
439
+ <option value="image_link" <?php selected( $instance['images_link'], 'image_link', true); ?>><?php _e( 'Instagram Image', 'instagram-slider-widget' ); ?></option>
440
+ <option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="user_url" <?php selected( $instance['images_link'], 'user_url', true); ?>><?php _e( 'Instagram Profile', 'instagram-slider-widget' ); ?></option>
441
+ <option value="image_url" <?php selected( $instance['images_link'], 'image_url', true); ?>><?php _e( 'Image URL', 'instagram-slider-widget' ); ?></option>
442
+ <option class="<?php if ( ( !$instance['attachment'] ) || 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="attachment" <?php selected( $instance['images_link'], 'attachment', true); ?>><?php _e( 'Attachment Page', 'instagram-slider-widget' ); ?></option>
443
+ <option value="custom_url" <?php selected( $instance['images_link'], 'custom_url', true ); ?>><?php _e( 'Custom Link', 'instagram-slider-widget' ); ?></option>
444
+ <option value="none" <?php selected( $instance['images_link'], 'none', true); ?>><?php _e( 'None', 'instagram-slider-widget' ); ?></option>
445
+ </select>
446
+ </label>
447
+ </p>
448
+ <p class="<?php if ( 'custom_url' != $instance['images_link'] ) echo 'hidden'; ?>">
449
+ <label for="<?php echo $this->get_field_id( 'custom_url' ); ?>"><?php _e( 'Custom link:', 'instagram-slider-widget'); ?></label>
450
+ <input class="widefat" id="<?php echo $this->get_field_id( 'custom_url' ); ?>" name="<?php echo $this->get_field_name( 'custom_url' ); ?>" value="<?php echo $instance['custom_url']; ?>" />
451
+ <span><?php _e('* use this field only if the above option is set to <strong>Custom Link</strong>', 'instagram-slider-widget'); ?></span>
452
+ </p>
453
+ <!--<p>
454
+ <strong>Advanced Options</strong>
455
  <?php
456
+ /* $advanced_class = '';
457
  $advanced_text = '[ - Close ]';
458
  if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
459
+ $advanced_class = 'hidden';
460
  $advanced_text = '[ + Open ]';
461
  }
462
+ */?>
463
+ <a href="#" class="jr-advanced"><?php /*echo $advanced_text; */?></a>
464
+ </p>-->
465
+ <!-- <div class="jr-advanced-input <?php /*echo $advanced_class;*/ ?>">
466
+ <div class="jr-image-options">
467
+ <h4 class="jr-advanced-title"><?php /*_e( 'Advanced Image Options', 'instagram-slider-widget'); */?></h4>
468
+ <p>
469
+ <label for="<?php /*echo $this->get_field_id( 'image_link_rel' ); */?>"><?php /*_e( 'Image Link rel attribute', 'instagram-slider-widget' ); */?>:</label>
470
+ <input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_rel' ); */?>" name="<?php /*echo $this->get_field_name( 'image_link_rel' ); */?>" value="<?php /*echo $instance['image_link_rel']; */?>" />
471
+ <span class="jr-description"><?php /*_e( 'Specifies the relationship between the current page and the linked website', 'instagram-slider-widget' ); */?></span>
472
+ </p>
473
+ <p>
474
+ <label for="<?php /*echo $this->get_field_id( 'image_link_class' ); */?>"><?php /*_e( 'Image Link class', 'instagram-slider-widget' ); */?>:</label>
475
+ <input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_class' ); */?>" name="<?php /*echo $this->get_field_name( 'image_link_class' ); */?>" value="<?php /*echo $instance['image_link_class']; */?>" />
476
+ <span class="jr-description"><?php /*_e( 'Usefull if you are using jQuery lightbox plugins to open links', 'instagram-slider-widget' ); */?></span>
477
+ </p>
478
+ <p><strong><?php /*_e( 'Disable Pinning:', 'instagram-slider-widget' ); */?></strong>
479
+ <label class="switch" for="<?php /*echo $this->get_field_id( 'no_pin' ); */?>">
480
+ <input class="widefat" id="<?php /*echo $this->get_field_id( 'no_pin' ); */?>" name="<?php /*echo $this->get_field_name( 'no_pin' ); */?>" type="checkbox" value="1" <?php /*checked( '1', $instance['no_pin'] ); */?> /><span class="slider round"></span></label>
481
+ <br><span class="jr-description"><?php /*_e( 'Disable pinning for Pinterest on all images from this widget!', 'instagram-slider-widget') */?></span>
482
+ </p>
483
+ </div>
484
+ </div>-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
  <?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id ); if ( $widget_id != '' ) : ?>
486
+ <p>
487
+ <label for="jr_insta_shortcode"><?php _e('Shortcode of this Widget:', 'instagram-slider-widget'); ?></label>
488
+ <input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text" class="widefat" value="[jr_instagram id=&quot;<?php echo $widget_id ?>&quot;]" readonly="readonly" style="border:none; color:black; font-family:monospace;">
489
+ <span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'instagram-slider-widget') ?></span>
490
+ </p>
491
  <?php endif; ?>
492
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
493
  <?php
494
  }
495
 
531
  * @return void
532
  */
533
  public function instagram_images( $args ) {
534
+ echo $this->display_images( $args );
535
  }
536
 
537
  /**
539
  * @param [type] $username [description]
540
  * @param [type] $refresh_hour [description]
541
  * @param [type] $images [description]
 
542
  */
543
  public function jr_cron_trigger( $username, $refresh_hour, $images ) {
544
  $search_for = array();
554
  * @return string
555
  */
556
  private function display_images( $args ) {
557
+ $account = isset( $args['account'] ) && !empty( $args['account'] ) ? $args['account'] : false;
558
+ $username = isset( $args['username'] ) && !empty( $args['username'] ) ? str_replace( '@', '', $args['username'] ) : false;
559
  $hashtag = isset( $args['hashtag'] ) && !empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
560
  $blocked_users = isset( $args['blocked_users'] ) && !empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
561
  $attachment = isset( $args['attachment'] ) ? true : false;
563
  $orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
564
  $images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
565
  $custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
566
+ $images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 20;
567
  $columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
568
  $refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
569
  $image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
572
  $image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
573
  $controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
574
  $animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
575
+ $caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] : 20;
576
  $slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
577
  $description = isset( $args['description'] ) ? $args['description'] : array();
578
  $widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
579
  $powered_by_link = isset( $args['support_author'] ) ? true : false;
580
+ $gutter = isset( $args['gutter'] ) ? $args['gutter'] : 0;
581
+ $masonry_image_width = isset( $args['masonry_image_width'] ) ? $args['masonry_image_width'] : 200;
582
+ $slick_slides_to_show = isset( $args['slick_slides_to_show'] ) ? $args['slick_slides_to_show'] : 3;
583
+ $slick_slides_padding = isset( $args['slick_slides_padding'] ) ? $args['slick_slides_padding'] : 0;
584
+ $show_feed_header = isset( $args['show_feed_header'] ) ? $args['show_feed_header'] : 0;
585
+ $highlight_offset = isset( $args['highlight_offset'] ) ? $args['highlight_offset'] : 1;
586
+ $highlight_pattern = isset( $args['highlight_pattern'] ) ? $args['highlight_pattern'] : 6;
587
 
588
  if ( !empty( $description ) && !is_array( $description ) ) {
589
  $description = explode( ',', $description );
593
  $search = 'hashtag';
594
  $search_for['hashtag'] = $hashtag;
595
  $search_for['blocked_users'] = $blocked_users;
596
+ }
597
+ elseif(isset ( $args['search_for'] ) && $args['search_for'] == 'account' ) {
598
+ $search = 'account';
599
+ $search_for['account'] = $account;
600
  } else {
601
  $search = 'user';
602
  $search_for['username'] = $username;
606
  $refresh_hour = 5;
607
  }
608
 
609
+
610
  $template_args = array(
611
  'search_for' => $search,
612
  'attachment' => $attachment,
614
  'link_rel' => $image_link_rel,
615
  'link_class' => $image_link_class,
616
  'no_pin' => $no_pin,
617
+ 'caption_words' => $caption_words,
618
+ 'masonry_image_width' => $masonry_image_width,
619
+ 'slick_slides_padding' => $slick_slides_padding,
620
+ 'slick_slides_to_show' => $slick_slides_to_show,
621
+ 'highlight_offset' => $highlight_offset,
622
+ 'highlight_pattern' => $highlight_pattern,
623
+
624
  );
625
 
626
  $images_div_class = 'jr-insta-thumb';
634
  $control_nav = ( $controls == 'numberless' ) ? 'true': 'false';
635
  $ul_class = 'slides';
636
 
637
+ if( $template == 'slider' ) {
638
  $images_div_class = 'pllexislider pllexislider-normal instaslider-nr-'. $widget_id;
639
  $slider_script =
640
  "<script type='text/javascript'>" . "\n" .
649
  " });" . "\n" .
650
  " });" . "\n" .
651
  "</script>" . "\n";
652
+ }
653
+ if ( $template == 'slick_slider' || $template == 'masonry' || $template == 'highlight') {
654
+ //return $this->pro_display_images($args);
655
+ return apply_filters( 'wis/pro/display_images', "", $args, $this );
656
+ } else {
657
  $images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-'. $widget_id;
658
  $slider_script =
659
  "<script type='text/javascript'>" . "\n" .
668
  " start: function(slider){" . "\n" .
669
  " slider.hover(" . "\n" .
670
  " function () {" . "\n" .
671
+ " slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeIn();" . "\n" .
672
  " }," . "\n" .
673
  " function () {" . "\n" .
674
+ " slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeOut();" . "\n" .
675
  " }" . "\n" .
676
  " );" . "\n" .
677
  " }" . "\n" .
681
  }
682
  }
683
 
684
+ //$account = $accounts[$images_data[0]['username']];
685
+ $images_div = '';
686
+ $images_ul = "<ul class='no-bullet {$ul_class}' id='slides'>\n";
687
 
688
+ $output = '';
689
+ $output .= __( 'No images found! <br> Try some other hashtag or username', 'instagram-slider-widget' );
690
 
691
  if ( ( $search == 'user' && $attachment ) ) {
692
 
732
 
733
  $instagram_images = new WP_Query( $query_args );
734
 
735
+ //if ( $instagram_images->have_posts() ) {
736
+ if ( false ) {
737
 
738
  $output = $slider_script . $images_div . $images_ul;
739
 
760
 
761
  endwhile;
762
 
763
+ $output .= "</ul>\n</div>";
764
 
765
  } else {
766
 
767
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
768
 
769
  if ( is_array( $images_data ) && !empty( $images_data ) ) {
770
+ if(isset($images_data['error']))
771
+ {
772
+ return $images_data['error'];
773
+ }
774
 
775
  if ( $orderby != 'rand' ) {
776
 
797
  $template_args['link_to'] = $custom_url;
798
  }
799
 
800
+ $template_args['type'] = $image_data['type'];
801
  $template_args['image'] = $image_data['sizes'][$image_size];
802
  $template_args['caption'] = $image_data['caption'];
803
  $template_args['timestamp'] = $image_data['timestamp'];
807
  $output .= $this->get_template( $template, $template_args );
808
  }
809
 
810
+ $output .= "</ul>\n</div>";
811
  }
812
 
813
  }
817
  } else {
818
 
819
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
820
+ $accounts = WIS_Plugin::app()->getOption( 'account_profiles');
821
+ $account = $accounts[$images_data[0]['username']];
822
+ $images_div = '';
823
+ if($account){
824
+ $account_data = $account;
825
+ } else {
826
+ $data = WIS_Plugin::app()->getOption('profiles_data_by_username');
827
+ $data = $data['entry_data']['ProfilePage']['0']['graphql']['user'];
828
+ $account_data = array(
829
+ 'username' => $data['username'],
830
+ 'profile_picture' => $data['profile_pic_url'],
831
+ 'counts' => array(
832
+ 'media' => $data['edge_owner_to_timeline_media']['count'],
833
+ 'followed_by' => $data['edge_followed_by']['count']
834
+ ),
835
+ );
836
+ }
837
+
838
+ if($show_feed_header && !isset($search_for['hashtag']) ){
839
+ $images_div .= $this->render_layout_template('feed_header_template', $account_data);
840
+ }
841
+ $images_div .= "<div class='{$images_div_class}'>\n";
842
  if ( is_array( $images_data ) && !empty( $images_data ) ) {
843
+ if(isset($images_data['error'])) {
844
+ return $images_data['error'];
845
+ }
846
 
847
  if ( $orderby != 'rand' ) {
848
 
870
  $template_args['link_to'] = $custom_url;
871
  }
872
 
873
+ $template_args['type'] = $image_data['type'];
874
  $template_args['image'] = $image_data['sizes'][$image_size];
875
  $template_args['caption'] = $image_data['caption'];
876
  $template_args['timestamp'] = $image_data['timestamp'];
879
  $output .= $this->get_template( $template, $template_args );
880
  }
881
 
882
+ $output .= "</ul>\n</div>";
883
  }
884
  }
885
 
887
 
888
  }
889
 
890
+ /**
891
+ * Method renders layout template
892
+ *
893
+ * @param string $template_name Template name without ".php"
894
+ *
895
+ * @param array $args Template arguments
896
+ *
897
+ * @return false|string
898
+ */
899
+ private function render_layout_template( $template_name, $args ) {
900
+ $path = WIS_PLUGIN_DIR."/html_templates/$template_name.php";
901
+ if(file_exists($path)){
902
+ ob_start();
903
+ include $path;
904
+ return ob_get_clean();
905
+ } else {
906
+ return 'This template does not exist!';
907
+ }
908
+ }
909
 
910
  /**
911
  * Function to display Templates styles
919
 
920
  $link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
921
  $image_url = isset( $args['image'] ) ? $args['image'] : false;
922
+ $type = isset( $args['type'] ) ? $args['type'] : '';
923
 
924
+ if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || ( $args['search_for'] == 'account' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
925
  $caption = $args['caption'];
926
  $time = $args['timestamp'];
927
  $username = $args['username'];
933
  }
934
 
935
  $short_caption = wp_trim_words( $caption, 10, '' );
936
+ $short_caption = strip_tags($short_caption);
937
+
938
  $caption = wp_trim_words( $caption, $args['caption_words'], '' );
939
  $nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
940
 
941
+ $image_src = "<img src=$image_url $nopin class=$type>";
942
  $image_output = $image_src;
943
 
944
  if ( $link_to ) {
945
+ $image_output = "<a href=$link_to target=_blank";
946
 
947
  if ( ! empty( $args['link_rel'] ) ) {
948
+ $image_output .= " rel={$args['link_rel']}";
949
  }
950
 
951
  if ( ! empty( $args['link_class'] ) ) {
952
+ $image_output .= " class={$args['link_class']}";
953
  }
954
+ $image_output .= "> $image_src</a>";
955
  }
956
 
957
  $output = '';
958
 
959
+ if( $template == 'slider' ) {
960
+ $output .= "<li style='border:0;' >";
 
 
961
 
962
  $output .= $image_output;
963
 
964
  if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
965
 
966
+ $output .= "<div class='jr-insta-datacontainer' style=''>\n";
967
 
968
+ if ( in_array( 'username', $args['description'] ) && $username ) {
969
+
970
+ $output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' style='color:black; font-weight: 600' target='_blank'>{$username}</a></span>\n";
971
+ }
972
  if ( $time && in_array( 'time', $args['description'] ) ) {
973
  $time = human_time_diff( $time );
974
+ $output .= "<strong><span class='jr-insta-time pull-right' style='font-size: 0.9em'>{$time} ago</span></strong>\n";
975
+ $output .= "<br>";
 
 
976
  }
977
 
978
+
979
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
980
+ $caption = preg_replace( '/\@([a-z0-9А-Яа-я_-]+)/u', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" style="color:black; font-weight: 600" target="_blank">@$1</a>&nbsp;', $caption );
981
+ $caption = preg_replace( '/\#([a-zA-Z0-9А-Яа-я_-]+)/u', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" style="color:black; font-weight: 600" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption);
982
+ $output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
983
  }
984
 
985
  $output .= "</div>\n";
986
  }
987
 
988
  $output .= "</li>";
 
989
  // Template : Slider with text Overlay on mouse over
990
  } elseif ( $template == 'slider-overlay' ) {
991
+ $output .= "<li class='".$type."'>";
 
992
 
993
  $output .= $image_output;
994
 
1010
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
1011
  $caption = preg_replace( '/@([a-z0-9_]+)/i', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a>&nbsp;', $caption );
1012
  $caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption);
1013
+ $output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
1014
  }
1015
 
1016
  $output .= "</div>\n";
1022
 
1023
  // Template : Thumbnails no text
1024
  } elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
1025
+ $output .= "<li class='".$type."'>";
 
1026
  $output .= $image_output;
1027
  $output .= "</li>";
1028
 
1037
 
1038
  /**
1039
  * Trigger refresh for new data
1040
+ * @param bool $instaData
1041
  * @param array $old_args
1042
  * @param array $new_args
1043
+ * @return bool
1044
  */
1045
  private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
1046
 
1074
  return false;
1075
  }
1076
 
 
1077
  /**
1078
+ * Get data from instagram by username
1079
+ * @param string $username
1080
+ * @return array
1081
  */
1082
+ private function get_data_by_username( $username ) {
1083
 
1084
+ $url = str_replace( '{username}', urlencode( trim( $username ) ), self::USERNAME_URL );
1085
+ $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
1086
 
1087
+ if(strstr( $response['body'], '-cx-PRIVATE-Page__main' )) {
1088
+ return ['error' => __( 'Account not found or for this account there are restrictions on Instagram by age', 'instagram-slider-widget' )];
1089
+ }
 
 
 
 
1090
 
1091
+ $json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
1092
+
1093
+ // Compatibility for version of php where strstr() doesnt accept third parameter
1094
+ if ( version_compare( PHP_VERSION, '5.3.0', '>=' ) ) {
1095
+ $json = strstr( $json, '</script>', true );
1096
+ } else {
1097
+ $json = substr( $json, 0, strpos( $json, '</script>' ) );
1098
  }
1099
+ $json = rtrim( $json, ';' );
 
1100
 
1101
+ // Function json_last_error() is not available before PHP * 5.3.0 version
1102
+ if ( function_exists( 'json_last_error' ) ) {
1103
 
1104
+ ( $results = json_decode( $json, true ) ) && json_last_error() == JSON_ERROR_NONE;
1105
+
1106
+ } else {
1107
+ $results = json_decode( $json, true );
1108
+ }
1109
+
1110
+ return $results;
1111
+ }
 
 
1112
 
1113
+ /**
1114
+ * Stores the fetched data from instagram in WordPress DB using transients
1115
+ *
1116
+ * @param string $username Instagram Username to fetch images from
1117
+ * @param string $cache_hours Cache hours for transient
1118
+ * @param string $nr_images Nr of images to fetch from instagram
1119
+ *
1120
+ * @return array of localy saved instagram data
1121
+ * @throws \Exception
1122
+ */
1123
+ public function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
1124
+
1125
+ //$nr_images = $nr_images <= 12 ? $nr_images : 12;
1126
+ $blocked_users = isset( $search_for['blocked_users'] ) && !empty( $search_for['blocked_users'] ) ? str_replace( '@', '', $search_for['blocked_users'] ) : false;
1127
+ if ( isset( $search_for['account'] ) && !empty( $search_for['account'] ) ) {
1128
+ $search = 'account';
1129
+ $search_string = $search_for['account'];
1130
+ } elseif ( isset( $search_for['username'] ) && !empty( $search_for['username'] ) ) {
1131
  $search = 'user';
1132
  $search_string = $search_for['username'];
1133
  } elseif ( isset( $search_for['hashtag'] ) && !empty( $search_for['hashtag'] ) ) {
1162
 
1163
  if ( 'user' == $search ) {
1164
 
1165
+ $results = $this->get_data_by_username($search_string);
1166
+ if(isset($results['error'])) return $results['error'];
1167
+
1168
+ WIS_Plugin::app()->updateOption('profiles_data_by_username', $results);
1169
+ // ************************************
1170
+ // if instagram not return list of posts
1171
+ // ************************************
1172
+ $is_instaLoginPage = !isset($results['entry_data']['ProfilePage']);
1173
+ if($is_instaLoginPage)
1174
+ {
1175
+ return ['error' => __( 'Instagram requires authorization to view a user profile. Use autorized account in widget settings', 'instagram-slider-widget' )];
1176
  }
1177
+ // ************************************
1178
+ }
1179
+ elseif ( 'account' == $search )
1180
+ {
1181
+ $nr_images = !$this->WIS->is_premium() && $nr_images > 20 ? 20 : $nr_images;
1182
+ $account = $this->getAccountById( $search_string);
1183
+ $args = array(
1184
+ 'body' => array(
1185
+ 'access_token' => $account['token'],
1186
+ 'count' => $nr_images,
1187
+ )
1188
+ );
1189
+ $response = wp_remote_get( self::USERS_SELF_MEDIA_URL , $args );
1190
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1191
+ $media = json_decode( wp_remote_retrieve_body( $response ), true );
1192
+ $results = $media['data'];
1193
+ $results = apply_filters('wis/images/count', $results, $media, $nr_images);
1194
+
1195
+ if(!count($results))
1196
+ return ['error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' )];
1197
+ }
1198
+
1199
+ //Обновляем данные профиля: подписчики, количество постов
1200
+ $this->update_account_profiles( $account['token']);
1201
+
1202
+ }
1203
+ else {
1204
  $url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
1205
  $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
1206
  $results = json_decode( $response['body'], true );
1218
 
1219
  if ( 'user' == $search ) {
1220
  $entry_data = isset($results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges']) ? $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] : array();
1221
+ } elseif( 'account' == $search ) {
1222
+ $entry_data = $results;
1223
  } else {
1224
  $entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
1225
  }
1226
 
1227
  if ( empty( $entry_data ) ) {
1228
+ return ['error' => __( 'No images found', 'instagram-slider-widget' )];
1229
  }
1230
 
1231
+ foreach ( $entry_data as $current => $result )
1232
+ {
1233
+ if( 'account' !== $search ) $result = $result['node'];
1234
 
1235
  if ( 'hashtag' == $search ) {
1236
 
1239
  continue;
1240
  }
1241
  }
1242
+ /*
1243
  if ( $result['is_video'] == true ) {
1244
  $nr_images++;
1245
  continue;
1246
  }
1247
+ */
1248
 
1249
  if ( $current >= $nr_images ) {
1250
  break;
1251
  }
1252
 
1253
+ if ( 'account' == $search ) {
1254
+ $image_data = $this->to_media_model_from_account( $result );
1255
+ }
1256
+ else
1257
+ $image_data = $this->media_model( $result );
1258
 
1259
  if ( 'user' == $search ) {
1260
  $image_data['username'] = $search_string;
1261
  }
1262
 
1263
+ if ( ( $search == 'hashtag' ) || ( $search == 'user' && !$attachment ) || ( $search == 'account' && !$attachment ) ) {
1264
 
1265
  $instaData[] = $image_data;
1266
 
1319
  return $instaData;
1320
  }
1321
 
 
1322
  /**
1323
  * @param string $imageUrl
1324
  *
1363
  $medias_model['id'] = $value;
1364
  break;
1365
  case 'code':
1366
+ case '__typename':
1367
+ $medias_model['type'] = $value;
1368
+ break;
1369
  case 'shortcode':
1370
  $medias_model['code'] = $value;
1371
  $medias_model['link'] = 'https://www.instagram.com/p/'. $value . '/';
1423
  return $medias_model;
1424
  }
1425
 
1426
+ /**
1427
+ * Media Model from account
1428
+ * @param array $media From API
1429
+ * @return array To plugin format
1430
+ */
1431
+ private function to_media_model_from_account( $media ) {
1432
+
1433
+ $m = array();
1434
+ $value = $media;
1435
+ switch ($value['type'])
1436
+ {
1437
+ case 'image':
1438
+ $m['type'] = 'GraphImage';
1439
+ break;
1440
+ case 'video':
1441
+ $m['type'] = 'GraphVideo';
1442
+ break;
1443
+ case 'carousel':
1444
+ $m['type'] = 'GraphSidecar';
1445
+ break;
1446
+ }
1447
+
1448
+ $m['id'] = $value['id'];
1449
+ $m['caption'] = $this->sanitize( $value['caption']['text'] );
1450
+ //$m['code'] = $value;
1451
+ $m['link'] = $value['link'];
1452
+ $m['comment_count'] = $value['comments']['count'];
1453
+ $m['user_id'] = $value['user']['id'];
1454
+ $m['timestamp'] = $value['created_time'];
1455
+ $m['height'] = $value['images']['standard_resolution']['height'];
1456
+ $m['width'] = $value['images']['standard_resolution']['width'];
1457
+ $m['url'] = $value['images']['standard_resolution']['url'];
1458
+ $m['likes_count'] = $value['likes']['count'];
1459
+ $m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
1460
+ $m['sizes']['thumbnail'] = $value['images']['thumbnail']['url'];
1461
+ $m['sizes']['low'] = $value['images']['low_resolution']['url'];
1462
+ $m['sizes']['standard'] = $value['images']['standard_resolution']['url'];
1463
+ $m['sizes']['full'] = $value['images']['standard_resolution']['url'];
1464
+ $m['username'] = $value['user']['username'];
1465
+
1466
+ return $m;
1467
+ }
1468
 
1469
  /**
1470
  * Remove Duplicates
1528
  wp_send_json( $return );
1529
  }
1530
 
1531
+ /**
1532
+ * Ajax Call to add account by token
1533
+ *
1534
+ * @return void
1535
+ * @throws \Exception
1536
+ */
1537
+ public function add_account_by_token() {
1538
+ if ( isset( $_POST['token'] ) && ! empty( $_POST['token'] ) ) {
1539
+ if ( ! current_user_can( 'manage_options' ) ) {
1540
+ wp_die( - 1 );
1541
+ } else {
1542
+ check_ajax_referer( 'addAccountByToken' );
1543
+
1544
+ $this->update_account_profiles( $_POST['token']);
1545
+ wp_die('OK');
1546
+ }
1547
+ }
1548
+ }
1549
+
1550
+ /**
1551
+ * Ajax Call to delete account
1552
+ * @return void
1553
+ */
1554
+ public function delete_account() {
1555
+ if ( isset( $_POST['item_id'] ) && ! empty( $_POST['item_id'] ) ) {
1556
+ if ( ! current_user_can( 'manage_options' ) ) {
1557
+ wp_die( - 1 );
1558
+ } else {
1559
+ check_ajax_referer( 'wis_nonce' );
1560
+
1561
+ $accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles');
1562
+ $accounts_new = array();
1563
+ foreach($accounts as $name => $acc) { if($acc['id'] !== $_POST['item_id']) $accounts_new[$name] = $acc; }
1564
+ WIS_Plugin::app()->updatePopulateOption( 'account_profiles', $accounts_new);
1565
+
1566
+ wp_send_json_success(__('Account deleted successfully', 'instagram-slider-widget'));
1567
+ }
1568
+ }
1569
+ }
1570
+
1571
+ /**
1572
+ * Get Account data by USERNAME from option in wp_options
1573
+ *
1574
+ * @param string id
1575
+ *
1576
+ * @return array
1577
+ */
1578
+ public function getAccountById($name)
1579
+ {
1580
+ $token = WIS_Plugin::app()->getOption( 'account_profiles' );
1581
+ return $token[$name];
1582
+ }
1583
+
1584
  /**
1585
  * Get Instagram Ids from Usernames into array
1586
  * @param string $usernames Comma separated string with instagram users
1600
  continue;
1601
  }
1602
 
1603
+ $results = $this->get_data_by_username($user);
1604
+ if ( $results && is_array( $results ) ) {
 
 
 
 
 
 
 
 
 
1605
 
1606
+ $results = $results['entry_data']['ProfilePage']['0']['graphql']['user'];
1607
+ $user_id = isset( $results['id'] ) ? $results['id'] : false;
1608
 
1609
+ if ( $user_id ) {
1610
 
1611
+ $user_ids[$user] = $user_id;
1612
 
1613
+ set_transient( 'jr_insta_user_ids', $user_ids );
1614
+ }
1615
+ }
 
 
 
1616
  }
1617
  }
1618
 
1748
  return $a['popularity'] < $b['popularity'];
1749
  }
1750
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1751
  /**
1752
  * Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
1753
  * This solution runs in O(n) time BUT assumes that all incoming input is
1794
  return $input;
1795
  }
1796
 
1797
+ /**
1798
+ * @param $token
1799
+ *
1800
+ * @return bool
1801
+ */
1802
+ private function update_account_profiles($token) {
1803
+ $args = array(
1804
+ 'body' => array(
1805
+ 'access_token' => $token,
1806
+ )
1807
+ );
1808
+ $response = wp_remote_get( self::USERS_SELF_URL, $args);
1809
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1810
+ $user_profile = array();
1811
+ $user_profile = apply_filters( 'wis/account/profiles', $user_profile );
1812
+
1813
+ $user = json_decode( wp_remote_retrieve_body( $response ), true );
1814
+ $user['data']['token'] = $token;
1815
+ $user_profile[$user['data']['username']] = $user['data'];
1816
+ WIS_Plugin::app()->updateOption( 'account_profiles', $user_profile);
1817
+ return true;
1818
+ }
1819
+ return false;
1820
+ }
1821
+
1822
  } // end of class WIS_InstagramSlider
1823
+ ?>
{libs/factory/adverts/assets/js → includes}/index.php RENAMED
File without changes
instaram_slider.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /*
3
  Plugin Name: Social Slider Widget
4
- Plugin URI: https://cm-wp.com/instagram-slider-widget/
5
- Version: 1.5.0
6
  Description: Social Slider Widget is a responsive slider widget that shows 12 latest images from a public Instagram user and up to 18 images from a hashtag.
7
  Author: creativemotion
8
  Author URI: https://cm-wp.com/
@@ -22,7 +22,7 @@ require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-r
22
 
23
  $plugin_info = array(
24
  'prefix' => 'wis_', // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
25
- 'plugin_name' => 'wbcr_isw', // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
26
  'plugin_title' => __( 'Social Slider Widget', 'instagram-slider-widget' ), // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
27
  'plugin_text_domain' => 'instagram-slider-widget', // Идентификатор перевода, указывается в load_plugin_textdomain()
28
 
@@ -52,13 +52,14 @@ $plugin_info = array(
52
 
53
  // Настройка премиум плагина
54
  // Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
55
- 'has_premium' => false, // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
56
  'license_settings' => array(
57
- 'provider' => '', // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
58
- 'slug' => 'instagram-slider-widget', // Слаг плагина в выбранном поставщике лицензий и обновлений
59
- 'plugin_id' => '', // ID плагина в freemius.com
60
- 'public_key' => '', // Публичный ключ плагина в freemius.com
61
- 'price' => 0, // Минимальная цена плагина, выводится в рекламных блоках
 
62
  // Настройка обновлений премиум плагина
63
  'updates_settings' => array(
64
  'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
@@ -79,15 +80,15 @@ $plugin_info = array(
79
  // Подключаемые модуль фреймворка
80
  // Необходимые для ускоренной разработки продуктов Webcrfatic
81
  'load_factory_modules' => array(
82
- array( 'libs/factory/bootstrap', 'factory_bootstrap_421', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
83
- array( 'libs/factory/forms', 'factory_forms_418', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
84
- array( 'libs/factory/pages', 'factory_pages_420', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
85
- array( 'libs/factory/freemius', 'factory_freemius_108', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
86
- array( 'libs/factory/adverts', 'factory_adverts_102', 'admin') // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
87
  )
88
  );
89
 
90
- $wis_compatibility = new Wbcr_Factory420_Requirements( __FILE__, array_merge( $plugin_info, array(
91
  'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
92
  'required_php_version' => '5.4',
93
  'required_wp_version' => '4.2.0',
@@ -144,10 +145,11 @@ try {
144
  add_action( 'network_admin_notices', $wis_plugin_error_func );
145
  }
146
 
 
147
  /*******************************************************************************/
148
  /**
149
  * On widgets Init register Widget
150
  */
151
- require_once "includes/class-wis_instagram_slider.php";
152
  add_action( 'widgets_init', array( 'WIS_InstagramSlider', 'register_widget' ) );
153
  ?>
1
  <?php
2
  /*
3
  Plugin Name: Social Slider Widget
4
+ Plugin URI: https://cm-wp.com/instagram-slider-widget
5
+ Version: 1.6.3
6
  Description: Social Slider Widget is a responsive slider widget that shows 12 latest images from a public Instagram user and up to 18 images from a hashtag.
7
  Author: creativemotion
8
  Author URI: https://cm-wp.com/
22
 
23
  $plugin_info = array(
24
  'prefix' => 'wis_', // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
25
+ 'plugin_name' => 'wisw', // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
26
  'plugin_title' => __( 'Social Slider Widget', 'instagram-slider-widget' ), // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
27
  'plugin_text_domain' => 'instagram-slider-widget', // Идентификатор перевода, указывается в load_plugin_textdomain()
28
 
52
 
53
  // Настройка премиум плагина
54
  // Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
55
+ 'has_premium' => true, // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
56
  'license_settings' => array(
57
+ 'has_updates' => true,
58
+ 'provider' => 'freemius', // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
59
+ 'slug' => 'instagram-slider-widget-premium', // Слаг плагина в выбранном поставщике лицензий и обновлений
60
+ 'plugin_id' => '4272', // ID плагина в freemius.com
61
+ 'public_key' => 'pk_5152229a4aba03187267a8bc88874', // Публичный ключ плагина в freemius.com
62
+ 'price' => 39, // Минимальная цена плагина, выводится в рекламных блоках
63
  // Настройка обновлений премиум плагина
64
  'updates_settings' => array(
65
  'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
80
  // Подключаемые модуль фреймворка
81
  // Необходимые для ускоренной разработки продуктов Webcrfatic
82
  'load_factory_modules' => array(
83
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_423', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
84
+ array( 'libs/factory/forms', 'factory_forms_420', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
85
+ array( 'libs/factory/pages', 'factory_pages_422', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
86
+ array( 'libs/factory/freemius', 'factory_freemius_110', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
87
+ array( 'libs/factory/adverts', 'factory_adverts_104', 'admin') // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
88
  )
89
  );
90
 
91
+ $wis_compatibility = new Wbcr_Factory422_Requirements( __FILE__, array_merge( $plugin_info, array(
92
  'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
93
  'required_php_version' => '5.4',
94
  'required_wp_version' => '4.2.0',
145
  add_action( 'network_admin_notices', $wis_plugin_error_func );
146
  }
147
 
148
+ define('WIS_INSTAGRAM_CLIENT_ID', '217c51471f2f4e11abaeaef4a12b99a4');
149
  /*******************************************************************************/
150
  /**
151
  * On widgets Init register Widget
152
  */
153
+ require_once WIS_PLUGIN_DIR."/includes/class-wis_instagram_slider.php";
154
  add_action( 'widgets_init', array( 'WIS_InstagramSlider', 'register_widget' ) );
155
  ?>
languages/index.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php
2
+ // Silence is golden.
languages/instagram-slider-widget-en_US.mo ADDED
Binary file
languages/instagram-slider-widget-en_US.po ADDED
@@ -0,0 +1,628 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Social Slider Widget\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-11-08 05:43+0000\n"
6
+ "PO-Revision-Date: 2019-11-08 05:46+0000\n"
7
+ "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
+ "Language-Team: \n"
9
+ "Language: en_US\n"
10
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Generator: Loco https://localise.biz/\n"
15
+ "X-Loco-Version: 2.3.1; wp-5.2.4"
16
+
17
+ #: includes/class-wis_instagram_slider.php:283
18
+ msgid " Turn on to save Instagram Images into WordPress media library."
19
+ msgstr ""
20
+
21
+ #: includes/class-wis_instagram_slider.php:450
22
+ msgid ""
23
+ "* use this field only if the above option is set to <strong>Custom "
24
+ "Link</strong>"
25
+ msgstr ""
26
+
27
+ #: includes/class-wis_instagram_slider.php:94
28
+ msgid ""
29
+ "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
30
+ "Copy the shortocde generated at the bottom of the widget form and use it on "
31
+ "posts or pages."
32
+ msgstr ""
33
+
34
+ #: includes/class-wis_instagram_slider.php:394
35
+ msgid "1000 milliseconds = 1 second"
36
+ msgstr ""
37
+
38
+ #: admin/views/tab-license.php:134
39
+ #, php-format
40
+ msgid ""
41
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
42
+ "premium version and get the license key to activate it now!"
43
+ msgstr ""
44
+
45
+ #: includes/class-wis_instagram_slider.php:422
46
+ msgid ""
47
+ "<strong>Square - Cropped</strong> - option will show square cropped images "
48
+ "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
49
+ "the original user uploaded image size."
50
+ msgstr ""
51
+
52
+ #: includes/class-wis_instagram_slider.php:42
53
+ msgid "A widget that displays a slider with instagram images "
54
+ msgstr ""
55
+
56
+ #: admin/pages/about.php:44
57
+ msgid "About"
58
+ msgstr ""
59
+
60
+ #: admin/pages/about.php:43
61
+ msgid "About Social Slider Widget"
62
+ msgstr ""
63
+
64
+ #: includes/class-wis_instagram_slider.php:1552
65
+ msgid "Account deleted successfully"
66
+ msgstr ""
67
+
68
+ #: includes/class-wis_instagram_slider.php:1131
69
+ msgid ""
70
+ "Account not found or for this account there are restrictions on Instagram by "
71
+ "age"
72
+ msgstr ""
73
+
74
+ #: includes/class-wis_instagram_slider.php:250
75
+ msgid "Account:"
76
+ msgstr ""
77
+
78
+ #: admin/views/tab-settings.php:51
79
+ msgid "Action"
80
+ msgstr ""
81
+
82
+ #: admin/views/tab-license.php:11
83
+ #, php-format
84
+ msgid "Activate %s"
85
+ msgstr ""
86
+
87
+ #: admin/views/tab-license.php:84
88
+ msgid "active sites"
89
+ msgstr ""
90
+
91
+ #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
92
+ msgid "Add Account"
93
+ msgstr ""
94
+
95
+ #: includes/class-wis_instagram_slider.php:267
96
+ msgid "Add account in settings"
97
+ msgstr ""
98
+
99
+ #: includes/class-wis-plugin.php:127
100
+ msgid "Are you sure want to delete this account?"
101
+ msgstr ""
102
+
103
+ #: includes/class-wis_instagram_slider.php:441
104
+ msgid "Attachment Page"
105
+ msgstr ""
106
+
107
+ #: admin/views/tab-about.php:149
108
+ msgid "BENEFITS"
109
+ msgstr ""
110
+
111
+ #: includes/class-wis_instagram_slider.php:275
112
+ msgid "Block Users"
113
+ msgstr ""
114
+
115
+ #: admin/views/tab-license.php:138
116
+ #, php-format
117
+ msgid ""
118
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
119
+ "this page</a> and login using the e-mail address associated with your "
120
+ "purchase."
121
+ msgstr ""
122
+
123
+ #: includes/class-wis_instagram_slider.php:400
124
+ msgid "Caption"
125
+ msgstr ""
126
+
127
+ #: includes/class-wis_instagram_slider.php:305
128
+ msgid "Check for new images every:"
129
+ msgstr ""
130
+
131
+ #: includes/class-wis_instagram_slider.php:293
132
+ msgid "Count of images to show:"
133
+ msgstr ""
134
+
135
+ #. Author of the plugin
136
+ msgid "creativemotion"
137
+ msgstr ""
138
+
139
+ #: includes/class-wis_instagram_slider.php:442
140
+ msgid "Custom Link"
141
+ msgstr ""
142
+
143
+ #: includes/class-wis_instagram_slider.php:448
144
+ msgid "Custom link:"
145
+ msgstr ""
146
+
147
+ #: includes/class-wis_instagram_slider.php:427
148
+ msgid "Date - Ascending"
149
+ msgstr ""
150
+
151
+ #: includes/class-wis_instagram_slider.php:428
152
+ msgid "Date - Descending"
153
+ msgstr ""
154
+
155
+ #: admin/views/tab-license.php:105
156
+ msgid "day(s)"
157
+ msgstr ""
158
+
159
+ #: admin/views/tab-settings.php:72
160
+ msgid "Delete"
161
+ msgstr ""
162
+
163
+ #: admin/views/tab-license.php:31
164
+ msgid "Delete Key"
165
+ msgstr ""
166
+
167
+ #: admin/views/tab-about.php:123
168
+ msgid ""
169
+ "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
170
+ "shortcodes."
171
+ msgstr ""
172
+
173
+ #: admin/views/tab-license.php:72
174
+ msgid "domain"
175
+ msgstr ""
176
+
177
+ #: includes/class-wis_instagram_slider.php:384
178
+ msgid "Dotted"
179
+ msgstr ""
180
+
181
+ #: includes/class-wis_instagram_slider.php:277
182
+ msgid "Enter usernames separated by commas whose images you don't want to show"
183
+ msgstr ""
184
+
185
+ #: admin/views/tab-license.php:94
186
+ msgid "EXPIRED!"
187
+ msgstr ""
188
+
189
+ #: includes/class-wis_instagram_slider.php:389
190
+ msgid "Fade"
191
+ msgstr ""
192
+
193
+ #: admin/views/tab-about.php:128
194
+ msgid "FEATURES"
195
+ msgstr ""
196
+
197
+ #: admin/views/tab-about.php:200
198
+ msgid "FEEDBACK AND SUPPORT"
199
+ msgstr ""
200
+
201
+ #: includes/class-wis_instagram_slider.php:420
202
+ msgid "Full Size"
203
+ msgstr ""
204
+
205
+ #: admin/pages/settings.php:148
206
+ msgid "General"
207
+ msgstr ""
208
+
209
+ #: includes/class-wis_instagram_slider.php:272
210
+ msgid "Hashtag:"
211
+ msgstr ""
212
+
213
+ #: admin/views/tab-license.php:120
214
+ msgid "Have a key to activate the plugin? Paste it here:"
215
+ msgstr ""
216
+
217
+ #: admin/views/tab-license.php:118
218
+ msgid "Have a key to activate the premium version? Paste it here:"
219
+ msgstr ""
220
+
221
+ #: includes/class-wis_instagram_slider.php:402
222
+ msgid ""
223
+ "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
224
+ "all unselected to hide them all. Default all selected."
225
+ msgstr ""
226
+
227
+ #: includes/class-wis_instagram_slider.php:307
228
+ msgid "hours"
229
+ msgstr ""
230
+
231
+ #. Author URI of the plugin
232
+ msgid "https://cm-wp.com/"
233
+ msgstr ""
234
+
235
+ #. URI of the plugin
236
+ msgid "https://cm-wp.com/instagram-slider-widget"
237
+ msgstr ""
238
+
239
+ #: admin/views/tab-settings.php:47
240
+ msgid "ID"
241
+ msgstr ""
242
+
243
+ #: admin/views/tab-settings.php:46
244
+ msgid "Image"
245
+ msgstr ""
246
+
247
+ #: includes/class-wis_instagram_slider.php:415
248
+ msgid "Image format"
249
+ msgstr ""
250
+
251
+ #: includes/class-wis_instagram_slider.php:440
252
+ msgid "Image URL"
253
+ msgstr ""
254
+
255
+ #: includes/class-wis_instagram_slider.php:354
256
+ msgid "Image width:"
257
+ msgstr ""
258
+
259
+ #: admin/pages/settings.php:158
260
+ msgid "Instagram account"
261
+ msgstr ""
262
+
263
+ #: includes/class-wis_instagram_slider.php:438
264
+ msgid "Instagram Image"
265
+ msgstr ""
266
+
267
+ #: admin/pages/settings.php:166
268
+ msgid "Instagram password"
269
+ msgstr ""
270
+
271
+ #: includes/class-wis_instagram_slider.php:439
272
+ msgid "Instagram Profile"
273
+ msgstr ""
274
+
275
+ #: includes/class-wis_instagram_slider.php:1161
276
+ msgid ""
277
+ "Instagram requires authorization to view a user profile. Use autorized "
278
+ "account in widget settings"
279
+ msgstr ""
280
+
281
+ #: admin/pages/license.php:90
282
+ msgid "License"
283
+ msgstr ""
284
+
285
+ #: admin/ajax/check-license.php:39
286
+ msgid ""
287
+ "License key is empty or license key too long (license key is 32 characters "
288
+ "long)"
289
+ msgstr ""
290
+
291
+ #: admin/pages/license.php:91
292
+ msgid "License of Social Slider Widget"
293
+ msgstr ""
294
+
295
+ #: admin/ajax/check-license.php:27
296
+ msgid "Licensing action not passed or this action is prohibited!"
297
+ msgstr ""
298
+
299
+ #: includes/class-wis_instagram_slider.php:436
300
+ msgid "Link to"
301
+ msgstr ""
302
+
303
+ #: includes/class-wis_instagram_slider.php:418
304
+ msgid "Low - 320x320"
305
+ msgstr ""
306
+
307
+ #: includes/class-wis_instagram_slider.php:345
308
+ msgid "max is 10 ( only for thumbnails template )"
309
+ msgstr ""
310
+
311
+ #: includes/class-wis_instagram_slider.php:297
312
+ msgid "Maximum 20 images in free version."
313
+ msgstr ""
314
+
315
+ #: includes/class-wis_instagram_slider.php:393
316
+ msgid "milliseconds"
317
+ msgstr ""
318
+
319
+ #: admin/views/tab-settings.php:33
320
+ #, php-format
321
+ msgid "More accounts in <a href='%s'>PRO version</a>"
322
+ msgstr ""
323
+
324
+ #: includes/class-wis_instagram_slider.php:298
325
+ #, php-format
326
+ msgid "More in <a href='%s'>PRO version</a>"
327
+ msgstr ""
328
+
329
+ #: admin/views/tab-settings.php:49
330
+ msgid "Name"
331
+ msgstr ""
332
+
333
+ #: includes/class-wis_instagram_slider.php:1214
334
+ msgid "No images found"
335
+ msgstr ""
336
+
337
+ #: includes/class-wis_instagram_slider.php:688
338
+ msgid "No images found! <br> Try some other hashtag or username"
339
+ msgstr ""
340
+
341
+ #: includes/class-wis_instagram_slider.php:385
342
+ msgid "No Navigation"
343
+ msgstr ""
344
+
345
+ #: includes/class-wis_instagram_slider.php:443
346
+ msgid "None"
347
+ msgstr ""
348
+
349
+ #: includes/class-wis_instagram_slider.php:1100
350
+ msgid "Nothing to search for"
351
+ msgstr ""
352
+
353
+ #: includes/class-wis_instagram_slider.php:343
354
+ msgid "Number of Columns:"
355
+ msgstr ""
356
+
357
+ #: includes/class-wis_instagram_slider.php:410
358
+ msgid "Number of words in caption:"
359
+ msgstr ""
360
+
361
+ #: admin/views/tab-license.php:82
362
+ msgid "of"
363
+ msgstr ""
364
+
365
+ #: includes/class-wis_instagram_slider.php:372
366
+ msgid "Offset"
367
+ msgstr ""
368
+
369
+ #: includes/class-wis_instagram_slider.php:425
370
+ msgid "Order by"
371
+ msgstr ""
372
+
373
+ #: admin/pages/settings.php:168
374
+ msgid "Password of your Instagram account"
375
+ msgstr ""
376
+
377
+ #: includes/class-wis_instagram_slider.php:376
378
+ msgid "Pattern"
379
+ msgstr ""
380
+
381
+ #: includes/class-wis_instagram_slider.php:362
382
+ msgid "pictures"
383
+ msgstr ""
384
+
385
+ #: includes/class-wis_instagram_slider.php:360
386
+ msgid "Pictures per slide:"
387
+ msgstr ""
388
+
389
+ #: admin/views/tab-license.php:76
390
+ msgid "plan"
391
+ msgstr ""
392
+
393
+ #: admin/views/tab-license.php:95
394
+ msgid "please update the key"
395
+ msgstr ""
396
+
397
+ #: includes/class-wis_instagram_slider.php:429
398
+ msgid "Popularity - Ascending"
399
+ msgstr ""
400
+
401
+ #: includes/class-wis_instagram_slider.php:430
402
+ msgid "Popularity - Descending"
403
+ msgstr ""
404
+
405
+ #: includes/class-wis_instagram_slider.php:383
406
+ msgid "Prev & Next"
407
+ msgstr ""
408
+
409
+ #: admin/views/tab-about.php:163
410
+ msgid "PRO VERSION"
411
+ msgstr ""
412
+
413
+ #: admin/views/tab-license.php:54
414
+ msgid ""
415
+ "Public License is a GPLv2 compatible license allowing you to change and use "
416
+ "this version of the plugin for free. Please keep in mind this license covers "
417
+ "only free edition of the plugin. Premium versions are distributed with other "
418
+ "type of a license."
419
+ msgstr ""
420
+
421
+ #: includes/class-wis_instagram_slider.php:351
422
+ #: includes/class-wis_instagram_slider.php:356
423
+ msgid "px"
424
+ msgstr ""
425
+
426
+ #: includes/class-wis_instagram_slider.php:431
427
+ msgid "Random"
428
+ msgstr ""
429
+
430
+ #: admin/views/tab-license.php:107
431
+ msgid "remained"
432
+ msgstr ""
433
+
434
+ #: includes/class-wis_instagram_slider.php:279
435
+ msgid "Save in Media Library: "
436
+ msgstr ""
437
+
438
+ #: includes/class-wis_instagram_slider.php:246
439
+ msgid "Search Instagram for:"
440
+ msgstr ""
441
+
442
+ #: admin/pages/settings.php:108
443
+ msgid "Settings"
444
+ msgstr ""
445
+
446
+ #: admin/pages/settings.php:107
447
+ msgid "Settings of Social Slider Widget"
448
+ msgstr ""
449
+
450
+ #: includes/class-wis_instagram_slider.php:486
451
+ msgid "Shortcode of this Widget:"
452
+ msgstr ""
453
+
454
+ #: includes/class-wis_instagram_slider.php:311
455
+ msgid "Show feed header:"
456
+ msgstr ""
457
+
458
+ #: includes/class-wis_instagram_slider.php:388
459
+ msgid "Slide"
460
+ msgstr ""
461
+
462
+ #: includes/class-wis_instagram_slider.php:391
463
+ msgid "Slide Speed:"
464
+ msgstr ""
465
+
466
+ #: includes/class-wis_instagram_slider.php:387
467
+ msgid "Slider Animation:"
468
+ msgstr ""
469
+
470
+ #: includes/class-wis_instagram_slider.php:382
471
+ msgid "Slider Navigation Controls:"
472
+ msgstr ""
473
+
474
+ #: includes/class-wis_instagram_slider.php:396
475
+ msgid "Slider Text Description:"
476
+ msgstr ""
477
+
478
+ #: includes/class-wis_instagram_slider.php:40
479
+ #: includes/class-wis_instagram_slider.php:204
480
+ msgid "Social Slider"
481
+ msgstr ""
482
+
483
+ #: includes/class-wis_instagram_slider.php:92
484
+ msgid "Social Slider - Shortcode Generator"
485
+ msgstr ""
486
+
487
+ #. Name of the plugin
488
+ #: instaram_slider.php:26 admin/views/tab-about.php:122
489
+ msgid "Social Slider Widget"
490
+ msgstr ""
491
+
492
+ #. Description of the plugin
493
+ msgid ""
494
+ "Social Slider Widget is a responsive slider widget that shows 12 latest "
495
+ "images from a public Instagram user and up to 18 images from a hashtag."
496
+ msgstr ""
497
+
498
+ #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
499
+ msgid "Social Slider Widgets"
500
+ msgstr ""
501
+
502
+ #: includes/class-wis_instagram_slider.php:365
503
+ msgid "Space between pictures:"
504
+ msgstr ""
505
+
506
+ #: includes/class-wis_instagram_slider.php:419
507
+ msgid "Standard - 640x640"
508
+ msgstr ""
509
+
510
+ #: admin/views/tab-license.php:126
511
+ msgid "Submit Key"
512
+ msgstr ""
513
+
514
+ #: admin/ajax/check-license.php:55
515
+ msgid "Subscription success cancelled"
516
+ msgstr ""
517
+
518
+ #: admin/views/tab-license.php:35
519
+ msgid "Synchronization"
520
+ msgstr ""
521
+
522
+ #: includes/class-wis_instagram_slider.php:318
523
+ msgid "Template"
524
+ msgstr ""
525
+
526
+ #: admin/ajax/check-license.php:51
527
+ msgid "The license has been updated"
528
+ msgstr ""
529
+
530
+ #: admin/ajax/check-license.php:47
531
+ msgid "The license is deactivated"
532
+ msgstr ""
533
+
534
+ #: includes/class-wis_instagram_slider.php:1182
535
+ msgid "There are no publications in this account yet"
536
+ msgstr ""
537
+
538
+ #: includes/class-wis_instagram_slider.php:417
539
+ msgid "Thumbnail - 150x150"
540
+ msgstr ""
541
+
542
+ #: includes/class-wis_instagram_slider.php:399
543
+ msgid "Time"
544
+ msgstr ""
545
+
546
+ #: includes/class-wis_instagram_slider.php:242
547
+ msgid "Title:"
548
+ msgstr ""
549
+
550
+ #: admin/views/tab-settings.php:50
551
+ msgid "Token"
552
+ msgstr ""
553
+
554
+ #: admin/views/tab-license.php:22
555
+ #, php-format
556
+ msgid "Upgrade to Premium for $%s"
557
+ msgstr ""
558
+
559
+ #: includes/class-wis_instagram_slider.php:488
560
+ msgid ""
561
+ "Use this shortcode in any page or post to display images with this widget "
562
+ "configuration!"
563
+ msgstr ""
564
+
565
+ #: admin/views/tab-settings.php:48
566
+ msgid "User"
567
+ msgstr ""
568
+
569
+ #: includes/class-wis_instagram_slider.php:398
570
+ msgid "Username"
571
+ msgstr ""
572
+
573
+ #: admin/pages/settings.php:160
574
+ msgid "Username of your Instagram account"
575
+ msgstr ""
576
+
577
+ #: includes/class-wis_instagram_slider.php:271
578
+ msgid "Username:"
579
+ msgstr ""
580
+
581
+ #: admin/views/tab-license.php:89
582
+ msgid "version"
583
+ msgstr ""
584
+
585
+ #: includes/class-wis_instagram_slider.php:349
586
+ msgid "Vertical space between item elements:"
587
+ msgstr ""
588
+
589
+ #: admin/views/tab-about.php:209
590
+ msgid "WHY DO YOU NEED IT?"
591
+ msgstr ""
592
+
593
+ #: admin/pages/widgets.php:109
594
+ msgid "Widgets"
595
+ msgstr ""
596
+
597
+ #: includes/class-wis_instagram_slider.php:272
598
+ msgid "without # sign"
599
+ msgstr ""
600
+
601
+ #: admin/views/tab-settings.php:21
602
+ msgid ""
603
+ "Without authorization Instagram limits the number of requests, and after "
604
+ "exceeding the limit asks to log in, so an error is displayed that no images "
605
+ "were found."
606
+ msgstr ""
607
+
608
+ #: admin/views/tab-license.php:58
609
+ msgid ""
610
+ "You use a paid subscription for the plugin updates. In case you don’t want "
611
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
612
+ "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
613
+ msgstr ""
614
+
615
+ #: admin/views/tab-license.php:25
616
+ #, php-format
617
+ msgid "Your current license for %1$s:"
618
+ msgstr ""
619
+
620
+ #: admin/ajax/check-license.php:42
621
+ msgid "Your license has been successfully activated"
622
+ msgstr ""
623
+
624
+ #: admin/views/tab-license.php:64
625
+ msgid ""
626
+ "Your license has expired, please extend the license to get updates and "
627
+ "support."
628
+ msgstr ""
languages/instagram-slider-widget-ru_RU.mo ADDED
Binary file
languages/instagram-slider-widget-ru_RU.po ADDED
@@ -0,0 +1,644 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Social Slider Widget\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-11-08 05:43+0000\n"
6
+ "PO-Revision-Date: 2019-11-08 07:03+0000\n"
7
+ "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
+ "Language-Team: Русский\n"
9
+ "Language: ru_RU\n"
10
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
11
+ "n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.3.1; wp-5.2.4"
17
+
18
+ #: includes/class-wis_instagram_slider.php:283
19
+ msgid " Turn on to save Instagram Images into WordPress media library."
20
+ msgstr "Сохранять изображения в медиабиблиотеке Wordpress"
21
+
22
+ #: includes/class-wis_instagram_slider.php:450
23
+ msgid ""
24
+ "* use this field only if the above option is set to <strong>Custom "
25
+ "Link</strong>"
26
+ msgstr ""
27
+ "* используйте это поле только в том случае, если для параметра выше задано "
28
+ "значение <strong>Произвольная ссылка</strong>"
29
+
30
+ #: includes/class-wis_instagram_slider.php:94
31
+ msgid ""
32
+ "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
33
+ "Copy the shortocde generated at the bottom of the widget form and use it on "
34
+ "posts or pages."
35
+ msgstr ""
36
+ "1. Перетащите Social Slider Widget сюда. 2. Заполните поля и нажмите "
37
+ "Сохранить. 3. Скопируйте шорткод, созданный в нижней части формы виджета, и "
38
+ "используйте его в постах или страницах."
39
+
40
+ #: includes/class-wis_instagram_slider.php:394
41
+ msgid "1000 milliseconds = 1 second"
42
+ msgstr "1000 миллисекунд = 1 секунда"
43
+
44
+ #: admin/views/tab-license.php:134
45
+ #, php-format
46
+ msgid ""
47
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
48
+ "premium version and get the license key to activate it now!"
49
+ msgstr ""
50
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Узнайте больше</a> о "
51
+ "премиум версии и получите лицензионный ключ, чтобы активировать его сейчас!"
52
+
53
+ #: includes/class-wis_instagram_slider.php:422
54
+ msgid ""
55
+ "<strong>Square - Cropped</strong> - option will show square cropped images "
56
+ "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
57
+ "the original user uploaded image size."
58
+ msgstr ""
59
+
60
+ #: includes/class-wis_instagram_slider.php:42
61
+ msgid "A widget that displays a slider with instagram images "
62
+ msgstr "Виджет, который отображает слайдер с изображениями instagram"
63
+
64
+ #: admin/pages/about.php:44
65
+ msgid "About"
66
+ msgstr "О плагине"
67
+
68
+ #: admin/pages/about.php:43
69
+ msgid "About Social Slider Widget"
70
+ msgstr "Описание Social Slider Widget"
71
+
72
+ #: includes/class-wis_instagram_slider.php:1552
73
+ msgid "Account deleted successfully"
74
+ msgstr ""
75
+
76
+ #: includes/class-wis_instagram_slider.php:1131
77
+ msgid ""
78
+ "Account not found or for this account there are restrictions on Instagram by "
79
+ "age"
80
+ msgstr ""
81
+ "Аккаунт не найден или для этого аккаунта действуют возрастные ограничения"
82
+
83
+ #: includes/class-wis_instagram_slider.php:250
84
+ msgid "Account:"
85
+ msgstr "Аккаунт:"
86
+
87
+ #: admin/views/tab-settings.php:51
88
+ msgid "Action"
89
+ msgstr "Действия"
90
+
91
+ #: admin/views/tab-license.php:11
92
+ #, php-format
93
+ msgid "Activate %s"
94
+ msgstr ""
95
+
96
+ #: admin/views/tab-license.php:84
97
+ msgid "active sites"
98
+ msgstr ""
99
+
100
+ #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
101
+ msgid "Add Account"
102
+ msgstr "Добавить аккаунт"
103
+
104
+ #: includes/class-wis_instagram_slider.php:267
105
+ msgid "Add account in settings"
106
+ msgstr "Добавить аккаунт в настройках"
107
+
108
+ #: includes/class-wis-plugin.php:127
109
+ msgid "Are you sure want to delete this account?"
110
+ msgstr "Вы уверена, что хотите удалить этот аккаунт?"
111
+
112
+ #: includes/class-wis_instagram_slider.php:441
113
+ msgid "Attachment Page"
114
+ msgstr ""
115
+
116
+ #: admin/views/tab-about.php:149
117
+ msgid "BENEFITS"
118
+ msgstr ""
119
+
120
+ #: includes/class-wis_instagram_slider.php:275
121
+ msgid "Block Users"
122
+ msgstr "Заблокированные пользователи"
123
+
124
+ #: admin/views/tab-license.php:138
125
+ #, php-format
126
+ msgid ""
127
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
128
+ "this page</a> and login using the e-mail address associated with your "
129
+ "purchase."
130
+ msgstr ""
131
+
132
+ #: includes/class-wis_instagram_slider.php:400
133
+ msgid "Caption"
134
+ msgstr "Заголовок"
135
+
136
+ #: includes/class-wis_instagram_slider.php:305
137
+ msgid "Check for new images every:"
138
+ msgstr "Проверять новые изображения каждые:"
139
+
140
+ #: includes/class-wis_instagram_slider.php:293
141
+ msgid "Count of images to show:"
142
+ msgstr "Кол-во изображений для показа:"
143
+
144
+ #. Author of the plugin
145
+ msgid "creativemotion"
146
+ msgstr "creativemotion"
147
+
148
+ #: includes/class-wis_instagram_slider.php:442
149
+ msgid "Custom Link"
150
+ msgstr "Произвольная ссылка"
151
+
152
+ #: includes/class-wis_instagram_slider.php:448
153
+ msgid "Custom link:"
154
+ msgstr "Произвольная ссылка:"
155
+
156
+ #: includes/class-wis_instagram_slider.php:427
157
+ msgid "Date - Ascending"
158
+ msgstr "Дата - по возрастанию"
159
+
160
+ #: includes/class-wis_instagram_slider.php:428
161
+ msgid "Date - Descending"
162
+ msgstr "Дата - по убыванию"
163
+
164
+ #: admin/views/tab-license.php:105
165
+ msgid "day(s)"
166
+ msgstr ""
167
+
168
+ #: admin/views/tab-settings.php:72
169
+ msgid "Delete"
170
+ msgstr ""
171
+
172
+ #: admin/views/tab-license.php:31
173
+ msgid "Delete Key"
174
+ msgstr ""
175
+
176
+ #: admin/views/tab-about.php:123
177
+ msgid ""
178
+ "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
179
+ "shortcodes."
180
+ msgstr ""
181
+
182
+ #: admin/views/tab-license.php:72
183
+ msgid "domain"
184
+ msgstr ""
185
+
186
+ #: includes/class-wis_instagram_slider.php:384
187
+ msgid "Dotted"
188
+ msgstr ""
189
+
190
+ #: includes/class-wis_instagram_slider.php:277
191
+ msgid "Enter usernames separated by commas whose images you don't want to show"
192
+ msgstr ""
193
+ "Введите имена пользователей, разделенные запятыми, изображения которых вы не "
194
+ "хотите показывать"
195
+
196
+ #: admin/views/tab-license.php:94
197
+ msgid "EXPIRED!"
198
+ msgstr ""
199
+
200
+ #: includes/class-wis_instagram_slider.php:389
201
+ msgid "Fade"
202
+ msgstr ""
203
+
204
+ #: admin/views/tab-about.php:128
205
+ msgid "FEATURES"
206
+ msgstr ""
207
+
208
+ #: admin/views/tab-about.php:200
209
+ msgid "FEEDBACK AND SUPPORT"
210
+ msgstr ""
211
+
212
+ #: includes/class-wis_instagram_slider.php:420
213
+ msgid "Full Size"
214
+ msgstr ""
215
+
216
+ #: admin/pages/settings.php:148
217
+ msgid "General"
218
+ msgstr ""
219
+
220
+ #: includes/class-wis_instagram_slider.php:272
221
+ msgid "Hashtag:"
222
+ msgstr "Хэштэг:"
223
+
224
+ #: admin/views/tab-license.php:120
225
+ msgid "Have a key to activate the plugin? Paste it here:"
226
+ msgstr ""
227
+
228
+ #: admin/views/tab-license.php:118
229
+ msgid "Have a key to activate the premium version? Paste it here:"
230
+ msgstr ""
231
+
232
+ #: includes/class-wis_instagram_slider.php:402
233
+ msgid ""
234
+ "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
235
+ "all unselected to hide them all. Default all selected."
236
+ msgstr ""
237
+
238
+ #: includes/class-wis_instagram_slider.php:307
239
+ msgid "hours"
240
+ msgstr "часов"
241
+
242
+ #. Author URI of the plugin
243
+ msgid "https://cm-wp.com/"
244
+ msgstr ""
245
+
246
+ #. URI of the plugin
247
+ msgid "https://cm-wp.com/instagram-slider-widget"
248
+ msgstr ""
249
+
250
+ #: admin/views/tab-settings.php:47
251
+ msgid "ID"
252
+ msgstr ""
253
+
254
+ #: admin/views/tab-settings.php:46
255
+ msgid "Image"
256
+ msgstr "Аватар"
257
+
258
+ #: includes/class-wis_instagram_slider.php:415
259
+ msgid "Image format"
260
+ msgstr "Формат изображения"
261
+
262
+ #: includes/class-wis_instagram_slider.php:440
263
+ msgid "Image URL"
264
+ msgstr "Ссылка на изображение"
265
+
266
+ #: includes/class-wis_instagram_slider.php:354
267
+ msgid "Image width:"
268
+ msgstr "Ширина изображения:"
269
+
270
+ #: admin/pages/settings.php:158
271
+ msgid "Instagram account"
272
+ msgstr ""
273
+
274
+ #: includes/class-wis_instagram_slider.php:438
275
+ msgid "Instagram Image"
276
+ msgstr "Страница поста"
277
+
278
+ #: admin/pages/settings.php:166
279
+ msgid "Instagram password"
280
+ msgstr ""
281
+
282
+ #: includes/class-wis_instagram_slider.php:439
283
+ msgid "Instagram Profile"
284
+ msgstr "Страница Инстаграм"
285
+
286
+ #: includes/class-wis_instagram_slider.php:1161
287
+ msgid ""
288
+ "Instagram requires authorization to view a user profile. Use autorized "
289
+ "account in widget settings"
290
+ msgstr ""
291
+
292
+ #: admin/pages/license.php:90
293
+ msgid "License"
294
+ msgstr ""
295
+
296
+ #: admin/ajax/check-license.php:39
297
+ msgid ""
298
+ "License key is empty or license key too long (license key is 32 characters "
299
+ "long)"
300
+ msgstr ""
301
+
302
+ #: admin/pages/license.php:91
303
+ msgid "License of Social Slider Widget"
304
+ msgstr ""
305
+
306
+ #: admin/ajax/check-license.php:27
307
+ msgid "Licensing action not passed or this action is prohibited!"
308
+ msgstr ""
309
+
310
+ #: includes/class-wis_instagram_slider.php:436
311
+ msgid "Link to"
312
+ msgstr "Ссылка на:"
313
+
314
+ #: includes/class-wis_instagram_slider.php:418
315
+ msgid "Low - 320x320"
316
+ msgstr ""
317
+
318
+ #: includes/class-wis_instagram_slider.php:345
319
+ msgid "max is 10 ( only for thumbnails template )"
320
+ msgstr "максимум 10 (только для шаблона thumbnails)"
321
+
322
+ #: includes/class-wis_instagram_slider.php:297
323
+ msgid "Maximum 20 images in free version."
324
+ msgstr "Максимум 20 изображений в бесплатной версии"
325
+
326
+ #: includes/class-wis_instagram_slider.php:393
327
+ msgid "milliseconds"
328
+ msgstr "миллисекунд"
329
+
330
+ #: admin/views/tab-settings.php:33
331
+ #, php-format
332
+ msgid "More accounts in <a href='%s'>PRO version</a>"
333
+ msgstr "Больше аккаунтов в <a href='%s'>PRO версии</a>"
334
+
335
+ #: includes/class-wis_instagram_slider.php:298
336
+ #, php-format
337
+ msgid "More in <a href='%s'>PRO version</a>"
338
+ msgstr "Больше в <a href='%s'>PRO версии</a>"
339
+
340
+ #: admin/views/tab-settings.php:49
341
+ msgid "Name"
342
+ msgstr "Имя"
343
+
344
+ #: includes/class-wis_instagram_slider.php:1214
345
+ msgid "No images found"
346
+ msgstr ""
347
+
348
+ #: includes/class-wis_instagram_slider.php:688
349
+ msgid "No images found! <br> Try some other hashtag or username"
350
+ msgstr ""
351
+
352
+ #: includes/class-wis_instagram_slider.php:385
353
+ msgid "No Navigation"
354
+ msgstr ""
355
+
356
+ #: includes/class-wis_instagram_slider.php:443
357
+ msgid "None"
358
+ msgstr ""
359
+
360
+ #: includes/class-wis_instagram_slider.php:1100
361
+ msgid "Nothing to search for"
362
+ msgstr ""
363
+
364
+ #: includes/class-wis_instagram_slider.php:343
365
+ msgid "Number of Columns:"
366
+ msgstr "Кол-во колонок:"
367
+
368
+ #: includes/class-wis_instagram_slider.php:410
369
+ msgid "Number of words in caption:"
370
+ msgstr "Кол-во слов в тексте:"
371
+
372
+ #: admin/views/tab-license.php:82
373
+ msgid "of"
374
+ msgstr ""
375
+
376
+ #: includes/class-wis_instagram_slider.php:372
377
+ msgid "Offset"
378
+ msgstr ""
379
+
380
+ #: includes/class-wis_instagram_slider.php:425
381
+ msgid "Order by"
382
+ msgstr "Сортировка"
383
+
384
+ #: admin/pages/settings.php:168
385
+ msgid "Password of your Instagram account"
386
+ msgstr ""
387
+
388
+ #: includes/class-wis_instagram_slider.php:376
389
+ msgid "Pattern"
390
+ msgstr ""
391
+
392
+ #: includes/class-wis_instagram_slider.php:362
393
+ msgid "pictures"
394
+ msgstr "изображений"
395
+
396
+ #: includes/class-wis_instagram_slider.php:360
397
+ msgid "Pictures per slide:"
398
+ msgstr "Изображений на слайд:"
399
+
400
+ #: admin/views/tab-license.php:76
401
+ msgid "plan"
402
+ msgstr ""
403
+
404
+ #: admin/views/tab-license.php:95
405
+ msgid "please update the key"
406
+ msgstr ""
407
+
408
+ #: includes/class-wis_instagram_slider.php:429
409
+ msgid "Popularity - Ascending"
410
+ msgstr "Популярность - по возрастанию"
411
+
412
+ #: includes/class-wis_instagram_slider.php:430
413
+ msgid "Popularity - Descending"
414
+ msgstr "Популярность - по убыванию"
415
+
416
+ #: includes/class-wis_instagram_slider.php:383
417
+ msgid "Prev & Next"
418
+ msgstr ""
419
+
420
+ #: admin/views/tab-about.php:163
421
+ msgid "PRO VERSION"
422
+ msgstr ""
423
+
424
+ #: admin/views/tab-license.php:54
425
+ msgid ""
426
+ "Public License is a GPLv2 compatible license allowing you to change and use "
427
+ "this version of the plugin for free. Please keep in mind this license covers "
428
+ "only free edition of the plugin. Premium versions are distributed with other "
429
+ "type of a license."
430
+ msgstr ""
431
+
432
+ #: includes/class-wis_instagram_slider.php:351
433
+ #: includes/class-wis_instagram_slider.php:356
434
+ msgid "px"
435
+ msgstr ""
436
+
437
+ #: includes/class-wis_instagram_slider.php:431
438
+ msgid "Random"
439
+ msgstr "Рандом"
440
+
441
+ #: admin/views/tab-license.php:107
442
+ msgid "remained"
443
+ msgstr ""
444
+
445
+ #: includes/class-wis_instagram_slider.php:279
446
+ msgid "Save in Media Library: "
447
+ msgstr "Сохранять в медиабиблиотеке:"
448
+
449
+ #: includes/class-wis_instagram_slider.php:246
450
+ msgid "Search Instagram for:"
451
+ msgstr "Искать в Instagram по:"
452
+
453
+ #: admin/pages/settings.php:108
454
+ msgid "Settings"
455
+ msgstr "Настройки"
456
+
457
+ #: admin/pages/settings.php:107
458
+ msgid "Settings of Social Slider Widget"
459
+ msgstr "Настройки Social Slider Widget"
460
+
461
+ #: includes/class-wis_instagram_slider.php:486
462
+ msgid "Shortcode of this Widget:"
463
+ msgstr "Шорткод виджета:"
464
+
465
+ #: includes/class-wis_instagram_slider.php:311
466
+ msgid "Show feed header:"
467
+ msgstr "Отображать шапку:"
468
+
469
+ #: includes/class-wis_instagram_slider.php:388
470
+ msgid "Slide"
471
+ msgstr ""
472
+
473
+ #: includes/class-wis_instagram_slider.php:391
474
+ msgid "Slide Speed:"
475
+ msgstr ""
476
+
477
+ #: includes/class-wis_instagram_slider.php:387
478
+ msgid "Slider Animation:"
479
+ msgstr ""
480
+
481
+ #: includes/class-wis_instagram_slider.php:382
482
+ msgid "Slider Navigation Controls:"
483
+ msgstr ""
484
+
485
+ #: includes/class-wis_instagram_slider.php:396
486
+ msgid "Slider Text Description:"
487
+ msgstr ""
488
+
489
+ #: includes/class-wis_instagram_slider.php:40
490
+ #: includes/class-wis_instagram_slider.php:204
491
+ msgid "Social Slider"
492
+ msgstr ""
493
+
494
+ #: includes/class-wis_instagram_slider.php:92
495
+ msgid "Social Slider - Shortcode Generator"
496
+ msgstr ""
497
+
498
+ #. Name of the plugin
499
+ #: instaram_slider.php:26 admin/views/tab-about.php:122
500
+ msgid "Social Slider Widget"
501
+ msgstr ""
502
+
503
+ #. Description of the plugin
504
+ msgid ""
505
+ "Social Slider Widget is a responsive slider widget that shows 12 latest "
506
+ "images from a public Instagram user and up to 18 images from a hashtag."
507
+ msgstr ""
508
+
509
+ #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
510
+ msgid "Social Slider Widgets"
511
+ msgstr ""
512
+
513
+ #: includes/class-wis_instagram_slider.php:365
514
+ msgid "Space between pictures:"
515
+ msgstr "Расстояние между изображениями:"
516
+
517
+ #: includes/class-wis_instagram_slider.php:419
518
+ msgid "Standard - 640x640"
519
+ msgstr ""
520
+
521
+ #: admin/views/tab-license.php:126
522
+ msgid "Submit Key"
523
+ msgstr ""
524
+
525
+ #: admin/ajax/check-license.php:55
526
+ msgid "Subscription success cancelled"
527
+ msgstr ""
528
+
529
+ #: admin/views/tab-license.php:35
530
+ msgid "Synchronization"
531
+ msgstr ""
532
+
533
+ #: includes/class-wis_instagram_slider.php:318
534
+ msgid "Template"
535
+ msgstr "Шаблон"
536
+
537
+ #: admin/ajax/check-license.php:51
538
+ msgid "The license has been updated"
539
+ msgstr ""
540
+
541
+ #: admin/ajax/check-license.php:47
542
+ msgid "The license is deactivated"
543
+ msgstr ""
544
+
545
+ #: includes/class-wis_instagram_slider.php:1182
546
+ msgid "There are no publications in this account yet"
547
+ msgstr ""
548
+
549
+ #: includes/class-wis_instagram_slider.php:417
550
+ msgid "Thumbnail - 150x150"
551
+ msgstr ""
552
+
553
+ #: includes/class-wis_instagram_slider.php:399
554
+ msgid "Time"
555
+ msgstr ""
556
+
557
+ #: includes/class-wis_instagram_slider.php:242
558
+ msgid "Title:"
559
+ msgstr "Заголовок:"
560
+
561
+ #: admin/views/tab-settings.php:50
562
+ msgid "Token"
563
+ msgstr "Токен"
564
+
565
+ #: admin/views/tab-license.php:22
566
+ #, php-format
567
+ msgid "Upgrade to Premium for $%s"
568
+ msgstr ""
569
+
570
+ #: includes/class-wis_instagram_slider.php:488
571
+ msgid ""
572
+ "Use this shortcode in any page or post to display images with this widget "
573
+ "configuration!"
574
+ msgstr ""
575
+ "Используйте этот шорткод на любой странице или посте для отображения "
576
+ "изображений с этой конфигурацией виджета."
577
+
578
+ #: admin/views/tab-settings.php:48
579
+ msgid "User"
580
+ msgstr "Аккаунт"
581
+
582
+ #: includes/class-wis_instagram_slider.php:398
583
+ msgid "Username"
584
+ msgstr ""
585
+
586
+ #: admin/pages/settings.php:160
587
+ msgid "Username of your Instagram account"
588
+ msgstr ""
589
+
590
+ #: includes/class-wis_instagram_slider.php:271
591
+ msgid "Username:"
592
+ msgstr "Имя аккаунта:"
593
+
594
+ #: admin/views/tab-license.php:89
595
+ msgid "version"
596
+ msgstr ""
597
+
598
+ #: includes/class-wis_instagram_slider.php:349
599
+ msgid "Vertical space between item elements:"
600
+ msgstr "Вертикальное расстояние между элементами:"
601
+
602
+ #: admin/views/tab-about.php:209
603
+ msgid "WHY DO YOU NEED IT?"
604
+ msgstr ""
605
+
606
+ #: admin/pages/widgets.php:109
607
+ msgid "Widgets"
608
+ msgstr "Виджеты"
609
+
610
+ #: includes/class-wis_instagram_slider.php:272
611
+ msgid "without # sign"
612
+ msgstr "без #"
613
+
614
+ #: admin/views/tab-settings.php:21
615
+ msgid ""
616
+ "Without authorization Instagram limits the number of requests, and after "
617
+ "exceeding the limit asks to log in, so an error is displayed that no images "
618
+ "were found."
619
+ msgstr ""
620
+ "Без авторизации Instagram ограничивает количество запросов, а после "
621
+ "превышения лимита просит войти в систему, поэтому выводится сообщение, что "
622
+ "изображения не найдены."
623
+
624
+ #: admin/views/tab-license.php:58
625
+ msgid ""
626
+ "You use a paid subscription for the plugin updates. In case you don’t want "
627
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
628
+ "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
629
+ msgstr ""
630
+
631
+ #: admin/views/tab-license.php:25
632
+ #, php-format
633
+ msgid "Your current license for %1$s:"
634
+ msgstr ""
635
+
636
+ #: admin/ajax/check-license.php:42
637
+ msgid "Your license has been successfully activated"
638
+ msgstr ""
639
+
640
+ #: admin/views/tab-license.php:64
641
+ msgid ""
642
+ "Your license has expired, please extend the license to get updates and "
643
+ "support."
644
+ msgstr ""
languages/instagram-slider-widget.pot ADDED
@@ -0,0 +1,629 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Project-Id-Version: Social Slider Widget\n"
5
+ "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2019-11-08 05:43+0000\n"
7
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
+ "Language-Team: \n"
10
+ "Language: \n"
11
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.3.1; wp-5.2.4"
17
+
18
+ #: includes/class-wis_instagram_slider.php:283
19
+ msgid " Turn on to save Instagram Images into WordPress media library."
20
+ msgstr ""
21
+
22
+ #: includes/class-wis_instagram_slider.php:450
23
+ msgid ""
24
+ "* use this field only if the above option is set to <strong>Custom "
25
+ "Link</strong>"
26
+ msgstr ""
27
+
28
+ #: includes/class-wis_instagram_slider.php:94
29
+ msgid ""
30
+ "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
31
+ "Copy the shortocde generated at the bottom of the widget form and use it on "
32
+ "posts or pages."
33
+ msgstr ""
34
+
35
+ #: includes/class-wis_instagram_slider.php:394
36
+ msgid "1000 milliseconds = 1 second"
37
+ msgstr ""
38
+
39
+ #: admin/views/tab-license.php:134
40
+ #, php-format
41
+ msgid ""
42
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
43
+ "premium version and get the license key to activate it now!"
44
+ msgstr ""
45
+
46
+ #: includes/class-wis_instagram_slider.php:422
47
+ msgid ""
48
+ "<strong>Square - Cropped</strong> - option will show square cropped images "
49
+ "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
50
+ "the original user uploaded image size."
51
+ msgstr ""
52
+
53
+ #: includes/class-wis_instagram_slider.php:42
54
+ msgid "A widget that displays a slider with instagram images "
55
+ msgstr ""
56
+
57
+ #: admin/pages/about.php:44
58
+ msgid "About"
59
+ msgstr ""
60
+
61
+ #: admin/pages/about.php:43
62
+ msgid "About Social Slider Widget"
63
+ msgstr ""
64
+
65
+ #: includes/class-wis_instagram_slider.php:1552
66
+ msgid "Account deleted successfully"
67
+ msgstr ""
68
+
69
+ #: includes/class-wis_instagram_slider.php:1131
70
+ msgid ""
71
+ "Account not found or for this account there are restrictions on Instagram by "
72
+ "age"
73
+ msgstr ""
74
+
75
+ #: includes/class-wis_instagram_slider.php:250
76
+ msgid "Account:"
77
+ msgstr ""
78
+
79
+ #: admin/views/tab-settings.php:51
80
+ msgid "Action"
81
+ msgstr ""
82
+
83
+ #: admin/views/tab-license.php:11
84
+ #, php-format
85
+ msgid "Activate %s"
86
+ msgstr ""
87
+
88
+ #: admin/views/tab-license.php:84
89
+ msgid "active sites"
90
+ msgstr ""
91
+
92
+ #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
93
+ msgid "Add Account"
94
+ msgstr ""
95
+
96
+ #: includes/class-wis_instagram_slider.php:267
97
+ msgid "Add account in settings"
98
+ msgstr ""
99
+
100
+ #: includes/class-wis-plugin.php:127
101
+ msgid "Are you sure want to delete this account?"
102
+ msgstr ""
103
+
104
+ #: includes/class-wis_instagram_slider.php:441
105
+ msgid "Attachment Page"
106
+ msgstr ""
107
+
108
+ #: admin/views/tab-about.php:149
109
+ msgid "BENEFITS"
110
+ msgstr ""
111
+
112
+ #: includes/class-wis_instagram_slider.php:275
113
+ msgid "Block Users"
114
+ msgstr ""
115
+
116
+ #: admin/views/tab-license.php:138
117
+ #, php-format
118
+ msgid ""
119
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
120
+ "this page</a> and login using the e-mail address associated with your "
121
+ "purchase."
122
+ msgstr ""
123
+
124
+ #: includes/class-wis_instagram_slider.php:400
125
+ msgid "Caption"
126
+ msgstr ""
127
+
128
+ #: includes/class-wis_instagram_slider.php:305
129
+ msgid "Check for new images every:"
130
+ msgstr ""
131
+
132
+ #: includes/class-wis_instagram_slider.php:293
133
+ msgid "Count of images to show:"
134
+ msgstr ""
135
+
136
+ #. Author of the plugin
137
+ msgid "creativemotion"
138
+ msgstr ""
139
+
140
+ #: includes/class-wis_instagram_slider.php:442
141
+ msgid "Custom Link"
142
+ msgstr ""
143
+
144
+ #: includes/class-wis_instagram_slider.php:448
145
+ msgid "Custom link:"
146
+ msgstr ""
147
+
148
+ #: includes/class-wis_instagram_slider.php:427
149
+ msgid "Date - Ascending"
150
+ msgstr ""
151
+
152
+ #: includes/class-wis_instagram_slider.php:428
153
+ msgid "Date - Descending"
154
+ msgstr ""
155
+
156
+ #: admin/views/tab-license.php:105
157
+ msgid "day(s)"
158
+ msgstr ""
159
+
160
+ #: admin/views/tab-settings.php:72
161
+ msgid "Delete"
162
+ msgstr ""
163
+
164
+ #: admin/views/tab-license.php:31
165
+ msgid "Delete Key"
166
+ msgstr ""
167
+
168
+ #: admin/views/tab-about.php:123
169
+ msgid ""
170
+ "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
171
+ "shortcodes."
172
+ msgstr ""
173
+
174
+ #: admin/views/tab-license.php:72
175
+ msgid "domain"
176
+ msgstr ""
177
+
178
+ #: includes/class-wis_instagram_slider.php:384
179
+ msgid "Dotted"
180
+ msgstr ""
181
+
182
+ #: includes/class-wis_instagram_slider.php:277
183
+ msgid "Enter usernames separated by commas whose images you don't want to show"
184
+ msgstr ""
185
+
186
+ #: admin/views/tab-license.php:94
187
+ msgid "EXPIRED!"
188
+ msgstr ""
189
+
190
+ #: includes/class-wis_instagram_slider.php:389
191
+ msgid "Fade"
192
+ msgstr ""
193
+
194
+ #: admin/views/tab-about.php:128
195
+ msgid "FEATURES"
196
+ msgstr ""
197
+
198
+ #: admin/views/tab-about.php:200
199
+ msgid "FEEDBACK AND SUPPORT"
200
+ msgstr ""
201
+
202
+ #: includes/class-wis_instagram_slider.php:420
203
+ msgid "Full Size"
204
+ msgstr ""
205
+
206
+ #: admin/pages/settings.php:148
207
+ msgid "General"
208
+ msgstr ""
209
+
210
+ #: includes/class-wis_instagram_slider.php:272
211
+ msgid "Hashtag:"
212
+ msgstr ""
213
+
214
+ #: admin/views/tab-license.php:120
215
+ msgid "Have a key to activate the plugin? Paste it here:"
216
+ msgstr ""
217
+
218
+ #: admin/views/tab-license.php:118
219
+ msgid "Have a key to activate the premium version? Paste it here:"
220
+ msgstr ""
221
+
222
+ #: includes/class-wis_instagram_slider.php:402
223
+ msgid ""
224
+ "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
225
+ "all unselected to hide them all. Default all selected."
226
+ msgstr ""
227
+
228
+ #: includes/class-wis_instagram_slider.php:307
229
+ msgid "hours"
230
+ msgstr ""
231
+
232
+ #. Author URI of the plugin
233
+ msgid "https://cm-wp.com/"
234
+ msgstr ""
235
+
236
+ #. URI of the plugin
237
+ msgid "https://cm-wp.com/instagram-slider-widget"
238
+ msgstr ""
239
+
240
+ #: admin/views/tab-settings.php:47
241
+ msgid "ID"
242
+ msgstr ""
243
+
244
+ #: admin/views/tab-settings.php:46
245
+ msgid "Image"
246
+ msgstr ""
247
+
248
+ #: includes/class-wis_instagram_slider.php:415
249
+ msgid "Image format"
250
+ msgstr ""
251
+
252
+ #: includes/class-wis_instagram_slider.php:440
253
+ msgid "Image URL"
254
+ msgstr ""
255
+
256
+ #: includes/class-wis_instagram_slider.php:354
257
+ msgid "Image width:"
258
+ msgstr ""
259
+
260
+ #: admin/pages/settings.php:158
261
+ msgid "Instagram account"
262
+ msgstr ""
263
+
264
+ #: includes/class-wis_instagram_slider.php:438
265
+ msgid "Instagram Image"
266
+ msgstr ""
267
+
268
+ #: admin/pages/settings.php:166
269
+ msgid "Instagram password"
270
+ msgstr ""
271
+
272
+ #: includes/class-wis_instagram_slider.php:439
273
+ msgid "Instagram Profile"
274
+ msgstr ""
275
+
276
+ #: includes/class-wis_instagram_slider.php:1161
277
+ msgid ""
278
+ "Instagram requires authorization to view a user profile. Use autorized "
279
+ "account in widget settings"
280
+ msgstr ""
281
+
282
+ #: admin/pages/license.php:90
283
+ msgid "License"
284
+ msgstr ""
285
+
286
+ #: admin/ajax/check-license.php:39
287
+ msgid ""
288
+ "License key is empty or license key too long (license key is 32 characters "
289
+ "long)"
290
+ msgstr ""
291
+
292
+ #: admin/pages/license.php:91
293
+ msgid "License of Social Slider Widget"
294
+ msgstr ""
295
+
296
+ #: admin/ajax/check-license.php:27
297
+ msgid "Licensing action not passed or this action is prohibited!"
298
+ msgstr ""
299
+
300
+ #: includes/class-wis_instagram_slider.php:436
301
+ msgid "Link to"
302
+ msgstr ""
303
+
304
+ #: includes/class-wis_instagram_slider.php:418
305
+ msgid "Low - 320x320"
306
+ msgstr ""
307
+
308
+ #: includes/class-wis_instagram_slider.php:345
309
+ msgid "max is 10 ( only for thumbnails template )"
310
+ msgstr ""
311
+
312
+ #: includes/class-wis_instagram_slider.php:297
313
+ msgid "Maximum 20 images in free version."
314
+ msgstr ""
315
+
316
+ #: includes/class-wis_instagram_slider.php:393
317
+ msgid "milliseconds"
318
+ msgstr ""
319
+
320
+ #: admin/views/tab-settings.php:33
321
+ #, php-format
322
+ msgid "More accounts in <a href='%s'>PRO version</a>"
323
+ msgstr ""
324
+
325
+ #: includes/class-wis_instagram_slider.php:298
326
+ #, php-format
327
+ msgid "More in <a href='%s'>PRO version</a>"
328
+ msgstr ""
329
+
330
+ #: admin/views/tab-settings.php:49
331
+ msgid "Name"
332
+ msgstr ""
333
+
334
+ #: includes/class-wis_instagram_slider.php:1214
335
+ msgid "No images found"
336
+ msgstr ""
337
+
338
+ #: includes/class-wis_instagram_slider.php:688
339
+ msgid "No images found! <br> Try some other hashtag or username"
340
+ msgstr ""
341
+
342
+ #: includes/class-wis_instagram_slider.php:385
343
+ msgid "No Navigation"
344
+ msgstr ""
345
+
346
+ #: includes/class-wis_instagram_slider.php:443
347
+ msgid "None"
348
+ msgstr ""
349
+
350
+ #: includes/class-wis_instagram_slider.php:1100
351
+ msgid "Nothing to search for"
352
+ msgstr ""
353
+
354
+ #: includes/class-wis_instagram_slider.php:343
355
+ msgid "Number of Columns:"
356
+ msgstr ""
357
+
358
+ #: includes/class-wis_instagram_slider.php:410
359
+ msgid "Number of words in caption:"
360
+ msgstr ""
361
+
362
+ #: admin/views/tab-license.php:82
363
+ msgid "of"
364
+ msgstr ""
365
+
366
+ #: includes/class-wis_instagram_slider.php:372
367
+ msgid "Offset"
368
+ msgstr ""
369
+
370
+ #: includes/class-wis_instagram_slider.php:425
371
+ msgid "Order by"
372
+ msgstr ""
373
+
374
+ #: admin/pages/settings.php:168
375
+ msgid "Password of your Instagram account"
376
+ msgstr ""
377
+
378
+ #: includes/class-wis_instagram_slider.php:376
379
+ msgid "Pattern"
380
+ msgstr ""
381
+
382
+ #: includes/class-wis_instagram_slider.php:362
383
+ msgid "pictures"
384
+ msgstr ""
385
+
386
+ #: includes/class-wis_instagram_slider.php:360
387
+ msgid "Pictures per slide:"
388
+ msgstr ""
389
+
390
+ #: admin/views/tab-license.php:76
391
+ msgid "plan"
392
+ msgstr ""
393
+
394
+ #: admin/views/tab-license.php:95
395
+ msgid "please update the key"
396
+ msgstr ""
397
+
398
+ #: includes/class-wis_instagram_slider.php:429
399
+ msgid "Popularity - Ascending"
400
+ msgstr ""
401
+
402
+ #: includes/class-wis_instagram_slider.php:430
403
+ msgid "Popularity - Descending"
404
+ msgstr ""
405
+
406
+ #: includes/class-wis_instagram_slider.php:383
407
+ msgid "Prev & Next"
408
+ msgstr ""
409
+
410
+ #: admin/views/tab-about.php:163
411
+ msgid "PRO VERSION"
412
+ msgstr ""
413
+
414
+ #: admin/views/tab-license.php:54
415
+ msgid ""
416
+ "Public License is a GPLv2 compatible license allowing you to change and use "
417
+ "this version of the plugin for free. Please keep in mind this license covers "
418
+ "only free edition of the plugin. Premium versions are distributed with other "
419
+ "type of a license."
420
+ msgstr ""
421
+
422
+ #: includes/class-wis_instagram_slider.php:351
423
+ #: includes/class-wis_instagram_slider.php:356
424
+ msgid "px"
425
+ msgstr ""
426
+
427
+ #: includes/class-wis_instagram_slider.php:431
428
+ msgid "Random"
429
+ msgstr ""
430
+
431
+ #: admin/views/tab-license.php:107
432
+ msgid "remained"
433
+ msgstr ""
434
+
435
+ #: includes/class-wis_instagram_slider.php:279
436
+ msgid "Save in Media Library: "
437
+ msgstr ""
438
+
439
+ #: includes/class-wis_instagram_slider.php:246
440
+ msgid "Search Instagram for:"
441
+ msgstr ""
442
+
443
+ #: admin/pages/settings.php:108
444
+ msgid "Settings"
445
+ msgstr ""
446
+
447
+ #: admin/pages/settings.php:107
448
+ msgid "Settings of Social Slider Widget"
449
+ msgstr ""
450
+
451
+ #: includes/class-wis_instagram_slider.php:486
452
+ msgid "Shortcode of this Widget:"
453
+ msgstr ""
454
+
455
+ #: includes/class-wis_instagram_slider.php:311
456
+ msgid "Show feed header:"
457
+ msgstr ""
458
+
459
+ #: includes/class-wis_instagram_slider.php:388
460
+ msgid "Slide"
461
+ msgstr ""
462
+
463
+ #: includes/class-wis_instagram_slider.php:391
464
+ msgid "Slide Speed:"
465
+ msgstr ""
466
+
467
+ #: includes/class-wis_instagram_slider.php:387
468
+ msgid "Slider Animation:"
469
+ msgstr ""
470
+
471
+ #: includes/class-wis_instagram_slider.php:382
472
+ msgid "Slider Navigation Controls:"
473
+ msgstr ""
474
+
475
+ #: includes/class-wis_instagram_slider.php:396
476
+ msgid "Slider Text Description:"
477
+ msgstr ""
478
+
479
+ #: includes/class-wis_instagram_slider.php:40
480
+ #: includes/class-wis_instagram_slider.php:204
481
+ msgid "Social Slider"
482
+ msgstr ""
483
+
484
+ #: includes/class-wis_instagram_slider.php:92
485
+ msgid "Social Slider - Shortcode Generator"
486
+ msgstr ""
487
+
488
+ #. Name of the plugin
489
+ #: instaram_slider.php:26 admin/views/tab-about.php:122
490
+ msgid "Social Slider Widget"
491
+ msgstr ""
492
+
493
+ #. Description of the plugin
494
+ msgid ""
495
+ "Social Slider Widget is a responsive slider widget that shows 12 latest "
496
+ "images from a public Instagram user and up to 18 images from a hashtag."
497
+ msgstr ""
498
+
499
+ #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
500
+ msgid "Social Slider Widgets"
501
+ msgstr ""
502
+
503
+ #: includes/class-wis_instagram_slider.php:365
504
+ msgid "Space between pictures:"
505
+ msgstr ""
506
+
507
+ #: includes/class-wis_instagram_slider.php:419
508
+ msgid "Standard - 640x640"
509
+ msgstr ""
510
+
511
+ #: admin/views/tab-license.php:126
512
+ msgid "Submit Key"
513
+ msgstr ""
514
+
515
+ #: admin/ajax/check-license.php:55
516
+ msgid "Subscription success cancelled"
517
+ msgstr ""
518
+
519
+ #: admin/views/tab-license.php:35
520
+ msgid "Synchronization"
521
+ msgstr ""
522
+
523
+ #: includes/class-wis_instagram_slider.php:318
524
+ msgid "Template"
525
+ msgstr ""
526
+
527
+ #: admin/ajax/check-license.php:51
528
+ msgid "The license has been updated"
529
+ msgstr ""
530
+
531
+ #: admin/ajax/check-license.php:47
532
+ msgid "The license is deactivated"
533
+ msgstr ""
534
+
535
+ #: includes/class-wis_instagram_slider.php:1182
536
+ msgid "There are no publications in this account yet"
537
+ msgstr ""
538
+
539
+ #: includes/class-wis_instagram_slider.php:417
540
+ msgid "Thumbnail - 150x150"
541
+ msgstr ""
542
+
543
+ #: includes/class-wis_instagram_slider.php:399
544
+ msgid "Time"
545
+ msgstr ""
546
+
547
+ #: includes/class-wis_instagram_slider.php:242
548
+ msgid "Title:"
549
+ msgstr ""
550
+
551
+ #: admin/views/tab-settings.php:50
552
+ msgid "Token"
553
+ msgstr ""
554
+
555
+ #: admin/views/tab-license.php:22
556
+ #, php-format
557
+ msgid "Upgrade to Premium for $%s"
558
+ msgstr ""
559
+
560
+ #: includes/class-wis_instagram_slider.php:488
561
+ msgid ""
562
+ "Use this shortcode in any page or post to display images with this widget "
563
+ "configuration!"
564
+ msgstr ""
565
+
566
+ #: admin/views/tab-settings.php:48
567
+ msgid "User"
568
+ msgstr ""
569
+
570
+ #: includes/class-wis_instagram_slider.php:398
571
+ msgid "Username"
572
+ msgstr ""
573
+
574
+ #: admin/pages/settings.php:160
575
+ msgid "Username of your Instagram account"
576
+ msgstr ""
577
+
578
+ #: includes/class-wis_instagram_slider.php:271
579
+ msgid "Username:"
580
+ msgstr ""
581
+
582
+ #: admin/views/tab-license.php:89
583
+ msgid "version"
584
+ msgstr ""
585
+
586
+ #: includes/class-wis_instagram_slider.php:349
587
+ msgid "Vertical space between item elements:"
588
+ msgstr ""
589
+
590
+ #: admin/views/tab-about.php:209
591
+ msgid "WHY DO YOU NEED IT?"
592
+ msgstr ""
593
+
594
+ #: admin/pages/widgets.php:109
595
+ msgid "Widgets"
596
+ msgstr ""
597
+
598
+ #: includes/class-wis_instagram_slider.php:272
599
+ msgid "without # sign"
600
+ msgstr ""
601
+
602
+ #: admin/views/tab-settings.php:21
603
+ msgid ""
604
+ "Without authorization Instagram limits the number of requests, and after "
605
+ "exceeding the limit asks to log in, so an error is displayed that no images "
606
+ "were found."
607
+ msgstr ""
608
+
609
+ #: admin/views/tab-license.php:58
610
+ msgid ""
611
+ "You use a paid subscription for the plugin updates. In case you don’t want "
612
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
613
+ "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
614
+ msgstr ""
615
+
616
+ #: admin/views/tab-license.php:25
617
+ #, php-format
618
+ msgid "Your current license for %1$s:"
619
+ msgstr ""
620
+
621
+ #: admin/ajax/check-license.php:42
622
+ msgid "Your license has been successfully activated"
623
+ msgstr ""
624
+
625
+ #: admin/views/tab-license.php:64
626
+ msgid ""
627
+ "Your license has expired, please extend the license to get updates and "
628
+ "support."
629
+ msgstr ""
libs/factory/adverts/assets/js/script.js DELETED
@@ -1,13 +0,0 @@
1
- jQuery(document).ready( function($) {
2
- // Отправдяем запрос на маркировку нотиса, если пользователь его закрыл
3
- $( '.wbcr-advt-notice' ).click( function() {
4
- $.post(
5
- ajaxurl,
6
- {
7
- action: 'wbcr_advt_mark_notice'
8
- },
9
- function(data) {
10
- }
11
- );
12
- });
13
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
libs/factory/adverts/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Adverts_102\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -20,31 +20,31 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  exit;
21
  }
22
 
23
- if ( defined( 'FACTORY_ADVERTS_102_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
- define( 'FACTORY_ADVERTS_102_LOADED', true );
29
 
30
  # Устанавливаем версию модуля
31
- define( 'FACTORY_ADVERTS_102_VERSION', '1.0.2' );
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
- load_plugin_textdomain( 'wbcr_factory_adverts_102', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
35
 
36
  # Устанавливаем директорию модуля
37
- define( 'FACTORY_ADVERTS_102_DIR', dirname( __FILE__ ) );
38
 
39
  # Устанавливаем url модуля
40
- define( 'FACTORY_ADVERTS_102_URL', plugins_url( null, __FILE__ ) );
41
 
42
- require_once( FACTORY_ADVERTS_102_DIR . '/includes/class-rest-request.php' );
43
- require_once( FACTORY_ADVERTS_102_DIR . '/includes/class-base.php' );
44
 
45
  /**
46
- * @param Wbcr_Factory420_Plugin $plugin
47
  */
48
- add_action( 'wbcr_factory_adverts_102_plugin_created', function ( $plugin ) {
49
- $plugin->set_adverts_manager( "WBCR\Factory_Adverts_102\Base" );
50
  } );
1
  <?php
2
 
3
+ use WBCR\Factory_Adverts_104\Base;
4
 
5
  /**
6
  * Factory Adverts
20
  exit;
21
  }
22
 
23
+ if ( defined( 'FACTORY_ADVERTS_104_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
+ define( 'FACTORY_ADVERTS_104_LOADED', true );
29
 
30
  # Устанавливаем версию модуля
31
+ define( 'FACTORY_ADVERTS_104_VERSION', '1.0.4' );
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
+ load_plugin_textdomain( 'wbcr_factory_adverts_104', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
35
 
36
  # Устанавливаем директорию модуля
37
+ define( 'FACTORY_ADVERTS_104_DIR', dirname( __FILE__ ) );
38
 
39
  # Устанавливаем url модуля
40
+ define( 'FACTORY_ADVERTS_104_URL', plugins_url( null, __FILE__ ) );
41
 
42
+ require_once( FACTORY_ADVERTS_104_DIR . '/includes/class-rest-request.php' );
43
+ require_once( FACTORY_ADVERTS_104_DIR . '/includes/class-base.php' );
44
 
45
  /**
46
+ * @param Wbcr_Factory422_Plugin $plugin
47
  */
48
+ add_action( 'wbcr_factory_adverts_104_plugin_created', function ( $plugin ) {
49
+ $plugin->set_adverts_manager( "WBCR\Factory_Adverts_104\Base" );
50
  } );
libs/factory/adverts/includes/class-adverts-base.php DELETED
@@ -1,261 +0,0 @@
1
- <?php
2
-
3
- namespace WBCR\Factory_Adverts_102;
4
-
5
- // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit;
8
- }
9
-
10
- /**
11
- * Base class for adverts module.
12
- *
13
- * Contains methods for retrieving banner data for a specific position.
14
- * With this class user cat get advert content for a specific position.
15
- * This class use functional design pattern.
16
- * It used in the main plugin file. Also some methods may used in any place of plugin.
17
- *
18
- * Example (main plugin file):
19
- * // FRAMEWORK MODULES
20
- * 'load_factory_modules' => array(
21
- * ...
22
- * array( 'libs/factory/adverts', 'factory_adverts_102', 'admin' ),
23
- * ),
24
- *
25
- * if ( is_admin() ) {
26
- * global $wbcr_PLUGIN_NAME_adinserter;
27
- *
28
- * $wbcr_PLUGIN_NAME_adinserter = new WBCR\Factory_Adverts_102\Base(
29
- * __FILE__,
30
- * array_merge(
31
- * $plugin_info,
32
- * array(
33
- * 'dashboard_widget' => true, // show dashboard widget (default: false)
34
- * 'right_sidebar' => true, // show adverts sidebar (default: false)
35
- * 'notice' => true, // show notice message (default: false)
36
- * )
37
- * )
38
- * );
39
- * }
40
- *
41
- * Example (in any place):
42
- * <?php
43
- * global $wbcr_PLUGIN_NAME_adinserter;
44
- * echo $wbcr_PLUGIN_NAME_adinserter->get_adverts( 'right_sidebar' );
45
- * ?>
46
- *
47
- * Replace in the variable the phrase PLUGIN_NAME with the current plugin name!
48
- *
49
- * @author Alexander Vitkalov <nechin.va@gmail.com>
50
- * @since 1.0.0 Added
51
- * @package factory-adverts
52
- * @copyright (c) 2019 Webcraftic Ltd
53
- */
54
- class Base {
55
-
56
- /*
57
- * Contain array data with the plugin information and the module settings.
58
- * Mainly used to get the name of the plugin and how to get the adverts blocks.
59
- *
60
- * @since 1.0.0 Added
61
- *
62
- * @var array Example: array(
63
- * 'prefix' => 'wbcr_inp_',
64
- * 'plugin_name' => 'wbcr_insert_php',
65
- * 'plugin_title' => 'Woody ad snippets',
66
- * 'plugin_text_domain' => 'insert-php',
67
- * 'dashboard_widget' => true,
68
- * 'right_sidebar' => true,
69
- * 'notice' => true,
70
- * ...
71
- * )
72
- *
73
- */
74
- private $data = [];
75
-
76
- /**
77
- * Wbcr_Factory_Adinserter constructor.
78
- *
79
- * - Store plugin information and settings.
80
- * - Add filter and actions.
81
- * - Include dashboard widget.
82
- *
83
- * @since 1.0.0 Added
84
- *
85
- * @param string $plugin_path Path to plugin base file
86
- * @param array $data Array data with plugin information and settings (@see $data property example)
87
- */
88
- public function __construct( $plugin_path, $data ) {
89
- $this->data = $data;
90
-
91
- add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_widgets' ], 10, 3 );
92
-
93
- add_action( 'init', [ $this, 'add_notices' ] );
94
- add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
95
- add_action( 'wp_ajax_wbcr_advt_mark_notice', [ $this, 'mark_notice' ] );
96
-
97
- $this->include_dashboard();
98
- }
99
-
100
- /**
101
- * Include dashboard widget
102
- *
103
- * Include functionality the output of the widget on the dashboard.
104
- * Only one dashboard widget must be shown for some plugins with this setting (dashboard_widget).
105
- *
106
- * @since 1.0.0 Added
107
- */
108
- private function include_dashboard() {
109
- if ( isset( $this->data['dashboard_widget'] ) && $this->data['dashboard_widget'] && ! defined( 'FACTORY_ADVERTS_DASHBOARD_WIDGET' ) ) {
110
- /**
111
- * Dashboard widget is displays.
112
- *
113
- * Used only in this function.
114
- *
115
- * @since 1.0.0
116
- * @var boolean Notes that the dashboard widget already displays.
117
- */
118
- define( 'FACTORY_ADVERTS_DASHBOARD_WIDGET', true );
119
- require_once FACTORY_ADVERTS_102_DIR . '/includes/class-adverts-dashboard-widget.php';
120
-
121
- new Dashboard_Widget( $this->data['plugin_name'] );
122
- }
123
- }
124
-
125
- /**
126
- * Get advert content for selected position.
127
- *
128
- * @since 1.0.0 Added
129
- *
130
- * @param string $position The position for advert
131
- *
132
- * @return string
133
- */
134
- private function get_content( $position ) {
135
- $request = new Rest_Request( $this->data['plugin_name'], $position );
136
-
137
- return $request->get_content();
138
- }
139
-
140
- /**
141
- * Register widgets.
142
- *
143
- * Depending on the settings, register new widgets.
144
- *
145
- * @since 1.0.0 Added
146
- *
147
- * @param array $widgets Already existing registered widgets
148
- * @param string $position Position for the widget
149
- * @param string $plugin Plugin object for which the hook is run
150
- *
151
- * @return array array(
152
- * 'adverts_widget' => '<p></p>',
153
- * 'businnes_suggetion' => '<p></p>',
154
- * 'support' => '<p></p>',
155
- * ...
156
- * )
157
- */
158
- public function register_widgets( $widgets, $position, $plugin ) {
159
- if ( $plugin->getPluginName() == $this->data['plugin_name'] && ! empty( $this->data ) && 'right' == $position ) {
160
- if ( isset( $this->data['right_sidebar'] ) && $this->data['right_sidebar'] ) {
161
- $content = $this->get_content( 'right_sidebar' );
162
-
163
- $widgets['adverts_widget'] = $content;
164
- }
165
-
166
- if ( isset( $this->data['businnes_suggetion'] ) && $this->data['businnes_suggetion'] ) {
167
- $content = $this->get_content( 'businnes_suggetion' );
168
-
169
- $widgets['businnes_suggetion'] = $content;
170
- }
171
-
172
- if ( isset( $this->data['support'] ) && $this->data['support'] ) {
173
- $content = $this->get_content( 'support' );
174
-
175
- $widgets['support'] = $content;
176
- }
177
- }
178
-
179
- return $widgets;
180
- }
181
-
182
- /**
183
- * Add notice message.
184
- *
185
- * Only one notice must be shown for some plugins with this setting (notice).
186
- *
187
- * @since 1.0.0 Added
188
- */
189
- public function add_notices() {
190
- if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! defined( 'FACTORY_ADINSERTER_NOTICE' ) ) {
191
- /**
192
- * Notice is displays.
193
- *
194
- * Used only in this function.
195
- *
196
- * @since 1.0.0
197
- * @var boolean Notes that the notice already displays.
198
- */
199
- define( 'FACTORY_ADINSERTER_NOTICE', true );
200
-
201
- $content = $this->get_content( 'notice' );
202
- $hash = md5( $content );
203
-
204
- /* If the notice has not been closed by the user or the content of the notice has changed,
205
- then we show the notice. */
206
- if ( ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) || get_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'] ) != $hash ) {
207
- update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], false );
208
- update_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'], $hash );
209
- add_action( 'admin_notices', function () {
210
- echo $this->get_content( 'notice' );
211
- } );
212
- }
213
- }
214
- }
215
-
216
- /**
217
- * Add javascript file.
218
- *
219
- * File contains code for intercept the click event and post ajax request.
220
- *
221
- * @since 1.0.0 Added
222
- */
223
- public function enqueue_scripts() {
224
- if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) ) {
225
- wp_enqueue_script( 'factory-adverts-notice', FACTORY_ADVERTS_102_URL . '/assets/js/script.js' );
226
- }
227
- }
228
-
229
- /**
230
- * Mark notice closed for this plugin.
231
- *
232
- * Callback for ajax action. Execute when user close the notice.
233
- *
234
- * @since 1.0.0 Added
235
- * @see enqueue_scripts()
236
- */
237
- public function mark_notice() {
238
- update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], true );
239
- exit();
240
- }
241
-
242
- /**
243
- * Directly get advert content for selected position.
244
- *
245
- * @since 1.0.0 Added
246
- *
247
- * @param string $position Custom position name
248
- *
249
- * @return string
250
- */
251
- public function get_adverts( $position ) {
252
- $content = '';
253
-
254
- if ( $position ) {
255
- $content = $this->get_content( $position );
256
- }
257
-
258
- return $content;
259
- }
260
-
261
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libs/factory/adverts/includes/class-adverts-dashboard-widget.php DELETED
@@ -1,107 +0,0 @@
1
- <?php
2
-
3
- namespace WBCR\Factory_Adverts_102;
4
-
5
- // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit;
8
- }
9
-
10
- /**
11
- * Adverts Dashboard Widget.
12
- *
13
- * Adds a widget with a banner or a list of news.
14
- *
15
- * @author Alexander Vitkalov <nechin.va@gmail.com>
16
- * @since 1.0.0 Added
17
- * @package factory-adverts
18
- * @copyright (c) 2019 Webcraftic Ltd
19
- */
20
- class Dashboard_Widget extends Rest_Request {
21
-
22
- /**
23
- * Dashboard_Widget constructor.
24
- *
25
- * Call parent constructor. Registration hooks.
26
- *
27
- * @since 1.0.0 Added
28
- *
29
- * @param string $plugin_name Plugin name from parameter plugin_name
30
- */
31
- public function __construct( $plugin_name ) {
32
- parent::__construct( $plugin_name, 'dashboard' );
33
-
34
- $this->register_hooks();
35
- }
36
-
37
- /**
38
- * Registration hooks.
39
- *
40
- * @since 1.0.0 Added
41
- */
42
- public function register_hooks() {
43
- add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) );
44
- }
45
-
46
- /**
47
- * Add the News widget to the dashboard.
48
- *
49
- * @since 1.0.0 Added
50
- */
51
- public function add_dashboard_widgets() {
52
- $widget_id = 'wbcr-adinserter-dashboard-widget';
53
- wp_add_dashboard_widget(
54
- $widget_id,
55
- __( 'News', '' ),
56
- array( $this, 'dashboard_widget_adverts' )
57
- );
58
-
59
- /**
60
- * Set dashboard widget first in order
61
- *
62
- * @since 1.2.3 Added
63
- */
64
- global $wp_meta_boxes;
65
-
66
- $normal_core = $wp_meta_boxes['dashboard']['normal']['core'];
67
- $widget_backup = array( $widget_id => $normal_core[ $widget_id ] );
68
- unset( $normal_core[ $widget_id ] );
69
- $sorted_core = array_merge( $widget_backup, $normal_core );
70
-
71
- $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
72
- }
73
-
74
- /**
75
- * Create the function to output the contents of the Dashboard Widget.
76
- *
77
- * @since 1.0.0 Added
78
- */
79
- public function dashboard_widget_adverts() {
80
- $content = $this->get_content();
81
- if ( ! empty( $content ) ) {
82
- ?>
83
- <div class="wordpress-news hide-if-no-js">
84
- <?php $this->show_adverts( $content ); ?>
85
- </div>
86
- <?php
87
- }
88
- }
89
-
90
- /**
91
- * Output advert content.
92
- *
93
- * @since 1.0.0 Added
94
- *
95
- * @param $content string
96
- */
97
- public function show_adverts( $content ) {
98
- if ( ! empty( $content ) ) :
99
- ?>
100
- <div class="rss-widget">
101
- <?php echo $content; ?>
102
- </div>
103
- <?php
104
- endif;
105
- }
106
-
107
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libs/factory/adverts/includes/class-adverts-rest-request.php DELETED
@@ -1,180 +0,0 @@
1
- <?php
2
-
3
- namespace WBCR\Factory_Adverts_102;
4
-
5
- // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit;
8
- }
9
-
10
- /**
11
- * Factory request class.
12
- *
13
- * Performs a server request, retrieves banner data and stores it in the cache.
14
- *
15
- * @author Alexander Vitkalov <nechin.va@gmail.com>
16
- * @since 1.0.0 Added
17
- * @package factory-adverts
18
- * @copyright (c) 2019 Webcraftic Ltd
19
- */
20
- class Rest_Request {
21
-
22
- /**
23
- * Rest route path.
24
- *
25
- * Define rest route path for rest request.
26
- *
27
- * @since 1.0.0
28
- * @var string
29
- * @uses do_rest_request()
30
- */
31
- const FACTORY_ADVERTS_REST_ROUTE = '/adverds/v1/advt';
32
-
33
- /**
34
- * Plugin name.
35
- *
36
- * Set on class initialization from parameter plugin_name.
37
- * Used as query parameter in rest request.
38
- *
39
- * @since 1.0.0 Added
40
- *
41
- * @var string
42
- */
43
- private $plugin_name = '';
44
-
45
- /**
46
- * Adverts position.
47
- *
48
- * Position for advert (dashboard_widget, right_sidebar, notice, businnes_suggetion, support)
49
- *
50
- * Set on class initialization.
51
- * Used as query parameter in rest request.
52
- *
53
- * @since 1.0.0 Added
54
- *
55
- * @var string
56
- */
57
- private $ad_position = '';
58
-
59
- /**
60
- * Request constructor.
61
- *
62
- * Variable initialization.
63
- *
64
- * @since 1.0.0 Added
65
- *
66
- * @param string $plugin_name Plugin name from parameter plugin_name
67
- * @param string $position Position for advert
68
- */
69
- public function __construct( $plugin_name, $position ) {
70
- $this->plugin_name = $plugin_name;
71
- $this->ad_position = $position;
72
- }
73
-
74
- /**
75
- * Get key for cached data.
76
- *
77
- * Used for store and get cached data for current plugin and position.
78
- *
79
- * @since 1.0.0 Added
80
- *
81
- * @return string
82
- */
83
- private function get_key() {
84
- return md5( self::FACTORY_ADVERTS_REST_ROUTE . $this->plugin_name . $this->ad_position );
85
- }
86
-
87
- /**
88
- * Get data from cache.
89
- *
90
- * If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
91
- *
92
- * @since 1.0.0 Added
93
- *
94
- * @return mixed array(
95
- * 'plugin' => 'wbcr_insert_php',
96
- * 'content' => '<p></p>',
97
- * 'expires' => 1563542199,
98
- * );
99
- */
100
- private function get_cache() {
101
-
102
- $cached_data = defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ? false : get_option( $this->get_key() );
103
-
104
- if ( empty( $cached_data ) || ! isset( $cached_data['expires'] ) || ! isset( $cached_data['content'] ) || empty( $cached_data['expires'] ) || $cached_data['expires'] <= current_time( 'timestamp' ) ) {
105
- $data = $this->do_rest_request();
106
-
107
- if ( ! empty( $data ) && isset( $data['content'] ) && isset( $data['expires'] ) ) {
108
- update_option( $this->get_key(), $data );
109
- }
110
- } else {
111
- $data = $cached_data;
112
- }
113
-
114
- return $data;
115
- }
116
-
117
- /**
118
- * Get adverts content.
119
- *
120
- * @since 1.0.0 Added
121
- *
122
- * @return string
123
- */
124
- public function get_content() {
125
- $content = '';
126
-
127
- $data = $this->get_cache();
128
-
129
- if ( $data && isset( $data['content'] ) ) {
130
- $content = $data['content'];
131
- }
132
-
133
- return $content;
134
- }
135
-
136
- /**
137
- * Performs rest api request.
138
- *
139
- * If defined WBCR_ADINSERTER_REST_URL, then data requested from the remote server.
140
- * Otherwise data will be requested from the same server.
141
- * Defined in boot.php
142
- *
143
- * In some case on the server (Apache) in the .htaccess must be set
144
- * RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
145
- *
146
- * @since 1.0.0 Added
147
- *
148
- * @return mixed array(
149
- * 'plugin' => 'wbcr_insert_php',
150
- * 'content' => '<p></p>',
151
- * 'expires' => 1563542199,
152
- * );
153
- */
154
- private function do_rest_request() {
155
- $empty_data = [
156
- 'plugin' => $this->plugin_name,
157
- 'content' => '',
158
- 'expires' => current_time( 'timestamp' ) + 60 * 60,
159
- ];
160
-
161
- $url = site_url();
162
- if ( defined( 'WBCR_ADINSERTER_REST_URL' ) && '' != WBCR_ADINSERTER_REST_URL ) {
163
- $url = WBCR_ADINSERTER_REST_URL;
164
- }
165
-
166
- // Remote rest request
167
- $url = rtrim( $url, '/' ) . '/wp-json' . self::FACTORY_ADVERTS_REST_ROUTE;
168
- $url = add_query_arg( 'plugin', $this->plugin_name, $url );
169
- $url = add_query_arg( 'position', $this->ad_position, $url );
170
-
171
- $response = wp_remote_get( $url );
172
-
173
- $code = wp_remote_retrieve_response_code( $response );
174
- $body = wp_remote_retrieve_body( $response );
175
- $data = (array) json_decode( $body );
176
-
177
- return 200 == $code && $data && isset( $data['expires'] ) ? $data : $empty_data;
178
- }
179
-
180
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libs/factory/adverts/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_102;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -15,6 +15,8 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  * This class use functional design pattern.
16
  *
17
  * @author Alexander Vitkalov <nechin.va@gmail.com>
 
 
18
  * @since 1.0.0 Added
19
  * @package factory-adverts
20
  * @copyright (c) 2019 Webcraftic Ltd
@@ -26,7 +28,7 @@ class Base {
26
  *
27
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
28
  * @since 1.0.1
29
- * @var \Wbcr_Factory420_Plugin
30
  */
31
  private $plugin;
32
 
@@ -37,10 +39,6 @@ class Base {
37
  * @since 1.0.0 Added
38
  *
39
  * @var array Example: array(
40
- * 'prefix' => 'wbcr_inp_',
41
- * 'plugin_name' => 'wbcr_insert_php',
42
- * 'plugin_title' => 'Woody ad snippets',
43
- * 'plugin_text_domain' => 'insert-php',
44
  * 'dashboard_widget' => true,
45
  * 'right_sidebar' => true,
46
  * 'notice' => true,
@@ -55,7 +53,7 @@ class Base {
55
  *
56
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
57
  * @since 1.0.1
58
- * @var \WBCR\Factory_Adverts_102\Creative_Motion_API
59
  */
60
  private $api;
61
 
@@ -84,9 +82,9 @@ class Base {
84
  *
85
  * @since 1.0.0 Added
86
  *
87
- * @param \Wbcr_Factory420_Plugin $plugin
88
  */
89
- public function __construct( \Wbcr_Factory420_Plugin $plugin, $settings ) {
90
  $this->plugin = $plugin;
91
 
92
  $this->settings = wp_parse_args( $settings, [
@@ -100,7 +98,7 @@ class Base {
100
  $this->api = new Creative_Motion_API( $this->plugin );
101
 
102
  add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_plugin_widgets' ], 10, 3 );
103
- add_action( 'wbcr_factory_notices_000_list', [ $this, 'register_plugin_notice' ], 10, 2 );
104
  add_action( 'current_screen', [ $this, 'register_dashboard_widget' ], 10, 2 );
105
  }
106
 
@@ -215,7 +213,6 @@ class Base {
215
  'id' => 'adverts_debug',
216
  'type' => 'error',
217
  'dismissible' => false,
218
- 'where' => [ 'plugins', 'themes', 'dashboard', 'edit' ],
219
  'dismiss_expires' => 0,
220
  'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $debug_message . '</p>'
221
  ];
@@ -230,7 +227,6 @@ class Base {
230
  'id' => 'adverts_' . $hash,
231
  'type' => 'success',
232
  'dismissible' => true,
233
- 'where' => [ 'plugins', 'themes', 'dashboard', 'edit' ],
234
  'dismiss_expires' => 0,
235
  'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $notice_content . '</p>'
236
  ];
@@ -251,7 +247,7 @@ class Base {
251
  if ( $this->settings['dashboard_widget'] && current_user_can( 'manage_options' ) ) {
252
  $current_screen = get_current_screen();
253
 
254
- if ( 'dashboard' !== $current_screen->id ) {
255
  return;
256
  }
257
 
@@ -261,7 +257,7 @@ class Base {
261
  $content = $this->get_debug_message( 'dashboard_widget' );
262
  }
263
 
264
- require_once FACTORY_ADVERTS_102_DIR . '/includes/class-dashboard-widget.php';
265
  new Dashboard_Widget( $this->plugin, $content );
266
  }
267
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_104;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
15
  * This class use functional design pattern.
16
  *
17
  * @author Alexander Vitkalov <nechin.va@gmail.com>
18
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
19
+ *
20
  * @since 1.0.0 Added
21
  * @package factory-adverts
22
  * @copyright (c) 2019 Webcraftic Ltd
28
  *
29
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
30
  * @since 1.0.1
31
+ * @var \Wbcr_Factory422_Plugin
32
  */
33
  private $plugin;
34
 
39
  * @since 1.0.0 Added
40
  *
41
  * @var array Example: array(
 
 
 
 
42
  * 'dashboard_widget' => true,
43
  * 'right_sidebar' => true,
44
  * 'notice' => true,
53
  *
54
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
55
  * @since 1.0.1
56
+ * @var \WBCR\Factory_Adverts_104\Creative_Motion_API
57
  */
58
  private $api;
59
 
82
  *
83
  * @since 1.0.0 Added
84
  *
85
+ * @param \Wbcr_Factory422_Plugin $plugin
86
  */
87
+ public function __construct( \Wbcr_Factory422_Plugin $plugin, $settings ) {
88
  $this->plugin = $plugin;
89
 
90
  $this->settings = wp_parse_args( $settings, [
98
  $this->api = new Creative_Motion_API( $this->plugin );
99
 
100
  add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_plugin_widgets' ], 10, 3 );
101
+ add_action( 'wbcr/factory/admin_notices', [ $this, 'register_plugin_notice' ], 10, 2 );
102
  add_action( 'current_screen', [ $this, 'register_dashboard_widget' ], 10, 2 );
103
  }
104
 
213
  'id' => 'adverts_debug',
214
  'type' => 'error',
215
  'dismissible' => false,
 
216
  'dismiss_expires' => 0,
217
  'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $debug_message . '</p>'
218
  ];
227
  'id' => 'adverts_' . $hash,
228
  'type' => 'success',
229
  'dismissible' => true,
 
230
  'dismiss_expires' => 0,
231
  'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $notice_content . '</p>'
232
  ];
247
  if ( $this->settings['dashboard_widget'] && current_user_can( 'manage_options' ) ) {
248
  $current_screen = get_current_screen();
249
 
250
+ if ( ! in_array( $current_screen->id, [ 'dashboard', 'dashboard-network' ] ) ) {
251
  return;
252
  }
253
 
257
  $content = $this->get_debug_message( 'dashboard_widget' );
258
  }
259
 
260
+ require_once FACTORY_ADVERTS_104_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_102;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -13,6 +13,8 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  * Adds a widget with a banner or a list of news.
14
  *
15
  * @author Alexander Vitkalov <nechin.va@gmail.com>
 
 
16
  * @since 1.0.0 Added
17
  * @package factory-adverts
18
  * @copyright (c) 2019 Webcraftic Ltd
@@ -33,7 +35,7 @@ class Dashboard_Widget {
33
  *
34
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
35
  * @since 1.0.1
36
- * @var \Wbcr_Factory420_Plugin
37
  */
38
  private $plugin;
39
 
@@ -44,15 +46,21 @@ class Dashboard_Widget {
44
  *
45
  * @since 1.0.0 Added
46
  *
47
- * @param \Wbcr_Factory420_Plugin $plugin
48
  * @param string $content
49
  */
50
- public function __construct( \Wbcr_Factory420_Plugin $plugin, $content ) {
51
 
52
  $this->plugin = $plugin;
53
  $this->content = $content;
54
 
55
  if ( ! empty( $this->content ) ) {
 
 
 
 
 
 
56
  add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widgets' ], 999 );
57
  }
58
  }
@@ -63,8 +71,6 @@ class Dashboard_Widget {
63
  * @since 1.0.0 Added
64
  */
65
  public function add_dashboard_widgets() {
66
- global $wp_meta_boxes;
67
-
68
  $widget_id = 'wbcr-factory-adverts-widget';
69
 
70
  wp_add_dashboard_widget( $widget_id, $this->plugin->getPluginTitle() . ' News', [
@@ -72,13 +78,7 @@ class Dashboard_Widget {
72
  'print_widget_content'
73
  ] );
74
 
75
- # Set dashboard widget first in order
76
- $normal_core = $wp_meta_boxes['dashboard']['normal']['core'];
77
- $widget_backup = [ $widget_id => $normal_core[ $widget_id ] ];
78
- unset( $normal_core[ $widget_id ] );
79
- $sorted_core = array_merge( $widget_backup, $normal_core );
80
-
81
- $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
82
  }
83
 
84
  /**
@@ -96,4 +96,30 @@ class Dashboard_Widget {
96
  <?php
97
 
98
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_104;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
13
  * Adds a widget with a banner or a list of news.
14
  *
15
  * @author Alexander Vitkalov <nechin.va@gmail.com>
16
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
17
+ *
18
  * @since 1.0.0 Added
19
  * @package factory-adverts
20
  * @copyright (c) 2019 Webcraftic Ltd
35
  *
36
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
37
  * @since 1.0.1
38
+ * @var \Wbcr_Factory422_Plugin
39
  */
40
  private $plugin;
41
 
46
  *
47
  * @since 1.0.0 Added
48
  *
49
+ * @param \Wbcr_Factory422_Plugin $plugin
50
  * @param string $content
51
  */
52
+ public function __construct( \Wbcr_Factory422_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
56
 
57
  if ( ! empty( $this->content ) ) {
58
+ if ( $this->plugin->isNetworkActive() && $this->plugin->isNetworkAdmin() ) {
59
+ add_action( 'wp_network_dashboard_setup', [ $this, 'add_dashboard_widgets' ], 999 );
60
+
61
+ return;
62
+ }
63
+
64
  add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widgets' ], 999 );
65
  }
66
  }
71
  * @since 1.0.0 Added
72
  */
73
  public function add_dashboard_widgets() {
 
 
74
  $widget_id = 'wbcr-factory-adverts-widget';
75
 
76
  wp_add_dashboard_widget( $widget_id, $this->plugin->getPluginTitle() . ' News', [
78
  'print_widget_content'
79
  ] );
80
 
81
+ $this->sort_dashboard_widgets( $widget_id );
 
 
 
 
 
 
82
  }
83
 
84
  /**
96
  <?php
97
 
98
  }
99
+
100
+ /**
101
+ * Сортируем виджеты на странице дашбоард
102
+ *
103
+ * Виджеты должны быть в таком порядке, чтобы наш виджет был выше всех.
104
+ *
105
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
106
+ * @author Alexander Vitkalov <nechin.va@gmail.com>
107
+ *
108
+ * @since 1.0.2 Добавлена поддержка мультисайтов
109
+ * @since 1.0.0 Добавлен
110
+ *
111
+ * @param string $widget_id ID нашего виджета
112
+ */
113
+ private function sort_dashboard_widgets( $widget_id ) {
114
+ global $wp_meta_boxes;
115
+
116
+ $location = $this->plugin->isNetworkAdmin() ? 'dashboard-network' : 'dashboard';
117
+
118
+ $normal_core = $wp_meta_boxes[ $location ]['normal']['core'];
119
+ $widget_backup = [ $widget_id => $normal_core[ $widget_id ] ];
120
+ unset( $normal_core[ $widget_id ] );
121
+ $sorted_core = array_merge( $widget_backup, $normal_core );
122
+
123
+ $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
124
+ }
125
  }
libs/factory/adverts/includes/class-rest-request.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_102;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  *
13
  * Performs a server request, retrieves banner data and stores it in the cache.
14
  *
15
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
16
  * @author Alexander Vitkalov <nechin.va@gmail.com>
17
  *
18
  * @since 1.0.1 Изменил имя класса и доработал его.
@@ -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_Factory420_Plugin
69
  */
70
  private $plugin;
71
 
@@ -77,9 +77,9 @@ class Creative_Motion_API {
77
  *
78
  * @since 1.0.0 Added
79
  *
80
- * @param \Wbcr_Factory420_Plugin $plugin_name
81
  */
82
- public function __construct( \Wbcr_Factory420_Plugin $plugin ) {
83
  $this->plugin = $plugin;
84
  }
85
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_104;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
12
  *
13
  * Performs a server request, retrieves banner data and stores it in the cache.
14
  *
15
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
16
  * @author Alexander Vitkalov <nechin.va@gmail.com>
17
  *
18
  * @since 1.0.1 Изменил имя класса и доработал его.
65
  *
66
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
67
  * @since 1.0.1
68
+ * @var \Wbcr_Factory422_Plugin
69
  */
70
  private $plugin;
71
 
77
  *
78
  * @since 1.0.0 Added
79
  *
80
+ * @param \Wbcr_Factory422_Plugin $plugin_name
81
  */
82
+ public function __construct( \Wbcr_Factory422_Plugin $plugin ) {
83
  $this->plugin = $plugin;
84
  }
85
 
libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.mo → wbcr_factory_adverts_104-ru_RU.mo} RENAMED
File without changes
libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.po → wbcr_factory_adverts_104-ru_RU.po} RENAMED
File without changes
libs/factory/adverts/readme.txt DELETED
@@ -1,98 +0,0 @@
1
- === Plugin Name ===
2
- Contributors: nechii
3
- Tags: ad, advertisment, module
4
- Requires at least: 4.2
5
- Tested up to: 5.2
6
- Stable tag: 1.2.0
7
- Requires PHP: 5.4
8
-
9
- Module adds ad units to plugins.
10
-
11
- == Description ==
12
-
13
- The module allows you to add the specified ad blocks to the plugins.
14
-
15
- Managing and storing the content of each block occurs in special side plugin.
16
-
17
- To add the necessary blocks, you need to add the following code to the main plugin file:
18
- if ( is_admin() ) {
19
- global $wbcr_plugin_name_adinserter;
20
-
21
- $wbcr_plugin_name_adinserter = new WBCR\Factory_Adverts_000\Base(
22
- __FILE__,
23
- array_merge(
24
- $plugin_info,
25
- array(
26
- 'dashboard_widget' => true, // show dashboard widget (default: false)
27
- 'right_sidebar' => true, // show adverts sidebar (default: false)
28
- 'notice' => true, // show notice message (default: false)
29
- )
30
- )
31
- );
32
- }
33
- In this example, three ad blocks will be added: dashboard_widget, right_sidebar and notice.
34
-
35
- It is possible to add an ad block manually. To do this, in the specific place of the code you need to insert the following code:
36
- global $wbcr_plugin_name_adinserter;
37
- echo $wbcr_plugin_name_adinserter->get_adverts( 'right_sidebar' );
38
- In this example will be displayed content for ad block 'right_sidebar';
39
-
40
- == Changelog ==
41
-
42
- = 1.2.3 =
43
- * Set dashboard widget first in order
44
-
45
- = 1.2.2 =
46
- * Changed the name of a global variable and its use rule
47
-
48
- = 1.2.1 =
49
- * Moved constant for rest request url from wp-config.php to boot.php
50
-
51
- = 1.2.0 =
52
- * Removed rest request. Only get request available.
53
- * Cleaning and refactoring code.
54
-
55
- = 1.1.0 =
56
- * Add new notice functions.
57
- * Cleaning and refactoring code.
58
-
59
- = 1.0.0 =
60
- * Cleaning and refactoring code.
61
- * Add doc blocks.
62
- * Some fixes and changes.
63
-
64
- = 0.9.0 =
65
- * Added new blocks.
66
- * Fixed widget functions.
67
-
68
- = 0.8.0 =
69
- * Added notice block.
70
- * Added constants for unique dashboard notice.
71
- * Fixed widget functions.
72
-
73
- = 0.7.0 =
74
- * Added constants for unique dashboard widget.
75
- * Fixed widget functions.
76
-
77
- = 0.6.0 =
78
- * Improve widget functions.
79
- * Fixed cache functions.
80
-
81
- = 0.5.0 =
82
- * Added default rest response.
83
- * Fixed rest request.
84
-
85
- = 0.4.0 =
86
- * Fixed rest request response.
87
- * Fixed base functions.
88
-
89
- = 0.3.0 =
90
- * Improve rest request.
91
- * Fixed requests functions.
92
-
93
- = 0.2.0 =
94
- * Added expiration time for cached data.
95
- * Fixed cache functions.
96
-
97
- = 0.1.0 =
98
- * Version with base functions.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-421 .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-421 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-421 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-421 .factory-accordion-item{display:none}.factory-bootstrap-421 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-421 .factory-accordion>h3.active:hover{cursor:default}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-423 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-423 .factory-accordion-item{display:none}.factory-bootstrap-423 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-423 .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-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .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-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-421 .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-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .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-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-421 .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-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css CHANGED
@@ -8,7 +8,7 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-421 article,.factory-bootstrap-421 aside,.factory-bootstrap-421 details,.factory-bootstrap-421 figcaption,.factory-bootstrap-421 figure,.factory-bootstrap-421 footer,.factory-bootstrap-421 header,.factory-bootstrap-421 hgroup,.factory-bootstrap-421 main,.factory-bootstrap-421 nav,.factory-bootstrap-421 section,.factory-bootstrap-421 summary{display:block}.factory-bootstrap-421 audio,.factory-bootstrap-421 canvas,.factory-bootstrap-421 video{display:inline-block}.factory-bootstrap-421 audio:not([controls]){display:none;height:0}.factory-bootstrap-421 [hidden],.factory-bootstrap-421 template{display:none}.factory-bootstrap-421 body{margin:0}.factory-bootstrap-421 a{background:0 0}.factory-bootstrap-421 a:focus{outline:thin dotted}.factory-bootstrap-421 a:active,.factory-bootstrap-421 a:hover{outline:0}.factory-bootstrap-421 h1{margin:.67em 0}.factory-bootstrap-421 b,.factory-bootstrap-421 strong{font-weight:700}.factory-bootstrap-421 dfn{font-style:italic}.factory-bootstrap-421 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-421 mark{color:#000;background:#ff0}.factory-bootstrap-421 code,.factory-bootstrap-421 kbd,.factory-bootstrap-421 pre,.factory-bootstrap-421 samp{font-size:1em}.factory-bootstrap-421 pre{white-space:pre-wrap}.factory-bootstrap-421 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-421 sub,.factory-bootstrap-421 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-421 sup{top:-.5em}.factory-bootstrap-421 sub{bottom:-.25em}.factory-bootstrap-421 img{border:0}.factory-bootstrap-421 svg:not(:root){overflow:hidden}.factory-bootstrap-421 figure{margin:0}.factory-bootstrap-421 button,.factory-bootstrap-421 input,.factory-bootstrap-421 select,.factory-bootstrap-421 textarea{margin:0}.factory-bootstrap-421 button,.factory-bootstrap-421 select{text-transform:none}.factory-bootstrap-421 select{padding-right:4px!important}.factory-bootstrap-421 button,.factory-bootstrap-421 input[type=reset],.factory-bootstrap-421 input[type=submit],html .factory-bootstrap-421 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-421 button[disabled],html .factory-bootstrap-421 input[disabled]{cursor:default}.factory-bootstrap-421 input[type=checkbox],.factory-bootstrap-421 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-421 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-421 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-421 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-421 button::-moz-focus-inner,.factory-bootstrap-421 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-421 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-421 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-421 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-421 a,.factory-bootstrap-421 a:visited{text-decoration:underline}.factory-bootstrap-421 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-421 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-421 a[href^="javascript:"]:after,.factory-bootstrap-421 a[href^="#"]:after{content:""}.factory-bootstrap-421 blockquote,.factory-bootstrap-421 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-421 thead{display:table-header-group}.factory-bootstrap-421 img,.factory-bootstrap-421 tr{page-break-inside:avoid}.factory-bootstrap-421 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-421 h2,.factory-bootstrap-421 h3,.factory-bootstrap-421 p{orphans:3;widows:3}.factory-bootstrap-421 h2,.factory-bootstrap-421 h3{page-break-after:avoid}.factory-bootstrap-421 select{background:#fff!important}.factory-bootstrap-421 .navbar{display:none}.factory-bootstrap-421 .table td,.factory-bootstrap-421 .table th{background-color:#fff!important}.factory-bootstrap-421 .btn>.caret,.factory-bootstrap-421 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-421 .label{border:1px solid #000}.factory-bootstrap-421 .table{border-collapse:collapse!important}.factory-bootstrap-421 .table-bordered td,.factory-bootstrap-421 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-421 *,.factory-bootstrap-421 :after,.factory-bootstrap-421 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-421{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-421 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-421 button,.factory-bootstrap-421 input,.factory-bootstrap-421 select,.factory-bootstrap-421 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-421 img{vertical-align:middle}.factory-bootstrap-421 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-421 .img-rounded{border-radius:6px}.factory-bootstrap-421 .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-421 .img-circle{border-radius:50%}.factory-bootstrap-421 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-421 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-421 .h1,.factory-bootstrap-421 .h2,.factory-bootstrap-421 .h3,.factory-bootstrap-421 .h4,.factory-bootstrap-421 .h5,.factory-bootstrap-421 .h6,.factory-bootstrap-421 h1,.factory-bootstrap-421 h2,.factory-bootstrap-421 h3,.factory-bootstrap-421 h4,.factory-bootstrap-421 h5,.factory-bootstrap-421 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-421 .h1 .small,.factory-bootstrap-421 .h1 small,.factory-bootstrap-421 .h2 .small,.factory-bootstrap-421 .h2 small,.factory-bootstrap-421 .h3 .small,.factory-bootstrap-421 .h3 small,.factory-bootstrap-421 .h4 .small,.factory-bootstrap-421 .h4 small,.factory-bootstrap-421 .h5 .small,.factory-bootstrap-421 .h5 small,.factory-bootstrap-421 .h6 .small,.factory-bootstrap-421 .h6 small,.factory-bootstrap-421 h1 .small,.factory-bootstrap-421 h1 small,.factory-bootstrap-421 h2 .small,.factory-bootstrap-421 h2 small,.factory-bootstrap-421 h3 .small,.factory-bootstrap-421 h3 small,.factory-bootstrap-421 h4 .small,.factory-bootstrap-421 h4 small,.factory-bootstrap-421 h5 .small,.factory-bootstrap-421 h5 small,.factory-bootstrap-421 h6 .small,.factory-bootstrap-421 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-421 h1,.factory-bootstrap-421 h2,.factory-bootstrap-421 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-421 h1 .small,.factory-bootstrap-421 h1 small,.factory-bootstrap-421 h2 .small,.factory-bootstrap-421 h2 small,.factory-bootstrap-421 h3 .small,.factory-bootstrap-421 h3 small{font-size:65%}.factory-bootstrap-421 h4,.factory-bootstrap-421 h5,.factory-bootstrap-421 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-421 h4 .small,.factory-bootstrap-421 h4 small,.factory-bootstrap-421 h5 .small,.factory-bootstrap-421 h5 small,.factory-bootstrap-421 h6 .small,.factory-bootstrap-421 h6 small{font-size:75%}.factory-bootstrap-421 .h1,.factory-bootstrap-421 h1{font-size:36px}.factory-bootstrap-421 .h2,.factory-bootstrap-421 h2{font-size:30px}.factory-bootstrap-421 .h3,.factory-bootstrap-421 h3{font-size:24px}.factory-bootstrap-421 .h4,.factory-bootstrap-421 h4{font-size:18px}.factory-bootstrap-421 .h5,.factory-bootstrap-421 h5{font-size:14px}.factory-bootstrap-421 .h6,.factory-bootstrap-421 h6{font-size:12px}.factory-bootstrap-421 p{margin:0 0 10px}.factory-bootstrap-421 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-421 .small,.factory-bootstrap-421 small{font-size:85%}.factory-bootstrap-421 cite{font-style:normal}.factory-bootstrap-421 .text-muted{color:#999}.factory-bootstrap-421 .text-primary{color:#428bca}.factory-bootstrap-421 .text-primary:hover{color:#3071a9}.factory-bootstrap-421 .text-warning{color:#8a6d3b}.factory-bootstrap-421 .text-warning:hover{color:#66512c}.factory-bootstrap-421 .text-danger{color:#a94442}.factory-bootstrap-421 .text-danger:hover{color:#843534}.factory-bootstrap-421 .text-success{color:#3c763d}.factory-bootstrap-421 .text-success:hover{color:#2b542c}.factory-bootstrap-421 .text-info{color:#31708f}.factory-bootstrap-421 .text-info:hover{color:#245269}.factory-bootstrap-421 .text-left{text-align:left}.factory-bootstrap-421 .text-right{text-align:right}.factory-bootstrap-421 .text-center{text-align:center}.factory-bootstrap-421 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-421 ol,.factory-bootstrap-421 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-421 ol ol,.factory-bootstrap-421 ol ul,.factory-bootstrap-421 ul ol,.factory-bootstrap-421 ul ul{margin-bottom:0}.factory-bootstrap-421 .list-inline,.factory-bootstrap-421 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-421 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-421 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-421 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-421 dd,.factory-bootstrap-421 dt{line-height:1.428571429}.factory-bootstrap-421 dt{font-weight:700}.factory-bootstrap-421 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-421 abbr[data-original-title],.factory-bootstrap-421 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-421 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-421 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-421 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-421 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-421 blockquote .small,.factory-bootstrap-421 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-421 blockquote .small:before,.factory-bootstrap-421 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-421 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-421 blockquote.pull-right .small,.factory-bootstrap-421 blockquote.pull-right p,.factory-bootstrap-421 blockquote.pull-right small{text-align:right}.factory-bootstrap-421 blockquote.pull-right .small:before,.factory-bootstrap-421 blockquote.pull-right small:before{content:''}.factory-bootstrap-421 blockquote.pull-right .small:after,.factory-bootstrap-421 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-421 blockquote:after,.factory-bootstrap-421 blockquote:before{content:""}.factory-bootstrap-421 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-421 code,.factory-bootstrap-421 kbd,.factory-bootstrap-421 pre,.factory-bootstrap-421 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-421 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-421 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-421 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-421 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-421 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-421 .container:after,.factory-bootstrap-421 .container:before{display:table;content:" "}.factory-bootstrap-421 .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-421 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-421 .row:after,.factory-bootstrap-421 .row:before{display:table;content:" "}.factory-bootstrap-421 .row:after{clear:both}.factory-bootstrap-421 .col-lg-1,.factory-bootstrap-421 .col-lg-10,.factory-bootstrap-421 .col-lg-11,.factory-bootstrap-421 .col-lg-12,.factory-bootstrap-421 .col-lg-2,.factory-bootstrap-421 .col-lg-3,.factory-bootstrap-421 .col-lg-4,.factory-bootstrap-421 .col-lg-5,.factory-bootstrap-421 .col-lg-6,.factory-bootstrap-421 .col-lg-7,.factory-bootstrap-421 .col-lg-8,.factory-bootstrap-421 .col-lg-9,.factory-bootstrap-421 .col-md-1,.factory-bootstrap-421 .col-md-10,.factory-bootstrap-421 .col-md-11,.factory-bootstrap-421 .col-md-12,.factory-bootstrap-421 .col-md-2,.factory-bootstrap-421 .col-md-3,.factory-bootstrap-421 .col-md-4,.factory-bootstrap-421 .col-md-5,.factory-bootstrap-421 .col-md-6,.factory-bootstrap-421 .col-md-7,.factory-bootstrap-421 .col-md-8,.factory-bootstrap-421 .col-md-9,.factory-bootstrap-421 .col-sm-1,.factory-bootstrap-421 .col-sm-10,.factory-bootstrap-421 .col-sm-11,.factory-bootstrap-421 .col-sm-12,.factory-bootstrap-421 .col-sm-2,.factory-bootstrap-421 .col-sm-3,.factory-bootstrap-421 .col-sm-4,.factory-bootstrap-421 .col-sm-5,.factory-bootstrap-421 .col-sm-6,.factory-bootstrap-421 .col-sm-7,.factory-bootstrap-421 .col-sm-8,.factory-bootstrap-421 .col-sm-9,.factory-bootstrap-421 .col-xs-1,.factory-bootstrap-421 .col-xs-10,.factory-bootstrap-421 .col-xs-11,.factory-bootstrap-421 .col-xs-12,.factory-bootstrap-421 .col-xs-2,.factory-bootstrap-421 .col-xs-3,.factory-bootstrap-421 .col-xs-4,.factory-bootstrap-421 .col-xs-5,.factory-bootstrap-421 .col-xs-6,.factory-bootstrap-421 .col-xs-7,.factory-bootstrap-421 .col-xs-8,.factory-bootstrap-421 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-421 .col-xs-1,.factory-bootstrap-421 .col-xs-10,.factory-bootstrap-421 .col-xs-11,.factory-bootstrap-421 .col-xs-12,.factory-bootstrap-421 .col-xs-2,.factory-bootstrap-421 .col-xs-3,.factory-bootstrap-421 .col-xs-4,.factory-bootstrap-421 .col-xs-5,.factory-bootstrap-421 .col-xs-6,.factory-bootstrap-421 .col-xs-7,.factory-bootstrap-421 .col-xs-8,.factory-bootstrap-421 .col-xs-9{float:left}.factory-bootstrap-421 .col-xs-12{width:100%}.factory-bootstrap-421 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-421 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-421 .col-xs-9{width:75%}.factory-bootstrap-421 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-421 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-421 .col-xs-6{width:50%}.factory-bootstrap-421 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-421 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-421 .col-xs-3{width:25%}.factory-bootstrap-421 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-421 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-421 .col-xs-pull-12{right:100%}.factory-bootstrap-421 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-421 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-421 .col-xs-pull-9{right:75%}.factory-bootstrap-421 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-421 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-421 .col-xs-pull-6{right:50%}.factory-bootstrap-421 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-421 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-421 .col-xs-pull-3{right:25%}.factory-bootstrap-421 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-421 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-421 .col-xs-pull-0{right:0}.factory-bootstrap-421 .col-xs-push-12{left:100%}.factory-bootstrap-421 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-421 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-421 .col-xs-push-9{left:75%}.factory-bootstrap-421 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-421 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-421 .col-xs-push-6{left:50%}.factory-bootstrap-421 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-421 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-421 .col-xs-push-3{left:25%}.factory-bootstrap-421 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-421 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-421 .col-xs-push-0{left:0}.factory-bootstrap-421 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-421 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-421 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-421 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-421 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-421 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-421 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-421 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-421 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-421 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-421 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-421 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-421 .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-421 table{max-width:100%;background-color:transparent}.factory-bootstrap-421 th{text-align:left}.factory-bootstrap-421 .table{width:100%;margin-bottom:20px}.factory-bootstrap-421 .table>tbody>tr>td,.factory-bootstrap-421 .table>tbody>tr>th,.factory-bootstrap-421 .table>tfoot>tr>td,.factory-bootstrap-421 .table>tfoot>tr>th,.factory-bootstrap-421 .table>thead>tr>td,.factory-bootstrap-421 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-421 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-421 .table>caption+thead>tr:first-child>td,.factory-bootstrap-421 .table>caption+thead>tr:first-child>th,.factory-bootstrap-421 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-421 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-421 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-421 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-421 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-421 .table .table{background-color:#fff}.factory-bootstrap-421 .table-condensed>tbody>tr>td,.factory-bootstrap-421 .table-condensed>tbody>tr>th,.factory-bootstrap-421 .table-condensed>tfoot>tr>td,.factory-bootstrap-421 .table-condensed>tfoot>tr>th,.factory-bootstrap-421 .table-condensed>thead>tr>td,.factory-bootstrap-421 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-421 .table-bordered,.factory-bootstrap-421 .table-bordered>tbody>tr>td,.factory-bootstrap-421 .table-bordered>tbody>tr>th,.factory-bootstrap-421 .table-bordered>tfoot>tr>td,.factory-bootstrap-421 .table-bordered>tfoot>tr>th,.factory-bootstrap-421 .table-bordered>thead>tr>td,.factory-bootstrap-421 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-421 .table-bordered>thead>tr>td,.factory-bootstrap-421 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-421 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-421 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-421 .table-hover>tbody>tr:hover>td,.factory-bootstrap-421 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-421 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-421 table td[class*=col-],.factory-bootstrap-421 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-421 .table>tbody>.active>td,.factory-bootstrap-421 .table>tbody>.active>th,.factory-bootstrap-421 .table>tbody>tr>.active,.factory-bootstrap-421 .table>tfoot>.active>td,.factory-bootstrap-421 .table>tfoot>.active>th,.factory-bootstrap-421 .table>tfoot>tr>.active,.factory-bootstrap-421 .table>thead>.active>td,.factory-bootstrap-421 .table>thead>.active>th,.factory-bootstrap-421 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-421 .table-hover>tbody>.active:hover>td,.factory-bootstrap-421 .table-hover>tbody>.active:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-421 .table>tbody>.success>td,.factory-bootstrap-421 .table>tbody>.success>th,.factory-bootstrap-421 .table>tbody>tr>.success,.factory-bootstrap-421 .table>tfoot>.success>td,.factory-bootstrap-421 .table>tfoot>.success>th,.factory-bootstrap-421 .table>tfoot>tr>.success,.factory-bootstrap-421 .table>thead>.success>td,.factory-bootstrap-421 .table>thead>.success>th,.factory-bootstrap-421 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-421 .table-hover>tbody>.success:hover>td,.factory-bootstrap-421 .table-hover>tbody>.success:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-421 .table>tbody>.danger>td,.factory-bootstrap-421 .table>tbody>.danger>th,.factory-bootstrap-421 .table>tbody>tr>.danger,.factory-bootstrap-421 .table>tfoot>.danger>td,.factory-bootstrap-421 .table>tfoot>.danger>th,.factory-bootstrap-421 .table>tfoot>tr>.danger,.factory-bootstrap-421 .table>thead>.danger>td,.factory-bootstrap-421 .table>thead>.danger>th,.factory-bootstrap-421 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-421 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-421 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-421 .table>tbody>.warning>td,.factory-bootstrap-421 .table>tbody>.warning>th,.factory-bootstrap-421 .table>tbody>tr>.warning,.factory-bootstrap-421 .table>tfoot>.warning>td,.factory-bootstrap-421 .table>tfoot>.warning>th,.factory-bootstrap-421 .table>tfoot>tr>.warning,.factory-bootstrap-421 .table>thead>.warning>td,.factory-bootstrap-421 .table>thead>.warning>th,.factory-bootstrap-421 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-421 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-421 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-421 .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-421 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-421 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-421 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-421 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-421 input[type=checkbox],.factory-bootstrap-421 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-421 input[type=file]{display:block}.factory-bootstrap-421 select[multiple],.factory-bootstrap-421 select[size]{height:auto}.factory-bootstrap-421 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-421 input[type=checkbox]:focus,.factory-bootstrap-421 input[type=file]:focus,.factory-bootstrap-421 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-421 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-421 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-421 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-421 .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-421 .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-421 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-421 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-421 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-421 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-421 .form-control[disabled],.factory-bootstrap-421 .form-control[readonly],.factory-bootstrap-421 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-421 textarea.form-control{height:auto}.factory-bootstrap-421 .form-group{margin-bottom:15px}.factory-bootstrap-421 .checkbox,.factory-bootstrap-421 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-421 .checkbox label,.factory-bootstrap-421 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-421 .checkbox input[type=checkbox],.factory-bootstrap-421 .checkbox-inline input[type=checkbox],.factory-bootstrap-421 .radio input[type=radio],.factory-bootstrap-421 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-421 .checkbox+.checkbox,.factory-bootstrap-421 .radio+.radio{margin-top:-5px}.factory-bootstrap-421 .checkbox-inline,.factory-bootstrap-421 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-421 .checkbox-inline+.checkbox-inline,.factory-bootstrap-421 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-421 .checkbox-inline[disabled],.factory-bootstrap-421 .checkbox[disabled],.factory-bootstrap-421 .radio-inline[disabled],.factory-bootstrap-421 .radio[disabled],.factory-bootstrap-421 fieldset[disabled] .checkbox,.factory-bootstrap-421 fieldset[disabled] .checkbox-inline,.factory-bootstrap-421 fieldset[disabled] .radio,.factory-bootstrap-421 fieldset[disabled] .radio-inline,.factory-bootstrap-421 fieldset[disabled] input[type=checkbox],.factory-bootstrap-421 fieldset[disabled] input[type=radio],.factory-bootstrap-421 input[type=checkbox][disabled],.factory-bootstrap-421 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-421 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-421 textarea.input-sm{height:auto}.factory-bootstrap-421 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-421 textarea.input-lg{height:auto}.factory-bootstrap-421 .has-warning .checkbox,.factory-bootstrap-421 .has-warning .checkbox-inline,.factory-bootstrap-421 .has-warning .control-label,.factory-bootstrap-421 .has-warning .help-block,.factory-bootstrap-421 .has-warning .radio,.factory-bootstrap-421 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-421 .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-421 .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-421 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-421 .has-error .checkbox,.factory-bootstrap-421 .has-error .checkbox-inline,.factory-bootstrap-421 .has-error .control-label,.factory-bootstrap-421 .has-error .help-block,.factory-bootstrap-421 .has-error .radio,.factory-bootstrap-421 .has-error .radio-inline{color:#a94442}.factory-bootstrap-421 .controls{display:block}.factory-bootstrap-421 .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-421 .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-421 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-421 .has-success .checkbox,.factory-bootstrap-421 .has-success .checkbox-inline,.factory-bootstrap-421 .has-success .control-label,.factory-bootstrap-421 .has-success .help-block,.factory-bootstrap-421 .has-success .radio,.factory-bootstrap-421 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-421 .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-421 .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-421 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-421 .form-control-static{margin-bottom:0}.factory-bootstrap-421 .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-421 .form-horizontal .checkbox,.factory-bootstrap-421 .form-horizontal .checkbox-inline,.factory-bootstrap-421 .form-horizontal .control-label,.factory-bootstrap-421 .form-horizontal .radio,.factory-bootstrap-421 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-421 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-421 .form-horizontal .checkbox,.factory-bootstrap-421 .form-horizontal .radio{min-height:27px}.factory-bootstrap-421 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-421 .form-horizontal .form-group:after,.factory-bootstrap-421 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-421 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-421 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-421 .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-421 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-421 .btn{text-decoration:none}.factory-bootstrap-421 .btn:focus,.factory-bootstrap-421 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-421 .btn.disabled,.factory-bootstrap-421 .btn[disabled],.factory-bootstrap-421 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .btn-default:focus,.factory-bootstrap-421 .btn-default:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-421 .btn-default.disabled,.factory-bootstrap-421 .btn-default.disabled.active,.factory-bootstrap-421 .btn-default.disabled:active,.factory-bootstrap-421 .btn-default.disabled:focus,.factory-bootstrap-421 .btn-default.disabled:hover,.factory-bootstrap-421 .btn-default[disabled],.factory-bootstrap-421 .btn-default[disabled].active,.factory-bootstrap-421 .btn-default[disabled]:active,.factory-bootstrap-421 .btn-default[disabled]:focus,.factory-bootstrap-421 .btn-default[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-default,.factory-bootstrap-421 fieldset[disabled] .btn-default.active,.factory-bootstrap-421 fieldset[disabled] .btn-default:active,.factory-bootstrap-421 fieldset[disabled] .btn-default:focus,.factory-bootstrap-421 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-421 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-421 .btn-primary.disabled,.factory-bootstrap-421 .btn-primary.disabled.active,.factory-bootstrap-421 .btn-primary.disabled:active,.factory-bootstrap-421 .btn-primary.disabled:focus,.factory-bootstrap-421 .btn-primary.disabled:hover,.factory-bootstrap-421 .btn-primary[disabled],.factory-bootstrap-421 .btn-primary[disabled].active,.factory-bootstrap-421 .btn-primary[disabled]:active,.factory-bootstrap-421 .btn-primary[disabled]:focus,.factory-bootstrap-421 .btn-primary[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-primary,.factory-bootstrap-421 fieldset[disabled] .btn-primary.active,.factory-bootstrap-421 fieldset[disabled] .btn-primary:active,.factory-bootstrap-421 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-421 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-421 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-421 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active,.factory-bootstrap-421 .btn-warning:focus,.factory-bootstrap-421 .btn-warning:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-421 .btn-warning.disabled,.factory-bootstrap-421 .btn-warning.disabled.active,.factory-bootstrap-421 .btn-warning.disabled:active,.factory-bootstrap-421 .btn-warning.disabled:focus,.factory-bootstrap-421 .btn-warning.disabled:hover,.factory-bootstrap-421 .btn-warning[disabled],.factory-bootstrap-421 .btn-warning[disabled].active,.factory-bootstrap-421 .btn-warning[disabled]:active,.factory-bootstrap-421 .btn-warning[disabled]:focus,.factory-bootstrap-421 .btn-warning[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-warning,.factory-bootstrap-421 fieldset[disabled] .btn-warning.active,.factory-bootstrap-421 fieldset[disabled] .btn-warning:active,.factory-bootstrap-421 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-421 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-421 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-421 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .btn-success:focus,.factory-bootstrap-421 .btn-success:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-421 .btn-success.disabled,.factory-bootstrap-421 .btn-success.disabled.active,.factory-bootstrap-421 .btn-success.disabled:active,.factory-bootstrap-421 .btn-success.disabled:focus,.factory-bootstrap-421 .btn-success.disabled:hover,.factory-bootstrap-421 .btn-success[disabled],.factory-bootstrap-421 .btn-success[disabled].active,.factory-bootstrap-421 .btn-success[disabled]:active,.factory-bootstrap-421 .btn-success[disabled]:focus,.factory-bootstrap-421 .btn-success[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-success,.factory-bootstrap-421 fieldset[disabled] .btn-success.active,.factory-bootstrap-421 fieldset[disabled] .btn-success:active,.factory-bootstrap-421 fieldset[disabled] .btn-success:focus,.factory-bootstrap-421 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-421 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-421 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .btn-info:focus,.factory-bootstrap-421 .btn-info:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-421 .btn-info.disabled,.factory-bootstrap-421 .btn-info.disabled.active,.factory-bootstrap-421 .btn-info.disabled:active,.factory-bootstrap-421 .btn-info.disabled:focus,.factory-bootstrap-421 .btn-info.disabled:hover,.factory-bootstrap-421 .btn-info[disabled],.factory-bootstrap-421 .btn-info[disabled].active,.factory-bootstrap-421 .btn-info[disabled]:active,.factory-bootstrap-421 .btn-info[disabled]:focus,.factory-bootstrap-421 .btn-info[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-info,.factory-bootstrap-421 fieldset[disabled] .btn-info.active,.factory-bootstrap-421 fieldset[disabled] .btn-info:active,.factory-bootstrap-421 fieldset[disabled] .btn-info:focus,.factory-bootstrap-421 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-421 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-421 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-421 .btn-link,.factory-bootstrap-421 .btn-link:active,.factory-bootstrap-421 .btn-link[disabled],.factory-bootstrap-421 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-link,.factory-bootstrap-421 .btn-link:active,.factory-bootstrap-421 .btn-link:focus,.factory-bootstrap-421 .btn-link:hover{border-color:transparent}.factory-bootstrap-421 .btn-link:focus,.factory-bootstrap-421 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-421 .btn-link[disabled]:focus,.factory-bootstrap-421 .btn-link[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-link:focus,.factory-bootstrap-421 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-421 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-421 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-421 input[type=button].btn-block,.factory-bootstrap-421 input[type=reset].btn-block,.factory-bootstrap-421 input[type=submit].btn-block{width:100%}.factory-bootstrap-421 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-421 .fade.in{opacity:1}.factory-bootstrap-421 .collapse{display:none}.factory-bootstrap-421 .collapse.in{display:block}.factory-bootstrap-421 .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-421 .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-421 .glyphicon:empty{width:1em}.factory-bootstrap-421 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-421 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-421 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-421 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-421 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-421 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-421 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-421 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-421 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-421 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-421 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-421 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-421 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-421 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-421 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-421 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-421 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-421 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-421 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-421 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-421 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-421 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-421 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-421 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-421 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-421 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-421 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-421 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-421 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-421 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-421 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-421 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-421 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-421 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-421 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-421 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-421 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-421 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-421 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-421 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-421 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-421 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-421 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-421 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-421 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-421 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-421 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-421 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-421 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-421 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-421 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-421 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-421 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-421 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-421 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-421 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-421 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-421 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-421 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-421 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-421 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-421 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-421 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-421 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-421 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-421 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-421 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-421 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-421 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-421 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-421 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-421 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-421 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-421 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-421 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-421 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-421 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-421 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-421 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-421 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-421 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-421 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-421 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-421 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-421 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-421 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-421 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-421 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-421 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-421 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-421 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-421 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-421 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-421 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-421 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-421 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-421 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-421 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-421 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-421 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-421 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-421 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-421 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-421 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-421 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-421 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-421 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-421 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-421 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-421 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-421 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-421 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-421 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-421 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-421 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-421 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-421 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-421 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-421 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-421 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-421 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-421 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-421 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-421 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-421 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-421 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-421 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-421 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-421 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-421 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-421 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-421 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-421 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-421 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-421 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-421 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-421 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-421 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-421 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-421 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-421 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-421 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-421 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-421 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-421 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-421 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-421 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-421 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-421 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-421 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-421 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-421 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-421 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-421 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-421 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-421 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-421 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-421 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-421 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-421 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-421 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-421 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-421 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-421 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-421 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-421 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-421 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-421 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-421 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-421 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-421 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-421 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-421 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-421 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-421 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-421 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-421 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-421 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-421 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-421 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-421 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-421 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-421 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-421 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-421 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-421 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-421 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-421 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-421 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-421 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-421 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-421 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-421 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-421 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-421 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-421 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-421 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-421 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-421 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-421 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-421 .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-421 .dropdown{position:relative}.factory-bootstrap-421 .dropdown-toggle:focus{outline:0}.factory-bootstrap-421 .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-421 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-421 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-421 .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-421 .dropdown-menu>li>a:focus,.factory-bootstrap-421 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-421 .dropdown-menu>.active>a,.factory-bootstrap-421 .dropdown-menu>.active>a:focus,.factory-bootstrap-421 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-421 .dropdown-menu>.disabled>a,.factory-bootstrap-421 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-421 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-421 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-421 .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-421 .open>.dropdown-menu{display:block}.factory-bootstrap-421 .open>a{outline:0}.factory-bootstrap-421 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-421 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-421 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-421 .dropup .caret,.factory-bootstrap-421 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-421 .dropup .dropdown-menu,.factory-bootstrap-421 .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-421 .btn-group,.factory-bootstrap-421 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-421 .btn-group-vertical>.btn,.factory-bootstrap-421 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-421 .btn-group-vertical>.btn.active,.factory-bootstrap-421 .btn-group-vertical>.btn:active,.factory-bootstrap-421 .btn-group-vertical>.btn:focus,.factory-bootstrap-421 .btn-group-vertical>.btn:hover,.factory-bootstrap-421 .btn-group>.btn.active,.factory-bootstrap-421 .btn-group>.btn:active,.factory-bootstrap-421 .btn-group>.btn:focus,.factory-bootstrap-421 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-421 .btn-group-vertical>.btn:focus,.factory-bootstrap-421 .btn-group>.btn:focus{outline:0}.factory-bootstrap-421 .btn-group .btn+.btn,.factory-bootstrap-421 .btn-group .btn+.btn-group,.factory-bootstrap-421 .btn-group .btn-group+.btn,.factory-bootstrap-421 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-421 .btn-toolbar:after,.factory-bootstrap-421 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-421 .btn-toolbar:after{clear:both}.factory-bootstrap-421 .btn-toolbar .btn-group{float:left}.factory-bootstrap-421 .btn-toolbar>.btn+.btn,.factory-bootstrap-421 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-421 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-421 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-421 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-421 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-421 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-421 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group>.btn-group{float:left}.factory-bootstrap-421 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-421 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-421 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group .dropdown-toggle:active,.factory-bootstrap-421 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-421 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-421 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-421 .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-421 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-421 .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-421 .btn .caret{margin-left:0}.factory-bootstrap-421 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-421 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-421 .btn-group-vertical>.btn,.factory-bootstrap-421 .btn-group-vertical>.btn-group,.factory-bootstrap-421 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-421 .btn-group-vertical>.btn-group:after,.factory-bootstrap-421 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-421 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-421 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-421 .btn-group-vertical>.btn+.btn,.factory-bootstrap-421 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-421 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-421 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-421 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-421 .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-421 .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-421 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-421 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-421 .btn-group-justified>.btn,.factory-bootstrap-421 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-421 .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-421 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-421 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-421 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-421 .input-group-lg>.form-control,.factory-bootstrap-421 .input-group-lg>.input-group-addon,.factory-bootstrap-421 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 select.input-group-lg>.form-control,.factory-bootstrap-421 select.input-group-lg>.input-group-addon,.factory-bootstrap-421 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-421 textarea.input-group-lg>.form-control,.factory-bootstrap-421 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-421 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-421 .input-group-sm>.form-control,.factory-bootstrap-421 .input-group-sm>.input-group-addon,.factory-bootstrap-421 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 select.input-group-sm>.form-control,.factory-bootstrap-421 select.input-group-sm>.input-group-addon,.factory-bootstrap-421 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-421 textarea.input-group-sm>.form-control,.factory-bootstrap-421 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-421 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-421 .input-group .form-control,.factory-bootstrap-421 .input-group-addon,.factory-bootstrap-421 .input-group-btn{display:table-cell}.factory-bootstrap-421 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-421 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-421 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-421 .input-group-addon,.factory-bootstrap-421 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-421 .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-421 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-421 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-421 .input-group-addon input[type=checkbox],.factory-bootstrap-421 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-421 .input-group .form-control:first-child,.factory-bootstrap-421 .input-group-addon:first-child,.factory-bootstrap-421 .input-group-btn:first-child>.btn,.factory-bootstrap-421 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-421 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .input-group-addon:first-child{border-right:0}.factory-bootstrap-421 .input-group .form-control:last-child,.factory-bootstrap-421 .input-group-addon:last-child,.factory-bootstrap-421 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-421 .input-group-btn:last-child>.btn,.factory-bootstrap-421 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .input-group-addon:last-child{border-left:0}.factory-bootstrap-421 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-421 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-421 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-421 .input-group-btn>.btn{position:relative}.factory-bootstrap-421 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-421 .input-group-btn>.btn:active,.factory-bootstrap-421 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-421 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-421 .nav:after,.factory-bootstrap-421 .nav:before{display:table;content:" "}.factory-bootstrap-421 .nav:after{clear:both}.factory-bootstrap-421 .nav>li{position:relative;display:block}.factory-bootstrap-421 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-421 .nav>li>a:focus,.factory-bootstrap-421 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-421 .nav>li.disabled>a{color:#999}.factory-bootstrap-421 .nav>li.disabled>a:focus,.factory-bootstrap-421 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-421 .nav .open>a,.factory-bootstrap-421 .nav .open>a:focus,.factory-bootstrap-421 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-421 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-421 .nav>li>a>img{max-width:none}.factory-bootstrap-421 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-421 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-421 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-421 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-421 .nav-tabs>li.active>a,.factory-bootstrap-421 .nav-tabs>li.active>a:focus,.factory-bootstrap-421 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-421 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-421 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-421 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-421 .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-421 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-421 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-421 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-421 .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-421 .nav-pills>li{float:left}.factory-bootstrap-421 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-421 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-421 .nav-pills>li.active>a,.factory-bootstrap-421 .nav-pills>li.active>a:focus,.factory-bootstrap-421 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-421 .nav-stacked>li{float:none}.factory-bootstrap-421 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-421 .nav-justified{width:100%}.factory-bootstrap-421 .nav-justified>li{float:none}.factory-bootstrap-421 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-421 .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-421 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-421 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-421 .nav-tabs-justified>.active>a,.factory-bootstrap-421 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-421 .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-421 .tab-content>.tab-pane{display:none}.factory-bootstrap-421 .tab-content>.active{display:block}.factory-bootstrap-421 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-421 .navbar:after,.factory-bootstrap-421 .navbar:before{display:table;content:" "}.factory-bootstrap-421 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-421 .navbar-header:after,.factory-bootstrap-421 .navbar-header:before{display:table;content:" "}.factory-bootstrap-421 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-421 .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-421 .navbar-collapse:after,.factory-bootstrap-421 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-421 .navbar-collapse:after{clear:both}.factory-bootstrap-421 .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-421 .container>.navbar-collapse,.factory-bootstrap-421 .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-421 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-421 .navbar-fixed-bottom,.factory-bootstrap-421 .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-421 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-421 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-421 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-421 .navbar-brand:focus,.factory-bootstrap-421 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-421 .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-421 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-421 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-421 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-421 .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-421 .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-421 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-421 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-421 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-421 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-421 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-421 .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-421 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-421 .navbar-default .navbar-brand:focus,.factory-bootstrap-421 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-nav>li>a,.factory-bootstrap-421 .navbar-default .navbar-text{color:#777}.factory-bootstrap-421 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-421 .navbar-default .navbar-toggle:focus,.factory-bootstrap-421 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-421 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-421 .navbar-default .navbar-collapse,.factory-bootstrap-421 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-421 .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-421 .navbar-default .navbar-link{color:#777}.factory-bootstrap-421 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-421 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-421 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-421 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-421 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-421 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-421 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-421 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-421 .navbar-inverse .navbar-collapse,.factory-bootstrap-421 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-421 .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-421 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-421 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-421 .breadcrumb>li{display:inline-block}.factory-bootstrap-421 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-421 .breadcrumb>.active{color:#999}.factory-bootstrap-421 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-421 .pagination>li{display:inline}.factory-bootstrap-421 .pagination>li>a,.factory-bootstrap-421 .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-421 .pagination>li:first-child>a,.factory-bootstrap-421 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-421 .pagination>li:last-child>a,.factory-bootstrap-421 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-421 .pagination>li>a:focus,.factory-bootstrap-421 .pagination>li>a:hover,.factory-bootstrap-421 .pagination>li>span:focus,.factory-bootstrap-421 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-421 .pagination>.disabled>a,.factory-bootstrap-421 .pagination>.disabled>a:focus,.factory-bootstrap-421 .pagination>.disabled>a:hover,.factory-bootstrap-421 .pagination>.disabled>span,.factory-bootstrap-421 .pagination>.disabled>span:focus,.factory-bootstrap-421 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-421 .pagination-lg>li>a,.factory-bootstrap-421 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-421 .pagination-lg>li:first-child>a,.factory-bootstrap-421 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-421 .pagination-lg>li:last-child>a,.factory-bootstrap-421 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-421 .pagination-sm>li>a,.factory-bootstrap-421 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-421 .pagination-sm>li:first-child>a,.factory-bootstrap-421 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-421 .pagination-sm>li:last-child>a,.factory-bootstrap-421 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-421 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-421 .pager:after,.factory-bootstrap-421 .pager:before{display:table;content:" "}.factory-bootstrap-421 .pager:after{clear:both}.factory-bootstrap-421 .pager li{display:inline}.factory-bootstrap-421 .pager li>a,.factory-bootstrap-421 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-421 .pager li>a:focus,.factory-bootstrap-421 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-421 .pager .next>a,.factory-bootstrap-421 .pager .next>span{float:right}.factory-bootstrap-421 .pager .previous>a,.factory-bootstrap-421 .pager .previous>span{float:left}.factory-bootstrap-421 .pager .disabled>a,.factory-bootstrap-421 .pager .disabled>a:focus,.factory-bootstrap-421 .pager .disabled>a:hover,.factory-bootstrap-421 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-421 .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-421 .label[href]:focus,.factory-bootstrap-421 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-421 .label:empty{display:none}.factory-bootstrap-421 .btn .label{position:relative;top:-1px}.factory-bootstrap-421 .label-default{background-color:#999}.factory-bootstrap-421 .label-default[href]:focus,.factory-bootstrap-421 .label-default[href]:hover{background-color:gray}.factory-bootstrap-421 .label-primary{background-color:#428bca}.factory-bootstrap-421 .label-primary[href]:focus,.factory-bootstrap-421 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-421 .label-success{background-color:#5cb85c}.factory-bootstrap-421 .label-success[href]:focus,.factory-bootstrap-421 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-421 .label-info{background-color:#5bc0de}.factory-bootstrap-421 .label-info[href]:focus,.factory-bootstrap-421 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-421 .label-warning{background-color:#f0ad4e}.factory-bootstrap-421 .label-warning[href]:focus,.factory-bootstrap-421 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-421 .label-danger{background-color:#d9534f}.factory-bootstrap-421 .label-danger[href]:focus,.factory-bootstrap-421 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-421 .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-421 .badge:empty{display:none}.factory-bootstrap-421 .btn .badge{position:relative;top:-1px}.factory-bootstrap-421 a.badge:focus,.factory-bootstrap-421 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-421 .nav-pills>.active>a>.badge,.factory-bootstrap-421 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-421 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-421 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-421 .jumbotron .h1,.factory-bootstrap-421 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-421 .jumbotron p{line-height:1.4}.factory-bootstrap-421 .container .jumbotron{border-radius:6px}.factory-bootstrap-421 .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-421 .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-421 .thumbnail a>img,.factory-bootstrap-421 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-421 a.thumbnail.active,.factory-bootstrap-421 a.thumbnail:focus,.factory-bootstrap-421 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-421 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-421 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-421 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-421 .alert .alert-link{font-weight:700}.factory-bootstrap-421 .alert>p,.factory-bootstrap-421 .alert>ul{margin-bottom:0}.factory-bootstrap-421 .alert>p+p{margin-top:5px}.factory-bootstrap-421 .alert-dismissable{padding-right:35px}.factory-bootstrap-421 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-421 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-421 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-421 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-421 .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-421 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-421 .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-421 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-421 .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-421 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-421 .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-421 .media,.factory-bootstrap-421 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-421 .media,.factory-bootstrap-421 .media .media{margin-top:15px}.factory-bootstrap-421 .media:first-child{margin-top:0}.factory-bootstrap-421 .media-object{display:block}.factory-bootstrap-421 .media-heading{margin:0 0 5px}.factory-bootstrap-421 .media>.pull-left{margin-right:10px}.factory-bootstrap-421 .media>.pull-right{margin-left:10px}.factory-bootstrap-421 .media-list{padding-left:0;list-style:none}.factory-bootstrap-421 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-421 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-421 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-421 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-421 .list-group-item>.badge{float:right}.factory-bootstrap-421 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-421 a.list-group-item{color:#555}.factory-bootstrap-421 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-421 a.list-group-item:focus,.factory-bootstrap-421 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-421 a.list-group-item.active,.factory-bootstrap-421 a.list-group-item.active:focus,.factory-bootstrap-421 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-421 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-421 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-421 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-421 a.list-group-item.active .list-group-item-text,.factory-bootstrap-421 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-421 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-421 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-421 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-421 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-421 .panel-body{padding:15px}.factory-bootstrap-421 .panel-body:after,.factory-bootstrap-421 .panel-body:before{display:table;content:" "}.factory-bootstrap-421 .panel-body:after{clear:both}.factory-bootstrap-421 .panel>.list-group{margin-bottom:0}.factory-bootstrap-421 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-421 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-421 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-421 .panel>.table,.factory-bootstrap-421 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-421 .panel>.panel-body+.table,.factory-bootstrap-421 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-421 .panel>.table>tbody:first-child td,.factory-bootstrap-421 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-421 .panel>.table-bordered,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-421 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-421 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-421 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-421 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-421 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-421 .panel-title>a{color:inherit}.factory-bootstrap-421 .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-421 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-421 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-421 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-421 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-421 .panel-group .panel-footer{border-top:0}.factory-bootstrap-421 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-421 .panel-default{border-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-421 .panel-primary{border-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-421 .panel-success{border-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-421 .panel-warning{border-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-421 .panel-danger{border-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-421 .panel-info{border-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-421 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-421 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-421 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-421 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-421 .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-421 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-421 .close:focus,.factory-bootstrap-421 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-421 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-421 .modal-open{overflow:hidden}.factory-bootstrap-421 .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-421 .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-421 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-421 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-421 .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-421 .modal-backdrop,.factory-bootstrap-421-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-421 .modal-backdrop.fade,.factory-bootstrap-421-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-421 .modal-backdrop.in,.factory-bootstrap-421-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-421 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-421 .modal-header .close{margin-top:-2px}.factory-bootstrap-421 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-421 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-421 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-421 .modal-footer:after,.factory-bootstrap-421 .modal-footer:before{display:table;content:" "}.factory-bootstrap-421 .modal-footer:after{clear:both}.factory-bootstrap-421 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-421 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-421 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-421 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-421 .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-421 .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-421 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-421 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-421 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-421 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-421 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-421 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-421 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-421 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-421 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-421 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .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-421 .popover.top{margin-top:-10px}.factory-bootstrap-421 .popover.right{margin-left:10px}.factory-bootstrap-421 .popover.bottom{margin-top:10px}.factory-bootstrap-421 .popover.left{margin-left:-10px}.factory-bootstrap-421 .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-421 .popover-content{padding:9px 14px}.factory-bootstrap-421 .popover .arrow,.factory-bootstrap-421 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-421 .popover .arrow{border-width:11px}.factory-bootstrap-421 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-421 .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-421 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-421 .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-421 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-421 .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-421 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-421 .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-421 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-421 .carousel{position:relative}.factory-bootstrap-421 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-421 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-421 .carousel-inner>.item>a>img,.factory-bootstrap-421 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-421 .carousel-inner>.active,.factory-bootstrap-421 .carousel-inner>.next,.factory-bootstrap-421 .carousel-inner>.prev{display:block}.factory-bootstrap-421 .carousel-inner>.active{left:0}.factory-bootstrap-421 .carousel-inner>.next,.factory-bootstrap-421 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-421 .carousel-inner>.next{left:100%}.factory-bootstrap-421 .carousel-inner>.prev{left:-100%}.factory-bootstrap-421 .carousel-inner>.next.left,.factory-bootstrap-421 .carousel-inner>.prev.right{left:0}.factory-bootstrap-421 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-421 .carousel-inner>.active.right{left:100%}.factory-bootstrap-421 .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-421 .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-421 .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-421 .carousel-control:focus,.factory-bootstrap-421 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-421 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-421 .carousel-control .icon-next,.factory-bootstrap-421 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-421 .carousel-control .icon-prev{left:50%}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-421 .carousel-control .icon-next{right:50%}.factory-bootstrap-421 .carousel-control .icon-next,.factory-bootstrap-421 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-421 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-421 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-421 .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-421 .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-421 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-421 .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-421 .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-421 .clearfix:after,.factory-bootstrap-421 .clearfix:before{display:table;content:" "}.factory-bootstrap-421 .clearfix:after{clear:both}.factory-bootstrap-421 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-421 .pull-right{float:right!important}.factory-bootstrap-421 .pull-left{float:left!important}.factory-bootstrap-421 .hide{display:none!important}.factory-bootstrap-421 .show{display:block!important}.factory-bootstrap-421 .invisible{visibility:hidden}.factory-bootstrap-421 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-421 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-421 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-421 .visible-lg,.factory-bootstrap-421 .visible-md,.factory-bootstrap-421 .visible-sm,.factory-bootstrap-421 .visible-xs,.factory-bootstrap-421 td.visible-lg,.factory-bootstrap-421 td.visible-md,.factory-bootstrap-421 td.visible-sm,.factory-bootstrap-421 td.visible-xs,.factory-bootstrap-421 th.visible-lg,.factory-bootstrap-421 th.visible-md,.factory-bootstrap-421 th.visible-sm,.factory-bootstrap-421 th.visible-xs,.factory-bootstrap-421 tr.visible-lg,.factory-bootstrap-421 tr.visible-md,.factory-bootstrap-421 tr.visible-sm,.factory-bootstrap-421 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-421 .hidden-xs{display:block!important}.factory-bootstrap-421 table.hidden-xs{display:table}.factory-bootstrap-421 tr.hidden-xs{display:table-row!important}.factory-bootstrap-421 td.hidden-xs,.factory-bootstrap-421 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-421 .hidden-sm{display:block!important}.factory-bootstrap-421 table.hidden-sm{display:table}.factory-bootstrap-421 tr.hidden-sm{display:table-row!important}.factory-bootstrap-421 td.hidden-sm,.factory-bootstrap-421 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-421 .hidden-md{display:block!important}.factory-bootstrap-421 table.hidden-md{display:table}.factory-bootstrap-421 tr.hidden-md{display:table-row!important}.factory-bootstrap-421 td.hidden-md,.factory-bootstrap-421 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-421 .hidden-lg{display:block!important}.factory-bootstrap-421 table.hidden-lg{display:table}.factory-bootstrap-421 tr.hidden-lg{display:table-row!important}.factory-bootstrap-421 td.hidden-lg,.factory-bootstrap-421 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-421 .hidden-lg.hidden-xs,.factory-bootstrap-421 td.hidden-lg.hidden-xs,.factory-bootstrap-421 th.hidden-lg.hidden-xs,.factory-bootstrap-421 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-421 .hidden-lg.hidden-sm,.factory-bootstrap-421 td.hidden-lg.hidden-sm,.factory-bootstrap-421 th.hidden-lg.hidden-sm,.factory-bootstrap-421 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-421 .hidden-lg.hidden-md,.factory-bootstrap-421 td.hidden-lg.hidden-md,.factory-bootstrap-421 th.hidden-lg.hidden-md,.factory-bootstrap-421 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-421 .hidden-lg,.factory-bootstrap-421 td.hidden-lg,.factory-bootstrap-421 th.hidden-lg,.factory-bootstrap-421 tr.hidden-lg{display:none!important}}.factory-bootstrap-421 .visible-print,.factory-bootstrap-421 td.visible-print,.factory-bootstrap-421 th.visible-print,.factory-bootstrap-421 tr.visible-print{display:none!important}@media print{.factory-bootstrap-421 .visible-print{display:block!important}.factory-bootstrap-421 table.visible-print{display:table}.factory-bootstrap-421 tr.visible-print{display:table-row!important}.factory-bootstrap-421 td.visible-print,.factory-bootstrap-421 th.visible-print{display:table-cell!important}.factory-bootstrap-421 .hidden-print,.factory-bootstrap-421 td.hidden-print,.factory-bootstrap-421 th.hidden-print,.factory-bootstrap-421 tr.hidden-print{display:none!important}}/*!
12
  * Factory Default Bootstrap Theme
13
  *
14
  * The code is based on Bootstrap v2.1.1
@@ -22,4 +22,4 @@
22
  *
23
  * @package factory-bootstrap
24
  * @since 1.0.0
25
- */.factory-bootstrap-421 .btn-danger,.factory-bootstrap-421 .btn-default,.factory-bootstrap-421 .btn-info,.factory-bootstrap-421 .btn-primary,.factory-bootstrap-421 .btn-success,.factory-bootstrap-421 .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-421 .btn-danger.active,.factory-bootstrap-421 .btn-danger:active,.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .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-421 .btn.active,.factory-bootstrap-421 .btn:active{background-image:none}.factory-bootstrap-421 .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-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-421 .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-421 .btn-gold:focus,.factory-bootstrap-421 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-421 .btn-gold.active,.factory-bootstrap-421 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-421 .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-421 .btn-success:focus,.factory-bootstrap-421 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-421 .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-421 .btn-warning:focus,.factory-bootstrap-421 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-421 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-421 .btn-danger.active,.factory-bootstrap-421 .btn-danger:active,.factory-bootstrap-421 .btn-danger:focus,.factory-bootstrap-421 .btn-danger:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-421 .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-421 .btn-info:focus,.factory-bootstrap-421 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-421 .img-thumbnail,.factory-bootstrap-421 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-421 .dropdown-menu>li>a:focus,.factory-bootstrap-421 .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-421 .dropdown-menu>.active>a,.factory-bootstrap-421 .dropdown-menu>.active>a:focus,.factory-bootstrap-421 .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-421 .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-421 .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-421 .navbar-brand,.factory-bootstrap-421 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-421 .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-421 .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-421 .navbar-inverse .navbar-brand,.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-421 .navbar-fixed-bottom,.factory-bootstrap-421 .navbar-fixed-top,.factory-bootstrap-421 .navbar-static-top{border-radius:0}.factory-bootstrap-421 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-421 .alert .actions{padding-top:10px}.factory-bootstrap-421 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-421 .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-421 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-421 .alert-normal,.factory-bootstrap-421 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-421 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-421 .alert-danger a:not(.btn),.factory-bootstrap-421 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .list-group-item.active,.factory-bootstrap-421 .list-group-item.active:focus,.factory-bootstrap-421 .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-421 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-421 .factory-hidden{display:none}.factory-bootstrap-421 .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-423 article,.factory-bootstrap-423 aside,.factory-bootstrap-423 details,.factory-bootstrap-423 figcaption,.factory-bootstrap-423 figure,.factory-bootstrap-423 footer,.factory-bootstrap-423 header,.factory-bootstrap-423 hgroup,.factory-bootstrap-423 main,.factory-bootstrap-423 nav,.factory-bootstrap-423 section,.factory-bootstrap-423 summary{display:block}.factory-bootstrap-423 audio,.factory-bootstrap-423 canvas,.factory-bootstrap-423 video{display:inline-block}.factory-bootstrap-423 audio:not([controls]){display:none;height:0}.factory-bootstrap-423 [hidden],.factory-bootstrap-423 template{display:none}.factory-bootstrap-423 body{margin:0}.factory-bootstrap-423 a{background:0 0}.factory-bootstrap-423 a:focus{outline:thin dotted}.factory-bootstrap-423 a:active,.factory-bootstrap-423 a:hover{outline:0}.factory-bootstrap-423 h1{margin:.67em 0}.factory-bootstrap-423 b,.factory-bootstrap-423 strong{font-weight:700}.factory-bootstrap-423 dfn{font-style:italic}.factory-bootstrap-423 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 mark{color:#000;background:#ff0}.factory-bootstrap-423 code,.factory-bootstrap-423 kbd,.factory-bootstrap-423 pre,.factory-bootstrap-423 samp{font-size:1em}.factory-bootstrap-423 pre{white-space:pre-wrap}.factory-bootstrap-423 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-423 sub,.factory-bootstrap-423 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-423 sup{top:-.5em}.factory-bootstrap-423 sub{bottom:-.25em}.factory-bootstrap-423 img{border:0}.factory-bootstrap-423 svg:not(:root){overflow:hidden}.factory-bootstrap-423 figure{margin:0}.factory-bootstrap-423 button,.factory-bootstrap-423 input,.factory-bootstrap-423 select,.factory-bootstrap-423 textarea{margin:0}.factory-bootstrap-423 button,.factory-bootstrap-423 select{text-transform:none}.factory-bootstrap-423 select{padding-right:4px!important}.factory-bootstrap-423 button,.factory-bootstrap-423 input[type=reset],.factory-bootstrap-423 input[type=submit],html .factory-bootstrap-423 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-423 button[disabled],html .factory-bootstrap-423 input[disabled]{cursor:default}.factory-bootstrap-423 input[type=checkbox],.factory-bootstrap-423 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-423 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-423 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-423 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-423 button::-moz-focus-inner,.factory-bootstrap-423 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-423 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-423 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-423 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-423 a,.factory-bootstrap-423 a:visited{text-decoration:underline}.factory-bootstrap-423 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-423 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-423 a[href^="javascript:"]:after,.factory-bootstrap-423 a[href^="#"]:after{content:""}.factory-bootstrap-423 blockquote,.factory-bootstrap-423 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-423 thead{display:table-header-group}.factory-bootstrap-423 img,.factory-bootstrap-423 tr{page-break-inside:avoid}.factory-bootstrap-423 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-423 h2,.factory-bootstrap-423 h3,.factory-bootstrap-423 p{orphans:3;widows:3}.factory-bootstrap-423 h2,.factory-bootstrap-423 h3{page-break-after:avoid}.factory-bootstrap-423 select{background:#fff!important}.factory-bootstrap-423 .navbar{display:none}.factory-bootstrap-423 .table td,.factory-bootstrap-423 .table th{background-color:#fff!important}.factory-bootstrap-423 .btn>.caret,.factory-bootstrap-423 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-423 .label{border:1px solid #000}.factory-bootstrap-423 .table{border-collapse:collapse!important}.factory-bootstrap-423 .table-bordered td,.factory-bootstrap-423 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-423 *,.factory-bootstrap-423 :after,.factory-bootstrap-423 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-423{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-423 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-423 button,.factory-bootstrap-423 input,.factory-bootstrap-423 select,.factory-bootstrap-423 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-423 img{vertical-align:middle}.factory-bootstrap-423 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-423 .img-rounded{border-radius:6px}.factory-bootstrap-423 .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-423 .img-circle{border-radius:50%}.factory-bootstrap-423 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-423 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-423 .h1,.factory-bootstrap-423 .h2,.factory-bootstrap-423 .h3,.factory-bootstrap-423 .h4,.factory-bootstrap-423 .h5,.factory-bootstrap-423 .h6,.factory-bootstrap-423 h1,.factory-bootstrap-423 h2,.factory-bootstrap-423 h3,.factory-bootstrap-423 h4,.factory-bootstrap-423 h5,.factory-bootstrap-423 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-423 .h1 .small,.factory-bootstrap-423 .h1 small,.factory-bootstrap-423 .h2 .small,.factory-bootstrap-423 .h2 small,.factory-bootstrap-423 .h3 .small,.factory-bootstrap-423 .h3 small,.factory-bootstrap-423 .h4 .small,.factory-bootstrap-423 .h4 small,.factory-bootstrap-423 .h5 .small,.factory-bootstrap-423 .h5 small,.factory-bootstrap-423 .h6 .small,.factory-bootstrap-423 .h6 small,.factory-bootstrap-423 h1 .small,.factory-bootstrap-423 h1 small,.factory-bootstrap-423 h2 .small,.factory-bootstrap-423 h2 small,.factory-bootstrap-423 h3 .small,.factory-bootstrap-423 h3 small,.factory-bootstrap-423 h4 .small,.factory-bootstrap-423 h4 small,.factory-bootstrap-423 h5 .small,.factory-bootstrap-423 h5 small,.factory-bootstrap-423 h6 .small,.factory-bootstrap-423 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-423 h1,.factory-bootstrap-423 h2,.factory-bootstrap-423 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-423 h1 .small,.factory-bootstrap-423 h1 small,.factory-bootstrap-423 h2 .small,.factory-bootstrap-423 h2 small,.factory-bootstrap-423 h3 .small,.factory-bootstrap-423 h3 small{font-size:65%}.factory-bootstrap-423 h4,.factory-bootstrap-423 h5,.factory-bootstrap-423 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-423 h4 .small,.factory-bootstrap-423 h4 small,.factory-bootstrap-423 h5 .small,.factory-bootstrap-423 h5 small,.factory-bootstrap-423 h6 .small,.factory-bootstrap-423 h6 small{font-size:75%}.factory-bootstrap-423 .h1,.factory-bootstrap-423 h1{font-size:36px}.factory-bootstrap-423 .h2,.factory-bootstrap-423 h2{font-size:30px}.factory-bootstrap-423 .h3,.factory-bootstrap-423 h3{font-size:24px}.factory-bootstrap-423 .h4,.factory-bootstrap-423 h4{font-size:18px}.factory-bootstrap-423 .h5,.factory-bootstrap-423 h5{font-size:14px}.factory-bootstrap-423 .h6,.factory-bootstrap-423 h6{font-size:12px}.factory-bootstrap-423 p{margin:0 0 10px}.factory-bootstrap-423 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-423 .small,.factory-bootstrap-423 small{font-size:85%}.factory-bootstrap-423 cite{font-style:normal}.factory-bootstrap-423 .text-muted{color:#999}.factory-bootstrap-423 .text-primary{color:#428bca}.factory-bootstrap-423 .text-primary:hover{color:#3071a9}.factory-bootstrap-423 .text-warning{color:#8a6d3b}.factory-bootstrap-423 .text-warning:hover{color:#66512c}.factory-bootstrap-423 .text-danger{color:#a94442}.factory-bootstrap-423 .text-danger:hover{color:#843534}.factory-bootstrap-423 .text-success{color:#3c763d}.factory-bootstrap-423 .text-success:hover{color:#2b542c}.factory-bootstrap-423 .text-info{color:#31708f}.factory-bootstrap-423 .text-info:hover{color:#245269}.factory-bootstrap-423 .text-left{text-align:left}.factory-bootstrap-423 .text-right{text-align:right}.factory-bootstrap-423 .text-center{text-align:center}.factory-bootstrap-423 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-423 ol,.factory-bootstrap-423 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-423 ol ol,.factory-bootstrap-423 ol ul,.factory-bootstrap-423 ul ol,.factory-bootstrap-423 ul ul{margin-bottom:0}.factory-bootstrap-423 .list-inline,.factory-bootstrap-423 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-423 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-423 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-423 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-423 dd,.factory-bootstrap-423 dt{line-height:1.428571429}.factory-bootstrap-423 dt{font-weight:700}.factory-bootstrap-423 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-423 abbr[data-original-title],.factory-bootstrap-423 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-423 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-423 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-423 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-423 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-423 blockquote .small,.factory-bootstrap-423 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-423 blockquote .small:before,.factory-bootstrap-423 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-423 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-423 blockquote.pull-right .small,.factory-bootstrap-423 blockquote.pull-right p,.factory-bootstrap-423 blockquote.pull-right small{text-align:right}.factory-bootstrap-423 blockquote.pull-right .small:before,.factory-bootstrap-423 blockquote.pull-right small:before{content:''}.factory-bootstrap-423 blockquote.pull-right .small:after,.factory-bootstrap-423 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-423 blockquote:after,.factory-bootstrap-423 blockquote:before{content:""}.factory-bootstrap-423 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-423 code,.factory-bootstrap-423 kbd,.factory-bootstrap-423 pre,.factory-bootstrap-423 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-423 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-423 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-423 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-423 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-423 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-423 .container:after,.factory-bootstrap-423 .container:before{display:table;content:" "}.factory-bootstrap-423 .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-423 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-423 .row:after,.factory-bootstrap-423 .row:before{display:table;content:" "}.factory-bootstrap-423 .row:after{clear:both}.factory-bootstrap-423 .col-lg-1,.factory-bootstrap-423 .col-lg-10,.factory-bootstrap-423 .col-lg-11,.factory-bootstrap-423 .col-lg-12,.factory-bootstrap-423 .col-lg-2,.factory-bootstrap-423 .col-lg-3,.factory-bootstrap-423 .col-lg-4,.factory-bootstrap-423 .col-lg-5,.factory-bootstrap-423 .col-lg-6,.factory-bootstrap-423 .col-lg-7,.factory-bootstrap-423 .col-lg-8,.factory-bootstrap-423 .col-lg-9,.factory-bootstrap-423 .col-md-1,.factory-bootstrap-423 .col-md-10,.factory-bootstrap-423 .col-md-11,.factory-bootstrap-423 .col-md-12,.factory-bootstrap-423 .col-md-2,.factory-bootstrap-423 .col-md-3,.factory-bootstrap-423 .col-md-4,.factory-bootstrap-423 .col-md-5,.factory-bootstrap-423 .col-md-6,.factory-bootstrap-423 .col-md-7,.factory-bootstrap-423 .col-md-8,.factory-bootstrap-423 .col-md-9,.factory-bootstrap-423 .col-sm-1,.factory-bootstrap-423 .col-sm-10,.factory-bootstrap-423 .col-sm-11,.factory-bootstrap-423 .col-sm-12,.factory-bootstrap-423 .col-sm-2,.factory-bootstrap-423 .col-sm-3,.factory-bootstrap-423 .col-sm-4,.factory-bootstrap-423 .col-sm-5,.factory-bootstrap-423 .col-sm-6,.factory-bootstrap-423 .col-sm-7,.factory-bootstrap-423 .col-sm-8,.factory-bootstrap-423 .col-sm-9,.factory-bootstrap-423 .col-xs-1,.factory-bootstrap-423 .col-xs-10,.factory-bootstrap-423 .col-xs-11,.factory-bootstrap-423 .col-xs-12,.factory-bootstrap-423 .col-xs-2,.factory-bootstrap-423 .col-xs-3,.factory-bootstrap-423 .col-xs-4,.factory-bootstrap-423 .col-xs-5,.factory-bootstrap-423 .col-xs-6,.factory-bootstrap-423 .col-xs-7,.factory-bootstrap-423 .col-xs-8,.factory-bootstrap-423 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-423 .col-xs-1,.factory-bootstrap-423 .col-xs-10,.factory-bootstrap-423 .col-xs-11,.factory-bootstrap-423 .col-xs-12,.factory-bootstrap-423 .col-xs-2,.factory-bootstrap-423 .col-xs-3,.factory-bootstrap-423 .col-xs-4,.factory-bootstrap-423 .col-xs-5,.factory-bootstrap-423 .col-xs-6,.factory-bootstrap-423 .col-xs-7,.factory-bootstrap-423 .col-xs-8,.factory-bootstrap-423 .col-xs-9{float:left}.factory-bootstrap-423 .col-xs-12{width:100%}.factory-bootstrap-423 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-423 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-423 .col-xs-9{width:75%}.factory-bootstrap-423 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-423 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-423 .col-xs-6{width:50%}.factory-bootstrap-423 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-423 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-423 .col-xs-3{width:25%}.factory-bootstrap-423 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-423 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-423 .col-xs-pull-12{right:100%}.factory-bootstrap-423 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-423 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-423 .col-xs-pull-9{right:75%}.factory-bootstrap-423 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-423 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-423 .col-xs-pull-6{right:50%}.factory-bootstrap-423 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-423 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-423 .col-xs-pull-3{right:25%}.factory-bootstrap-423 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-423 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-423 .col-xs-pull-0{right:0}.factory-bootstrap-423 .col-xs-push-12{left:100%}.factory-bootstrap-423 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-423 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-423 .col-xs-push-9{left:75%}.factory-bootstrap-423 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-423 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-423 .col-xs-push-6{left:50%}.factory-bootstrap-423 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-423 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-423 .col-xs-push-3{left:25%}.factory-bootstrap-423 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-423 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-423 .col-xs-push-0{left:0}.factory-bootstrap-423 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-423 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-423 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-423 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-423 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-423 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-423 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-423 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-423 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-423 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-423 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-423 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-423 .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-423 table{max-width:100%;background-color:transparent}.factory-bootstrap-423 th{text-align:left}.factory-bootstrap-423 .table{width:100%;margin-bottom:20px}.factory-bootstrap-423 .table>tbody>tr>td,.factory-bootstrap-423 .table>tbody>tr>th,.factory-bootstrap-423 .table>tfoot>tr>td,.factory-bootstrap-423 .table>tfoot>tr>th,.factory-bootstrap-423 .table>thead>tr>td,.factory-bootstrap-423 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-423 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-423 .table>caption+thead>tr:first-child>td,.factory-bootstrap-423 .table>caption+thead>tr:first-child>th,.factory-bootstrap-423 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-423 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-423 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-423 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-423 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-423 .table .table{background-color:#fff}.factory-bootstrap-423 .table-condensed>tbody>tr>td,.factory-bootstrap-423 .table-condensed>tbody>tr>th,.factory-bootstrap-423 .table-condensed>tfoot>tr>td,.factory-bootstrap-423 .table-condensed>tfoot>tr>th,.factory-bootstrap-423 .table-condensed>thead>tr>td,.factory-bootstrap-423 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-423 .table-bordered,.factory-bootstrap-423 .table-bordered>tbody>tr>td,.factory-bootstrap-423 .table-bordered>tbody>tr>th,.factory-bootstrap-423 .table-bordered>tfoot>tr>td,.factory-bootstrap-423 .table-bordered>tfoot>tr>th,.factory-bootstrap-423 .table-bordered>thead>tr>td,.factory-bootstrap-423 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-423 .table-bordered>thead>tr>td,.factory-bootstrap-423 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-423 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-423 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-423 .table-hover>tbody>tr:hover>td,.factory-bootstrap-423 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-423 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-423 table td[class*=col-],.factory-bootstrap-423 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-423 .table>tbody>.active>td,.factory-bootstrap-423 .table>tbody>.active>th,.factory-bootstrap-423 .table>tbody>tr>.active,.factory-bootstrap-423 .table>tfoot>.active>td,.factory-bootstrap-423 .table>tfoot>.active>th,.factory-bootstrap-423 .table>tfoot>tr>.active,.factory-bootstrap-423 .table>thead>.active>td,.factory-bootstrap-423 .table>thead>.active>th,.factory-bootstrap-423 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-423 .table-hover>tbody>.active:hover>td,.factory-bootstrap-423 .table-hover>tbody>.active:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-423 .table>tbody>.success>td,.factory-bootstrap-423 .table>tbody>.success>th,.factory-bootstrap-423 .table>tbody>tr>.success,.factory-bootstrap-423 .table>tfoot>.success>td,.factory-bootstrap-423 .table>tfoot>.success>th,.factory-bootstrap-423 .table>tfoot>tr>.success,.factory-bootstrap-423 .table>thead>.success>td,.factory-bootstrap-423 .table>thead>.success>th,.factory-bootstrap-423 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-423 .table-hover>tbody>.success:hover>td,.factory-bootstrap-423 .table-hover>tbody>.success:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-423 .table>tbody>.danger>td,.factory-bootstrap-423 .table>tbody>.danger>th,.factory-bootstrap-423 .table>tbody>tr>.danger,.factory-bootstrap-423 .table>tfoot>.danger>td,.factory-bootstrap-423 .table>tfoot>.danger>th,.factory-bootstrap-423 .table>tfoot>tr>.danger,.factory-bootstrap-423 .table>thead>.danger>td,.factory-bootstrap-423 .table>thead>.danger>th,.factory-bootstrap-423 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-423 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-423 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-423 .table>tbody>.warning>td,.factory-bootstrap-423 .table>tbody>.warning>th,.factory-bootstrap-423 .table>tbody>tr>.warning,.factory-bootstrap-423 .table>tfoot>.warning>td,.factory-bootstrap-423 .table>tfoot>.warning>th,.factory-bootstrap-423 .table>tfoot>tr>.warning,.factory-bootstrap-423 .table>thead>.warning>td,.factory-bootstrap-423 .table>thead>.warning>th,.factory-bootstrap-423 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-423 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-423 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-423 .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-423 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-423 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-423 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-423 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-423 input[type=checkbox],.factory-bootstrap-423 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-423 input[type=file]{display:block}.factory-bootstrap-423 select[multiple],.factory-bootstrap-423 select[size]{height:auto}.factory-bootstrap-423 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-423 input[type=checkbox]:focus,.factory-bootstrap-423 input[type=file]:focus,.factory-bootstrap-423 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-423 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-423 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-423 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-423 .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-423 .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-423 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-423 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-423 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-423 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-423 .form-control[disabled],.factory-bootstrap-423 .form-control[readonly],.factory-bootstrap-423 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-423 textarea.form-control{height:auto}.factory-bootstrap-423 .form-group{margin-bottom:15px}.factory-bootstrap-423 .checkbox,.factory-bootstrap-423 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-423 .checkbox label,.factory-bootstrap-423 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-423 .checkbox input[type=checkbox],.factory-bootstrap-423 .checkbox-inline input[type=checkbox],.factory-bootstrap-423 .radio input[type=radio],.factory-bootstrap-423 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-423 .checkbox+.checkbox,.factory-bootstrap-423 .radio+.radio{margin-top:-5px}.factory-bootstrap-423 .checkbox-inline,.factory-bootstrap-423 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-423 .checkbox-inline+.checkbox-inline,.factory-bootstrap-423 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-423 .checkbox-inline[disabled],.factory-bootstrap-423 .checkbox[disabled],.factory-bootstrap-423 .radio-inline[disabled],.factory-bootstrap-423 .radio[disabled],.factory-bootstrap-423 fieldset[disabled] .checkbox,.factory-bootstrap-423 fieldset[disabled] .checkbox-inline,.factory-bootstrap-423 fieldset[disabled] .radio,.factory-bootstrap-423 fieldset[disabled] .radio-inline,.factory-bootstrap-423 fieldset[disabled] input[type=checkbox],.factory-bootstrap-423 fieldset[disabled] input[type=radio],.factory-bootstrap-423 input[type=checkbox][disabled],.factory-bootstrap-423 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-423 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-423 textarea.input-sm{height:auto}.factory-bootstrap-423 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-423 textarea.input-lg{height:auto}.factory-bootstrap-423 .has-warning .checkbox,.factory-bootstrap-423 .has-warning .checkbox-inline,.factory-bootstrap-423 .has-warning .control-label,.factory-bootstrap-423 .has-warning .help-block,.factory-bootstrap-423 .has-warning .radio,.factory-bootstrap-423 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-423 .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-423 .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-423 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-423 .has-error .checkbox,.factory-bootstrap-423 .has-error .checkbox-inline,.factory-bootstrap-423 .has-error .control-label,.factory-bootstrap-423 .has-error .help-block,.factory-bootstrap-423 .has-error .radio,.factory-bootstrap-423 .has-error .radio-inline{color:#a94442}.factory-bootstrap-423 .controls{display:block}.factory-bootstrap-423 .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-423 .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-423 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-423 .has-success .checkbox,.factory-bootstrap-423 .has-success .checkbox-inline,.factory-bootstrap-423 .has-success .control-label,.factory-bootstrap-423 .has-success .help-block,.factory-bootstrap-423 .has-success .radio,.factory-bootstrap-423 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-423 .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-423 .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-423 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-423 .form-control-static{margin-bottom:0}.factory-bootstrap-423 .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-423 .form-horizontal .checkbox,.factory-bootstrap-423 .form-horizontal .checkbox-inline,.factory-bootstrap-423 .form-horizontal .control-label,.factory-bootstrap-423 .form-horizontal .radio,.factory-bootstrap-423 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-423 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-423 .form-horizontal .checkbox,.factory-bootstrap-423 .form-horizontal .radio{min-height:27px}.factory-bootstrap-423 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-423 .form-horizontal .form-group:after,.factory-bootstrap-423 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-423 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-423 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-423 .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-423 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-423 .btn{text-decoration:none}.factory-bootstrap-423 .btn:focus,.factory-bootstrap-423 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-423 .btn.disabled,.factory-bootstrap-423 .btn[disabled],.factory-bootstrap-423 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .btn-default:focus,.factory-bootstrap-423 .btn-default:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-423 .btn-default.disabled,.factory-bootstrap-423 .btn-default.disabled.active,.factory-bootstrap-423 .btn-default.disabled:active,.factory-bootstrap-423 .btn-default.disabled:focus,.factory-bootstrap-423 .btn-default.disabled:hover,.factory-bootstrap-423 .btn-default[disabled],.factory-bootstrap-423 .btn-default[disabled].active,.factory-bootstrap-423 .btn-default[disabled]:active,.factory-bootstrap-423 .btn-default[disabled]:focus,.factory-bootstrap-423 .btn-default[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-default,.factory-bootstrap-423 fieldset[disabled] .btn-default.active,.factory-bootstrap-423 fieldset[disabled] .btn-default:active,.factory-bootstrap-423 fieldset[disabled] .btn-default:focus,.factory-bootstrap-423 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-423 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-423 .btn-primary.disabled,.factory-bootstrap-423 .btn-primary.disabled.active,.factory-bootstrap-423 .btn-primary.disabled:active,.factory-bootstrap-423 .btn-primary.disabled:focus,.factory-bootstrap-423 .btn-primary.disabled:hover,.factory-bootstrap-423 .btn-primary[disabled],.factory-bootstrap-423 .btn-primary[disabled].active,.factory-bootstrap-423 .btn-primary[disabled]:active,.factory-bootstrap-423 .btn-primary[disabled]:focus,.factory-bootstrap-423 .btn-primary[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-primary,.factory-bootstrap-423 fieldset[disabled] .btn-primary.active,.factory-bootstrap-423 fieldset[disabled] .btn-primary:active,.factory-bootstrap-423 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-423 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-423 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-423 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active,.factory-bootstrap-423 .btn-warning:focus,.factory-bootstrap-423 .btn-warning:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-423 .btn-warning.disabled,.factory-bootstrap-423 .btn-warning.disabled.active,.factory-bootstrap-423 .btn-warning.disabled:active,.factory-bootstrap-423 .btn-warning.disabled:focus,.factory-bootstrap-423 .btn-warning.disabled:hover,.factory-bootstrap-423 .btn-warning[disabled],.factory-bootstrap-423 .btn-warning[disabled].active,.factory-bootstrap-423 .btn-warning[disabled]:active,.factory-bootstrap-423 .btn-warning[disabled]:focus,.factory-bootstrap-423 .btn-warning[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-warning,.factory-bootstrap-423 fieldset[disabled] .btn-warning.active,.factory-bootstrap-423 fieldset[disabled] .btn-warning:active,.factory-bootstrap-423 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-423 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-423 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-423 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .btn-success:focus,.factory-bootstrap-423 .btn-success:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-423 .btn-success.disabled,.factory-bootstrap-423 .btn-success.disabled.active,.factory-bootstrap-423 .btn-success.disabled:active,.factory-bootstrap-423 .btn-success.disabled:focus,.factory-bootstrap-423 .btn-success.disabled:hover,.factory-bootstrap-423 .btn-success[disabled],.factory-bootstrap-423 .btn-success[disabled].active,.factory-bootstrap-423 .btn-success[disabled]:active,.factory-bootstrap-423 .btn-success[disabled]:focus,.factory-bootstrap-423 .btn-success[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-success,.factory-bootstrap-423 fieldset[disabled] .btn-success.active,.factory-bootstrap-423 fieldset[disabled] .btn-success:active,.factory-bootstrap-423 fieldset[disabled] .btn-success:focus,.factory-bootstrap-423 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-423 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-423 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .btn-info:focus,.factory-bootstrap-423 .btn-info:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-423 .btn-info.disabled,.factory-bootstrap-423 .btn-info.disabled.active,.factory-bootstrap-423 .btn-info.disabled:active,.factory-bootstrap-423 .btn-info.disabled:focus,.factory-bootstrap-423 .btn-info.disabled:hover,.factory-bootstrap-423 .btn-info[disabled],.factory-bootstrap-423 .btn-info[disabled].active,.factory-bootstrap-423 .btn-info[disabled]:active,.factory-bootstrap-423 .btn-info[disabled]:focus,.factory-bootstrap-423 .btn-info[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-info,.factory-bootstrap-423 fieldset[disabled] .btn-info.active,.factory-bootstrap-423 fieldset[disabled] .btn-info:active,.factory-bootstrap-423 fieldset[disabled] .btn-info:focus,.factory-bootstrap-423 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-423 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-423 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-423 .btn-link,.factory-bootstrap-423 .btn-link:active,.factory-bootstrap-423 .btn-link[disabled],.factory-bootstrap-423 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-link,.factory-bootstrap-423 .btn-link:active,.factory-bootstrap-423 .btn-link:focus,.factory-bootstrap-423 .btn-link:hover{border-color:transparent}.factory-bootstrap-423 .btn-link:focus,.factory-bootstrap-423 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-423 .btn-link[disabled]:focus,.factory-bootstrap-423 .btn-link[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-link:focus,.factory-bootstrap-423 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-423 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-423 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-423 input[type=button].btn-block,.factory-bootstrap-423 input[type=reset].btn-block,.factory-bootstrap-423 input[type=submit].btn-block{width:100%}.factory-bootstrap-423 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-423 .fade.in{opacity:1}.factory-bootstrap-423 .collapse{display:none}.factory-bootstrap-423 .collapse.in{display:block}.factory-bootstrap-423 .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-423 .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-423 .glyphicon:empty{width:1em}.factory-bootstrap-423 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-423 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-423 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-423 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-423 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-423 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-423 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-423 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-423 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-423 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-423 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-423 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-423 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-423 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-423 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-423 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-423 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-423 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-423 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-423 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-423 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-423 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-423 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-423 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-423 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-423 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-423 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-423 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-423 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-423 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-423 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-423 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-423 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-423 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-423 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-423 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-423 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-423 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-423 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-423 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-423 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-423 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-423 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-423 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-423 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-423 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-423 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-423 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-423 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-423 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-423 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-423 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-423 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-423 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-423 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-423 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-423 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-423 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-423 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-423 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-423 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-423 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-423 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-423 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-423 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-423 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-423 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-423 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-423 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-423 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-423 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-423 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-423 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-423 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-423 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-423 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-423 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-423 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-423 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-423 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-423 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-423 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-423 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-423 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-423 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-423 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-423 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-423 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-423 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-423 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-423 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-423 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-423 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-423 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-423 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-423 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-423 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-423 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-423 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-423 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-423 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-423 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-423 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-423 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-423 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-423 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-423 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-423 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-423 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-423 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-423 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-423 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-423 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-423 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-423 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-423 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-423 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-423 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-423 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-423 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-423 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-423 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-423 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-423 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-423 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-423 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-423 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-423 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-423 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-423 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-423 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-423 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-423 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-423 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-423 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-423 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-423 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-423 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-423 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-423 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-423 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-423 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-423 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-423 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-423 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-423 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-423 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-423 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-423 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-423 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-423 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-423 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-423 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-423 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-423 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-423 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-423 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-423 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-423 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-423 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-423 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-423 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-423 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-423 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-423 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-423 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-423 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-423 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-423 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-423 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-423 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-423 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-423 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-423 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-423 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-423 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-423 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-423 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-423 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-423 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-423 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-423 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-423 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-423 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-423 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-423 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-423 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-423 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-423 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-423 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-423 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-423 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-423 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-423 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-423 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-423 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-423 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-423 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-423 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-423 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-423 .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-423 .dropdown{position:relative}.factory-bootstrap-423 .dropdown-toggle:focus{outline:0}.factory-bootstrap-423 .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-423 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-423 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-423 .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-423 .dropdown-menu>li>a:focus,.factory-bootstrap-423 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-423 .dropdown-menu>.active>a,.factory-bootstrap-423 .dropdown-menu>.active>a:focus,.factory-bootstrap-423 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-423 .dropdown-menu>.disabled>a,.factory-bootstrap-423 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-423 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-423 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-423 .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-423 .open>.dropdown-menu{display:block}.factory-bootstrap-423 .open>a{outline:0}.factory-bootstrap-423 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-423 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-423 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-423 .dropup .caret,.factory-bootstrap-423 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-423 .dropup .dropdown-menu,.factory-bootstrap-423 .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-423 .btn-group,.factory-bootstrap-423 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-423 .btn-group-vertical>.btn,.factory-bootstrap-423 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-423 .btn-group-vertical>.btn.active,.factory-bootstrap-423 .btn-group-vertical>.btn:active,.factory-bootstrap-423 .btn-group-vertical>.btn:focus,.factory-bootstrap-423 .btn-group-vertical>.btn:hover,.factory-bootstrap-423 .btn-group>.btn.active,.factory-bootstrap-423 .btn-group>.btn:active,.factory-bootstrap-423 .btn-group>.btn:focus,.factory-bootstrap-423 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-423 .btn-group-vertical>.btn:focus,.factory-bootstrap-423 .btn-group>.btn:focus{outline:0}.factory-bootstrap-423 .btn-group .btn+.btn,.factory-bootstrap-423 .btn-group .btn+.btn-group,.factory-bootstrap-423 .btn-group .btn-group+.btn,.factory-bootstrap-423 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-423 .btn-toolbar:after,.factory-bootstrap-423 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-423 .btn-toolbar:after{clear:both}.factory-bootstrap-423 .btn-toolbar .btn-group{float:left}.factory-bootstrap-423 .btn-toolbar>.btn+.btn,.factory-bootstrap-423 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-423 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-423 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-423 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-423 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-423 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-423 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group>.btn-group{float:left}.factory-bootstrap-423 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-423 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-423 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group .dropdown-toggle:active,.factory-bootstrap-423 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-423 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-423 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-423 .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-423 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .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-423 .btn .caret{margin-left:0}.factory-bootstrap-423 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-423 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-423 .btn-group-vertical>.btn,.factory-bootstrap-423 .btn-group-vertical>.btn-group,.factory-bootstrap-423 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-423 .btn-group-vertical>.btn-group:after,.factory-bootstrap-423 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-423 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-423 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-423 .btn-group-vertical>.btn+.btn,.factory-bootstrap-423 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-423 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-423 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-423 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-423 .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-423 .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-423 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-423 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-423 .btn-group-justified>.btn,.factory-bootstrap-423 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-423 .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-423 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-423 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-423 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-423 .input-group-lg>.form-control,.factory-bootstrap-423 .input-group-lg>.input-group-addon,.factory-bootstrap-423 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 select.input-group-lg>.form-control,.factory-bootstrap-423 select.input-group-lg>.input-group-addon,.factory-bootstrap-423 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-423 textarea.input-group-lg>.form-control,.factory-bootstrap-423 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-423 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-423 .input-group-sm>.form-control,.factory-bootstrap-423 .input-group-sm>.input-group-addon,.factory-bootstrap-423 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 select.input-group-sm>.form-control,.factory-bootstrap-423 select.input-group-sm>.input-group-addon,.factory-bootstrap-423 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-423 textarea.input-group-sm>.form-control,.factory-bootstrap-423 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-423 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-423 .input-group .form-control,.factory-bootstrap-423 .input-group-addon,.factory-bootstrap-423 .input-group-btn{display:table-cell}.factory-bootstrap-423 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-423 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-423 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-423 .input-group-addon,.factory-bootstrap-423 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-423 .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-423 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-423 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-423 .input-group-addon input[type=checkbox],.factory-bootstrap-423 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-423 .input-group .form-control:first-child,.factory-bootstrap-423 .input-group-addon:first-child,.factory-bootstrap-423 .input-group-btn:first-child>.btn,.factory-bootstrap-423 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-423 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .input-group-addon:first-child{border-right:0}.factory-bootstrap-423 .input-group .form-control:last-child,.factory-bootstrap-423 .input-group-addon:last-child,.factory-bootstrap-423 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-423 .input-group-btn:last-child>.btn,.factory-bootstrap-423 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .input-group-addon:last-child{border-left:0}.factory-bootstrap-423 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-423 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-423 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-423 .input-group-btn>.btn{position:relative}.factory-bootstrap-423 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-423 .input-group-btn>.btn:active,.factory-bootstrap-423 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-423 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-423 .nav:after,.factory-bootstrap-423 .nav:before{display:table;content:" "}.factory-bootstrap-423 .nav:after{clear:both}.factory-bootstrap-423 .nav>li{position:relative;display:block}.factory-bootstrap-423 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-423 .nav>li>a:focus,.factory-bootstrap-423 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-423 .nav>li.disabled>a{color:#999}.factory-bootstrap-423 .nav>li.disabled>a:focus,.factory-bootstrap-423 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-423 .nav .open>a,.factory-bootstrap-423 .nav .open>a:focus,.factory-bootstrap-423 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-423 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-423 .nav>li>a>img{max-width:none}.factory-bootstrap-423 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-423 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-423 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-423 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-423 .nav-tabs>li.active>a,.factory-bootstrap-423 .nav-tabs>li.active>a:focus,.factory-bootstrap-423 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-423 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-423 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-423 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-423 .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-423 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-423 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-423 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-423 .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-423 .nav-pills>li{float:left}.factory-bootstrap-423 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-423 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-423 .nav-pills>li.active>a,.factory-bootstrap-423 .nav-pills>li.active>a:focus,.factory-bootstrap-423 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-423 .nav-stacked>li{float:none}.factory-bootstrap-423 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-423 .nav-justified{width:100%}.factory-bootstrap-423 .nav-justified>li{float:none}.factory-bootstrap-423 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-423 .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-423 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-423 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-423 .nav-tabs-justified>.active>a,.factory-bootstrap-423 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-423 .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-423 .tab-content>.tab-pane{display:none}.factory-bootstrap-423 .tab-content>.active{display:block}.factory-bootstrap-423 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-423 .navbar:after,.factory-bootstrap-423 .navbar:before{display:table;content:" "}.factory-bootstrap-423 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-423 .navbar-header:after,.factory-bootstrap-423 .navbar-header:before{display:table;content:" "}.factory-bootstrap-423 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-423 .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-423 .navbar-collapse:after,.factory-bootstrap-423 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-423 .navbar-collapse:after{clear:both}.factory-bootstrap-423 .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-423 .container>.navbar-collapse,.factory-bootstrap-423 .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-423 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-423 .navbar-fixed-bottom,.factory-bootstrap-423 .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-423 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-423 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-423 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-423 .navbar-brand:focus,.factory-bootstrap-423 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-423 .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-423 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-423 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-423 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-423 .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-423 .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-423 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-423 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-423 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-423 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-423 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-423 .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-423 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-423 .navbar-default .navbar-brand:focus,.factory-bootstrap-423 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-nav>li>a,.factory-bootstrap-423 .navbar-default .navbar-text{color:#777}.factory-bootstrap-423 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-423 .navbar-default .navbar-toggle:focus,.factory-bootstrap-423 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-423 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-423 .navbar-default .navbar-collapse,.factory-bootstrap-423 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-423 .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-423 .navbar-default .navbar-link{color:#777}.factory-bootstrap-423 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-423 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-423 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-423 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-423 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-423 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-423 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-423 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-423 .navbar-inverse .navbar-collapse,.factory-bootstrap-423 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-423 .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-423 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-423 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-423 .breadcrumb>li{display:inline-block}.factory-bootstrap-423 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-423 .breadcrumb>.active{color:#999}.factory-bootstrap-423 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-423 .pagination>li{display:inline}.factory-bootstrap-423 .pagination>li>a,.factory-bootstrap-423 .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-423 .pagination>li:first-child>a,.factory-bootstrap-423 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-423 .pagination>li:last-child>a,.factory-bootstrap-423 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-423 .pagination>li>a:focus,.factory-bootstrap-423 .pagination>li>a:hover,.factory-bootstrap-423 .pagination>li>span:focus,.factory-bootstrap-423 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-423 .pagination>.disabled>a,.factory-bootstrap-423 .pagination>.disabled>a:focus,.factory-bootstrap-423 .pagination>.disabled>a:hover,.factory-bootstrap-423 .pagination>.disabled>span,.factory-bootstrap-423 .pagination>.disabled>span:focus,.factory-bootstrap-423 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-423 .pagination-lg>li>a,.factory-bootstrap-423 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-423 .pagination-lg>li:first-child>a,.factory-bootstrap-423 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-423 .pagination-lg>li:last-child>a,.factory-bootstrap-423 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-423 .pagination-sm>li>a,.factory-bootstrap-423 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-423 .pagination-sm>li:first-child>a,.factory-bootstrap-423 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-423 .pagination-sm>li:last-child>a,.factory-bootstrap-423 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-423 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-423 .pager:after,.factory-bootstrap-423 .pager:before{display:table;content:" "}.factory-bootstrap-423 .pager:after{clear:both}.factory-bootstrap-423 .pager li{display:inline}.factory-bootstrap-423 .pager li>a,.factory-bootstrap-423 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-423 .pager li>a:focus,.factory-bootstrap-423 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-423 .pager .next>a,.factory-bootstrap-423 .pager .next>span{float:right}.factory-bootstrap-423 .pager .previous>a,.factory-bootstrap-423 .pager .previous>span{float:left}.factory-bootstrap-423 .pager .disabled>a,.factory-bootstrap-423 .pager .disabled>a:focus,.factory-bootstrap-423 .pager .disabled>a:hover,.factory-bootstrap-423 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-423 .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-423 .label[href]:focus,.factory-bootstrap-423 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-423 .label:empty{display:none}.factory-bootstrap-423 .btn .label{position:relative;top:-1px}.factory-bootstrap-423 .label-default{background-color:#999}.factory-bootstrap-423 .label-default[href]:focus,.factory-bootstrap-423 .label-default[href]:hover{background-color:gray}.factory-bootstrap-423 .label-primary{background-color:#428bca}.factory-bootstrap-423 .label-primary[href]:focus,.factory-bootstrap-423 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-423 .label-success{background-color:#5cb85c}.factory-bootstrap-423 .label-success[href]:focus,.factory-bootstrap-423 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-423 .label-info{background-color:#5bc0de}.factory-bootstrap-423 .label-info[href]:focus,.factory-bootstrap-423 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-423 .label-warning{background-color:#f0ad4e}.factory-bootstrap-423 .label-warning[href]:focus,.factory-bootstrap-423 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-423 .label-danger{background-color:#d9534f}.factory-bootstrap-423 .label-danger[href]:focus,.factory-bootstrap-423 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-423 .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-423 .badge:empty{display:none}.factory-bootstrap-423 .btn .badge{position:relative;top:-1px}.factory-bootstrap-423 a.badge:focus,.factory-bootstrap-423 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-423 .nav-pills>.active>a>.badge,.factory-bootstrap-423 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-423 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-423 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-423 .jumbotron .h1,.factory-bootstrap-423 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-423 .jumbotron p{line-height:1.4}.factory-bootstrap-423 .container .jumbotron{border-radius:6px}.factory-bootstrap-423 .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-423 .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-423 .thumbnail a>img,.factory-bootstrap-423 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-423 a.thumbnail.active,.factory-bootstrap-423 a.thumbnail:focus,.factory-bootstrap-423 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-423 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-423 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-423 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-423 .alert .alert-link{font-weight:700}.factory-bootstrap-423 .alert>p,.factory-bootstrap-423 .alert>ul{margin-bottom:0}.factory-bootstrap-423 .alert>p+p{margin-top:5px}.factory-bootstrap-423 .alert-dismissable{padding-right:35px}.factory-bootstrap-423 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-423 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-423 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-423 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-423 .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-423 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-423 .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-423 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-423 .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-423 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-423 .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-423 .media,.factory-bootstrap-423 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-423 .media,.factory-bootstrap-423 .media .media{margin-top:15px}.factory-bootstrap-423 .media:first-child{margin-top:0}.factory-bootstrap-423 .media-object{display:block}.factory-bootstrap-423 .media-heading{margin:0 0 5px}.factory-bootstrap-423 .media>.pull-left{margin-right:10px}.factory-bootstrap-423 .media>.pull-right{margin-left:10px}.factory-bootstrap-423 .media-list{padding-left:0;list-style:none}.factory-bootstrap-423 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-423 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-423 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-423 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-423 .list-group-item>.badge{float:right}.factory-bootstrap-423 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-423 a.list-group-item{color:#555}.factory-bootstrap-423 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-423 a.list-group-item:focus,.factory-bootstrap-423 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-423 a.list-group-item.active,.factory-bootstrap-423 a.list-group-item.active:focus,.factory-bootstrap-423 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-423 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-423 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-423 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-423 a.list-group-item.active .list-group-item-text,.factory-bootstrap-423 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-423 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-423 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-423 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-423 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-423 .panel-body{padding:15px}.factory-bootstrap-423 .panel-body:after,.factory-bootstrap-423 .panel-body:before{display:table;content:" "}.factory-bootstrap-423 .panel-body:after{clear:both}.factory-bootstrap-423 .panel>.list-group{margin-bottom:0}.factory-bootstrap-423 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-423 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-423 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-423 .panel>.table,.factory-bootstrap-423 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-423 .panel>.panel-body+.table,.factory-bootstrap-423 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-423 .panel>.table>tbody:first-child td,.factory-bootstrap-423 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-423 .panel>.table-bordered,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-423 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-423 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-423 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-423 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-423 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-423 .panel-title>a{color:inherit}.factory-bootstrap-423 .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-423 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-423 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-423 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-423 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-423 .panel-group .panel-footer{border-top:0}.factory-bootstrap-423 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-423 .panel-default{border-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-423 .panel-primary{border-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-423 .panel-success{border-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-423 .panel-warning{border-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-423 .panel-danger{border-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-423 .panel-info{border-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-423 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-423 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-423 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-423 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-423 .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-423 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-423 .close:focus,.factory-bootstrap-423 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-423 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-423 .modal-open{overflow:hidden}.factory-bootstrap-423 .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-423 .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-423 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-423 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-423 .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-423 .modal-backdrop,.factory-bootstrap-423-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-423 .modal-backdrop.fade,.factory-bootstrap-423-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-423 .modal-backdrop.in,.factory-bootstrap-423-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-423 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-423 .modal-header .close{margin-top:-2px}.factory-bootstrap-423 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-423 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-423 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-423 .modal-footer:after,.factory-bootstrap-423 .modal-footer:before{display:table;content:" "}.factory-bootstrap-423 .modal-footer:after{clear:both}.factory-bootstrap-423 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-423 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-423 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-423 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-423 .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-423 .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-423 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-423 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-423 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-423 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-423 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-423 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-423 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-423 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-423 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-423 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .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-423 .popover.top{margin-top:-10px}.factory-bootstrap-423 .popover.right{margin-left:10px}.factory-bootstrap-423 .popover.bottom{margin-top:10px}.factory-bootstrap-423 .popover.left{margin-left:-10px}.factory-bootstrap-423 .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-423 .popover-content{padding:9px 14px}.factory-bootstrap-423 .popover .arrow,.factory-bootstrap-423 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-423 .popover .arrow{border-width:11px}.factory-bootstrap-423 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-423 .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-423 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-423 .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-423 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-423 .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-423 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-423 .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-423 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-423 .carousel{position:relative}.factory-bootstrap-423 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-423 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-423 .carousel-inner>.item>a>img,.factory-bootstrap-423 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-423 .carousel-inner>.active,.factory-bootstrap-423 .carousel-inner>.next,.factory-bootstrap-423 .carousel-inner>.prev{display:block}.factory-bootstrap-423 .carousel-inner>.active{left:0}.factory-bootstrap-423 .carousel-inner>.next,.factory-bootstrap-423 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-423 .carousel-inner>.next{left:100%}.factory-bootstrap-423 .carousel-inner>.prev{left:-100%}.factory-bootstrap-423 .carousel-inner>.next.left,.factory-bootstrap-423 .carousel-inner>.prev.right{left:0}.factory-bootstrap-423 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-423 .carousel-inner>.active.right{left:100%}.factory-bootstrap-423 .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-423 .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-423 .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-423 .carousel-control:focus,.factory-bootstrap-423 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-423 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-423 .carousel-control .icon-next,.factory-bootstrap-423 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-423 .carousel-control .icon-prev{left:50%}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-423 .carousel-control .icon-next{right:50%}.factory-bootstrap-423 .carousel-control .icon-next,.factory-bootstrap-423 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-423 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-423 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-423 .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-423 .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-423 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-423 .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-423 .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-423 .clearfix:after,.factory-bootstrap-423 .clearfix:before{display:table;content:" "}.factory-bootstrap-423 .clearfix:after{clear:both}.factory-bootstrap-423 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-423 .pull-right{float:right!important}.factory-bootstrap-423 .pull-left{float:left!important}.factory-bootstrap-423 .hide{display:none!important}.factory-bootstrap-423 .show{display:block!important}.factory-bootstrap-423 .invisible{visibility:hidden}.factory-bootstrap-423 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-423 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-423 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-423 .visible-lg,.factory-bootstrap-423 .visible-md,.factory-bootstrap-423 .visible-sm,.factory-bootstrap-423 .visible-xs,.factory-bootstrap-423 td.visible-lg,.factory-bootstrap-423 td.visible-md,.factory-bootstrap-423 td.visible-sm,.factory-bootstrap-423 td.visible-xs,.factory-bootstrap-423 th.visible-lg,.factory-bootstrap-423 th.visible-md,.factory-bootstrap-423 th.visible-sm,.factory-bootstrap-423 th.visible-xs,.factory-bootstrap-423 tr.visible-lg,.factory-bootstrap-423 tr.visible-md,.factory-bootstrap-423 tr.visible-sm,.factory-bootstrap-423 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-423 .hidden-xs{display:block!important}.factory-bootstrap-423 table.hidden-xs{display:table}.factory-bootstrap-423 tr.hidden-xs{display:table-row!important}.factory-bootstrap-423 td.hidden-xs,.factory-bootstrap-423 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-423 .hidden-sm{display:block!important}.factory-bootstrap-423 table.hidden-sm{display:table}.factory-bootstrap-423 tr.hidden-sm{display:table-row!important}.factory-bootstrap-423 td.hidden-sm,.factory-bootstrap-423 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-423 .hidden-md{display:block!important}.factory-bootstrap-423 table.hidden-md{display:table}.factory-bootstrap-423 tr.hidden-md{display:table-row!important}.factory-bootstrap-423 td.hidden-md,.factory-bootstrap-423 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-423 .hidden-lg{display:block!important}.factory-bootstrap-423 table.hidden-lg{display:table}.factory-bootstrap-423 tr.hidden-lg{display:table-row!important}.factory-bootstrap-423 td.hidden-lg,.factory-bootstrap-423 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-423 .hidden-lg.hidden-xs,.factory-bootstrap-423 td.hidden-lg.hidden-xs,.factory-bootstrap-423 th.hidden-lg.hidden-xs,.factory-bootstrap-423 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-423 .hidden-lg.hidden-sm,.factory-bootstrap-423 td.hidden-lg.hidden-sm,.factory-bootstrap-423 th.hidden-lg.hidden-sm,.factory-bootstrap-423 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-423 .hidden-lg.hidden-md,.factory-bootstrap-423 td.hidden-lg.hidden-md,.factory-bootstrap-423 th.hidden-lg.hidden-md,.factory-bootstrap-423 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-423 .hidden-lg,.factory-bootstrap-423 td.hidden-lg,.factory-bootstrap-423 th.hidden-lg,.factory-bootstrap-423 tr.hidden-lg{display:none!important}}.factory-bootstrap-423 .visible-print,.factory-bootstrap-423 td.visible-print,.factory-bootstrap-423 th.visible-print,.factory-bootstrap-423 tr.visible-print{display:none!important}@media print{.factory-bootstrap-423 .visible-print{display:block!important}.factory-bootstrap-423 table.visible-print{display:table}.factory-bootstrap-423 tr.visible-print{display:table-row!important}.factory-bootstrap-423 td.visible-print,.factory-bootstrap-423 th.visible-print{display:table-cell!important}.factory-bootstrap-423 .hidden-print,.factory-bootstrap-423 td.hidden-print,.factory-bootstrap-423 th.hidden-print,.factory-bootstrap-423 tr.hidden-print{display:none!important}}/*!
12
  * Factory Default Bootstrap Theme
13
  *
14
  * The code is based on Bootstrap v2.1.1
22
  *
23
  * @package factory-bootstrap
24
  * @since 1.0.0
25
+ */.factory-bootstrap-423 .btn-danger,.factory-bootstrap-423 .btn-default,.factory-bootstrap-423 .btn-info,.factory-bootstrap-423 .btn-primary,.factory-bootstrap-423 .btn-success,.factory-bootstrap-423 .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-423 .btn-danger.active,.factory-bootstrap-423 .btn-danger:active,.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .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-423 .btn.active,.factory-bootstrap-423 .btn:active{background-image:none}.factory-bootstrap-423 .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-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-423 .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-423 .btn-gold:focus,.factory-bootstrap-423 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-423 .btn-gold.active,.factory-bootstrap-423 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-423 .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-423 .btn-success:focus,.factory-bootstrap-423 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-423 .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-423 .btn-warning:focus,.factory-bootstrap-423 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-423 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-423 .btn-danger.active,.factory-bootstrap-423 .btn-danger:active,.factory-bootstrap-423 .btn-danger:focus,.factory-bootstrap-423 .btn-danger:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-423 .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-423 .btn-info:focus,.factory-bootstrap-423 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-423 .img-thumbnail,.factory-bootstrap-423 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-423 .dropdown-menu>li>a:focus,.factory-bootstrap-423 .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-423 .dropdown-menu>.active>a,.factory-bootstrap-423 .dropdown-menu>.active>a:focus,.factory-bootstrap-423 .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-423 .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-423 .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-423 .navbar-brand,.factory-bootstrap-423 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-423 .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-423 .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-423 .navbar-inverse .navbar-brand,.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .navbar-fixed-bottom,.factory-bootstrap-423 .navbar-fixed-top,.factory-bootstrap-423 .navbar-static-top{border-radius:0}.factory-bootstrap-423 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-423 .alert .actions{padding-top:10px}.factory-bootstrap-423 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-423 .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-423 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-423 .alert-normal,.factory-bootstrap-423 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-423 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-423 .alert-danger a:not(.btn),.factory-bootstrap-423 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .list-group-item.active,.factory-bootstrap-423 .list-group-item.active:focus,.factory-bootstrap-423 .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-423 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-423 .factory-hidden{display:none}.factory-bootstrap-423 .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
@@ -12,4 +12,4 @@
12
  * Datetimepicker for Bootstrap 3
13
  * version : 4.17.47
14
  * https://github.com/Eonasdan/bootstrap-datetimepicker/
15
- */.factory-bootstrap-421 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-421 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-421 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-421 .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-421 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-421 .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-421 .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-421 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-421 .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-421 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-421 .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-421 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-421 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-421 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-421 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-421 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-421 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
12
  * Datetimepicker for Bootstrap 3
13
  * version : 4.17.47
14
  * https://github.com/Eonasdan/bootstrap-datetimepicker/
15
+ */.factory-bootstrap-423 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-423 .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-423 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .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-423 .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-423 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-423 .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-423 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .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-423 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-423 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-423 .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-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .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-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-421 .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-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-421 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-421 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-421 .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-421 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-421 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-421 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-421 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-421 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-421 .factory-form-group legend+.control-group{margin-top:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-423 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-423 .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-423 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-423 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-423 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-423 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-423 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-423 .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-421 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-421 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-421 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-421 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-421 .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-421 .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-423 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-423 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-423 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-423 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-423 .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-423 .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-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .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-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-421 .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-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .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-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-421 .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-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .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-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-421 .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-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-421 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .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-421 .btn-primary:disabled,.factory-bootstrap-421 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-421 .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-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-421 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-421 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-421 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-421 .nav-tabs a{text-decoration:none}.factory-bootstrap-421 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-421 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-421 .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-421 .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-421 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-421 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-421 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-421 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-421 .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-421 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-421 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-421 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-421 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-421 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-421 .factory-align-vertical .control-group textarea{width:90%}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-423 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-423 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-423 .nav-tabs a{text-decoration:none}.factory-bootstrap-423 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-423 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-423 .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-423 .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-423 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-423 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-423 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-423 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-423 .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-423 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-423 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-423 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-423 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-423 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-423 .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-421 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-421 .wp-editor-wrap .button,.factory-bootstrap-421 .wp-editor-wrap input,.factory-bootstrap-421 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-421 .switch-html,.factory-bootstrap-421 .switch-tmce{color:#777}.factory-bootstrap-421 .html-active .switch-html,.factory-bootstrap-421 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-421 .switch-html:hover,.factory-bootstrap-421 .switch-tmce:hover{color:#777}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 .wp-editor-wrap .button,.factory-bootstrap-423 .wp-editor-wrap input,.factory-bootstrap-423 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-423 .switch-html,.factory-bootstrap-423 .switch-tmce{color:#777}.factory-bootstrap-423 .html-active .switch-html,.factory-bootstrap-423 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-423 .switch-html:hover,.factory-bootstrap-423 .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-421 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-421 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-421 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-421 .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-421 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-421 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-423 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-423 .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-423 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-423 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-421 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-421 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-421 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-421 .iris-picker{margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-423 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-423 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-423 .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-421 .factory-color{position:relative}.factory-bootstrap-421 .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-421 .factory-color .factory-background,.factory-bootstrap-421 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../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-421 .factory-color .factory-background{z-index:2;border-radius:3px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-color{position:relative}.factory-bootstrap-423 .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-423 .factory-color .factory-background,.factory-bootstrap-423 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../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-423 .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-421 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-421 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-421 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-423 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-423 .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-421 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-421 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-421 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-421 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-421 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-421 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-423 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-423 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-423 .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-421 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-421 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-421 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-421 .iris-picker{margin-top:10px}.factory-bootstrap-421 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-421 .factory-font .chosen-results{max-height:150px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-423 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-423 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-423 .iris-picker{margin-top:10px}.factory-bootstrap-423 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-423 .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-421 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-421 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-421 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-421 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-421 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-421 .factory-list .factory-error-text,.factory-bootstrap-421 .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-421 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-421 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-421 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-421 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-421 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-421 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-423 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-423 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-423 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-423 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-423 .factory-list .factory-error-text,.factory-bootstrap-423 .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-423 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-423 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-423 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-423 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-423 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-423 .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-421 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-421 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-421 .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-421 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-421 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-421 .factory-mtextbox-add-item{display:block;margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-423 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-423 .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-423 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-423 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-423 .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-421 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-421 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-421 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../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-421 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-421 .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-421 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-421 .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-421 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-421 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-421 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-421 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-421 .factory-pattern .factory-color,.factory-bootstrap-421 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-421 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-421 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-421 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-421 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-421 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-421 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-421 .factory-pattern .factory-patterns-item,.factory-bootstrap-421 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-421 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-421 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-421 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-421 .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-421 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-421 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-421 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-421 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-421 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-421 .factory-pattern .factory-change-color-btn{margin-left:5px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../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-423 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-423 .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-423 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-423 .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-423 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-423 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-423 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-423 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-423 .factory-pattern .factory-color,.factory-bootstrap-423 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-423 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-423 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-423 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-423 .factory-pattern .factory-patterns-item,.factory-bootstrap-423 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-423 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-423 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-423 .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-423 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-423 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-423 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-423 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-423 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-423 .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-421 .factory-from-radio-label,.factory-bootstrap-421 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-421 .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-421 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-421 .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-421 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-421 .factory-radio-color{opacity:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-from-radio-label,.factory-bootstrap-423 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-423 .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-423 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-423 .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-423 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-423 .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-421 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-421 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-421 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-421 .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-421 .factory-tab .factory-more-link-hide:hover{color:#999}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-423 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-423 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-423 .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-423 .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-421 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-421 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-421 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-421 .factory-point,.factory-bootstrap-421 .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-421 .factory-point-color{border-radius:0}.factory-bootstrap-421 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-421 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-421 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-421 .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-421 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-421 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-421 .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-421 .factory-preset-gradient,.factory-bootstrap-421 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-421 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-421 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-421 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-421 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-421 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-421 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-421 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-421 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-421 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-423 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-423 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-423 .factory-point,.factory-bootstrap-423 .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-423 .factory-point-color{border-radius:0}.factory-bootstrap-423 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-423 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-423 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-423 .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-423 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-423 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-423 .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-423 .factory-preset-gradient,.factory-bootstrap-423 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-423 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-423 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-423 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-423 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-423 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-423 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-423 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-423 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-423 .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-421 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-421 .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-421 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-421 .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-421 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-421 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-421 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-421 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-421 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-421 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-421 .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-421 .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-421 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-421 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-421 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-421 .factory-paddings-editor .factory-side-left,.factory-bootstrap-421 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-421 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-421 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-423 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-423 .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-423 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-423 .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-423 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-423 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-423 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-423 .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-423 .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-423 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-423 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-423 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-423 .factory-paddings-editor .factory-side-left,.factory-bootstrap-423 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-423 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-423 .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.factoryBootstrap421_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-421 .factory-accordion").factoryBootstrap421_accordion()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";a.fn.factoryBootstrap423_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-423 .factory-accordion").factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_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
@@ -15,4 +15,4 @@
15
  =========================================================
16
  */
17
  !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");
18
- 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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-421 .factory-datetimepicker").factoryBootstrap421_DatetimePickerControl(),a(".factory-bootstrap-421 .factory-datetimepicker-range-0").factoryBootstrap421_DatetimePickerControl(),a(".factory-bootstrap-421 .factory-datetimepicker-range-1").factoryBootstrap421_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-421 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-421 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-421 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-421 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
15
  =========================================================
16
  */
17
  !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");
18
+ 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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-423 .factory-datetimepicker").factoryBootstrap423_DatetimePickerControl(),a(".factory-bootstrap-423 .factory-datetimepicker-range-0").factoryBootstrap423_DatetimePickerControl(),a(".factory-bootstrap-423 .factory-datetimepicker-range-1").factoryBootstrap423_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-423 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-423 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-423 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-423 .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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_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-421-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.factoryBootstrap421_modal;a.fn.factoryBootstrap421_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.factoryBootstrap421_modal.Constructor=b,a.fn.factoryBootstrap421_modal.noConflict=function(){return a.fn.factoryBootstrap421_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.factoryBootstrap421_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-423-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.factoryBootstrap423_modal;a.fn.factoryBootstrap423_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.factoryBootstrap423_modal.Constructor=b,a.fn.factoryBootstrap423_modal.noConflict=function(){return a.fn.factoryBootstrap423_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.factoryBootstrap423_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.attr("checked","checked"),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.removeAttr("checked"),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]&&(console.log(l[m]),a(m).val(l[m]))}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap421_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.factoryBootstrap421_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-checkbox.factory-buttons-way").factoryBootstrap421_checkboxControl()})}(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.attr("checked","checked"),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.removeAttr("checked"),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]&&(console.log(l[m]),a(m).val(l[m]))}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap423_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.factoryBootstrap423_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-checkbox.factory-buttons-way").factoryBootstrap423_checkboxControl()})}(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-421 .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-423 .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("factoryBootstrap421.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.factoryBootstrap421_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap421_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap421_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap421_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap421_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("factoryBootstrap421_colorControl",a.factoryBootstrap421.colorControl),a(".factory-bootstrap-421 .factory-color").factoryBootstrap421_colorControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap423.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.factoryBootstrap423_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap423_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap423_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap423_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap423_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("factoryBootstrap423_colorControl",a.factoryBootstrap423.colorControl),a(".factory-bootstrap-423 .factory-color").factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-dropdown-and-colors").factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-dropdown-and-colors").factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-dropdown").factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-dropdown").factoryBootstrap423_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("factoryBootstrap421.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("factoryBootstrap421_fontControl",a.factoryBootstrap421.fontControl),a(".factory-bootstrap-421 .factory-font").factoryBootstrap421_fontControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap423.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("factoryBootstrap423_fontControl",a.factoryBootstrap423.fontControl),a(".factory-bootstrap-423 .factory-font").factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-gradient").factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-gradient").factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-integer").factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-integer").factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_listControl.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-list").factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_listControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-list").factoryBootstrap423_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.factoryBootstrap421_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-421 .factory-multiple-textbox-group").factoryBootstrap421_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.factoryBootstrap423_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-423 .factory-multiple-textbox-group").factoryBootstrap423_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("factoryBootstrap421.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.factoryBootstrap421_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("factoryBootstrap421_patternControl",a.factoryBootstrap421.patternControl),a(".factory-bootstrap-421 .factory-pattern").factoryBootstrap421_patternControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap423.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.factoryBootstrap423_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("factoryBootstrap423_patternControl",a.factoryBootstrap423.patternControl),a(".factory-bootstrap-423 .factory-pattern").factoryBootstrap423_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="factoryBootstrap421_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-421 .factory-more-link").factoryBootstrap421_moreLink()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";var e="factoryBootstrap423_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-423 .factory-more-link").factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_iris("show"),this.$colorPicker.factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_iris("show"),this.$colorPicker.factoryBootstrap423_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
@@ -10,4 +10,4 @@
10
  /*! Iris Color Picker - v1.0.4 - 2013-11-18
11
  * https://github.com/Automattic/Iris
12
  * Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
13
- !function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap421_iris=!0,a.fn.factoryBootstrap421_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap421_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).factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
10
  /*! Iris Color Picker - v1.0.4 - 2013-11-18
11
  * https://github.com/Automattic/Iris
12
  * Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
13
+ !function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap423_iris=!0,a.fn.factoryBootstrap423_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap423_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).factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap421_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.factoryBootstrap421_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-421 .factory-paddings-editor").factoryBootstrap421_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.factoryBootstrap423_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.factoryBootstrap423_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-paddings-editor").factoryBootstrap423_paddingsEditor()})}(jQuery);
libs/factory/bootstrap/boot.php CHANGED
@@ -19,27 +19,27 @@ if ( ! is_admin() ) {
19
  return;
20
  }
21
 
22
- if ( defined( 'FACTORY_BOOTSTRAP_421_LOADED' ) ) {
23
  return;
24
  }
25
 
26
- define( 'FACTORY_BOOTSTRAP_421_VERSION', '4.2.1' );
27
- define( 'FACTORY_BOOTSTRAP_421_LOADED', true );
28
 
29
  if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
30
  define( 'FACTORY_FLAT_ADMIN', true );
31
  }
32
 
33
- define( 'FACTORY_BOOTSTRAP_421_DIR', dirname( __FILE__ ) );
34
- define( 'FACTORY_BOOTSTRAP_421_URL', plugins_url( null, __FILE__ ) );
35
 
36
- require_once( FACTORY_BOOTSTRAP_421_DIR . '/includes/functions.php' );
37
 
38
  /**
39
- * @param Wbcr_Factory420_Plugin $plugin
40
  */
41
- add_action( 'wbcr_factory_bootstrap_421_plugin_created', function ( $plugin ) {
42
- $manager = new Wbcr_FactoryBootstrap421_Manager( $plugin );
43
  $plugin->setBootstap( $manager );
44
  } );
45
 
19
  return;
20
  }
21
 
22
+ if ( defined( 'FACTORY_BOOTSTRAP_423_LOADED' ) ) {
23
  return;
24
  }
25
 
26
+ define( 'FACTORY_BOOTSTRAP_423_VERSION', '4.2.3' );
27
+ define( 'FACTORY_BOOTSTRAP_423_LOADED', true );
28
 
29
  if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
30
  define( 'FACTORY_FLAT_ADMIN', true );
31
  }
32
 
33
+ define( 'FACTORY_BOOTSTRAP_423_DIR', dirname( __FILE__ ) );
34
+ define( 'FACTORY_BOOTSTRAP_423_URL', plugins_url( null, __FILE__ ) );
35
 
36
+ require_once( FACTORY_BOOTSTRAP_423_DIR . '/includes/functions.php' );
37
 
38
  /**
39
+ * @param Wbcr_Factory422_Plugin $plugin
40
  */
41
+ add_action( 'wbcr_factory_bootstrap_423_plugin_created', function ( $plugin ) {
42
+ $manager = new Wbcr_FactoryBootstrap423_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_FactoryBootstrap421_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
- * @var Wbcr_Factory420_Plugin
30
  */
31
  public $plugin;
32
 
@@ -51,7 +51,7 @@ class Wbcr_FactoryBootstrap421_Manager {
51
  *
52
  * @since 1.0.0
53
  */
54
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
55
  $this->plugin = $plugin;
56
 
57
  add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
@@ -111,8 +111,8 @@ class Wbcr_FactoryBootstrap421_Manager {
111
  */
112
  public function loadAssets( $hook ) {
113
 
114
- do_action( 'wbcr_factory_420_bootstrap_enqueue_scripts', $hook );
115
- do_action( 'wbcr_factory_420_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
116
 
117
  $dependencies = [];
118
  if ( ! empty( $this->scripts ) ) {
@@ -142,8 +142,8 @@ class Wbcr_FactoryBootstrap421_Manager {
142
  $color_name = get_user_meta( $user_id, 'admin_color', true );
143
 
144
  if ( $color_name !== 'fresh' ) {
145
- if ( file_exists( FACTORY_BOOTSTRAP_421_DIR . '/assets/flat/css/bootstrap.' . $color_name . '.css' ) ) {
146
- wp_enqueue_style( 'wbcr-factory-bootstrap-421-colors', FACTORY_BOOTSTRAP_421_URL . '/assets/flat/css/bootstrap.' . $color_name . '.css' );
147
  }
148
  }
149
 
@@ -178,10 +178,10 @@ class Wbcr_FactoryBootstrap421_Manager {
178
  if( !window.factory ) {
179
  window.factory = {};
180
  }
181
- if( !window.factory.factoryBootstrap421 ) {
182
- window.factory.factoryBootstrap421 = {};
183
  }
184
- window.factory.factoryBootstrap421.colors = {
185
  primaryDark: '<?php echo $primary_dark ?>',
186
  primaryLight: '<?php echo $primary_light ?>'
187
  };
@@ -206,8 +206,8 @@ class Wbcr_FactoryBootstrap421_Manager {
206
  $cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
207
 
208
  $cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
209
- $cache_dir_path = FACTORY_BOOTSTRAP_421_DIR . '/assets/cache/';
210
- $cache_dir_url = FACTORY_BOOTSTRAP_421_URL . '/assets/cache/';
211
 
212
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
213
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
@@ -234,7 +234,7 @@ class Wbcr_FactoryBootstrap421_Manager {
234
  foreach ( $sripts as $script_to_load ) {
235
  $script_to_load = sanitize_text_field( $script_to_load );
236
  if ( $cache_enable && $cache_dir_exists ) {
237
- $fname = FACTORY_BOOTSTRAP_421_DIR . "/assets/$type-min/$script_to_load.min." . $type;
238
  if ( file_exists( $fname ) ) {
239
  $f = @fopen( $fname, 'r' );
240
  $concat_files[] = @fread( $f, filesize( $fname ) );
@@ -242,9 +242,9 @@ class Wbcr_FactoryBootstrap421_Manager {
242
  }
243
  } else {
244
  if ( $type == 'js' ) {
245
- wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_421_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
246
  } else {
247
- wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_421_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
248
  }
249
  $is_first = false;
250
  }
20
  *
21
  * @since 3.2.0
22
  */
23
+ class Wbcr_FactoryBootstrap423_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
+ * @var Wbcr_Factory422_Plugin
30
  */
31
  public $plugin;
32
 
51
  *
52
  * @since 1.0.0
53
  */
54
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
55
  $this->plugin = $plugin;
56
 
57
  add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
111
  */
112
  public function loadAssets( $hook ) {
113
 
114
+ do_action( 'wbcr_factory_422_bootstrap_enqueue_scripts', $hook );
115
+ do_action( 'wbcr_factory_422_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
116
 
117
  $dependencies = [];
118
  if ( ! empty( $this->scripts ) ) {
142
  $color_name = get_user_meta( $user_id, 'admin_color', true );
143
 
144
  if ( $color_name !== 'fresh' ) {
145
+ if ( file_exists( FACTORY_BOOTSTRAP_423_DIR . '/assets/flat/css/bootstrap.' . $color_name . '.css' ) ) {
146
+ wp_enqueue_style( 'wbcr-factory-bootstrap-423-colors', FACTORY_BOOTSTRAP_423_URL . '/assets/flat/css/bootstrap.' . $color_name . '.css' );
147
  }
148
  }
149
 
178
  if( !window.factory ) {
179
  window.factory = {};
180
  }
181
+ if( !window.factory.factoryBootstrap423 ) {
182
+ window.factory.factoryBootstrap423 = {};
183
  }
184
+ window.factory.factoryBootstrap423.colors = {
185
  primaryDark: '<?php echo $primary_dark ?>',
186
  primaryLight: '<?php echo $primary_light ?>'
187
  };
206
  $cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
207
 
208
  $cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
209
+ $cache_dir_path = FACTORY_BOOTSTRAP_423_DIR . '/assets/cache/';
210
+ $cache_dir_url = FACTORY_BOOTSTRAP_423_URL . '/assets/cache/';
211
 
212
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
213
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
234
  foreach ( $sripts as $script_to_load ) {
235
  $script_to_load = sanitize_text_field( $script_to_load );
236
  if ( $cache_enable && $cache_dir_exists ) {
237
+ $fname = FACTORY_BOOTSTRAP_423_DIR . "/assets/$type-min/$script_to_load.min." . $type;
238
  if ( file_exists( $fname ) ) {
239
  $f = @fopen( $fname, 'r' );
240
  $concat_files[] = @fread( $f, filesize( $fname ) );
242
  }
243
  } else {
244
  if ( $type == 'js' ) {
245
+ wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_423_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
246
  } else {
247
+ wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_423_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
248
  }
249
  $is_first = false;
250
  }
libs/factory/core/boot.php CHANGED
@@ -14,49 +14,49 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- if ( defined( 'FACTORY_420_LOADED' ) ) {
18
  return;
19
  }
20
 
21
- define( 'FACTORY_420_LOADED', true );
22
 
23
- define( 'FACTORY_420_VERSION', '4.2.0' );
24
 
25
- define( 'FACTORY_420_DIR', dirname( __FILE__ ) );
26
- define( 'FACTORY_420_URL', plugins_url( null, __FILE__ ) );
27
 
28
- load_plugin_textdomain( 'wbcr_factory_420', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
29
 
30
  #comp merge
31
- require_once( FACTORY_420_DIR . '/includes/functions.php' );
32
 
33
- require_once( FACTORY_420_DIR . '/includes/entities/class-factory-paths.php' );
34
- require_once( FACTORY_420_DIR . '/includes/entities/class-factory-support.php' );
35
 
36
- require_once( FACTORY_420_DIR . '/includes/class-factory-requests.php' );
37
- require_once( FACTORY_420_DIR . '/includes/class-factory-options.php' );
38
- require_once( FACTORY_420_DIR . '/includes/class-factory-plugin-base.php' );
39
- require_once( FACTORY_420_DIR . '/includes/class-factory-migrations.php' );
40
- require_once( FACTORY_420_DIR . '/includes/class-factory-notices.php' );
41
 
42
  // ASSETS
43
- require_once( FACTORY_420_DIR . '/includes/assets-managment/class-factory-assets-list.php' );
44
- require_once( FACTORY_420_DIR . '/includes/assets-managment/class-factory-script-list.php' );
45
- require_once( FACTORY_420_DIR . '/includes/assets-managment/class-factory-style-list.php' );
46
 
47
  // PREMIUM
48
- require_once( FACTORY_420_DIR . '/includes/premium/class-factory-license-interface.php' );
49
- require_once( FACTORY_420_DIR . '/includes/premium/class-factory-provider-abstract.php' );
50
- require_once( FACTORY_420_DIR . '/includes/premium/class-factory-manager.php' );
51
 
52
  // UPDATES
53
- require_once( FACTORY_420_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php' );
54
- require_once( FACTORY_420_DIR . '/includes/updates/repositories/class-factory-wordpress.php' );
55
- require_once( FACTORY_420_DIR . '/includes/updates/class-factory-upgrader.php' );
56
- require_once( FACTORY_420_DIR . '/includes/updates/class-factory-premium-upgrader.php' );
57
 
58
- require_once( FACTORY_420_DIR . '/includes/class-factory-plugin-abstract.php' );
59
 
60
- require_once( FACTORY_420_DIR . '/includes/activation/class-factory-activator.php' );
61
- require_once( FACTORY_420_DIR . '/includes/activation/class-factory-update.php' );
62
  #endcomp
14
  exit;
15
  }
16
 
17
+ if ( defined( 'FACTORY_422_LOADED' ) ) {
18
  return;
19
  }
20
 
21
+ define( 'FACTORY_422_LOADED', true );
22
 
23
+ define( 'FACTORY_422_VERSION', '4.2.2' );
24
 
25
+ define( 'FACTORY_422_DIR', dirname( __FILE__ ) );
26
+ define( 'FACTORY_422_URL', plugins_url( null, __FILE__ ) );
27
 
28
+ load_plugin_textdomain( 'wbcr_factory_422', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
29
 
30
  #comp merge
31
+ require_once( FACTORY_422_DIR . '/includes/functions.php' );
32
 
33
+ require_once( FACTORY_422_DIR . '/includes/entities/class-factory-paths.php' );
34
+ require_once( FACTORY_422_DIR . '/includes/entities/class-factory-support.php' );
35
 
36
+ require_once( FACTORY_422_DIR . '/includes/class-factory-requests.php' );
37
+ require_once( FACTORY_422_DIR . '/includes/class-factory-options.php' );
38
+ require_once( FACTORY_422_DIR . '/includes/class-factory-plugin-base.php' );
39
+ require_once( FACTORY_422_DIR . '/includes/class-factory-migrations.php' );
40
+ require_once( FACTORY_422_DIR . '/includes/class-factory-notices.php' );
41
 
42
  // ASSETS
43
+ require_once( FACTORY_422_DIR . '/includes/assets-managment/class-factory-assets-list.php' );
44
+ require_once( FACTORY_422_DIR . '/includes/assets-managment/class-factory-script-list.php' );
45
+ require_once( FACTORY_422_DIR . '/includes/assets-managment/class-factory-style-list.php' );
46
 
47
  // PREMIUM
48
+ require_once( FACTORY_422_DIR . '/includes/premium/class-factory-license-interface.php' );
49
+ require_once( FACTORY_422_DIR . '/includes/premium/class-factory-provider-abstract.php' );
50
+ require_once( FACTORY_422_DIR . '/includes/premium/class-factory-manager.php' );
51
 
52
  // UPDATES
53
+ require_once( FACTORY_422_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php' );
54
+ require_once( FACTORY_422_DIR . '/includes/updates/repositories/class-factory-wordpress.php' );
55
+ require_once( FACTORY_422_DIR . '/includes/updates/class-factory-upgrader.php' );
56
+ require_once( FACTORY_422_DIR . '/includes/updates/class-factory-premium-upgrader.php' );
57
 
58
+ require_once( FACTORY_422_DIR . '/includes/class-factory-plugin-abstract.php' );
59
 
60
+ require_once( FACTORY_422_DIR . '/includes/activation/class-factory-activator.php' );
61
+ require_once( FACTORY_422_DIR . '/includes/activation/class-factory-update.php' );
62
  #endcomp
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_Factory420_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
- * @var Wbcr_Factory420_Plugin
28
  */
29
  public $plugin;
30
 
31
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
32
  $this->plugin = $plugin;
33
  }
34
 
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_Factory422_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
+ * @var Wbcr_Factory422_Plugin
28
  */
29
  public $plugin;
30
 
31
+ public function __construct( Wbcr_Factory422_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_Factory420_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
- * @var Wbcr_Factory420_Plugin
29
  */
30
  var $plugin;
31
 
32
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
33
  $this->plugin = $plugin;
34
  }
35
 
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_Factory422_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
+ * @var Wbcr_Factory422_Plugin
29
  */
30
  var $plugin;
31
 
32
+ public function __construct( Wbcr_Factory422_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_Factory420_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
@@ -29,15 +29,15 @@ class Wbcr_Factory420_AssetsList {
29
  protected $default_place;
30
 
31
  /**
32
- * @var Wbcr_Factory420_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
- * @param Wbcr_Factory420_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
- public function __construct( Wbcr_Factory420_Plugin $plugin, $defaultIsFooter = true ) {
41
  $this->plugin = $plugin;
42
 
43
  if ( $defaultIsFooter ) {
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_Factory422_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
29
  protected $default_place;
30
 
31
  /**
32
+ * @var Wbcr_Factory422_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
+ * @param Wbcr_Factory422_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
+ public function __construct( Wbcr_Factory422_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_Factory420_ScriptList extends Wbcr_Factory420_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
@@ -149,7 +149,7 @@ class Wbcr_Factory420_ScriptList extends Wbcr_Factory420_AssetsList {
149
  * @param string $varname
150
  * @param string $data
151
  *
152
- * @return Wbcr_Factory420_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_Factory422_ScriptList extends Wbcr_Factory422_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
149
  * @param string $varname
150
  * @param string $data
151
  *
152
+ * @return Wbcr_Factory422_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_Factory420_StyleList extends Wbcr_Factory420_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory422_StyleList extends Wbcr_Factory422_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
libs/factory/core/includes/class-check-compatibility.php CHANGED
@@ -82,12 +82,12 @@ if ( ! class_exists( 'Wbcr_Factory_Compatibility' ) ) {
82
 
83
  if ( ! $this->isPhpCompatibility() ) {
84
  $has_one = true;
85
- $notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_420' ), $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_420' ), $this->required_wp_version ) . '<br>';
91
  }
92
 
93
  if ( $has_one ) {
82
 
83
  if ( ! $this->isPhpCompatibility() ) {
84
  $has_one = true;
85
+ $notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_422' ), $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_422' ), $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_420;
4
 
5
  use Exception;
6
- use Wbcr_Factory420_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -35,11 +35,11 @@ class Migrations {
35
  /**
36
  * Migrations constructor.
37
  *
38
- * @param Wbcr_Factory420_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
@@ -52,8 +52,8 @@ class Migrations {
52
  add_action( "admin_init", [ $this, "check_migrations" ] );
53
 
54
  add_action( "wbcr/factory/plugin_{$plugin_name}_activated", [ $this, 'activation_hook' ] );
55
- add_action( "wbcr_factory_notices_000_list", [ $this, "debug_bar_notice" ], 10, 2 );
56
- add_action( "wbcr_factory_notices_000_list", [ $this, "migration_error_notice" ], 10, 2 );
57
  }
58
  }
59
 
@@ -129,14 +129,14 @@ class Migrations {
129
  $fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
130
 
131
  $notice_text = $migration_error_text;
132
- $notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_420' ) . "</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_420' ) . '</b><br>' . $notice_text . '</p>'
140
  ];
141
 
142
  return $notices;
@@ -162,19 +162,19 @@ class Migrations {
162
 
163
  $migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
164
 
165
- $notice_text = __( "Plugin activated:", "wbcr_factory_420" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
- $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_420" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
- $notice_text .= __( "Current plugin version:", "wbcr_factory_420" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
- $notice_text .= __( "Need migration:", "wbcr_factory_420" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
- $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_420" ) . "</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_420' ) . '</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_420' ) );
509
  }
510
 
511
  $tokens = token_get_all( $phpCode );
1
  <?php
2
 
3
+ namespace WBCR\Factory_422;
4
 
5
  use Exception;
6
+ use Wbcr_Factory422_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
35
  /**
36
  * Migrations constructor.
37
  *
38
+ * @param Wbcr_Factory422_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
52
  add_action( "admin_init", [ $this, "check_migrations" ] );
53
 
54
  add_action( "wbcr/factory/plugin_{$plugin_name}_activated", [ $this, 'activation_hook' ] );
55
+ add_action( "wbcr/factory/admin_notices", [ $this, "debug_bar_notice" ], 10, 2 );
56
+ add_action( "wbcr/factory/admin_notices", [ $this, "migration_error_notice" ], 10, 2 );
57
  }
58
  }
59
 
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_422' ) . "</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_422' ) . '</b><br>' . $notice_text . '</p>'
140
  ];
141
 
142
  return $notices;
162
 
163
  $migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
164
 
165
+ $notice_text = __( "Plugin activated:", "wbcr_factory_422" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
+ $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_422" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
+ $notice_text .= __( "Current plugin version:", "wbcr_factory_422" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
+ $notice_text .= __( "Need migration:", "wbcr_factory_422" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
+ $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_422" ) . "</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_422' ) . '</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_422' ) );
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_420;
4
 
5
- use Wbcr_Factory420_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_Factory420_Plugin
31
  */
32
  protected $plugin;
33
  /**
@@ -58,7 +58,7 @@ class Notices {
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
- * @param Wbcr_Factory420_Plugin $plugin
62
  */
63
  public function __construct( $plugin ) {
64
  //default notices
@@ -72,7 +72,7 @@ class Notices {
72
  if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
73
  add_action( 'wp_ajax_' . $this->plugin->getPluginName() . '_dismiss_notice', [
74
  $this,
75
- 'dismissNotice'
76
  ] );
77
  }
78
  }
@@ -83,7 +83,18 @@ class Notices {
83
  * хотя бы одно, соответствует условиям в параметре $notice['where'], то метод печает вспомогательные скрипты и уведомления.
84
  */
85
  public function currentScreenAction() {
86
- $this->notices = apply_filters( 'wbcr_factory_notices_000_list', $this->notices, $this->plugin->getPluginName() );
 
 
 
 
 
 
 
 
 
 
 
87
 
88
  if ( count( $this->notices ) == 0 ) {
89
  return;
@@ -99,22 +110,22 @@ class Notices {
99
 
100
  $where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
101
 
102
- if ( in_array( $screen->base, $where ) && ! $this->isDissmissed( $notice['id'] ) ) {
103
  $has_notices = true;
104
  break;
105
  };
106
  }
107
 
108
  if ( $has_notices ) {
109
- add_action( 'admin_footer', [ $this, 'printNoticesScripts' ] );
110
 
111
  if ( $this->plugin->isNetworkActive() ) {
112
  if ( current_user_can( 'manage_network' ) ) {
113
- add_action( 'network_admin_notices', [ $this, 'showNotices' ] );
114
- add_action( 'admin_notices', [ $this, 'showNotices' ] );
115
  }
116
  } else {
117
- add_action( 'admin_notices', [ $this, 'showNotices' ] );
118
  }
119
  }
120
  }
@@ -124,7 +135,7 @@ class Notices {
124
  * Уведомления показываются только на определенных страницах через параметр $notice['where'],
125
  * если уведомление ранее было скрыто или не соотвествует правилам $notice['where'], оно не будет показано!
126
  */
127
- public function showNotices() {
128
  if ( count( $this->notices ) == 0 ) {
129
  return;
130
  }
@@ -143,8 +154,8 @@ class Notices {
143
 
144
  $where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
145
 
146
- if ( in_array( $screen->base, $where ) && ! $this->isDissmissed( $notice['id'] ) ) {
147
- $this->showNotice( $notice );
148
  };
149
  }
150
  }
@@ -162,37 +173,34 @@ class Notices {
162
  * Пример time() + 3600 (1ч), уведомление будет скрыто на 1 час.
163
  * $data['classes'] - Произвольный классы для контейнера уведомления.
164
  */
165
- public function showNotice( $data ) {
166
- if ( ! isset( $data['id'] ) || empty( $data['id'] ) ) {
 
 
 
 
 
 
 
 
 
167
  return;
168
  }
169
 
170
- if ( ! isset( $data['text'] ) || empty( $data['text'] ) ) {
171
- return;
172
- }
173
-
174
- $type = ! isset( $data['type'] ) || empty( $data['type'] ) ? 'error' : $data['type'];
175
-
176
- $dismissible = ! isset( $data['dismissible'] ) || empty( $data['dismissible'] ) ? false : $data['dismissible'];
177
-
178
- $dismiss_expires = ! isset( $data['dismiss_expires'] ) || empty( $data['dismiss_expires'] ) ? 0 : $data['dismiss_expires'];
179
-
180
- $classes = ! isset( $data['classes'] ) || empty( $data['classes'] ) ? [] : $data['classes'];
181
-
182
  $plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
183
 
184
  $classes = array_merge( [
185
  'notice',
186
- 'notice-' . $type,
187
  $plugin_name . '-factory-notice'
188
- ], $classes );
189
 
190
- if ( $dismissible ) {
191
  $classes[] = 'is-dismissible';
192
  $classes[] = $plugin_name . '-factory-notice-dismiss';
193
  }
194
  ?>
195
- <div data-name="wbcr_factory_notice_<?= esc_attr( $data['id'] ) ?>" data-expires="<?= esc_attr( $dismiss_expires ) ?>" data-nonce="<?= esc_attr( wp_create_nonce( $this->plugin->getPluginName() . '_factory_dismiss_notice' ) ); ?>" class="<?= esc_attr( implode( ' ', $classes ) ) ?>">
196
  <?= $data['text'] ?>
197
  </div>
198
  <?php
@@ -202,19 +210,22 @@ class Notices {
202
  * Когда пользователь нажимает кнопку закрыть уведомление,
203
  * отправляется ajax запрос с вызовом текущего метода
204
  */
205
- public function dismissNotice() {
 
 
 
 
206
  check_admin_referer( $this->plugin->getPluginName() . '_factory_dismiss_notice', 'nonce' );
207
 
208
  // Имя уведомления (идентификатор)
209
- $name = empty( $_POST['name'] ) ? null : sanitize_text_field( $_POST['name'] );
210
 
211
  // Время в Unix timestamp, по истечению, которого уведомление снова будет показано
212
  // Если передан 0, то уведомление будет скрыто навсегда
213
- $expires = ! isset( $_POST['expires'] ) || empty( $_POST['expires'] ) ? 0 : (int) $_POST['expires'];
214
 
215
  if ( empty( $name ) ) {
216
- echo json_encode( [ 'error' => 'Attribute name is empty!' ] );
217
- exit;
218
  }
219
 
220
  $notices = $this->plugin->getPopulateOption( "factory_dismissed_notices", [] );
@@ -231,8 +242,7 @@ class Notices {
231
 
232
  $this->plugin->updatePopulateOption( 'factory_dismissed_notices', $notices );
233
 
234
- echo json_encode( [ 'success' => 'ok' ] );
235
- exit;
236
  }
237
 
238
  /**
@@ -240,7 +250,7 @@ class Notices {
240
  * Печает в подвале страницы код, для взаимодействия с сервером через ajax,
241
  * код используется при нажатии на кнопку закрыть уведомление. *
242
  */
243
- public function printNoticesScripts() {
244
  $plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
245
 
246
  ?>
@@ -269,7 +279,7 @@ class Notices {
269
  *
270
  * @return bool
271
  */
272
- protected function isDissmissed( $notice_id ) {
273
  if ( ! empty( $this->dissmised_notices ) && isset( $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ] ) ) {
274
  $expires = (int) $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ];
275
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_422;
4
 
5
+ use Wbcr_Factory422_Plugin;
6
 
7
  // Exit if accessed directly
8
  if ( ! defined( 'ABSPATH' ) ) {
27
  class Notices {
28
 
29
  /**
30
+ * @var Wbcr_Factory422_Plugin
31
  */
32
  protected $plugin;
33
  /**
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
+ * @param Wbcr_Factory422_Plugin $plugin
62
  */
63
  public function __construct( $plugin ) {
64
  //default notices
72
  if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
73
  add_action( 'wp_ajax_' . $this->plugin->getPluginName() . '_dismiss_notice', [
74
  $this,
75
+ 'dismiss_notice'
76
  ] );
77
  }
78
  }
83
  * хотя бы одно, соответствует условиям в параметре $notice['where'], то метод печает вспомогательные скрипты и уведомления.
84
  */
85
  public function currentScreenAction() {
86
+ /**
87
+ * @since 2.1.2 - является устаревшим
88
+ */
89
+ $this->notices = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_notices_000_list', [
90
+ $this->notices,
91
+ $this->plugin->getPluginName(),
92
+ ], '2.1.2', 'wbcr/factory/admin_notices' );
93
+
94
+ /**
95
+ * @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_422
96
+ */
97
+ $this->notices = apply_filters( 'wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName() );
98
 
99
  if ( count( $this->notices ) == 0 ) {
100
  return;
110
 
111
  $where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
112
 
113
+ if ( in_array( $screen->base, $where ) && ! $this->is_dissmissed( $notice['id'] ) ) {
114
  $has_notices = true;
115
  break;
116
  };
117
  }
118
 
119
  if ( $has_notices ) {
120
+ add_action( 'admin_footer', [ $this, 'print_js_code' ] );
121
 
122
  if ( $this->plugin->isNetworkActive() ) {
123
  if ( current_user_can( 'manage_network' ) ) {
124
+ add_action( 'network_admin_notices', [ $this, 'show_notices' ] );
125
+ add_action( 'admin_notices', [ $this, 'show_notices' ] );
126
  }
127
  } else {
128
+ add_action( 'admin_notices', [ $this, 'show_notices' ] );
129
  }
130
  }
131
  }
135
  * Уведомления показываются только на определенных страницах через параметр $notice['where'],
136
  * если уведомление ранее было скрыто или не соотвествует правилам $notice['where'], оно не будет показано!
137
  */
138
+ public function show_notices() {
139
  if ( count( $this->notices ) == 0 ) {
140
  return;
141
  }
154
 
155
  $where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
156
 
157
+ if ( in_array( $screen->base, $where ) && ! $this->is_dissmissed( $notice['id'] ) ) {
158
+ $this->show_notice( $notice );
159
  };
160
  }
161
  }
173
  * Пример time() + 3600 (1ч), уведомление будет скрыто на 1 час.
174
  * $data['classes'] - Произвольный классы для контейнера уведомления.
175
  */
176
+ public function show_notice( $data ) {
177
+ $settings = wp_parse_args( $data, [
178
+ 'id' => null,
179
+ 'text' => null,
180
+ 'type' => 'error',
181
+ 'dismissible' => false,
182
+ 'dismiss_expires' => 0,
183
+ 'classes' => []
184
+ ] );
185
+
186
+ if ( empty( $settings['id'] ) || empty( $settings['text'] ) ) {
187
  return;
188
  }
189
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  $plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
191
 
192
  $classes = array_merge( [
193
  'notice',
194
+ 'notice-' . $settings['type'],
195
  $plugin_name . '-factory-notice'
196
+ ], $settings['classes'] );
197
 
198
+ if ( $settings['dismissible'] ) {
199
  $classes[] = 'is-dismissible';
200
  $classes[] = $plugin_name . '-factory-notice-dismiss';
201
  }
202
  ?>
203
+ <div data-name="wbcr_factory_notice_<?php echo esc_attr( $data['id'] ) ?>" data-expires="<?= esc_attr( $settings['dismiss_expires'] ) ?>" data-nonce="<?php echo wp_create_nonce( $this->plugin->getPluginName() . '_factory_dismiss_notice' ); ?>" class="<?php echo esc_attr( implode( ' ', $classes ) ) ?>">
204
  <?= $data['text'] ?>
205
  </div>
206
  <?php
210
  * Когда пользователь нажимает кнопку закрыть уведомление,
211
  * отправляется ajax запрос с вызовом текущего метода
212
  */
213
+ public function dismiss_notice() {
214
+ if ( ! current_user_can( 'activate_plugins' ) || ! current_user_can( 'edit_plugins' ) || ! current_user_can( 'install_plugins' ) ) {
215
+ wp_die( - 1, 403 );
216
+ }
217
+
218
  check_admin_referer( $this->plugin->getPluginName() . '_factory_dismiss_notice', 'nonce' );
219
 
220
  // Имя уведомления (идентификатор)
221
+ $name = $this->plugin->request->post( 'name', null, true );
222
 
223
  // Время в Unix timestamp, по истечению, которого уведомление снова будет показано
224
  // Если передан 0, то уведомление будет скрыто навсегда
225
+ $expires = $this->plugin->request->post( 'expires', 0, 'intval' );
226
 
227
  if ( empty( $name ) ) {
228
+ wp_send_json_error( [ 'error_message' => 'You must pass the notification "Name"! Action was rejected.' ] );
 
229
  }
230
 
231
  $notices = $this->plugin->getPopulateOption( "factory_dismissed_notices", [] );
242
 
243
  $this->plugin->updatePopulateOption( 'factory_dismissed_notices', $notices );
244
 
245
+ wp_send_json_success();
 
246
  }
247
 
248
  /**
250
  * Печает в подвале страницы код, для взаимодействия с сервером через ajax,
251
  * код используется при нажатии на кнопку закрыть уведомление. *
252
  */
253
+ public function print_js_code() {
254
  $plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
255
 
256
  ?>
279
  *
280
  * @return bool
281
  */
282
+ protected function is_dissmissed( $notice_id ) {
283
  if ( ! empty( $this->dissmised_notices ) && isset( $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ] ) ) {
284
  $expires = (int) $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ];
285
 
libs/factory/core/includes/class-factory-options.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_420;
4
 
5
  // Exit if accessed directly
6
  use Exception;
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  }
11
 
12
  /**
13
- * Трейт используется для расширения базового класса плагина Wbcr_Factory420_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_422;
4
 
5
  // Exit if accessed directly
6
  use Exception;
10
  }
11
 
12
  /**
13
+ * Трейт используется для расширения базового класса плагина Wbcr_Factory422_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_Factory420_Plugin extends Wbcr_Factory420_Base {
28
 
29
  /**
30
- * Instance class Wbcr_Factory420_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
- * @var Wbcr_Factory420_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
- * @var \WBCR\Factory_420\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
- * @var Wbcr_FactoryBootstrap421_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
- * @var Wbcr_FactoryForms418_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
- * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory420_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
- * @var array[] Wbcr_Factory420_Activator
63
  */
64
  protected $activator_class = [];
65
 
@@ -75,16 +75,18 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
75
  * Ассоциативный массив со списком аддонов плагина. Аддоны плагина являются частью одного проекта,
76
  * но не как отдельный плагин.
77
  *
78
- * @var array[] Wbcr_Factory420_Plugin
 
 
79
  */
80
- private $plugin_addons;
81
 
82
  /**
83
  * The Adverts Manager class
84
  *
85
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
86
  * @since 4.1.9
87
- * @var WBCR\Factory_Adverts_102\Base
88
  */
89
  private $adverts;
90
 
@@ -103,8 +105,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
103
 
104
  parent::__construct( $plugin_path, $data );
105
 
106
- $this->request = new Wbcr_Factory420_Request();
107
- //$this->route = new Wbcr_Factory420_Route();
108
 
109
  // INIT PLUGIN FRAMEWORK MODULES
110
  // Framework modules should always be loaded first,
@@ -127,27 +129,27 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
127
 
128
  // init actions
129
  $this->register_plugin_hooks();
130
- }
131
 
132
- /* Services region
133
- /* -------------------------------------------------------------*/
 
134
 
135
  /**
136
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
137
  * скриптов, стилей) фреймворка.
138
  *
139
- * @param Wbcr_FactoryBootstrap421_Manager $bootstrap
140
  */
141
- public function setBootstap( Wbcr_FactoryBootstrap421_Manager $bootstrap ) {
142
  $this->bootstrap = $bootstrap;
143
  }
144
 
145
  /**
146
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
147
  *
148
- * @param Wbcr_FactoryForms418_Manager $forms
149
  */
150
- public function setForms( Wbcr_FactoryForms418_Manager $forms ) {
151
  $this->forms = $forms;
152
  }
153
 
@@ -175,8 +177,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
175
  * @param string $class_name Имя класса провайдера
176
  */
177
  public function set_license_provider( $name, $class_name ) {
178
- if ( ! isset( WBCR\Factory_420\Premium\Manager::$providers[ $name ] ) ) {
179
- WBCR\Factory_420\Premium\Manager::$providers[ $name ] = $class_name;
180
  }
181
  }
182
 
@@ -192,8 +194,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
192
  * @param string $class_name Имя класса репозитория
193
  */
194
  public function set_update_repository( $name, $class_name ) {
195
- if ( ! isset( WBCR\Factory_420\Updates\Upgrader::$repositories[ $name ] ) ) {
196
- WBCR\Factory_420\Updates\Upgrader::$repositories[ $name ] = $class_name;
197
  }
198
  }
199
 
@@ -205,7 +207,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
205
  *
206
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
207
  * @since 1.1
208
- * @return \WBCR\Factory_Adverts_102\Base
209
  */
210
  public function get_adverts_manager() {
211
  return $this->adverts;
@@ -234,10 +236,18 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
234
  }
235
  }
236
 
 
 
 
 
 
 
 
 
237
  /**
238
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
239
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
240
- * Wbcr_FactoryPages420_AdminPage, а затем регистрирует его через этот метод.
241
  * Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
242
  * pages.
243
  *
@@ -247,7 +257,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
247
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
248
  *
249
  * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
250
- * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages420_AdminPage.
251
  * @param string $file_path Абсолютный путь к файлу с классом страницы.
252
  *
253
  * @throws Exception
@@ -268,11 +278,11 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
268
  throw new Exception( 'A class with this name {' . $class_name . '} does not exist.' );
269
  }
270
 
271
- if ( ! class_exists( 'Wbcr_FactoryPages420' ) ) {
272
- throw new Exception( 'The factory_pages_420 module is not included.' );
273
  }
274
 
275
- Wbcr_FactoryPages420::register( $this, $class_name );
276
  }
277
 
278
  /**
@@ -319,16 +329,16 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
319
  /**
320
  * @since 4.1.1 - change hook name
321
  */
322
- if ( apply_filters( "wbcr/factory_420/cancel_plugin_activation_{$this->plugin_name}", false ) ) {
323
  return;
324
  }
325
 
326
  /**
327
- * wbcr_factory_420_plugin_activation
328
  *
329
  * @since 4.1.1 - deprecated
330
  */
331
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_plugin_activation', [
332
  $this
333
  ], '4.1.1', "wbcr/factory/plugin_activation" );
334
 
@@ -337,7 +347,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
337
  *
338
  * @since 4.1.2 - deprecated
339
  */
340
- wbcr_factory_420_do_action_deprecated( 'wbcr/factory/plugin_activation', [
341
  $this
342
  ], '4.1.2', "wbcr/factory/before_plugin_activation" );
343
 
@@ -353,16 +363,16 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
353
  *
354
  * @since 4.1.2 - deprecated
355
  */
356
- wbcr_factory_420_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_activation", [
357
  $this
358
  ], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
359
 
360
  /**
361
- * wbcr_factory_420_plugin_activation_' . $this->plugin_name
362
  *
363
  * @since 4.1.1 - deprecated
364
  */
365
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_plugin_activation_' . $this->plugin_name, [
366
  $this
367
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
368
 
@@ -402,16 +412,16 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
402
  /**
403
  * @since 4.1.1 - change hook name
404
  */
405
- if ( apply_filters( "wbcr/factory_420/cancel_plugin_deactivation_{$this->plugin_name}", false ) ) {
406
  return;
407
  }
408
 
409
  /**
410
- * wbcr_factory_420_plugin_deactivation
411
  *
412
  * @since 4.1.1 - deprecated
413
  */
414
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_plugin_deactivation', [
415
  $this
416
  ], '4.1.1', "wbcr/factory/plugin_deactivation" );
417
 
@@ -420,7 +430,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
420
  *
421
  * @since 4.1.2 - deprecated
422
  */
423
- wbcr_factory_420_do_action_deprecated( 'wbcr/factory/plugin_deactivation', [
424
  $this
425
  ], '4.1.2', "wbcr/factory/before_plugin_deactivation" );
426
 
@@ -432,11 +442,11 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
432
  do_action( 'wbcr/factory/plugin_deactivation', $this );
433
 
434
  /**
435
- * wbcr_factory_420_plugin_deactivation_ . $this->plugin_name
436
  *
437
  * @since 4.1.1 - deprecated
438
  */
439
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_plugin_deactivation_' . $this->plugin_name, [
440
  $this
441
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
442
 
@@ -445,7 +455,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
445
  *
446
  * @since 4.1.2 - deprecated
447
  */
448
- wbcr_factory_420_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_deactivation", [
449
  $this
450
  ], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
451
 
@@ -482,8 +492,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
482
  * @throws Exception
483
  */
484
  public function getPluginPageUrl( $page_id, $args = [] ) {
485
- if ( ! class_exists( 'Wbcr_FactoryPages420' ) ) {
486
- throw new Exception( 'The factory_pages_420 module is not included.' );
487
  }
488
 
489
  if ( ! is_admin() ) {
@@ -492,44 +502,60 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
492
  return null;
493
  }
494
 
495
- return Wbcr_FactoryPages420::getPageUrl( $this, $page_id, $args );
496
  }
497
 
498
-
499
  /**
500
  * Загружает аддоны для плагина, как часть проекта, а не как отдельный плагин
 
 
501
  */
502
- protected function loadAddons( $addons ) {
503
- if ( empty( $addons ) ) {
 
 
 
504
  return;
505
  }
506
 
507
- foreach ( $addons as $addon_name => $addon_path ) {
508
- if ( ! isset( $this->plugin_addons[ $addon_name ] ) ) {
509
-
510
- // При подключении аддона, мы объявляем константу, что такой аддон уже загружен
511
- // $addon_name индентификатор аддона в вверхнем регистре
512
- $const_name = strtoupper( 'LOADING_' . str_replace( '-', '_', $addon_name ) . '_AS_ADDON' );
513
 
514
- if ( ! defined( $const_name ) ) {
515
- define( $const_name, true );
516
  }
517
 
518
- require_once( $addon_path[1] );
519
 
520
- // Передаем аддону информацию о родительском плагине
521
- $plugin_data = $this->getPluginInfo();
 
522
 
523
- // Устанавливаем метку для аддона, которая указывает на то, что это аддон
524
- $plugin_data['as_addon'] = true;
525
 
526
- // Передаем класс родителя в аддон, для того,
527
- // чтобы аддон использовал экземпляр класса родителя, а не создавал свой собственный.
528
- $plugin_data['plugin_parent'] = $this;
529
 
530
- // Создаем экземпляр класса аддона и записываем его в список загруженных аддонов
531
- if ( class_exists( $addon_path[0] ) ) {
532
- $this->plugin_addons[ $addon_name ] = new $addon_path[0]( $this->get_paths()->main_file, $plugin_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
533
  }
534
  }
535
  }
@@ -570,12 +596,12 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
570
  /**
571
  * @since 4.1.1 - deprecated
572
  */
573
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_420/modules_loaded-" . $this->plugin_name );
574
 
575
  /**
576
  * @since 4.1.1 - add
577
  */
578
- do_action( 'wbcr/factory_420/modules_loaded-' . $this->plugin_name );
579
  }
580
 
581
 
@@ -589,7 +615,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
589
  add_action( 'plugins_loaded', [ $this, 'set_text_domain' ] );
590
 
591
  if ( is_admin() ) {
592
- add_filter( 'wbcr_factory_420_core_admin_allow_multisite', '__return_true' );
593
 
594
  register_activation_hook( $this->get_paths()->main_file, [ $this, 'activation_hook' ] );
595
  register_deactivation_hook( $this->get_paths()->main_file, [ $this, 'deactivation_hook' ] );
@@ -604,7 +630,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
604
  * @throws Exception
605
  */
606
  protected function init_plugin_migrations() {
607
- new WBCR\Factory_420\Migrations( $this );
608
  }
609
 
610
  /**
@@ -614,7 +640,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
614
  * @return void
615
  */
616
  protected function init_plugin_notices() {
617
- new Wbcr\Factory_420\Notices( $this );
618
  }
619
 
620
  /**
@@ -629,7 +655,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
629
  */
630
  protected function init_plugin_updates() {
631
  if ( $this->has_updates ) {
632
- new WBCR\Factory_420\Updates\Upgrader( $this );
633
  }
634
  }
635
 
@@ -651,24 +677,12 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
651
  }
652
 
653
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
654
- $this->premium = WBCR\Factory_420\Premium\Manager::instance( $this, $this->license_settings );
655
 
656
  // Подключаем премиум апгрейдер
657
  if ( isset( $this->license_settings['has_updates'] ) && $this->license_settings['has_updates'] ) {
658
- new WBCR\Factory_420\Updates\Premium_Upgrader( $this );
659
  }
660
  }
661
-
662
- // ----------------------------------------------------------------------
663
- // Public methods
664
- // ----------------------------------------------------------------------
665
-
666
- public function newScriptList() {
667
- return new Wbcr_Factory420_ScriptList( $this );
668
- }
669
-
670
- public function newStyleList() {
671
- return new Wbcr_Factory420_StyleList( $this );
672
- }
673
  }
674
 
24
  * @package factory-core
25
  *
26
  */
27
+ abstract class Wbcr_Factory422_Plugin extends Wbcr_Factory422_Base {
28
 
29
  /**
30
+ * Instance class Wbcr_Factory422_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
+ * @var Wbcr_Factory422_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
+ * @var \WBCR\Factory_422\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
+ * @var Wbcr_FactoryBootstrap423_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
+ * @var Wbcr_FactoryForms420_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
+ * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory422_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
+ * @var array[] Wbcr_Factory422_Activator
63
  */
64
  protected $activator_class = [];
65
 
75
  * Ассоциативный массив со списком аддонов плагина. Аддоны плагина являются частью одного проекта,
76
  * но не как отдельный плагин.
77
  *
78
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
79
+ * @since 4.2.0
80
+ * @var array
81
  */
82
+ private $loaded_plugin_components = [];
83
 
84
  /**
85
  * The Adverts Manager class
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
88
  * @since 4.1.9
89
+ * @var WBCR\Factory_Adverts_104\Base
90
  */
91
  private $adverts;
92
 
105
 
106
  parent::__construct( $plugin_path, $data );
107
 
108
+ $this->request = new Wbcr_Factory422_Request();
109
+ //$this->route = new Wbcr_Factory422_Route();
110
 
111
  // INIT PLUGIN FRAMEWORK MODULES
112
  // Framework modules should always be loaded first,
129
 
130
  // init actions
131
  $this->register_plugin_hooks();
 
132
 
133
+ // INIT PLUGIN COMPONENTS
134
+ $this->init_plugin_components();
135
+ }
136
 
137
  /**
138
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
139
  * скриптов, стилей) фреймворка.
140
  *
141
+ * @param Wbcr_FactoryBootstrap423_Manager $bootstrap
142
  */
143
+ public function setBootstap( Wbcr_FactoryBootstrap423_Manager $bootstrap ) {
144
  $this->bootstrap = $bootstrap;
145
  }
146
 
147
  /**
148
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
149
  *
150
+ * @param Wbcr_FactoryForms420_Manager $forms
151
  */
152
+ public function setForms( Wbcr_FactoryForms420_Manager $forms ) {
153
  $this->forms = $forms;
154
  }
155
 
177
  * @param string $class_name Имя класса провайдера
178
  */
179
  public function set_license_provider( $name, $class_name ) {
180
+ if ( ! isset( WBCR\Factory_422\Premium\Manager::$providers[ $name ] ) ) {
181
+ WBCR\Factory_422\Premium\Manager::$providers[ $name ] = $class_name;
182
  }
183
  }
184
 
194
  * @param string $class_name Имя класса репозитория
195
  */
196
  public function set_update_repository( $name, $class_name ) {
197
+ if ( ! isset( WBCR\Factory_422\Updates\Upgrader::$repositories[ $name ] ) ) {
198
+ WBCR\Factory_422\Updates\Upgrader::$repositories[ $name ] = $class_name;
199
  }
200
  }
201
 
207
  *
208
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
209
  * @since 1.1
210
+ * @return \WBCR\Factory_Adverts_104\Base
211
  */
212
  public function get_adverts_manager() {
213
  return $this->adverts;
236
  }
237
  }
238
 
239
+ public function newScriptList() {
240
+ return new Wbcr_Factory422_ScriptList( $this );
241
+ }
242
+
243
+ public function newStyleList() {
244
+ return new Wbcr_Factory422_StyleList( $this );
245
+ }
246
+
247
  /**
248
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
249
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
250
+ * Wbcr_FactoryPages422_AdminPage, а затем регистрирует его через этот метод.
251
  * Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
252
  * pages.
253
  *
257
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
258
  *
259
  * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
260
+ * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages422_AdminPage.
261
  * @param string $file_path Абсолютный путь к файлу с классом страницы.
262
  *
263
  * @throws Exception
278
  throw new Exception( 'A class with this name {' . $class_name . '} does not exist.' );
279
  }
280
 
281
+ if ( ! class_exists( 'Wbcr_FactoryPages422' ) ) {
282
+ throw new Exception( 'The factory_pages_422 module is not included.' );
283
  }
284
 
285
+ Wbcr_FactoryPages422::register( $this, $class_name );
286
  }
287
 
288
  /**
329
  /**
330
  * @since 4.1.1 - change hook name
331
  */
332
+ if ( apply_filters( "wbcr/factory_422/cancel_plugin_activation_{$this->plugin_name}", false ) ) {
333
  return;
334
  }
335
 
336
  /**
337
+ * wbcr_factory_422_plugin_activation
338
  *
339
  * @since 4.1.1 - deprecated
340
  */
341
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_activation', [
342
  $this
343
  ], '4.1.1', "wbcr/factory/plugin_activation" );
344
 
347
  *
348
  * @since 4.1.2 - deprecated
349
  */
350
+ wbcr_factory_422_do_action_deprecated( 'wbcr/factory/plugin_activation', [
351
  $this
352
  ], '4.1.2', "wbcr/factory/before_plugin_activation" );
353
 
363
  *
364
  * @since 4.1.2 - deprecated
365
  */
366
+ wbcr_factory_422_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_activation", [
367
  $this
368
  ], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
369
 
370
  /**
371
+ * wbcr_factory_422_plugin_activation_' . $this->plugin_name
372
  *
373
  * @since 4.1.1 - deprecated
374
  */
375
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_activation_' . $this->plugin_name, [
376
  $this
377
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
378
 
412
  /**
413
  * @since 4.1.1 - change hook name
414
  */
415
+ if ( apply_filters( "wbcr/factory_422/cancel_plugin_deactivation_{$this->plugin_name}", false ) ) {
416
  return;
417
  }
418
 
419
  /**
420
+ * wbcr_factory_422_plugin_deactivation
421
  *
422
  * @since 4.1.1 - deprecated
423
  */
424
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_deactivation', [
425
  $this
426
  ], '4.1.1', "wbcr/factory/plugin_deactivation" );
427
 
430
  *
431
  * @since 4.1.2 - deprecated
432
  */
433
+ wbcr_factory_422_do_action_deprecated( 'wbcr/factory/plugin_deactivation', [
434
  $this
435
  ], '4.1.2', "wbcr/factory/before_plugin_deactivation" );
436
 
442
  do_action( 'wbcr/factory/plugin_deactivation', $this );
443
 
444
  /**
445
+ * wbcr_factory_422_plugin_deactivation_ . $this->plugin_name
446
  *
447
  * @since 4.1.1 - deprecated
448
  */
449
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_deactivation_' . $this->plugin_name, [
450
  $this
451
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
452
 
455
  *
456
  * @since 4.1.2 - deprecated
457
  */
458
+ wbcr_factory_422_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_deactivation", [
459
  $this
460
  ], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
461
 
492
  * @throws Exception
493
  */
494
  public function getPluginPageUrl( $page_id, $args = [] ) {
495
+ if ( ! class_exists( 'Wbcr_FactoryPages422' ) ) {
496
+ throw new Exception( 'The factory_pages_422 module is not included.' );
497
  }
498
 
499
  if ( ! is_admin() ) {
502
  return null;
503
  }
504
 
505
+ return Wbcr_FactoryPages422::getPageUrl( $this, $page_id, $args );
506
  }
507
 
 
508
  /**
509
  * Загружает аддоны для плагина, как часть проекта, а не как отдельный плагин
510
+ *
511
+ * @throws \Exception
512
  */
513
+ private function init_plugin_components() {
514
+
515
+ $load_plugin_components = $this->get_load_plugin_components();
516
+
517
+ if ( empty( $load_plugin_components ) || ! is_array( $load_plugin_components ) ) {
518
  return;
519
  }
520
 
521
+ foreach ( $load_plugin_components as $component_ID => $component ) {
522
+ if ( ! isset( $this->loaded_plugin_components[ $component_ID ] ) ) {
 
 
 
 
523
 
524
+ if ( ! isset( $component['autoload'] ) || ! isset( $component['plugin_prefix'] ) ) {
525
+ throw new Exception( sprintf( "Component %s cannot be loaded, you must specify the path to the component autoload file and plugin prefix!", $component_ID ) );
526
  }
527
 
528
+ $prefix = rtrim( $component['plugin_prefix'], '_' ) . '_';
529
 
530
+ if ( defined( $prefix . 'PLUGIN_ACTIVE' ) ) {
531
+ continue;
532
+ }
533
 
534
+ $autoload_file = trailingslashit( $this->get_paths()->absolute ) . $component['autoload'];
 
535
 
536
+ if ( ! file_exists( $autoload_file ) ) {
537
+ throw new Exception( sprintf( "Component %s autoload file not found!", $component_ID ) );
538
+ }
539
 
540
+ require_once( $autoload_file );
541
+
542
+ if ( defined( $prefix . 'PLUGIN_ACTIVE' ) && class_exists( $prefix . 'Plugin' ) ) {
543
+ $this->loaded_plugin_components[ $component_ID ] = [
544
+ 'plugin_dir' => constant( $prefix . 'PLUGIN_DIR' ),
545
+ 'plugin_url' => constant( $prefix . 'PLUGIN_URL' ),
546
+ 'plugin_base' => constant( $prefix . 'PLUGIN_BASE' ),
547
+ 'plugin_version' => constant( $prefix . 'PLUGIN_VERSION' )
548
+ ];
549
+
550
+ /**
551
+ * Оповещает внешние приложения, что компонент плагина был загружен
552
+ *
553
+ * @param array $load_plugin_components Информация о загруженном компоненте
554
+ * @param string $plugin_name Имя плагина
555
+ */
556
+ do_action( "wbcr/factory/component_{$component_ID}_loaded", $this->loaded_plugin_components[ $component_ID ], $this->getPluginName() );
557
+ } else {
558
+ throw new Exception( sprintf( "Сomponent %s does not meet development standards!", $component_ID ) );
559
  }
560
  }
561
  }
596
  /**
597
  * @since 4.1.1 - deprecated
598
  */
599
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_422/modules_loaded-" . $this->plugin_name );
600
 
601
  /**
602
  * @since 4.1.1 - add
603
  */
604
+ do_action( 'wbcr/factory_422/modules_loaded-' . $this->plugin_name );
605
  }
606
 
607
 
615
  add_action( 'plugins_loaded', [ $this, 'set_text_domain' ] );
616
 
617
  if ( is_admin() ) {
618
+ add_filter( 'wbcr_factory_422_core_admin_allow_multisite', '__return_true' );
619
 
620
  register_activation_hook( $this->get_paths()->main_file, [ $this, 'activation_hook' ] );
621
  register_deactivation_hook( $this->get_paths()->main_file, [ $this, 'deactivation_hook' ] );
630
  * @throws Exception
631
  */
632
  protected function init_plugin_migrations() {
633
+ new WBCR\Factory_422\Migrations( $this );
634
  }
635
 
636
  /**
640
  * @return void
641
  */
642
  protected function init_plugin_notices() {
643
+ new Wbcr\Factory_422\Notices( $this );
644
  }
645
 
646
  /**
655
  */
656
  protected function init_plugin_updates() {
657
  if ( $this->has_updates ) {
658
+ new WBCR\Factory_422\Updates\Upgrader( $this );
659
  }
660
  }
661
 
677
  }
678
 
679
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
680
+ $this->premium = WBCR\Factory_422\Premium\Manager::instance( $this, $this->license_settings );
681
 
682
  // Подключаем премиум апгрейдер
683
  if ( isset( $this->license_settings['has_updates'] ) && $this->license_settings['has_updates'] ) {
684
+ new WBCR\Factory_422\Updates\Premium_Upgrader( $this );
685
  }
686
  }
 
 
 
 
 
 
 
 
 
 
 
 
687
  }
688
 
libs/factory/core/includes/class-factory-plugin-base.php CHANGED
@@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
5
  }
6
 
7
  /**
8
- * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory420_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_Factory420_Base {
21
 
22
- use WBCR\Factory_420\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
@@ -81,7 +81,7 @@ class Wbcr_Factory420_Base {
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
- * экземпляр класса \WBCR\Factory_420\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
@@ -127,7 +127,7 @@ class Wbcr_Factory420_Base {
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
- * WBCR\Factory_420\Premium\Provider > WBCR\Factory_Freemius_108\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
@@ -162,8 +162,9 @@ class Wbcr_Factory420_Base {
162
  protected $adverts_settings = [];
163
 
164
  /**
165
- * Обязательное свойство. Подключаемые модули фреймворка. Модули фреймворка позволяют расширять его
166
- * функциональность.
 
167
  *
168
  * @var array {
169
  * Array with information about the loadable module
@@ -176,27 +177,52 @@ class Wbcr_Factory420_Base {
176
  * }
177
  */
178
  protected $load_factory_modules = [
179
- [ 'libs/factory/bootstrap', 'factory_bootstrap_421', 'admin' ],
180
- [ 'libs/factory/forms', 'factory_forms_418', 'admin' ],
181
- [ 'libs/factory/pages', 'factory_pages_420', 'admin' ],
182
  ];
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
  /**
186
- * Экземпляр класса \WBCR\Factory_420\Entities\Support используется для получения информации
187
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
188
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
189
  *
190
- * @var \WBCR\Factory_420\Entities\Support
191
  */
192
  protected $support;
193
 
194
  /**
195
- * Экземпляр класса \WBCR\Factory_420\Entities\Paths используется для получения информации о
196
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
197
  * или его входного файла.
198
  *
199
- * @var \WBCR\Factory_420\Entities\Paths
200
  */
201
  protected $paths;
202
 
@@ -244,8 +270,8 @@ class Wbcr_Factory420_Base {
244
  throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
245
  }
246
 
247
- $this->support = new \WBCR\Factory_420\Entities\Support( $this->support_details );
248
- $this->paths = new \WBCR\Factory_420\Entities\Paths( $plugin_file );
249
 
250
  // used only in the module 'updates'
251
  $this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
@@ -365,7 +391,7 @@ class Wbcr_Factory420_Base {
365
  * Проверяет, включен ли премиум для этого плагина или нет.
366
  *
367
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
368
- * См. Wbcr_Factory420_Base::has_premium
369
  */
370
  public function has_premium() {
371
  return $this->has_premium;
@@ -374,7 +400,7 @@ class Wbcr_Factory420_Base {
374
  /**
375
  * Позволяет получить заголовок плагина.
376
  *
377
- * @return string Возвращает заголовок плагина. См. Wbcr_Factory420_Base::plugin_title
378
  */
379
  public function getPluginTitle() {
380
  return $this->plugin_title;
@@ -383,7 +409,7 @@ class Wbcr_Factory420_Base {
383
  /**
384
  * Позволяет получить префикс плагина.
385
  *
386
- * @return string Возвращает префикс плагина.См. Wbcr_Factory420_Base::prefix
387
  */
388
  public function getPrefix() {
389
  return $this->prefix;
@@ -392,7 +418,7 @@ class Wbcr_Factory420_Base {
392
  /**
393
  * Позволяет получить имя плагина.
394
  *
395
- * @return string Возвращает имя плагина. См. Wbcr_Factory420_Base::plugin_name
396
  */
397
  public function getPluginName() {
398
  return $this->plugin_name;
@@ -401,18 +427,29 @@ class Wbcr_Factory420_Base {
401
  /**
402
  * Позволяет получить версию плагина.
403
  *
404
- * @return string Возвращает версию плагина. См. Wbcr_Factory420_Base::plugin_version
405
  */
406
  public function getPluginVersion() {
407
  return $this->plugin_version;
408
  }
409
 
 
 
 
 
 
 
 
 
 
 
 
410
  /**
411
  * Предоставляет доступ к сырым данным плагина. Может быть полезен, если вы хотите получить
412
  * какие-то данные не описанные в интерфейсе этого плагина.
413
  *
414
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
415
- * Wbcr_Factory420_Base::plugin_data
416
  *
417
  * @return null
418
  */
@@ -425,18 +462,18 @@ class Wbcr_Factory420_Base {
425
  }
426
 
427
  /**
428
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_420\Entities\Support.
429
  *
430
- * @return \WBCR\Factory_420\Entities\Support
431
  */
432
  public function get_support() {
433
  return $this->support;
434
  }
435
 
436
  /**
437
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_420\Entities\Paths.
438
  *
439
- * @return \WBCR\Factory_420\Entities\Paths
440
  */
441
  public function get_paths() {
442
  return $this->paths;
@@ -445,14 +482,33 @@ class Wbcr_Factory420_Base {
445
  /**
446
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
447
  *
448
- * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory420_Base::plugin_data
449
  */
450
  public function getPluginInfo() {
451
  return (object) $this->plugin_data;
452
  }
453
 
454
  /**
455
- * TODO: Вынести метод в функции
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
456
  *
457
  * @since 4.0.8 Добавлен
458
  *
@@ -464,7 +520,6 @@ class Wbcr_Factory420_Base {
464
 
465
  /**
466
  * Проверяет активирован ли плагин для сети. Если проект работает в режиме мультисайтов..
467
- * TODO: Вынести метод в функции
468
  *
469
  * @since 4.0.8 Добавлен
470
  * @return bool Если true, плагин активирован для сети или в текущий момент активируется для сети.
@@ -486,7 +541,6 @@ class Wbcr_Factory420_Base {
486
 
487
  /**
488
  * Позволяет получить все активные сайты сети. Если проект работает в режиме мультисайтов.
489
- * TODO: Вынести метод в функции
490
  *
491
  * @since 4.0.8
492
  * @return array|int
5
  }
6
 
7
  /**
8
+ * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory422_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_Factory422_Base {
21
 
22
+ use WBCR\Factory_422\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
+ * экземпляр класса \WBCR\Factory_422\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
+ * WBCR\Factory_422\Premium\Provider > WBCR\Factory_Freemius_110\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
162
  protected $adverts_settings = [];
163
 
164
  /**
165
+ * Обязательное свойство. Подключаемые модули фреймворка.
166
+ *
167
+ * Модули фреймворка позволяют расширять его функциональность.
168
  *
169
  * @var array {
170
  * Array with information about the loadable module
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
+ [ 'libs/factory/bootstrap', 'factory_bootstrap_423', 'admin' ],
181
+ [ 'libs/factory/forms', 'factory_forms_420', 'admin' ],
182
+ [ 'libs/factory/pages', 'factory_pages_422', 'admin' ],
183
  ];
184
 
185
+ /**
186
+ * Не обязательное свойство. Список подключаемых компонентов плагина.
187
+ *
188
+ * Компоненты плагина, это независимые плагины, которые расширяют возможности текущего плагина.
189
+ * Вы должны указать файл для автозагрузки компонента и префикс плагина, чтобы фреймворк
190
+ * мог обращаться к классам и константам компонентов.
191
+ *
192
+ *
193
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
194
+ * @since 4.2.0 Добавлен
195
+ * @var array Пример данных
196
+ * array(
197
+ * 'component_ID' => array(
198
+ * 'autoload' => 'relative_path/autoload_filename.php',
199
+ * 'plugin_prefix' => 'WPRFX_'
200
+ * ),
201
+ * // Реальный пример
202
+ * 'cyrlitera' => array(
203
+ * 'autoload' => 'components/cyrlitera/clearfy.php',
204
+ * 'plugin_prefix' => 'WCTR_'
205
+ * ),
206
+ * )
207
+ */
208
+ protected $load_plugin_components = [];
209
+
210
 
211
  /**
212
+ * Экземпляр класса \WBCR\Factory_422\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
+ * @var \WBCR\Factory_422\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
+ * Экземпляр класса \WBCR\Factory_422\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
+ * @var \WBCR\Factory_422\Entities\Paths
226
  */
227
  protected $paths;
228
 
270
  throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
271
  }
272
 
273
+ $this->support = new \WBCR\Factory_422\Entities\Support( $this->support_details );
274
+ $this->paths = new \WBCR\Factory_422\Entities\Paths( $plugin_file );
275
 
276
  // used only in the module 'updates'
277
  $this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
391
  * Проверяет, включен ли премиум для этого плагина или нет.
392
  *
393
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
394
+ * См. Wbcr_Factory422_Base::has_premium
395
  */
396
  public function has_premium() {
397
  return $this->has_premium;
400
  /**
401
  * Позволяет получить заголовок плагина.
402
  *
403
+ * @return string Возвращает заголовок плагина. См. Wbcr_Factory422_Base::plugin_title
404
  */
405
  public function getPluginTitle() {
406
  return $this->plugin_title;
409
  /**
410
  * Позволяет получить префикс плагина.
411
  *
412
+ * @return string Возвращает префикс плагина.См. Wbcr_Factory422_Base::prefix
413
  */
414
  public function getPrefix() {
415
  return $this->prefix;
418
  /**
419
  * Позволяет получить имя плагина.
420
  *
421
+ * @return string Возвращает имя плагина. См. Wbcr_Factory422_Base::plugin_name
422
  */
423
  public function getPluginName() {
424
  return $this->plugin_name;
427
  /**
428
  * Позволяет получить версию плагина.
429
  *
430
+ * @return string Возвращает версию плагина. См. Wbcr_Factory422_Base::plugin_version
431
  */
432
  public function getPluginVersion() {
433
  return $this->plugin_version;
434
  }
435
 
436
+ /**
437
+ * Позволяет получить список подключаемых к плагином компонентов
438
+ *
439
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
440
+ * @since 4.2.0
441
+ * @return array
442
+ */
443
+ public function get_load_plugin_components() {
444
+ return $this->load_plugin_components;
445
+ }
446
+
447
  /**
448
  * Предоставляет доступ к сырым данным плагина. Может быть полезен, если вы хотите получить
449
  * какие-то данные не описанные в интерфейсе этого плагина.
450
  *
451
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
452
+ * Wbcr_Factory422_Base::plugin_data
453
  *
454
  * @return null
455
  */
462
  }
463
 
464
  /**
465
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_422\Entities\Support.
466
  *
467
+ * @return \WBCR\Factory_422\Entities\Support
468
  */
469
  public function get_support() {
470
  return $this->support;
471
  }
472
 
473
  /**
474
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_422\Entities\Paths.
475
  *
476
+ * @return \WBCR\Factory_422\Entities\Paths
477
  */
478
  public function get_paths() {
479
  return $this->paths;
482
  /**
483
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
484
  *
485
+ * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory422_Base::plugin_data
486
  */
487
  public function getPluginInfo() {
488
  return (object) $this->plugin_data;
489
  }
490
 
491
  /**
492
+ * Проверяет права пользователя
493
+ *
494
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
495
+ * @since 4.2.0 Добавлен
496
+ * @return bool
497
+ */
498
+ public function current_user_can( $capability = 'manage_options' ) {
499
+ // Просмотр страниц: read_pages
500
+ // Просмотр уведомлений: read_notices
501
+ // Редактирование: edit_forms
502
+
503
+ if ( 'manage_options' == $capability && is_multisite() && $this->isNetworkActive() ) {
504
+ $capability = 'manage_network';
505
+ }
506
+
507
+ return current_user_can( $capability );
508
+ }
509
+
510
+ /**
511
+ * Проверят, находится ли пользователь в панели усправления сетью сайтов
512
  *
513
  * @since 4.0.8 Добавлен
514
  *
520
 
521
  /**
522
  * Проверяет активирован ли плагин для сети. Если проект работает в режиме мультисайтов..
 
523
  *
524
  * @since 4.0.8 Добавлен
525
  * @return bool Если true, плагин активирован для сети или в текущий момент активируется для сети.
541
 
542
  /**
543
  * Позволяет получить все активные сайты сети. Если проект работает в режиме мультисайтов.
 
544
  *
545
  * @since 4.0.8
546
  * @return array|int
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_Factory420_Request {
15
 
16
  /**
17
  * @param null $param
11
  * @package factory-core
12
  */
13
 
14
+ class Wbcr_Factory422_Request {
15
 
16
  /**
17
  * @param null $param
libs/factory/core/includes/class-factory-requirements.php CHANGED
@@ -11,9 +11,9 @@
11
  * @version 2.0.0
12
  * @since 4.0.9
13
  */
14
-
15
- if ( ! class_exists( 'Wbcr_Factory420_Requirements' ) ) {
16
- class Wbcr_Factory420_Requirements {
17
 
18
  /**
19
  * Factory framework version
@@ -121,11 +121,11 @@ if ( ! class_exists( 'Wbcr_Factory420_Requirements' ) ) {
121
  $this->plugin_basename = plugin_basename( $plugin_file );
122
  $this->plugin_url = plugins_url( null, $plugin_file );
123
 
124
- $plugin_info = get_file_data( $this->plugin_file, [
125
  'Version' => 'Version',
126
  'FrameworkVersion' => 'Framework Version',
127
  'TextDomain' => 'Text Domain'
128
- ], 'plugin' );
129
 
130
  if ( isset( $plugin_info['FrameworkVersion'] ) ) {
131
  $this->factory_version = $plugin_info['FrameworkVersion'];
@@ -139,7 +139,7 @@ if ( ! class_exists( 'Wbcr_Factory420_Requirements' ) ) {
139
  $this->plugin_text_domain = $plugin_info['TextDomain'];
140
  }
141
 
142
- add_action( 'admin_init', [ $this, 'register_notices' ] );
143
  }
144
 
145
  public function get_plugin_version() {
@@ -158,13 +158,13 @@ if ( ! class_exists( 'Wbcr_Factory420_Requirements' ) ) {
158
  if ( current_user_can( 'activate_plugins' ) && current_user_can( 'edit_plugins' ) && current_user_can( 'install_plugins' ) ) {
159
 
160
  if ( is_multisite() ) {
161
- add_action( 'network_admin_notices', [ $this, 'show_notice' ] );
162
 
163
- if ( ! empty( $this->plugin_basename ) && in_array( $this->plugin_basename, (array) get_option( 'active_plugins', [] ) ) ) {
164
- add_action( 'admin_notices', [ $this, 'show_notice' ] );
165
  }
166
  } else {
167
- add_action( 'admin_notices', [ $this, 'show_notice' ] );
168
  }
169
  }
170
  }
@@ -273,21 +273,22 @@ if ( ! class_exists( 'Wbcr_Factory420_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_420' ), $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_420' ), $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_420' ), $this->plugin_title );
291
  }
292
  }
293
- }
 
11
  * @version 2.0.0
12
  * @since 4.0.9
13
  */
14
+ // @formatter:off
15
+ if ( ! class_exists( 'Wbcr_Factory422_Requirements' ) ) {
16
+ class Wbcr_Factory422_Requirements {
17
 
18
  /**
19
  * Factory framework version
121
  $this->plugin_basename = plugin_basename( $plugin_file );
122
  $this->plugin_url = plugins_url( null, $plugin_file );
123
 
124
+ $plugin_info = get_file_data( $this->plugin_file, array(
125
  'Version' => 'Version',
126
  'FrameworkVersion' => 'Framework Version',
127
  'TextDomain' => 'Text Domain'
128
+ ), 'plugin' );
129
 
130
  if ( isset( $plugin_info['FrameworkVersion'] ) ) {
131
  $this->factory_version = $plugin_info['FrameworkVersion'];
139
  $this->plugin_text_domain = $plugin_info['TextDomain'];
140
  }
141
 
142
+ add_action( 'admin_init', array( $this, 'register_notices' ) );
143
  }
144
 
145
  public function get_plugin_version() {
158
  if ( current_user_can( 'activate_plugins' ) && current_user_can( 'edit_plugins' ) && current_user_can( 'install_plugins' ) ) {
159
 
160
  if ( is_multisite() ) {
161
+ add_action( 'network_admin_notices', array( $this, 'show_notice' ) );
162
 
163
+ if ( ! empty( $this->plugin_basename ) && in_array( $this->plugin_basename, (array) get_option( 'active_plugins', array() ) ) ) {
164
+ add_action( 'admin_notices', array( $this, 'show_notice' ) );
165
  }
166
  } else {
167
+ add_action( 'admin_notices', array( $this, 'show_notice' ) );
168
  }
169
  }
170
  }
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_422' ), $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_422' ), $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_422' ), $this->plugin_title );
291
  }
292
  }
293
+ }
294
+ // @formatter:on
libs/factory/core/includes/entities/class-factory-paths.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_420\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\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_420\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\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_420_deprecated_hook()
57
  *
58
  */
59
- function wbcr_factory_420_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_420_deprecated_hook( $tag, $version, $replacement, $message );
67
 
68
  return apply_filters_ref_array( $tag, $args );
69
  }
@@ -89,7 +89,7 @@ function wbcr_factory_420_apply_filters_deprecated( $tag, $args, $version, $repl
89
  * @see _deprecated_hook()
90
  *
91
  */
92
- function wbcr_factory_420_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_420_do_action_deprecated( $tag, $args, $version, $replacem
98
  if ( ! has_action( $tag ) ) {
99
  return;
100
  }
101
- wbcr_factory_420_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_420_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_420_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_420_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_422_deprecated_hook()
57
  *
58
  */
59
+ function wbcr_factory_422_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_422_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_422_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_422_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_422_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_422_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_420\Premium\Interfaces;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\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_420\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory420_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_Factory420_Plugin
28
  */
29
  protected $plugin;
30
 
@@ -36,24 +36,24 @@ class Manager {
36
  /**
37
  * Manager constructor.
38
  *
39
- * @param Wbcr_Factory420_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
- public function __construct( Wbcr_Factory420_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
- * @param Wbcr_Factory420_Plugin $plugin
51
  * @param array $settings
52
  *
53
- * @return \WBCR\Factory_Freemius_108\Premium\Provider
54
  * @throws Exception
55
  */
56
- public static function instance( Wbcr_Factory420_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_108\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_420\Premium\Provider interface!" );
74
  }
75
 
76
  return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory422_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
24
  public static $providers;
25
 
26
  /**
27
+ * @var Wbcr_Factory422_Plugin
28
  */
29
  protected $plugin;
30
 
36
  /**
37
  * Manager constructor.
38
  *
39
+ * @param Wbcr_Factory422_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
+ public function __construct( Wbcr_Factory422_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
+ * @param Wbcr_Factory422_Plugin $plugin
51
  * @param array $settings
52
  *
53
+ * @return \WBCR\Factory_Freemius_110\Premium\Provider
54
  * @throws Exception
55
  */
56
+ public static function instance( Wbcr_Factory422_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_110\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_422\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_420\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory420_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_Factory420_Plugin
25
  */
26
  protected $plugin;
27
 
@@ -38,16 +38,14 @@ abstract class Provider {
38
  /**
39
  * Provider constructor.
40
  *
41
- * @param Wbcr_Factory420_Plugin $plugin
42
  * @param array $settings
43
  */
44
- public function __construct( Wbcr_Factory420_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
 
48
- add_action( 'wbcr/factory/license_activate', [ $this, 'register_cron_hooks' ], 10, 2 );
49
- add_action( 'wbcr/factory/license_deactivate', [ $this, 'register_cron_hooks' ], 10, 2 );
50
- add_action( "{$this->plugin->getPluginName()}_license_autosync", [ $this, 'license_cron_sync' ] );
51
  }
52
 
53
  /**
@@ -74,38 +72,6 @@ abstract class Provider {
74
  return $this->get_setting( 'price' );
75
  }
76
 
77
- /**
78
- * todo: Вынести с лицензионный менеджер
79
- *
80
- * @param array $license_info
81
- * @param string $plugin_name
82
- */
83
- public function register_cron_hooks( $license_info, $plugin_name ) {
84
- if ( $this->plugin->getPluginName() == $plugin_name ) {
85
- if ( ! wp_next_scheduled( "{$plugin_name}_license_autosync" ) ) {
86
- wp_schedule_event( time(), 'twicedaily', "{$plugin_name}_license_autosync" );
87
- }
88
- }
89
- }
90
-
91
- /**
92
- * todo: вынести в лицензионный менеджер
93
- *
94
- * @param array $license_info
95
- * @param string $plugin_name
96
- */
97
- public function clear_cron_hooks( $license_info, $plugin_name ) {
98
- if ( $this->plugin->getPluginName() == $plugin_name ) {
99
- if ( wp_next_scheduled( "{$plugin_name}_license_autosync" ) ) {
100
- wp_clear_scheduled_hook( "{$plugin_name}_license_autosync" );
101
- }
102
- }
103
- }
104
-
105
- public function license_cron_sync() {
106
- $this->sync();
107
- }
108
-
109
  /**
110
  * @return bool
111
  */
@@ -175,6 +141,39 @@ abstract class Provider {
175
  $this->is_install_package = false;
176
  }
177
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  /**
179
  * @return bool
180
  */
@@ -196,7 +195,7 @@ abstract class Provider {
196
  abstract public function get_billing_cycle();
197
 
198
  /**
199
- * @return \WBCR\Factory_420\Premium\Interfaces\License
200
  */
201
  abstract public function get_license();
202
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory422_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
21
  abstract class Provider {
22
 
23
  /**
24
+ * @var Wbcr_Factory422_Plugin
25
  */
26
  protected $plugin;
27
 
38
  /**
39
  * Provider constructor.
40
  *
41
+ * @param Wbcr_Factory422_Plugin $plugin
42
  * @param array $settings
43
  */
44
+ public function __construct( Wbcr_Factory422_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
 
48
+ $this->register_hooks();
 
 
49
  }
50
 
51
  /**
72
  return $this->get_setting( 'price' );
73
  }
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  /**
76
  * @return bool
77
  */
141
  $this->is_install_package = false;
142
  }
143
 
144
+ protected function register_hooks() {
145
+ /**
146
+ * Добавляет крон задачу на синхронизацию лицензии
147
+ *
148
+ * @param array $license_info
149
+ * @param string $provider
150
+ */
151
+ add_action( "{$this->plugin->getPluginName()}/factory/premium/license_activate", function ( $provider, $license_info ) {
152
+ if ( ! wp_next_scheduled( "{$this->plugin->getPluginName()}_license_autosync" ) ) {
153
+ wp_schedule_event( time(), 'twicedaily', "{$this->plugin->getPluginName()}_license_autosync" );
154
+ }
155
+ }, 10, 2 );
156
+
157
+ /**
158
+ * Удаляет крон задачу на синхронизацию лицензии, когда лицензия деактивирована
159
+ *
160
+ * @param array $license_info
161
+ * @param string $provider
162
+ */
163
+ add_action( "{$this->plugin->getPluginName()}/factory/premium/license_deactivate", function ( $provider, $license_info ) {
164
+ if ( wp_next_scheduled( "{$this->plugin->getPluginName()}_license_autosync" ) ) {
165
+ wp_clear_scheduled_hook( "{$this->plugin->getPluginName()}_license_autosync" );
166
+ }
167
+ }, 10, 2 );
168
+
169
+ /**
170
+ * Обработчик крон задачи на синхронизацию лицензии, выполняется 2 раза в день.
171
+ */
172
+ add_action( "{$this->plugin->getPluginName()}_license_autosync", function () {
173
+ $this->sync();
174
+ } );
175
+ }
176
+
177
  /**
178
  * @return bool
179
  */
195
  abstract public function get_billing_cycle();
196
 
197
  /**
198
+ * @return \WBCR\Factory_422\Premium\Interfaces\License
199
  */
200
  abstract public function get_license();
201
 
libs/factory/core/includes/updates/class-factory-premium-upgrader.php CHANGED
@@ -1,12 +1,12 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_420\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
- use Wbcr_Factory420_Plugin;
9
- use Wbcr_FactoryPages420_ImpressiveThemplate;
10
  use WP_Filesystem_Base;
11
  use WP_Upgrader;
12
  use WP_Upgrader_Skin;
@@ -39,11 +39,11 @@ class Premium_Upgrader extends Upgrader {
39
  * @param $args
40
  * @param bool $is_premium
41
  *
42
- * @param Wbcr_Factory420_Plugin $plugin
43
  *
44
  * @throws Exception
45
  */
46
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
47
  parent::__construct( $plugin );
48
 
49
  $this->plugin_basename = null;
@@ -102,7 +102,7 @@ class Premium_Upgrader extends Upgrader {
102
  }
103
 
104
  add_action( "admin_print_styles-plugins.php", [ $this, "print_styles_for_plugin_row" ] );
105
- add_action( "wbcr_factory_notices_000_list", [ $this, "admin_notices_hook" ], 10, 2 );
106
  add_action( 'wbcr/factory/pages/impressive/print_all_notices', [
107
  $this,
108
  'install_notice_in_plugin_interface'
@@ -116,11 +116,14 @@ class Premium_Upgrader extends Upgrader {
116
  }
117
 
118
  /**
 
119
  * @since 4.1.1
120
  */
121
  public function init_admin_actions() {
122
- if ( isset( $_GET['wbcr_factory_premium_updates_action'] ) ) {
123
- $action = $this->plugin->request->get( 'wbcr_factory_premium_updates_action' );
 
 
124
 
125
  check_admin_referer( "factory_premium_{$action}" );
126
  try {
@@ -225,9 +228,9 @@ class Premium_Upgrader extends Upgrader {
225
  *
226
  * @since 4.1.1
227
  *
228
- * @param Wbcr_FactoryPages420_ImpressiveThemplate $obj
229
  *
230
- * @param Wbcr_Factory420_Plugin $plugin
231
  *
232
  * @return void
233
  */
@@ -424,7 +427,10 @@ class Premium_Upgrader extends Upgrader {
424
  * @return string
425
  */
426
  protected function get_action_url( $action ) {
427
- $args = [ 'wbcr_factory_premium_updates_action' => $action ];
 
 
 
428
 
429
  return wp_nonce_url( $this->get_admin_url( $args ), "factory_premium_{$action}" );
430
  }
@@ -752,12 +758,12 @@ class Premium_Upgrader extends Upgrader {
752
  $cancel_license_url = $this->get_action_url( 'cancel_license' );
753
 
754
  $texts = [
755
- 'need_activate_license' => __( 'License activation required. A license is required to get premium plugin updates, as well as to get additional services.', 'wbcr_factory_420' ),
756
- '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_420' ),
757
  'please_install_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
758
- <a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_420' ), $upgrade_url, $cancel_license_url ),
759
  'please_activate_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
760
- <a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_420' ), $activate_plugin_url, $cancel_license_url )
761
  ];
762
 
763
  if ( isset( $texts[ $type ] ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
+ use Wbcr_Factory422_Plugin;
9
+ use Wbcr_FactoryPages422_ImpressiveThemplate;
10
  use WP_Filesystem_Base;
11
  use WP_Upgrader;
12
  use WP_Upgrader_Skin;
39
  * @param $args
40
  * @param bool $is_premium
41
  *
42
+ * @param Wbcr_Factory422_Plugin $plugin
43
  *
44
  * @throws Exception
45
  */
46
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
47
  parent::__construct( $plugin );
48
 
49
  $this->plugin_basename = null;
102
  }
103
 
104
  add_action( "admin_print_styles-plugins.php", [ $this, "print_styles_for_plugin_row" ] );
105
+ add_action( "wbcr/factory/admin_notices", [ $this, "admin_notices_hook" ], 10, 2 );
106
  add_action( 'wbcr/factory/pages/impressive/print_all_notices', [
107
  $this,
108
  'install_notice_in_plugin_interface'
116
  }
117
 
118
  /**
119
+ * @since 4.2.2 Fixed bug with plugins namespace (ISW-4)
120
  * @since 4.1.1
121
  */
122
  public function init_admin_actions() {
123
+ $plugin_slug = $this->plugin->request->get( 'wfactory_premium_updates_plugin', null );
124
+
125
+ if ( isset( $_GET['wfactory_premium_updates_action'] ) && $this->plugin_slug === $plugin_slug ) {
126
+ $action = $this->plugin->request->get( 'wfactory_premium_updates_action' );
127
 
128
  check_admin_referer( "factory_premium_{$action}" );
129
  try {
228
  *
229
  * @since 4.1.1
230
  *
231
+ * @param Wbcr_FactoryPages422_ImpressiveThemplate $obj
232
  *
233
+ * @param Wbcr_Factory422_Plugin $plugin
234
  *
235
  * @return void
236
  */
427
  * @return string
428
  */
429
  protected function get_action_url( $action ) {
430
+ $args = [
431
+ 'wfactory_premium_updates_action' => $action,
432
+ 'wfactory_premium_updates_plugin' => $this->plugin_slug
433
+ ];
434
 
435
  return wp_nonce_url( $this->get_admin_url( $args ), "factory_premium_{$action}" );
436
  }
758
  $cancel_license_url = $this->get_action_url( 'cancel_license' );
759
 
760
  $texts = [
761
+ 'need_activate_license' => __( 'License activation required. A license is required to get premium plugin updates, as well as to get additional services.', 'wbcr_factory_422' ),
762
+ '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_422' ),
763
  'please_install_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
764
+ <a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_422' ), $upgrade_url, $cancel_license_url ),
765
  'please_activate_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
766
+ <a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_422' ), $activate_plugin_url, $cancel_license_url )
767
  ];
768
 
769
  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_420\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
- use Wbcr_Factory420_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_108\Updates\Freemius_Repository',
32
- * 'freemius' => '\WBCR\Factory_420\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
@@ -42,7 +42,7 @@ class Upgrader {
42
  protected $type = 'default';
43
 
44
  /**
45
- * @var Wbcr_Factory420_Plugin
46
  */
47
  protected $plugin;
48
 
@@ -90,13 +90,13 @@ class Upgrader {
90
  *
91
  * @since 4.1.1
92
  *
93
- * @param Wbcr_Factory420_Plugin $plugin
94
  * @param $args
95
  * @param bool $is_premium
96
  *
97
  * @throws Exception
98
  */
99
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
100
 
101
  $this->plugin = $plugin;
102
 
@@ -106,7 +106,7 @@ class Upgrader {
106
  $this->is_debug = defined( 'FACTORY_UPDATES_DEBUG' ) && FACTORY_UPDATES_DEBUG;
107
 
108
  # Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
109
- self::$repositories['wordpress'] = '\WBCR\Factory_420\Updates\Wordpress_Repository';
110
 
111
  $settings = $this->get_settings();
112
 
@@ -287,7 +287,7 @@ class Upgrader {
287
 
288
  if ( isset( self::$repositories[ $repository_name ] ) && class_exists( self::$repositories[ $repository_name ] ) ) {
289
  if ( self::$repositories[ $repository_name ] instanceof Repository ) {
290
- throw new Exception( "Repository {$repository_name} must extend the class WBCR\Factory_420\Updates\Repository interface!" );
291
  }
292
 
293
  return new self::$repositories[ $repository_name ]( $this->plugin );
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
+ use Wbcr_Factory422_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_110\Updates\Freemius_Repository',
32
+ * 'freemius' => '\WBCR\Factory_422\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
42
  protected $type = 'default';
43
 
44
  /**
45
+ * @var Wbcr_Factory422_Plugin
46
  */
47
  protected $plugin;
48
 
90
  *
91
  * @since 4.1.1
92
  *
93
+ * @param Wbcr_Factory422_Plugin $plugin
94
  * @param $args
95
  * @param bool $is_premium
96
  *
97
  * @throws Exception
98
  */
99
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
100
 
101
  $this->plugin = $plugin;
102
 
106
  $this->is_debug = defined( 'FACTORY_UPDATES_DEBUG' ) && FACTORY_UPDATES_DEBUG;
107
 
108
  # Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
109
+ self::$repositories['wordpress'] = '\WBCR\Factory_422\Updates\Wordpress_Repository';
110
 
111
  $settings = $this->get_settings();
112
 
287
 
288
  if ( isset( self::$repositories[ $repository_name ] ) && class_exists( self::$repositories[ $repository_name ] ) ) {
289
  if ( self::$repositories[ $repository_name ] instanceof Repository ) {
290
+ throw new Exception( "Repository {$repository_name} must extend the class WBCR\Factory_422\Updates\Repository interface!" );
291
  }
292
 
293
  return new self::$repositories[ $repository_name ]( $this->plugin );
libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_420\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory420_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -23,17 +23,17 @@ abstract class Repository {
23
  protected $initialized = false;
24
 
25
  /**
26
- * @var Wbcr_Factory420_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
- * @param Wbcr_Factory420_Plugin $plugin
34
  * @param bool $is_premium
35
  */
36
- abstract public function __construct( Wbcr_Factory420_Plugin $plugin );
37
 
38
  /**
39
  * @return void
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory422_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
23
  protected $initialized = false;
24
 
25
  /**
26
+ * @var Wbcr_Factory422_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
+ * @param Wbcr_Factory422_Plugin $plugin
34
  * @param bool $is_premium
35
  */
36
+ abstract public function __construct( Wbcr_Factory422_Plugin $plugin );
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_420\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory420_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_Factory420_Plugin $plugin
24
  * @param bool $is_premium
25
  */
26
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
27
  $this->plugin = $plugin;
28
  }
29
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_422\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory422_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
20
  /**
21
  * Wordpress constructor.
22
  *
23
+ * @param Wbcr_Factory422_Plugin $plugin
24
  * @param bool $is_premium
25
  */
26
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
27
  $this->plugin = $plugin;
28
  }
29
 
libs/factory/core/langs/{wbcr_factory_420-ru_RU.mo → wbcr_factory_422-ru_RU.mo} RENAMED
File without changes
libs/factory/core/langs/{wbcr_factory_420-ru_RU.po → wbcr_factory_422-ru_RU.po} RENAMED
File without changes
libs/factory/forms/boot.php CHANGED
@@ -22,174 +22,174 @@ 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_418_LOADED' ) ) {
26
  return;
27
  }
28
 
29
- define( 'FACTORY_FORMS_418_LOADED', true );
30
 
31
- define( 'FACTORY_FORMS_418_VERSION', '4.1.8' );
32
 
33
  // absolute path and URL to the files and resources of the module.
34
- define( 'FACTORY_FORMS_418_DIR', dirname( __FILE__ ) );
35
- define( 'FACTORY_FORMS_418_URL', plugins_url( null, __FILE__ ) );
36
 
37
  #comp merge
38
- require_once( FACTORY_FORMS_418_DIR . '/includes/providers/value-provider.interface.php' );
39
- require_once( FACTORY_FORMS_418_DIR . '/includes/providers/meta-value-provider.class.php' );
40
- require_once( FACTORY_FORMS_418_DIR . '/includes/providers/options-value-provider.class.php' );
41
 
42
- require_once( FACTORY_FORMS_418_DIR . '/includes/form.class.php' );
43
  #endcomp
44
 
45
- load_plugin_textdomain( 'wbcr_factory_forms_418', 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_418_register_controls' hook
53
  *
54
  */
55
- if ( ! function_exists( 'wbcr_factory_forms_418_register_default_controls' ) ) {
56
 
57
  /**
58
- * @param Wbcr_Factory420_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
- function wbcr_factory_forms_418_register_default_controls( Wbcr_Factory420_Plugin $plugin ) {
63
 
64
  if ( $plugin && ! isset( $plugin->forms ) ) {
65
  throw new Exception( "The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'." );
66
  }
67
 
68
- require_once( FACTORY_FORMS_418_DIR . '/includes/html-builder.class.php' );
69
- require_once( FACTORY_FORMS_418_DIR . '/includes/form-element.class.php' );
70
- require_once( FACTORY_FORMS_418_DIR . '/includes/control.class.php' );
71
- require_once( FACTORY_FORMS_418_DIR . '/includes/complex-control.class.php' );
72
- require_once( FACTORY_FORMS_418_DIR . '/includes/holder.class.php' );
73
- require_once( FACTORY_FORMS_418_DIR . '/includes/control-holder.class.php' );
74
- require_once( FACTORY_FORMS_418_DIR . '/includes/custom-element.class.php' );
75
- require_once( FACTORY_FORMS_418_DIR . '/includes/form-layout.class.php' );
76
 
77
  // registration of controls
78
  $plugin->forms->registerControls( [
79
  [
80
  'type' => 'checkbox',
81
- 'class' => 'Wbcr_FactoryForms418_CheckboxControl',
82
- 'include' => FACTORY_FORMS_418_DIR . '/controls/checkbox.php'
83
  ],
84
  [
85
  'type' => 'list',
86
- 'class' => 'Wbcr_FactoryForms418_ListControl',
87
- 'include' => FACTORY_FORMS_418_DIR . '/controls/list.php'
88
  ],
89
  [
90
  'type' => 'dropdown',
91
- 'class' => 'Wbcr_FactoryForms418_DropdownControl',
92
- 'include' => FACTORY_FORMS_418_DIR . '/controls/dropdown.php'
93
  ],
94
  [
95
  'type' => 'dropdown-and-colors',
96
- 'class' => 'Wbcr_FactoryForms418_DropdownAndColorsControl',
97
- 'include' => FACTORY_FORMS_418_DIR . '/controls/dropdown-and-colors.php'
98
  ],
99
  [
100
  'type' => 'hidden',
101
- 'class' => 'Wbcr_FactoryForms418_HiddenControl',
102
- 'include' => FACTORY_FORMS_418_DIR . '/controls/hidden.php'
103
  ],
104
  [
105
  'type' => 'hidden',
106
- 'class' => 'Wbcr_FactoryForms418_HiddenControl',
107
- 'include' => FACTORY_FORMS_418_DIR . '/controls/hidden.php'
108
  ],
109
  [
110
  'type' => 'radio',
111
- 'class' => 'Wbcr_FactoryForms418_RadioControl',
112
- 'include' => FACTORY_FORMS_418_DIR . '/controls/radio.php'
113
  ],
114
  [
115
  'type' => 'radio-colors',
116
- 'class' => 'Wbcr_FactoryForms418_RadioColorsControl',
117
- 'include' => FACTORY_FORMS_418_DIR . '/controls/radio-colors.php'
118
  ],
119
  [
120
  'type' => 'textarea',
121
- 'class' => 'Wbcr_FactoryForms418_TextareaControl',
122
- 'include' => FACTORY_FORMS_418_DIR . '/controls/textarea.php'
123
  ],
124
  [
125
  'type' => 'textbox',
126
- 'class' => 'Wbcr_FactoryForms418_TextboxControl',
127
- 'include' => FACTORY_FORMS_418_DIR . '/controls/textbox.php'
128
  ],
129
  [
130
  'type' => 'multiple-textbox',
131
- 'class' => 'Wbcr_FactoryForms418_MultipleTextboxControl',
132
- 'include' => FACTORY_FORMS_418_DIR . '/controls/multiple-textbox.php'
133
  ],
134
  [
135
  'type' => 'datetimepicker-range',
136
- 'class' => 'Wbcr_FactoryForms418_DatepickerRangeControl',
137
- 'include' => FACTORY_FORMS_418_DIR . '/controls/datepicker-range.php'
138
  ],
139
  [
140
  'type' => 'url',
141
- 'class' => 'Wbcr_FactoryForms418_UrlControl',
142
- 'include' => FACTORY_FORMS_418_DIR . '/controls/url.php'
143
  ],
144
  [
145
  'type' => 'wp-editor',
146
- 'class' => 'Wbcr_FactoryForms418_WpEditorControl',
147
- 'include' => FACTORY_FORMS_418_DIR . '/controls/wp-editor.php'
148
  ],
149
  [
150
  'type' => 'color',
151
- 'class' => 'Wbcr_FactoryForms418_ColorControl',
152
- 'include' => FACTORY_FORMS_418_DIR . '/controls/color.php'
153
  ],
154
  [
155
  'type' => 'color-and-opacity',
156
- 'class' => 'Wbcr_FactoryForms418_ColorAndOpacityControl',
157
- 'include' => FACTORY_FORMS_418_DIR . '/controls/color-and-opacity.php'
158
  ],
159
  [
160
  'type' => 'gradient',
161
- 'class' => 'Wbcr_FactoryForms418_GradientControl',
162
- 'include' => FACTORY_FORMS_418_DIR . '/controls/gradient.php'
163
  ],
164
  [
165
  'type' => 'font',
166
- 'class' => 'Wbcr_FactoryForms418_FontControl',
167
- 'include' => FACTORY_FORMS_418_DIR . '/controls/font.php'
168
  ],
169
  [
170
  'type' => 'google-font',
171
- 'class' => 'Wbcr_FactoryForms418_GoogleFontControl',
172
- 'include' => FACTORY_FORMS_418_DIR . '/controls/google-font.php'
173
  ],
174
  [
175
  'type' => 'pattern',
176
- 'class' => 'Wbcr_FactoryForms418_PatternControl',
177
- 'include' => FACTORY_FORMS_418_DIR . '/controls/pattern.php'
178
  ],
179
  [
180
  'type' => 'integer',
181
- 'class' => 'Wbcr_FactoryForms418_IntegerControl',
182
- 'include' => FACTORY_FORMS_418_DIR . '/controls/integer.php'
183
  ],
184
  [
185
  'type' => 'control-group',
186
- 'class' => 'Wbcr_FactoryForms418_ControlGroupHolder',
187
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/control-group.php'
188
  ],
189
  [
190
  'type' => 'paddings-editor',
191
- 'class' => 'Wbcr_FactoryForms418_PaddingsEditorControl',
192
- 'include' => FACTORY_FORMS_418_DIR . '/controls/paddings-editor.php'
193
  ],
194
  ] );
195
 
@@ -197,53 +197,53 @@ if ( ! function_exists( 'wbcr_factory_forms_418_register_default_controls' ) ) {
197
  $plugin->forms->registerHolders( [
198
  [
199
  'type' => 'tab',
200
- 'class' => 'Wbcr_FactoryForms418_TabHolder',
201
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/tab.php'
202
  ],
203
  [
204
  'type' => 'tab-item',
205
- 'class' => 'Wbcr_FactoryForms418_TabItemHolder',
206
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/tab-item.php'
207
  ],
208
  [
209
  'type' => 'accordion',
210
- 'class' => 'Wbcr_FactoryForms418_AccordionHolder',
211
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/accordion.php'
212
  ],
213
  [
214
  'type' => 'accordion-item',
215
- 'class' => 'Wbcr_FactoryForms418_AccordionItemHolder',
216
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/accordion-item.php'
217
  ],
218
  [
219
  'type' => 'control-group',
220
- 'class' => 'Wbcr_FactoryForms418_ControlGroupHolder',
221
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/control-group.php'
222
  ],
223
  [
224
  'type' => 'control-group-item',
225
- 'class' => 'Wbcr_FactoryForms418_ControlGroupItem',
226
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/control-group-item.php'
227
  ],
228
  [
229
  'type' => 'form-group',
230
- 'class' => 'Wbcr_FactoryForms418_FormGroupHolder',
231
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/form-group.php'
232
  ],
233
  [
234
  'type' => 'more-link',
235
- 'class' => 'Wbcr_FactoryForms418_MoreLinkHolder',
236
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/more-link.php'
237
  ],
238
  [
239
  'type' => 'div',
240
- 'class' => 'Wbcr_FactoryForms418_DivHolder',
241
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/div.php'
242
  ],
243
  [
244
  'type' => 'columns',
245
- 'class' => 'Wbcr_FactoryForms418_ColumnsHolder',
246
- 'include' => FACTORY_FORMS_418_DIR . '/controls/holders/columns.php'
247
  ]
248
  ] );
249
 
@@ -251,23 +251,23 @@ if ( ! function_exists( 'wbcr_factory_forms_418_register_default_controls' ) ) {
251
  $plugin->forms->registerCustomElements( [
252
  [
253
  'type' => 'html',
254
- 'class' => 'Wbcr_FactoryForms418_Html',
255
- 'include' => FACTORY_FORMS_418_DIR . '/controls/customs/html.php',
256
  ],
257
  [
258
  'type' => 'separator',
259
- 'class' => 'Wbcr_FactoryForms418_Separator',
260
- 'include' => FACTORY_FORMS_418_DIR . '/controls/customs/separator.php',
261
  ],
262
  ] );
263
 
264
  // registration of form layouts
265
  $plugin->forms->registerFormLayout( [
266
  'name' => 'bootstrap-3',
267
- 'class' => 'Wbcr_FactoryForms418_Bootstrap3FormLayout',
268
- 'include' => FACTORY_FORMS_418_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
269
  ] );
270
  }
271
 
272
- add_action( 'wbcr_factory_forms_418_register_controls', 'wbcr_factory_forms_418_register_default_controls' );
273
  }
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_420_LOADED' ) ) {
26
  return;
27
  }
28
 
29
+ define( 'FACTORY_FORMS_420_LOADED', true );
30
 
31
+ define( 'FACTORY_FORMS_420_VERSION', '4.2.0' );
32
 
33
  // absolute path and URL to the files and resources of the module.
34
+ define( 'FACTORY_FORMS_420_DIR', dirname( __FILE__ ) );
35
+ define( 'FACTORY_FORMS_420_URL', plugins_url( null, __FILE__ ) );
36
 
37
  #comp merge
38
+ require_once( FACTORY_FORMS_420_DIR . '/includes/providers/value-provider.interface.php' );
39
+ require_once( FACTORY_FORMS_420_DIR . '/includes/providers/meta-value-provider.class.php' );
40
+ require_once( FACTORY_FORMS_420_DIR . '/includes/providers/options-value-provider.class.php' );
41
 
42
+ require_once( FACTORY_FORMS_420_DIR . '/includes/form.class.php' );
43
  #endcomp
44
 
45
+ load_plugin_textdomain( 'wbcr_factory_forms_420', 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_420_register_controls' hook
53
  *
54
  */
55
+ if ( ! function_exists( 'wbcr_factory_forms_420_register_default_controls' ) ) {
56
 
57
  /**
58
+ * @param Wbcr_Factory422_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
+ function wbcr_factory_forms_420_register_default_controls( Wbcr_Factory422_Plugin $plugin ) {
63
 
64
  if ( $plugin && ! isset( $plugin->forms ) ) {
65
  throw new Exception( "The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'." );
66
  }
67
 
68
+ require_once( FACTORY_FORMS_420_DIR . '/includes/html-builder.class.php' );
69
+ require_once( FACTORY_FORMS_420_DIR . '/includes/form-element.class.php' );
70
+ require_once( FACTORY_FORMS_420_DIR . '/includes/control.class.php' );
71
+ require_once( FACTORY_FORMS_420_DIR . '/includes/complex-control.class.php' );
72
+ require_once( FACTORY_FORMS_420_DIR . '/includes/holder.class.php' );
73
+ require_once( FACTORY_FORMS_420_DIR . '/includes/control-holder.class.php' );
74
+ require_once( FACTORY_FORMS_420_DIR . '/includes/custom-element.class.php' );
75
+ require_once( FACTORY_FORMS_420_DIR . '/includes/form-layout.class.php' );
76
 
77
  // registration of controls
78
  $plugin->forms->registerControls( [
79
  [
80
  'type' => 'checkbox',
81
+ 'class' => 'Wbcr_FactoryForms420_CheckboxControl',
82
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/checkbox.php'
83
  ],
84
  [
85
  'type' => 'list',
86
+ 'class' => 'Wbcr_FactoryForms420_ListControl',
87
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/list.php'
88
  ],
89
  [
90
  'type' => 'dropdown',
91
+ 'class' => 'Wbcr_FactoryForms420_DropdownControl',
92
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/dropdown.php'
93
  ],
94
  [
95
  'type' => 'dropdown-and-colors',
96
+ 'class' => 'Wbcr_FactoryForms420_DropdownAndColorsControl',
97
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/dropdown-and-colors.php'
98
  ],
99
  [
100
  'type' => 'hidden',
101
+ 'class' => 'Wbcr_FactoryForms420_HiddenControl',
102
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/hidden.php'
103
  ],
104
  [
105
  'type' => 'hidden',
106
+ 'class' => 'Wbcr_FactoryForms420_HiddenControl',
107
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/hidden.php'
108
  ],
109
  [
110
  'type' => 'radio',
111
+ 'class' => 'Wbcr_FactoryForms420_RadioControl',
112
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/radio.php'
113
  ],
114
  [
115
  'type' => 'radio-colors',
116
+ 'class' => 'Wbcr_FactoryForms420_RadioColorsControl',
117
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/radio-colors.php'
118
  ],
119
  [
120
  'type' => 'textarea',
121
+ 'class' => 'Wbcr_FactoryForms420_TextareaControl',
122
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/textarea.php'
123
  ],
124
  [
125
  'type' => 'textbox',
126
+ 'class' => 'Wbcr_FactoryForms420_TextboxControl',
127
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/textbox.php'
128
  ],
129
  [
130
  'type' => 'multiple-textbox',
131
+ 'class' => 'Wbcr_FactoryForms420_MultipleTextboxControl',
132
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/multiple-textbox.php'
133
  ],
134
  [
135
  'type' => 'datetimepicker-range',
136
+ 'class' => 'Wbcr_FactoryForms420_DatepickerRangeControl',
137
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/datepicker-range.php'
138
  ],
139
  [
140
  'type' => 'url',
141
+ 'class' => 'Wbcr_FactoryForms420_UrlControl',
142
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/url.php'
143
  ],
144
  [
145
  'type' => 'wp-editor',
146
+ 'class' => 'Wbcr_FactoryForms420_WpEditorControl',
147
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/wp-editor.php'
148
  ],
149
  [
150
  'type' => 'color',
151
+ 'class' => 'Wbcr_FactoryForms420_ColorControl',
152
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/color.php'
153
  ],
154
  [
155
  'type' => 'color-and-opacity',
156
+ 'class' => 'Wbcr_FactoryForms420_ColorAndOpacityControl',
157
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/color-and-opacity.php'
158
  ],
159
  [
160
  'type' => 'gradient',
161
+ 'class' => 'Wbcr_FactoryForms420_GradientControl',
162
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/gradient.php'
163
  ],
164
  [
165
  'type' => 'font',
166
+ 'class' => 'Wbcr_FactoryForms420_FontControl',
167
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/font.php'
168
  ],
169
  [
170
  'type' => 'google-font',
171
+ 'class' => 'Wbcr_FactoryForms420_GoogleFontControl',
172
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/google-font.php'
173
  ],
174
  [
175
  'type' => 'pattern',
176
+ 'class' => 'Wbcr_FactoryForms420_PatternControl',
177
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/pattern.php'
178
  ],
179
  [
180
  'type' => 'integer',
181
+ 'class' => 'Wbcr_FactoryForms420_IntegerControl',
182
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/integer.php'
183
  ],
184
  [
185
  'type' => 'control-group',
186
+ 'class' => 'Wbcr_FactoryForms420_ControlGroupHolder',
187
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/control-group.php'
188
  ],
189
  [
190
  'type' => 'paddings-editor',
191
+ 'class' => 'Wbcr_FactoryForms420_PaddingsEditorControl',
192
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/paddings-editor.php'
193
  ],
194
  ] );
195
 
197
  $plugin->forms->registerHolders( [
198
  [
199
  'type' => 'tab',
200
+ 'class' => 'Wbcr_FactoryForms420_TabHolder',
201
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/tab.php'
202
  ],
203
  [
204
  'type' => 'tab-item',
205
+ 'class' => 'Wbcr_FactoryForms420_TabItemHolder',
206
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/tab-item.php'
207
  ],
208
  [
209
  'type' => 'accordion',
210
+ 'class' => 'Wbcr_FactoryForms420_AccordionHolder',
211
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/accordion.php'
212
  ],
213
  [
214
  'type' => 'accordion-item',
215
+ 'class' => 'Wbcr_FactoryForms420_AccordionItemHolder',
216
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/accordion-item.php'
217
  ],
218
  [
219
  'type' => 'control-group',
220
+ 'class' => 'Wbcr_FactoryForms420_ControlGroupHolder',
221
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/control-group.php'
222
  ],
223
  [
224
  'type' => 'control-group-item',
225
+ 'class' => 'Wbcr_FactoryForms420_ControlGroupItem',
226
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/control-group-item.php'
227
  ],
228
  [
229
  'type' => 'form-group',
230
+ 'class' => 'Wbcr_FactoryForms420_FormGroupHolder',
231
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/form-group.php'
232
  ],
233
  [
234
  'type' => 'more-link',
235
+ 'class' => 'Wbcr_FactoryForms420_MoreLinkHolder',
236
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/more-link.php'
237
  ],
238
  [
239
  'type' => 'div',
240
+ 'class' => 'Wbcr_FactoryForms420_DivHolder',
241
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/div.php'
242
  ],
243
  [
244
  'type' => 'columns',
245
+ 'class' => 'Wbcr_FactoryForms420_ColumnsHolder',
246
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/holders/columns.php'
247
  ]
248
  ] );
249
 
251
  $plugin->forms->registerCustomElements( [
252
  [
253
  'type' => 'html',
254
+ 'class' => 'Wbcr_FactoryForms420_Html',
255
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/customs/html.php',
256
  ],
257
  [
258
  'type' => 'separator',
259
+ 'class' => 'Wbcr_FactoryForms420_Separator',
260
+ 'include' => FACTORY_FORMS_420_DIR . '/controls/customs/separator.php',
261
  ],
262
  ] );
263
 
264
  // registration of form layouts
265
  $plugin->forms->registerFormLayout( [
266
  'name' => 'bootstrap-3',
267
+ 'class' => 'Wbcr_FactoryForms420_Bootstrap3FormLayout',
268
+ 'include' => FACTORY_FORMS_420_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
269
  ] );
270
  }
271
 
272
+ add_action( 'wbcr_factory_forms_420_register_controls', 'wbcr_factory_forms_420_register_default_controls' );
273
  }
libs/factory/forms/controls/checkbox.php CHANGED
@@ -20,9 +20,9 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms418_CheckboxControl') ) {
24
 
25
- class Wbcr_FactoryForms418_CheckboxControl extends Wbcr_FactoryForms418_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_418') ?></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_418') ?></button>
137
  <input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
138
  echo 'checked="checked"';
139
  } ?>" />
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms420_CheckboxControl') ) {
24
 
25
+ class Wbcr_FactoryForms420_CheckboxControl extends Wbcr_FactoryForms420_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_420') ?></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_420') ?></button>
137
  <input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
138
  echo 'checked="checked"';
139
  } ?>" />
libs/factory/forms/controls/color-and-opacity.php CHANGED
@@ -20,10 +20,10 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms418_ColorAndOpacityControl') ) {
24
  }
25
 
26
- class Wbcr_FactoryForms418_ColorAndOpacityControl extends Wbcr_FactoryForms418_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
@@ -57,8 +57,8 @@
57
  'way' => 'slider'
58
  ));
59
 
60
- $this->color = new Wbcr_FactoryForms418_ColorControl($options['color'], $form, $provider);
61
- $this->opacity = new Wbcr_FactoryForms418_IntegerControl($options['opacity'], $form, $provider);
62
 
63
  $this->innerControls = array($this->color, $this->opacity);
64
  }
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms420_ColorAndOpacityControl') ) {
24
  }
25
 
26
+ class Wbcr_FactoryForms420_ColorAndOpacityControl extends Wbcr_FactoryForms420_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
57
  'way' => 'slider'
58
  ));
59
 
60
+ $this->color = new Wbcr_FactoryForms420_ColorControl($options['color'], $form, $provider);
61
+ $this->opacity = new Wbcr_FactoryForms420_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_FactoryForms418_ColorControl') ) {
24
 
25
- class Wbcr_FactoryForms418_ColorControl extends Wbcr_FactoryForms418_Control {
26
 
27
  public $type = 'color';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms420_ColorControl') ) {
24
 
25
+ class Wbcr_FactoryForms420_ColorControl extends Wbcr_FactoryForms420_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_FactoryForms418_Html') ) {
18
 
19
- class Wbcr_FactoryForms418_Html extends Wbcr_FactoryForms418_CustomElement {
20
 
21
  public $type = 'html';
22
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_Html') ) {
18
 
19
+ class Wbcr_FactoryForms420_Html extends Wbcr_FactoryForms420_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_FactoryForms418_Separator') ) {
18
- class Wbcr_FactoryForms418_Separator extends Wbcr_FactoryForms418_CustomElement {
19
 
20
  public $type = 'separator';
21
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_Separator') ) {
18
+ class Wbcr_FactoryForms420_Separator extends Wbcr_FactoryForms420_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_FactoryForms418_DatepickerRangeControl') ) {
33
 
34
- class Wbcr_FactoryForms418_DatepickerRangeControl extends Wbcr_FactoryForms418_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_FactoryForms418_TextboxControl($options['range_1'], $form, $provider);
69
- $this->range_2 = new Wbcr_FactoryForms418_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_FactoryForms420_DatepickerRangeControl') ) {
33
 
34
+ class Wbcr_FactoryForms420_DatepickerRangeControl extends Wbcr_FactoryForms420_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_FactoryForms420_TextboxControl($options['range_1'], $form, $provider);
69
+ $this->range_2 = new Wbcr_FactoryForms420_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 FactoryForms418_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 FactoryForms418_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_FactoryForms418_DropdownAndColorsControl') ) {
41
 
42
- class Wbcr_FactoryForms418_DropdownAndColorsControl extends Wbcr_FactoryForms418_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_FactoryForms418_DropdownControl($options['dropdown'], $form, $provider);
73
- $this->colors = new Wbcr_FactoryForms418_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 FactoryForms420_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 FactoryForms420_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_FactoryForms420_DropdownAndColorsControl') ) {
41
 
42
+ class Wbcr_FactoryForms420_DropdownAndColorsControl extends Wbcr_FactoryForms420_ComplexControl {
43
 
44
  public $type = 'dropdown-and-colors';
45
 
69
  'name' => $this->options['name'] . '__colors',
70
  ));
71
 
72
+ $this->dropdown = new Wbcr_FactoryForms420_DropdownControl($options['dropdown'], $form, $provider);
73
+ $this->colors = new Wbcr_FactoryForms420_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_FactoryForms418_DropdownControl' ) ) {
25
 
26
- class Wbcr_FactoryForms418_DropdownControl extends Wbcr_FactoryForms418_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_418' ) ) ?>'
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_418' ) );
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_418' );
353
 
354
  $data = isset( $item['data'] ) ? $item['data'] : null;
355
  } else {
21
  exit;
22
  }
23
 
24
+ if ( ! class_exists( 'Wbcr_FactoryForms420_DropdownControl' ) ) {
25
 
26
+ class Wbcr_FactoryForms420_DropdownControl extends Wbcr_FactoryForms420_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_420' ) ) ?>'
127
  };
128
  </script>
129
  <?php
268
  }
269
 
270
  $is_empty = $this->isAjax() || empty( $items );
271
+ $empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_420' ) );
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_420' );
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_FactoryForms418_FontControl') ) {
24
 
25
- class Wbcr_FactoryForms418_FontControl extends Wbcr_FactoryForms418_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_FactoryForms418_IntegerControl($option_font_size, $form, $provider);
58
- $this->family = new Wbcr_FactoryForms418_DropdownControl($option_font_family, $form, $provider);
59
- $this->color = new Wbcr_FactoryForms418_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_418_fonts', $fonts);
70
- $fonts = apply_filters('wbcr_factory_forms_418_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_418')),
81
  array(
82
  'group',
83
- __('Sans Serif:', 'wbcr_factory_forms_418'),
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_418'),
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_418'),
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_FactoryForms420_FontControl') ) {
24
 
25
+ class Wbcr_FactoryForms420_FontControl extends Wbcr_FactoryForms420_ComplexControl {
26
 
27
  public $type = 'font';
28
 
54
  'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
55
  );
56
 
57
+ $this->size = new Wbcr_FactoryForms420_IntegerControl($option_font_size, $form, $provider);
58
+ $this->family = new Wbcr_FactoryForms420_DropdownControl($option_font_family, $form, $provider);
59
+ $this->color = new Wbcr_FactoryForms420_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_420_fonts', $fonts);
70
+ $fonts = apply_filters('wbcr_factory_forms_420_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_420')),
81
  array(
82
  'group',
83
+ __('Sans Serif:', 'wbcr_factory_forms_420'),
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_420'),
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_420'),
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_FactoryForms418_GoogleFontControl extends Wbcr_FactoryForms418_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_FactoryForms418_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_418'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
- __('Standard:', 'wbcr_factory_forms_418'),
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_418'), 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_418');
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_418');
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_418');
137
 
138
  return $body;
139
  }
15
  * @package core
16
  * @since 1.0.0
17
  */
18
+ class Wbcr_FactoryForms420_GoogleFontControl extends Wbcr_FactoryForms420_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_FactoryForms420_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_420'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
+ __('Standard:', 'wbcr_factory_forms_420'),
58
  array(
59
 
60
  array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
65
  )
66
  );
67
 
68
+ $fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_420'), 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_420');
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_420');
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_420');
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_FactoryForms418_GradientControl') ) {
29
- class Wbcr_FactoryForms418_GradientControl extends Wbcr_FactoryForms418_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_418' ) ?>';
70
- factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_418' ) ?>';
71
  </script>
72
  <div <?php $this->attrs() ?>>
73
  <div class="factory-gradient-picker">
25
  exit;
26
  }
27
 
28
+ if( !class_exists('Wbcr_FactoryForms420_GradientControl') ) {
29
+ class Wbcr_FactoryForms420_GradientControl extends Wbcr_FactoryForms420_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_420' ) ?>';
70
+ factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_420' ) ?>';
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_FactoryForms418_HiddenControl') ) {
24
 
25
- class Wbcr_FactoryForms418_HiddenControl extends Wbcr_FactoryForms418_Control {
26
 
27
  public $type = 'hidden';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms420_HiddenControl') ) {
24
 
25
+ class Wbcr_FactoryForms420_HiddenControl extends Wbcr_FactoryForms420_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_FactoryForms418_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms418_AccordionItemHolder extends Wbcr_FactoryForms418_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms420_AccordionItemHolder extends Wbcr_FactoryForms420_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_FactoryForms418_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms418_AccordionHolder extends Wbcr_FactoryForms418_Holder {
23
 
24
  /**
25
  * A holder type.
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms420_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms420_AccordionHolder extends Wbcr_FactoryForms420_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_FactoryForms418_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms418_ColumnsHolder extends Wbcr_FactoryForms418_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms420_ColumnsHolder extends Wbcr_FactoryForms420_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_FactoryForms418_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms418_ControlGroupItem extends Wbcr_FactoryForms418_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms420_ControlGroupItem extends Wbcr_FactoryForms420_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_FactoryForms418_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms418_ControlGroupHolder extends Wbcr_FactoryForms418_ControlHolder {
25
 
26
  /**
27
  * A holder type.
@@ -61,7 +61,7 @@
61
  continue;
62
  }
63
 
64
- $builder = new Wbcr_FactoryForms418_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_FactoryForms420_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms420_ControlGroupHolder extends Wbcr_FactoryForms420_ControlHolder {
25
 
26
  /**
27
  * A holder type.
61
  continue;
62
  }
63
 
64
+ $builder = new Wbcr_FactoryForms420_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_FactoryForms418_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms418_DivHolder extends Wbcr_FactoryForms418_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms420_DivHolder extends Wbcr_FactoryForms420_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_FactoryForms418_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms418_FormGroupHolder extends Wbcr_FactoryForms418_Holder {
24
 
25
  /**
26
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms420_FormGroupHolder extends Wbcr_FactoryForms420_Holder {
24
 
25
  /**
26
  * A holder type.
libs/factory/forms/controls/holders/more-link.php CHANGED
@@ -14,14 +14,14 @@
14
  exit;
15
  }
16
 
17
- if( !class_exists('Wbcr_FactoryForms418_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms418_MoreLinkHolder extends Wbcr_FactoryForms418_Holder {
25
 
26
  /**
27
  * A holder type.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms420_MoreLinkHolder extends Wbcr_FactoryForms420_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_FactoryForms418_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms418_TabItemHolder extends Wbcr_FactoryForms418_Holder {
23
 
24
  /**
25
  * A holder type.
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms420_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_FactoryForms420_TabItemHolder extends Wbcr_FactoryForms420_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_FactoryForms418_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms418_TabHolder extends Wbcr_FactoryForms418_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 FactoryForms418_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_FactoryForms418_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_FactoryForms420_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
+ class Wbcr_FactoryForms420_TabHolder extends Wbcr_FactoryForms420_Holder {
25
 
26
  /**
27
  * A holder type.
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param FactoryForms420_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_FactoryForms420_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_FactoryForms418_IntegerControl') ) {
36
 
37
- class Wbcr_FactoryForms418_IntegerControl extends Wbcr_FactoryForms418_Control {
38
 
39
  public $type = 'integer';
40
 
32
  exit;
33
  }
34
 
35
+ if( !class_exists('Wbcr_FactoryForms420_IntegerControl') ) {
36
 
37
+ class Wbcr_FactoryForms420_IntegerControl extends Wbcr_FactoryForms420_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_FactoryForms418_ListControl') ) {
25
 
26
- class Wbcr_FactoryForms418_ListControl extends Wbcr_FactoryForms418_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_418') ) ?>'
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_418'));
140
 
141
  if( $is_empty ) {
142
  $this->addCssClass('factory-empty');
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms420_ListControl') ) {
25
 
26
+ class Wbcr_FactoryForms420_ListControl extends Wbcr_FactoryForms420_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_420') ) ?>'
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_420'));
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_FactoryForms418_MultipleTextboxControl') ) {
19
 
20
- class Wbcr_FactoryForms418_MultipleTextboxControl extends Wbcr_FactoryForms418_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_418') ?>
90
  </button>
91
  </div>
92
 
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms420_MultipleTextboxControl') ) {
19
 
20
+ class Wbcr_FactoryForms420_MultipleTextboxControl extends Wbcr_FactoryForms420_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_420') ?>
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_FactoryForms418_PaddingsEditorControl') ) {
18
 
19
- class Wbcr_FactoryForms418_PaddingsEditorControl extends Wbcr_FactoryForms418_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_418') ?>
71
  </label>
72
 
73
  <div class="factory-slider">
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_PaddingsEditorControl') ) {
18
 
19
+ class Wbcr_FactoryForms420_PaddingsEditorControl extends Wbcr_FactoryForms420_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_420') ?>
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_FactoryForms418_PatternControl') ) {
19
 
20
- class Wbcr_FactoryForms418_PatternControl extends Wbcr_FactoryForms418_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_418_patterns', array());
56
- $this->patterns = apply_filters('wbcr_factory_forms_418_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
- $this->color = new Wbcr_FactoryForms418_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_418') ?>">
106
  <i class="fa fa-flask"></i>
107
- <span><?php _e('re-color', 'wbcr_factory_forms_418') ?></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_418') ?></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_418') ?></i>
118
  </div>
119
  </div>
120
  <div class="factory-picker-target"></div>
15
  exit;
16
  }
17
 
18
+ if( !class_exists('Wbcr_FactoryForms420_PatternControl') ) {
19
 
20
+ class Wbcr_FactoryForms420_PatternControl extends Wbcr_FactoryForms420_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_420_patterns', array());
56
+ $this->patterns = apply_filters('wbcr_factory_forms_420_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
+ $this->color = new Wbcr_FactoryForms420_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_420') ?>">
106
  <i class="fa fa-flask"></i>
107
+ <span><?php _e('re-color', 'wbcr_factory_forms_420') ?></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_420') ?></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_420') ?></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_FactoryForms418_RadioColorsControl') ) {
31
 
32
- class Wbcr_FactoryForms418_RadioColorsControl extends Wbcr_FactoryForms418_Control {
33
 
34
  public $type = 'radio-color';
35
 
27
  exit;
28
  }
29
 
30
+ if( !class_exists('Wbcr_FactoryForms420_RadioColorsControl') ) {
31
 
32
+ class Wbcr_FactoryForms420_RadioColorsControl extends Wbcr_FactoryForms420_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_FactoryForms418_RadioControl') ) {
25
 
26
- class Wbcr_FactoryForms418_RadioControl extends Wbcr_FactoryForms418_Control {
27
 
28
  public $type = 'radio';
29
 
21
  exit;
22
  }
23
 
24
+ if( !class_exists('Wbcr_FactoryForms420_RadioControl') ) {
25
 
26
+ class Wbcr_FactoryForms420_RadioControl extends Wbcr_FactoryForms420_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_FactoryForms418_TextareaControl') ) {
24
 
25
- class Wbcr_FactoryForms418_TextareaControl extends Wbcr_FactoryForms418_Control {
26
 
27
  public $type = 'textarea';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms420_TextareaControl') ) {
24
 
25
+ class Wbcr_FactoryForms420_TextareaControl extends Wbcr_FactoryForms420_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_FactoryForms418_TextboxControl') ) {
33
 
34
- class Wbcr_FactoryForms418_TextboxControl extends Wbcr_FactoryForms418_Control {
35
 
36
  public $type = 'textbox';
37
 
29
  exit;
30
  }
31
 
32
+ if( !class_exists('Wbcr_FactoryForms420_TextboxControl') ) {
33
 
34
+ class Wbcr_FactoryForms420_TextboxControl extends Wbcr_FactoryForms420_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 FactoryForms418_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_FactoryForms418_UrlControl') ) {
22
 
23
- class Wbcr_FactoryForms418_UrlControl extends Wbcr_FactoryForms418_TextboxControl {
24
 
25
  public $type = 'url';
26
 
4
  * Url Control
5
  *
6
  * Main options:
7
+ * @see FactoryForms420_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_FactoryForms420_UrlControl') ) {
22
 
23
+ class Wbcr_FactoryForms420_UrlControl extends Wbcr_FactoryForms420_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_FactoryForms418_WpEditorControl') ) {
26
 
27
- class Wbcr_FactoryForms418_WpEditorControl extends Wbcr_FactoryForms418_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_418_URL . '/assets/css/editor.css';
46
  }
47
  }
48
 
22
  exit;
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms420_WpEditorControl') ) {
26
 
27
+ class Wbcr_FactoryForms420_WpEditorControl extends Wbcr_FactoryForms420_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_420_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_FactoryForms418_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
- abstract class Wbcr_FactoryForms418_ComplexControl extends Wbcr_FactoryForms418_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_FactoryForms418_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_IFactoryForms418_ValueProvider $provider
45
  * @return void
46
  */
47
  public function setProvider($provider)
13
  if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
+ if( !class_exists('Wbcr_FactoryForms420_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_FactoryForms420_ComplexControl extends Wbcr_FactoryForms420_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_FactoryForms420_Control[]
37
  */
38
  public $inner_controls = array();
39
 
41
  * Sets a provider for the control.
42
  *
43
  * @since 1.0.0
44
+ * @param Wbcr_IFactoryForms420_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_FactoryForms418_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms418_ControlHolder extends Wbcr_FactoryForms418_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
- * @var Wbcr_FactoryForms418_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_FactoryForms418_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_FactoryForms418_FormElement[].
64
  */
65
  public function getElements()
66
  {
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms420_ControlHolder extends Wbcr_FactoryForms420_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
+ * @var Wbcr_FactoryForms420_Control[]
30
  */
31
  protected $elements = array();
32
 
43
  *
44
  * @since 1.0.0
45
  * @param mixed[] $options A holder options.
46
+ * @param Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms418_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms418_Control extends Wbcr_FactoryForms418_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_IFactoryForms418_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 FactoryForms418_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 IFactoryForms418_ValueProvider $provider
70
  * @return void
71
  */
72
  public function setProvider($provider)
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms420_Control extends Wbcr_FactoryForms420_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_IFactoryForms420_ValueProvider
47
  */
48
  protected $provider = null;
49
 
51
  * Create a new instance of the control.
52
  *
53
  * @param mixed[] $options
54
+ * @param FactoryForms420_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 IFactoryForms420_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_FactoryForms418_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms418_CustomElement extends Wbcr_FactoryForms418_FormElement {
24
 
25
  /**
26
  * Is this element a custom form element?
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_FactoryForms420_CustomElement extends Wbcr_FactoryForms420_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
@@ -53,7 +53,7 @@
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
- * @var Wbcr_FactoryForms418_Form
57
  */
58
  protected $form;
59
 
@@ -61,7 +61,7 @@
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
- * @var Wbcr_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms420_FormElement') ) {
18
 
19
  /**
20
  * The base class for all form element (controls, holders).
23
  *
24
  * @since 1.0.0
25
  */
26
+ abstract class Wbcr_FactoryForms420_FormElement {
27
 
28
  /**
29
  * A type of an elemnt.
37
  * An html attribute builder.
38
  *
39
  * @since 1.0.0
40
+ * @var Wbcr_FactoryForms420_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
+ * @var Wbcr_FactoryForms420_Form
57
  */
58
  protected $form;
59
 
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
+ * @var Wbcr_FactoryForms420_FormLayout
65
  */
66
  protected $layout;
67
 
94
  *
95
  * @since 1.0.0
96
  * @param mixed[] $options A holder options.
97
+ * @param Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms418_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
- abstract class Wbcr_FactoryForms418_FormLayout extends Wbcr_FactoryForms418_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_FactoryForms418_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-418-' . $this->type);
56
- $this->addCssClass('factory-forms-418-' . $this->name);
57
  }
58
 
59
  /**
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
+ abstract class Wbcr_FactoryForms420_FormLayout extends Wbcr_FactoryForms420_Holder {
23
 
24
  /**
25
  * A form layout name.
42
  *
43
  * @since 1.0.0
44
  * @param mixed[] $options A holder options.
45
+ * @param Wbcr_FactoryForms420_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-420-' . $this->type);
56
+ $this->addCssClass('factory-forms-420-' . $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_418_plugin_created', 'wbcr_factory_forms_418_plugin_created');
19
 
20
- function wbcr_factory_forms_418_plugin_created($plugin)
21
  {
22
- $plugin->forms = new Wbcr_FactoryForms418_Manager($plugin);
23
  }
24
 
25
- if( !class_exists('Wbcr_FactoryForms418_Manager') ) {
26
 
27
- class Wbcr_FactoryForms418_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
@@ -57,7 +57,7 @@
57
  /**
58
  * Registers a set of new controls.
59
  *
60
- * @see FactoryForms418_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 FactoryForms418_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 FactoryForms418_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_FactoryForms418_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
- class Wbcr_FactoryForms418_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_IFactoryForms418_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_FactoryForms418_FormLayout
249
  */
250
  public $layout;
251
 
@@ -261,20 +261,20 @@
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
- * @param Wbcr_Factory420_Plugin $plugin
265
  */
266
- public function __construct(array $options = array(), Wbcr_Factory420_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
- if( !Wbcr_FactoryForms418_Manager::$controls_registered ) {
270
 
271
- do_action('wbcr_factory_forms_418_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
- do_action('wbcr_factory_forms_418_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
- Wbcr_FactoryForms418_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_FactoryForms418_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
- * @param Wbcr_IFactoryForms418_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_420_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
- * @return Wbcr_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_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_FactoryForms418_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
- $haystack = Wbcr_FactoryForms418_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_FactoryForms418_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
@@ -672,7 +672,7 @@
672
  */
673
  public static function isControlHolder($item)
674
  {
675
- return isset(Wbcr_FactoryForms418_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
@@ -684,7 +684,7 @@
684
  */
685
  public static function isCustomElement($item)
686
  {
687
- return isset(Wbcr_FactoryForms418_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_420_plugin_created', 'wbcr_factory_forms_420_plugin_created');
19
 
20
+ function wbcr_factory_forms_420_plugin_created($plugin)
21
  {
22
+ $plugin->forms = new Wbcr_FactoryForms420_Manager($plugin);
23
  }
24
 
25
+ if( !class_exists('Wbcr_FactoryForms420_Manager') ) {
26
 
27
+ class Wbcr_FactoryForms420_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
57
  /**
58
  * Registers a set of new controls.
59
  *
60
+ * @see FactoryForms420_Form::registerControl()
61
  *
62
  * @since 1.0.0
63
  * @return void
95
  /**
96
  * Registers a set of new holder controls.
97
  *
98
+ * @see FactoryForms420_Form::registerHolder()
99
  *
100
  * @since 1.0.0
101
  * @return void
129
  /**
130
  * Registers a set of new custom form elements.
131
  *
132
+ * @see FactoryForms420_Form::registerCustomElement()
133
  *
134
  * @since 1.0.0
135
  * @return void
180
  public static $controls_registered = false;
181
  }
182
  }
183
+ if( !class_exists('Wbcr_FactoryForms420_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
+ class Wbcr_FactoryForms420_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_IFactoryForms420_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_FactoryForms420_FormLayout
249
  */
250
  public $layout;
251
 
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
+ * @param Wbcr_Factory422_Plugin $plugin
265
  */
266
+ public function __construct(array $options = array(), Wbcr_Factory422_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
+ if( !Wbcr_FactoryForms420_Manager::$controls_registered ) {
270
 
271
+ do_action('wbcr_factory_forms_420_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
+ do_action('wbcr_factory_forms_420_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
+ Wbcr_FactoryForms420_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_FactoryForms420_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
+ * @param Wbcr_IFactoryForms420_ValueProvider $provider
300
  * @return void
301
  */
302
  public function setProvider($provider)
332
  */
333
  public function getItems()
334
  {
335
+ return apply_filters('wbcr_factory_422_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
+ * @return Wbcr_FactoryForms420_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_FactoryForms420_Control[]
359
  */
360
 
361
  public function createControls($holder = null)
395
  *
396
  * @since 1.0.0
397
  * @param array $item Item data.
398
+ * @return Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms420_Control A control object.
437
  */
438
  public function createControl($item)
439
  {
441
 
442
  if( is_array($item) ) {
443
 
444
+ $control_data = Wbcr_FactoryForms420_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_FactoryForms420_Holder A control holder object.
469
  */
470
  public function createHolder($item)
471
  {
473
 
474
  if( is_array($item) ) {
475
 
476
+ $holderData = Wbcr_FactoryForms420_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_FactoryForms420_FormElement A custom form element object.
495
  */
496
  public function createCustomElement($item)
497
  {
499
 
500
  if( is_array($item) ) {
501
 
502
+ $data = Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms420_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_FactoryForms420_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_FactoryForms420_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
+ $haystack = Wbcr_FactoryForms420_Manager::$registered_holders;
608
  }
609
 
610
  if( isset($haystack[$type]) ) {
660
  */
661
  public static function isControl($item)
662
  {
663
+ return isset(Wbcr_FactoryForms420_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
672
  */
673
  public static function isControlHolder($item)
674
  {
675
+ return isset(Wbcr_FactoryForms420_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
684
  */
685
  public static function isCustomElement($item)
686
  {
687
+ return isset(Wbcr_FactoryForms420_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_FactoryForms418_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms418_Holder extends Wbcr_FactoryForms418_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
- * @var Wbcr_FactoryForms418_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_FactoryForms418_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_FactoryForms418_Control[].
60
  */
61
  public function getElements()
62
  {
@@ -84,7 +84,7 @@
84
  $is_first_item = false;
85
  }
86
 
87
- do_action('wbcr_factory_420_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_FactoryForms420_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
+ abstract class Wbcr_FactoryForms420_Holder extends Wbcr_FactoryForms420_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
+ * @var Wbcr_FactoryForms420_Control[]
31
  */
32
  protected $elements = array();
33
 
44
  *
45
  * @since 1.0.0
46
  * @param mixed[] $options A holder options.
47
+ * @param Wbcr_FactoryForms420_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_FactoryForms420_Control[].
60
  */
61
  public function getElements()
62
  {
84
  $is_first_item = false;
85
  }
86
 
87
+ do_action('wbcr_factory_422_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_FactoryForms418_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms418_HtmlAttributeBuilder {
24
 
25
  /**
26
  * An array to store css classes.
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_FactoryForms420_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_FactoryForms418_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
@@ -24,7 +24,7 @@
24
  *
25
  * @since 1.0.0
26
  */
27
- class Wbcr_FactoryForms418_MetaValueProvider implements Wbcr_IFactoryForms418_ValueProvider {
28
 
29
 
30
  public $scope;
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
24
  *
25
  * @since 1.0.0
26
  */
27
+ class Wbcr_FactoryForms420_MetaValueProvider implements Wbcr_IFactoryForms420_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_FactoryForms418_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
@@ -22,7 +22,7 @@
22
  *
23
  * @since 1.0.0
24
  */
25
- class Wbcr_FactoryForms418_OptionsValueProvider implements Wbcr_IFactoryForms418_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_Factory420_Plugin $plugin)
47
  {
48
  $this->plugin = $plugin;
49
  }
13
  exit;
14
  }
15
 
16
+ if( !class_exists('Wbcr_FactoryForms420_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
22
  *
23
  * @since 1.0.0
24
  */
25
+ class Wbcr_FactoryForms420_OptionsValueProvider implements Wbcr_IFactoryForms420_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_Factory422_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_IFactoryForms418_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
- interface Wbcr_IFactoryForms418_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_IFactoryForms420_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
+ interface Wbcr_IFactoryForms420_ValueProvider {
24
 
25
  /**
26
  * Inits a form a provider to get data from a storage.
libs/factory/forms/langs/{wbcr_factory_forms_418-ru_RU.mo → wbcr_factory_forms_420-ru_RU.mo} RENAMED
File without changes
libs/factory/forms/langs/{wbcr_factory_forms_418-ru_RU.po → wbcr_factory_forms_420-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_FactoryForms418_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
- class Wbcr_FactoryForms418_Bootstrap3FormLayout extends Wbcr_FactoryForms418_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_FactoryForms418_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
@@ -68,7 +68,7 @@
68
  }
69
 
70
  /**
71
- * @param Wbcr_FactoryForms418_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
@@ -116,7 +116,7 @@
116
  }
117
 
118
  /**
119
- * @param Wbcr_FactoryForms418_Control $control
120
  */
121
  public function afterControl($control)
122
  {
@@ -168,7 +168,7 @@
168
  }
169
 
170
  /**
171
- * @param Wbcr_FactoryForms418_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
@@ -193,7 +193,7 @@
193
  }
194
 
195
  /**
196
- * @param Wbcr_FactoryForms418_Control $control
197
  * @param int $index
198
  * @param int $total
199
  */
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms420_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
+ class Wbcr_FactoryForms420_Bootstrap3FormLayout extends Wbcr_FactoryForms420_FormLayout {
22
 
23
  public $name = 'default';
24
 
27
  *
28
  * @since 1.0.0
29
  * @param array $options A holder options.
30
+ * @param Wbcr_FactoryForms420_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
68
  }
69
 
70
  /**
71
+ * @param Wbcr_FactoryForms420_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
116
  }
117
 
118
  /**
119
+ * @param Wbcr_FactoryForms420_Control $control
120
  */
121
  public function afterControl($control)
122
  {
168
  }
169
 
170
  /**
171
+ * @param Wbcr_FactoryForms420_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
193
  }
194
 
195
  /**
196
+ * @param Wbcr_FactoryForms420_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_108_LOADED' ) ) {
18
  return;
19
  }
20
 
21
- define( 'FACTORY_FREEMIUS_108_VERSION', '1.0.8' );
22
 
23
- define( 'FACTORY_FREEMIUS_108_LOADED', true );
24
- define( 'FACTORY_FREEMIUS_108_DIR', dirname( __FILE__ ) );
25
- define( 'FACTORY_FREEMIUS_108_URL', plugins_url( null, __FILE__ ) );
26
 
27
  #comp merge
28
  // Freemius
29
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/entities/class-freemius-entity.php' );
30
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/entities/class-freemius-scope.php' );
31
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/entities/class-freemius-user.php' );
32
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/entities/class-freemius-site.php' );
33
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/entities/class-freemius-license.php' );
34
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/licensing/class-freemius-provider.php' );
35
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/updates/class-freemius-repository.php' );
36
 
37
  if ( ! class_exists( 'Freemius_Api_WordPress' ) ) {
38
- require_once FACTORY_FREEMIUS_108_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
- require_once( FACTORY_FREEMIUS_108_DIR . '/includes/class-freemius-api.php' );
42
 
43
  /**
44
- * @param Wbcr_Factory420_Plugin $plugin
45
  */
46
- add_action( 'wbcr_factory_freemius_108_plugin_created', function ( $plugin ) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
- $plugin->set_license_provider( 'freemius', 'WBCR\Factory_Freemius_108\Premium\Provider' );
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
- $plugin->set_update_repository( 'freemius', 'WBCR\Factory_Freemius_108\Updates\Freemius_Repository' );
51
  } );
52
  #endcomp
14
  exit;
15
  }
16
 
17
+ if ( defined( 'FACTORY_FREEMIUS_110_LOADED' ) ) {
18
  return;
19
  }
20
 
21
+ define( 'FACTORY_FREEMIUS_110_VERSION', '1.1.0' );
22
 
23
+ define( 'FACTORY_FREEMIUS_110_LOADED', true );
24
+ define( 'FACTORY_FREEMIUS_110_DIR', dirname( __FILE__ ) );
25
+ define( 'FACTORY_FREEMIUS_110_URL', plugins_url( null, __FILE__ ) );
26
 
27
  #comp merge
28
  // Freemius
29
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-entity.php' );
30
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-scope.php' );
31
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-user.php' );
32
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-site.php' );
33
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-license.php' );
34
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/licensing/class-freemius-provider.php' );
35
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/updates/class-freemius-repository.php' );
36
 
37
  if ( ! class_exists( 'Freemius_Api_WordPress' ) ) {
38
+ require_once FACTORY_FREEMIUS_110_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
+ require_once( FACTORY_FREEMIUS_110_DIR . '/includes/class-freemius-api.php' );
42
 
43
  /**
44
+ * @param Wbcr_Factory422_Plugin $plugin
45
  */
46
+ add_action( 'wbcr_factory_freemius_110_plugin_created', function ( $plugin ) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
+ $plugin->set_license_provider( 'freemius', 'WBCR\Factory_Freemius_110\Premium\Provider' );
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
+ $plugin->set_update_repository( 'freemius', 'WBCR\Factory_Freemius_110\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_108;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
- use Wbcr_Factory420_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
@@ -33,7 +33,7 @@ final class Api {
33
  private $api;
34
 
35
  /**
36
- * @var Wbcr_Factory420_Plugin
37
  */
38
  private $plugin;
39
 
@@ -48,14 +48,14 @@ final class Api {
48
  private static $clock_diff;
49
 
50
  /**
51
- * @param Wbcr_Factory420_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_Factory420_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_Factory420_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_Factory420_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_110;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
+ use Wbcr_Factory422_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
33
  private $api;
34
 
35
  /**
36
+ * @var Wbcr_Factory422_Plugin
37
  */
38
  private $plugin;
39
 
48
  private static $clock_diff;
49
 
50
  /**
51
+ * @param Wbcr_Factory422_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_Factory422_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_Factory422_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_Factory422_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_108\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\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_108\Entities;
4
 
5
  use stdClass;
6
 
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  * @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
15
  * @version 1.0
16
  */
17
- class License extends Entity implements \WBCR\Factory_420\Premium\Interfaces\License {
18
 
19
  /**
20
  * @var number
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\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_422\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_108\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\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_108\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\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_108\Entities;
4
 
5
  use stdClass;
6
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\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_108\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
libs/factory/freemius/includes/licensing/class-freemius-provider.php CHANGED
@@ -1,17 +1,16 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Freemius_108\Premium;
4
-
5
- use WBCR\Factory_Freemius_108\Entities\License;
6
- use WBCR\Factory_Freemius_108\Entities\Plugin;
7
- use WBCR\Factory_Freemius_108\Entities\Site;
8
- use WBCR\Factory_Freemius_108\Entities\User;
9
- use WBCR\Factory_420\Premium\Provider as License_Provider;
10
- use Wbcr_Factory420_Plugin;
11
- use WBCR\Factory_Freemius_108\Api;
12
  use WP_Error;
13
  use Exception;
14
- use stdClass;
15
 
16
  // Exit if accessed directly
17
  if ( ! defined( 'ABSPATH' ) ) {
@@ -19,8 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  }
20
 
21
  /**
22
- * @author Webcraftic <wordpress.webraftic@gmail.com>, Alex Kovalev <alex.kovalevv@gmail.com>
23
- * @link https://webcraftic.com
24
  * @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
25
  * @version 1.0
26
  */
@@ -42,17 +40,17 @@ final class Provider extends License_Provider {
42
  private $slug;
43
 
44
  /**
45
- * @var \WBCR\Factory_Freemius_108\Api
46
  */
47
  private $site_api;
48
 
49
  /**
50
- * @var \WBCR\Factory_Freemius_108\Api
51
  */
52
  private $plugin_api;
53
 
54
  /**
55
- * @var \WBCR\Factory_Freemius_108\Api
56
  */
57
  private $user_api;
58
 
@@ -84,11 +82,11 @@ final class Provider extends License_Provider {
84
  /**
85
  * Manager constructor.
86
  *
87
- * @param Wbcr_Factory420_Plugin $plugin
88
  *
89
  * @throws Exception
90
  */
91
- public function __construct( Wbcr_Factory420_Plugin $plugin, array $settings ) {
92
  parent::__construct( $plugin, $settings );
93
 
94
  $this->plugin_id = $this->get_setting( 'plugin_id', null );
@@ -147,7 +145,7 @@ final class Provider extends License_Provider {
147
  }
148
 
149
  /**
150
- * @return \WBCR\Factory_Freemius_108\Entities\License|null
151
  * @throws Exception
152
  */
153
  public function get_license() {
@@ -234,6 +232,8 @@ final class Provider extends License_Provider {
234
  }
235
 
236
  /**
 
 
237
  * @param string $key
238
  *
239
  * @return bool|mixed
@@ -335,18 +335,22 @@ final class Provider extends License_Provider {
335
  ];
336
 
337
  /**
338
- * @since 1.0.0
339
  *
340
- * @param string $plugin_name Имя плагина
 
341
  *
 
342
  * @param string $license_info Дополнительная информация о лицензии
343
  */
344
- do_action( 'wbcr/factory/license_activate', $license_info, $plugin_name );
345
 
346
  return true;
347
  }
348
 
349
  /**
 
 
350
  * @return bool
351
  * @throws \Freemius_Exception
352
  * @throws Exception
@@ -375,13 +379,15 @@ final class Provider extends License_Provider {
375
  $this->delete_license_data();
376
 
377
  /**
378
- * @since 1.0.0
379
  *
380
- * @param string $plugin_name Имя плагина
 
381
  *
 
382
  * @param string $license_info Дополнительная информация о лицензии
383
  */
384
- do_action( 'wbcr/factory/license_deactivate', $license_info, $plugin_name );
385
 
386
  return true;
387
  }
@@ -400,14 +406,22 @@ final class Provider extends License_Provider {
400
  $site_api = $this->get_api_site_scope( $this->license_site );
401
  $user_api = $this->get_api_user_scope( $this->license_user );
402
 
 
 
 
 
 
 
 
 
 
403
  $use_license_key = urlencode( $this->license->secret_key );
404
  $request_license_path = $this->get_license_endpoint( $this->license ) . '.json?license_key=' . $use_license_key;
405
  $request_license = $site_api->call( $request_license_path, 'GET' );
406
 
407
- $request_install_path = $this->get_plugin_endpoint() . '/installs.json?ids=' . $this->license_site->id;
408
- $request_installs = $user_api->call( $request_install_path, 'GET' );
409
-
410
- if ( $request_installs->installs[0]->license_id !== $this->license->id ) {
411
  $this->deactivate();
412
 
413
  return true;
@@ -430,6 +444,18 @@ final class Provider extends License_Provider {
430
  $this->license->populate( $request_license );
431
  $this->save_license_data();
432
 
 
 
 
 
 
 
 
 
 
 
 
 
433
  $plugin_name = $this->plugin->getPluginName();
434
  $license_info = [
435
  'provider' => 'freemius',
@@ -439,13 +465,14 @@ final class Provider extends License_Provider {
439
  ];
440
 
441
  /**
442
- * @since 1.0.0
443
  *
444
- * @param string $plugin_name Имя плагина
 
445
  *
446
  * @param string $license_info Дополнительная информация о лицензии
447
  */
448
- do_action( 'wbcr/factory/license_sync', $license_info, $plugin_name );
449
 
450
  return true;
451
  }
@@ -562,7 +589,7 @@ final class Provider extends License_Provider {
562
  /**
563
  * @param bool $flush
564
  *
565
- * @return \WBCR\Factory_Freemius_108\Api
566
  * @throws Exception
567
  */
568
  private function get_api_user_scope( User $user, $flush = false ) {
@@ -576,7 +603,7 @@ final class Provider extends License_Provider {
576
  /**
577
  * @param bool $flush
578
  *
579
- * @return \WBCR\Factory_Freemius_108\Api
580
  * @throws Exception
581
  */
582
  private function get_api_site_scope( Site $site, $flush = false ) {
@@ -590,7 +617,7 @@ final class Provider extends License_Provider {
590
  /**
591
  * Get plugin public API scope.
592
  *
593
- * @return \WBCR\Factory_Freemius_108\Api
594
  * @throws Exception
595
  */
596
  private function get_api_plugin_scope() {
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\Premium;
4
+
5
+ use WBCR\Factory_Freemius_110\Entities\License;
6
+ use WBCR\Factory_Freemius_110\Entities\Plugin;
7
+ use WBCR\Factory_Freemius_110\Entities\Site;
8
+ use WBCR\Factory_Freemius_110\Entities\User;
9
+ use WBCR\Factory_422\Premium\Provider as License_Provider;
10
+ use Wbcr_Factory422_Plugin;
11
+ use WBCR\Factory_Freemius_110\Api;
12
  use WP_Error;
13
  use Exception;
 
14
 
15
  // Exit if accessed directly
16
  if ( ! defined( 'ABSPATH' ) ) {
18
  }
19
 
20
  /**
21
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
 
22
  * @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
23
  * @version 1.0
24
  */
40
  private $slug;
41
 
42
  /**
43
+ * @var \WBCR\Factory_Freemius_110\Api
44
  */
45
  private $site_api;
46
 
47
  /**
48
+ * @var \WBCR\Factory_Freemius_110\Api
49
  */
50
  private $plugin_api;
51
 
52
  /**
53
+ * @var \WBCR\Factory_Freemius_110\Api
54
  */
55
  private $user_api;
56
 
82
  /**
83
  * Manager constructor.
84
  *
85
+ * @param Wbcr_Factory422_Plugin $plugin
86
  *
87
  * @throws Exception
88
  */
89
+ public function __construct( Wbcr_Factory422_Plugin $plugin, array $settings ) {
90
  parent::__construct( $plugin, $settings );
91
 
92
  $this->plugin_id = $this->get_setting( 'plugin_id', null );
145
  }
146
 
147
  /**
148
+ * @return \WBCR\Factory_Freemius_110\Entities\License|null
149
  * @throws Exception
150
  */
151
  public function get_license() {
232
  }
233
 
234
  /**
235
+ * Активирует лицензицию
236
+ *
237
  * @param string $key
238
  *
239
  * @return bool|mixed
335
  ];
336
 
337
  /**
338
+ * Дейтсвие сработает после того, как лицензия будет успешно активирована
339
  *
340
+ * @since 1.0.9 Изменил имя хука на {$plugin_name}/factory/premium/license_activate
341
+ * @since 1.0.0 Добавлен
342
  *
343
+ * @param string $provider Провайдер лицензии
344
  * @param string $license_info Дополнительная информация о лицензии
345
  */
346
+ do_action( "{$plugin_name}/factory/premium/license_activate", 'freemius', $license_info );
347
 
348
  return true;
349
  }
350
 
351
  /**
352
+ * Деактивирует лицензию
353
+ *
354
  * @return bool
355
  * @throws \Freemius_Exception
356
  * @throws Exception
379
  $this->delete_license_data();
380
 
381
  /**
382
+ * Дейтсвие сработает после того, как лицензия будет успешно деактивирована
383
  *
384
+ * @since 1.0.9 Изменил имя хука на {$plugin_name}/factory/premium/license_deactivate
385
+ * @since 1.0.0 Добавлен
386
  *
387
+ * @param string $provider Провайдер лицензии
388
  * @param string $license_info Дополнительная информация о лицензии
389
  */
390
+ do_action( "{$plugin_name}/factory/premium/license_deactivate", 'freemius', $license_info );
391
 
392
  return true;
393
  }
406
  $site_api = $this->get_api_site_scope( $this->license_site );
407
  $user_api = $this->get_api_user_scope( $this->license_user );
408
 
409
+ $request_install = $site_api->call( '/', 'GET' );
410
+
411
+ // Если установка не найдена или неактивна, деактивируем лицензию
412
+ if ( isset( $request_install->error ) || ! ( isset( $request_install->is_active ) && $request_install->is_active ) ) {
413
+ $this->deactivate();
414
+
415
+ return true;
416
+ }
417
+
418
  $use_license_key = urlencode( $this->license->secret_key );
419
  $request_license_path = $this->get_license_endpoint( $this->license ) . '.json?license_key=' . $use_license_key;
420
  $request_license = $site_api->call( $request_license_path, 'GET' );
421
 
422
+ // Если лицензия не найдена или неактивна или тарифный план не совпадает с текущей установкой,
423
+ // деактивируем лицензию.
424
+ if ( isset( $request_license->error ) || ! ( isset( $request_license->plan_id ) && $request_license->plan_id == $request_install->plan_id ) ) {
 
425
  $this->deactivate();
426
 
427
  return true;
444
  $this->license->populate( $request_license );
445
  $this->save_license_data();
446
 
447
+ // Обновляем информацию о сайте и сервере пользователя
448
+ $site_api->call( '/', 'put', [
449
+ 'id' => $this->license_site->id,
450
+ 'uid' => $this->get_unique_site_id(),
451
+ 'plugin_version' => $this->plugin->getPluginVersion(),
452
+ 'language' => get_bloginfo( 'language' ),
453
+ 'charset' => get_bloginfo( 'charset' ),
454
+ 'platform_version' => get_bloginfo( 'version' ),
455
+ 'sdk_version' => '2.2.3',
456
+ 'programming_language_version' => phpversion()
457
+ ] );
458
+
459
  $plugin_name = $this->plugin->getPluginName();
460
  $license_info = [
461
  'provider' => 'freemius',
465
  ];
466
 
467
  /**
468
+ * Выполняется, когда синхронизация завершена успешно, без деактивации
469
  *
470
+ * @since 1.0.9 Изменил имя хука на {$plugin_name}/factory/premium/license_sync
471
+ * @since 1.0.0 Добавлен
472
  *
473
  * @param string $license_info Дополнительная информация о лицензии
474
  */
475
+ do_action( "{$plugin_name}/factory/premium/license_sync", $license_info );
476
 
477
  return true;
478
  }
589
  /**
590
  * @param bool $flush
591
  *
592
+ * @return \WBCR\Factory_Freemius_110\Api
593
  * @throws Exception
594
  */
595
  private function get_api_user_scope( User $user, $flush = false ) {
603
  /**
604
  * @param bool $flush
605
  *
606
+ * @return \WBCR\Factory_Freemius_110\Api
607
  * @throws Exception
608
  */
609
  private function get_api_site_scope( Site $site, $flush = false ) {
617
  /**
618
  * Get plugin public API scope.
619
  *
620
+ * @return \WBCR\Factory_Freemius_110\Api
621
  * @throws Exception
622
  */
623
  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_108\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
- use Wbcr_Factory420_Plugin;
8
- use WBCR\Factory_420\Updates\Repository;
9
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  class Freemius_Repository extends Repository {
21
 
22
  /**
23
- * @var \WBCR\Factory_Freemius_108\Premium\Provider
24
  */
25
  private $premium;
26
 
@@ -28,11 +28,11 @@ class Freemius_Repository extends Repository {
28
  * Freemius constructor.
29
  * @since 4.0.0
30
  *
31
- * @param Wbcr_Factory420_Plugin $plugin
32
  *
33
  * @throws Exception
34
  */
35
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
36
  $this->plugin = $plugin;
37
  $this->premium = $this->plugin->premium;
38
  }
@@ -41,7 +41,7 @@ class Freemius_Repository extends Repository {
41
  * @throws Exception
42
  */
43
  public function init() {
44
- if ( ! $this->premium instanceof \WBCR\Factory_Freemius_108\Premium\Provider ) {
45
  throw new Exception( "This repository type requires Freemius premium provider." );
46
  }
47
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_Freemius_110\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
+ use Wbcr_Factory422_Plugin;
8
+ use WBCR\Factory_422\Updates\Repository;
9
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
20
  class Freemius_Repository extends Repository {
21
 
22
  /**
23
+ * @var \WBCR\Factory_Freemius_110\Premium\Provider
24
  */
25
  private $premium;
26
 
28
  * Freemius constructor.
29
  * @since 4.0.0
30
  *
31
+ * @param Wbcr_Factory422_Plugin $plugin
32
  *
33
  * @throws Exception
34
  */
35
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
36
  $this->plugin = $plugin;
37
  $this->premium = $this->plugin->premium;
38
  }
41
  * @throws Exception
42
  */
43
  public function init() {
44
+ if ( ! $this->premium instanceof \WBCR\Factory_Freemius_110\Premium\Provider ) {
45
  throw new Exception( "This repository type requires Freemius premium provider." );
46
  }
47
 
libs/factory/pages/boot.php CHANGED
@@ -19,25 +19,25 @@ if ( ! is_admin() ) {
19
  return;
20
  }
21
 
22
- if ( defined( 'FACTORY_PAGES_420_LOADED' ) ) {
23
  return;
24
  }
25
 
26
- define( 'FACTORY_PAGES_420_LOADED', true );
27
 
28
- define( 'FACTORY_PAGES_420_VERSION', '4.2.0' );
29
 
30
- define( 'FACTORY_PAGES_420_DIR', dirname( __FILE__ ) );
31
- define( 'FACTORY_PAGES_420_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_420', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
38
 
39
- require( FACTORY_PAGES_420_DIR . '/pages.php' );
40
- require( FACTORY_PAGES_420_DIR . '/includes/page.class.php' );
41
- require( FACTORY_PAGES_420_DIR . '/includes/admin-page.class.php' );
42
- require( FACTORY_PAGES_420_DIR . '/templates/impressive-page.class.php' );
43
 
19
  return;
20
  }
21
 
22
+ if ( defined( 'FACTORY_PAGES_422_LOADED' ) ) {
23
  return;
24
  }
25
 
26
+ define( 'FACTORY_PAGES_422_LOADED', true );
27
 
28
+ define( 'FACTORY_PAGES_422_VERSION', '4.2.2' );
29
 
30
+ define( 'FACTORY_PAGES_422_DIR', dirname( __FILE__ ) );
31
+ define( 'FACTORY_PAGES_422_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_422', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
38
 
39
+ require( FACTORY_PAGES_422_DIR . '/pages.php' );
40
+ require( FACTORY_PAGES_422_DIR . '/includes/page.class.php' );
41
+ require( FACTORY_PAGES_422_DIR . '/includes/admin-page.class.php' );
42
+ require( FACTORY_PAGES_422_DIR . '/templates/impressive-page.class.php' );
43
 
libs/factory/pages/includes/admin-page.class.php CHANGED
@@ -14,9 +14,9 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
18
 
19
- class Wbcr_FactoryPages420_AdminPage extends Wbcr_FactoryPages420_Page {
20
 
21
  /**
22
  * Visible page title.
@@ -209,7 +209,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
209
  */
210
  public $add_link_to_plugin_actions = false;
211
 
212
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
213
  parent::__construct( $plugin );
214
  $this->configure();
215
 
@@ -316,13 +316,13 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
316
  public function connect() {
317
  $result_id = $this->getResultId();
318
 
319
- $this->hidden = apply_filters( 'wbcr_factory_420_page_is_hidden_' . $result_id, $this->hidden );
320
 
321
  if ( $this->hidden ) {
322
  return;
323
  }
324
 
325
- $this->internal = apply_filters( 'wbcr_factory_420_page_is_internal_' . $result_id, $this->internal );
326
 
327
  if ( $this->internal ) {
328
  $this->menu_target = null;
@@ -361,7 +361,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
361
  $this->assets( $this->scripts, $this->styles );
362
 
363
  if ( ! $this->scripts->isEmpty( 'bootstrap' ) || ! $this->styles->isEmpty( 'bootstrap' ) ) {
364
- add_action( 'wbcr_factory_420_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
365
  $this,
366
  'actionAdminBootstrapScripts'
367
  ] );
@@ -490,8 +490,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
490
  if ( preg_match( '/\\\f\d{3}/', $this->menu_icon ) ) {
491
  $icon_code = $this->menu_icon;
492
  } else {
493
- $plugin_path_info = $this->plugin->getPluginPathInfo();
494
- $icon_url = str_replace( '~/', $plugin_path_info->plugin_url . '/', $this->menu_icon );
495
  }
496
  }
497
 
14
  exit;
15
  }
16
 
17
+ if ( ! class_exists( 'Wbcr_FactoryPages422_AdminPage' ) ) {
18
 
19
+ class Wbcr_FactoryPages422_AdminPage extends Wbcr_FactoryPages422_Page {
20
 
21
  /**
22
  * Visible page title.
209
  */
210
  public $add_link_to_plugin_actions = false;
211
 
212
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
213
  parent::__construct( $plugin );
214
  $this->configure();
215
 
316
  public function connect() {
317
  $result_id = $this->getResultId();
318
 
319
+ $this->hidden = apply_filters( 'wbcr_factory_422_page_is_hidden_' . $result_id, $this->hidden );
320
 
321
  if ( $this->hidden ) {
322
  return;
323
  }
324
 
325
+ $this->internal = apply_filters( 'wbcr_factory_422_page_is_internal_' . $result_id, $this->internal );
326
 
327
  if ( $this->internal ) {
328
  $this->menu_target = null;
361
  $this->assets( $this->scripts, $this->styles );
362
 
363
  if ( ! $this->scripts->isEmpty( 'bootstrap' ) || ! $this->styles->isEmpty( 'bootstrap' ) ) {
364
+ add_action( 'wbcr_factory_422_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
365
  $this,
366
  'actionAdminBootstrapScripts'
367
  ] );
490
  if ( preg_match( '/\\\f\d{3}/', $this->menu_icon ) ) {
491
  $icon_code = $this->menu_icon;
492
  } else {
493
+ $icon_url = str_replace( '~/', $this->plugin->get_paths()->url . '/', $this->menu_icon );
 
494
  }
495
  }
496
 
libs/factory/pages/includes/page.class.php CHANGED
@@ -14,9 +14,9 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- if ( ! class_exists( 'Wbcr_FactoryPages420_Page' ) ) {
18
 
19
- class Wbcr_FactoryPages420_Page {
20
 
21
 
22
  /**
@@ -30,7 +30,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_Page' ) ) {
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
- * @see FactoryPages420_AdminPage
34
  *
35
  * @var string
36
  */
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_Page' ) ) {
39
  /**
40
  * Current Factory Plugin.
41
  *
42
- * @var Wbcr_Factory420_Plugin
43
  */
44
  public $plugin;
45
 
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_Page' ) ) {
51
  //private $default_actions = array();
52
 
53
  /**
54
- * @param Wbcr_Factory420_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
59
  $this->plugin = $plugin;
60
 
61
  if ( $plugin ) {
@@ -111,7 +111,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_Page' ) ) {
111
 
112
  if ( ! method_exists( $this, $actionFunction ) ) {
113
  // todo: продумать и доработать выполнение произвольных и глобальных дейтсвия для всех страниц
114
- /*$custom_actions = apply_filters('wbcr/factory_pages_420/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_FactoryPages422_Page' ) ) {
18
 
19
+ class Wbcr_FactoryPages422_Page {
20
 
21
 
22
  /**
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
+ * @see FactoryPages422_AdminPage
34
  *
35
  * @var string
36
  */
39
  /**
40
  * Current Factory Plugin.
41
  *
42
+ * @var Wbcr_Factory422_Plugin
43
  */
44
  public $plugin;
45
 
51
  //private $default_actions = array();
52
 
53
  /**
54
+ * @param Wbcr_Factory422_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
+ public function __construct( Wbcr_Factory422_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_422/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_420-fr_FR.mo → wbcr_factory_pages_422-fr_FR.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_420-fr_FR.po → wbcr_factory_pages_422-fr_FR.po} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.mo → wbcr_factory_pages_422-ru_RU.mo} RENAMED
File without changes
libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.po → wbcr_factory_pages_422-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_FactoryPages420::actionAdminMenu');
18
- add_action('network_admin_menu', 'Wbcr_FactoryPages420::actionAdminMenu');
19
 
20
- if( !class_exists('Wbcr_FactoryPages420') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
- class Wbcr_FactoryPages420 {
27
 
28
  /**
29
- * @var Wbcr_FactoryPages420_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
- * @param Wbcr_Factory420_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_Factory420_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_Factory420_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_420_get_page_id') ) {
97
  /**
98
  *
99
- * @param Wbcr_Factory420_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
- function wbcr_factory_pages_420_get_page_id($plugin, $page_id)
104
  {
105
  return $page_id . '-' . $plugin->getPluginName();
106
  }
14
  exit;
15
  }
16
 
17
+ add_action('admin_menu', 'Wbcr_FactoryPages422::actionAdminMenu');
18
+ add_action('network_admin_menu', 'Wbcr_FactoryPages422::actionAdminMenu');
19
 
20
+ if( !class_exists('Wbcr_FactoryPages422') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
+ class Wbcr_FactoryPages422 {
27
 
28
  /**
29
+ * @var Wbcr_FactoryPages422_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
+ * @param Wbcr_Factory422_Plugin $plugin
35
  * @param $class_name
36
  */
37
  public static function register($plugin, $class_name)
59
  }
60
  }
61
 
62
+ public static function getPageUrl(Wbcr_Factory422_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_Factory422_Plugin $plugin
79
  * @return array
80
  */
81
  public static function getIds($plugin)
93
  }
94
  }
95
 
96
+ if( !function_exists('wbcr_factory_pages_422_get_page_id') ) {
97
  /**
98
  *
99
+ * @param Wbcr_Factory422_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
+ function wbcr_factory_pages_422_get_page_id($plugin, $page_id)
104
  {
105
  return $page_id . '-' . $plugin->getPluginName();
106
  }
libs/factory/pages/templates/assets/css/impressive.page.template.css CHANGED
@@ -8,7 +8,7 @@
8
  #WBCR .error {
9
  display: none !important;
10
  }
11
- #WBCR .wbcr-factory-pages-420-impressive-page-template {
12
  position: relative;
13
  /**
14
  Content sections
@@ -17,134 +17,134 @@
17
  Widget in the sidebar of the plugin
18
  */
19
  }
20
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-color-grey {
21
  color: #9a9a9a;
22
  }
23
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-orange-color {
24
  color: #ffc107;
25
  }
26
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-light-orange-color {
27
  color: #ffeb3b;
28
  }
29
- #WBCR .wbcr-factory-pages-420-impressive-page-template .form-group {
30
  padding: 0 20px;
31
  }
32
- #WBCR .wbcr-factory-pages-420-impressive-page-template .form-group label {
33
  font-weight: normal;
34
  }
35
- #WBCR .wbcr-factory-pages-420-impressive-page-template .form-horizontal .control-label {
36
  max-width: 300px;
37
  }
38
- #WBCR .wbcr-factory-pages-420-impressive-page-template .factory-control-buttons {
39
  text-align: right;
40
  padding-right: 20px;
41
  }
42
- #WBCR .wbcr-factory-pages-420-impressive-page-template .factory-from-control-list label span {
43
  display: inline-block;
44
  vertical-align: bottom;
45
  }
46
- #WBCR .wbcr-factory-pages-420-impressive-page-template .factory-from-control-list label span input[type="checkbox"],
47
- #WBCR .wbcr-factory-pages-420-impressive-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
48
  outline: none;
49
  }
50
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert {
51
  font-weight: bold;
52
  margin: 0 !important;
53
  border: 0;
54
  border-radius: 0;
55
  padding: 15px;
56
  }
57
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert + .wbcr-factory-page-group-header {
58
  margin-top: 0 !important;
59
  }
60
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert.alert-warning {
61
  background: #fff3d0;
62
  }
63
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert.alert-warning:nth-child(2n+1) {
64
  background: #fffde9;
65
  }
66
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert.alert-danger {
67
  background: #de716d;
68
  }
69
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert.alert-danger:nth-child(2n+1) {
70
  background: #ec8c89;
71
  }
72
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert.alert-success {
73
  background: #d0ecc4;
74
  }
75
- #WBCR .wbcr-factory-pages-420-impressive-page-template .alert.alert-success:nth-child(2n+1) {
76
  background: #e0eadb;
77
  }
78
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-header {
79
  padding: 20px 20px 40px;
80
  }
81
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-recomended-text {
82
  display: block;
83
  font-size: 11px;
84
  font-weight: lighter;
85
  color: #179347;
86
  }
87
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-options,
88
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page {
89
  position: relative;
90
  background: #e6e6e6;
91
  overflow: hidden;
92
  }
93
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-options:after,
94
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page:after {
95
  display: block;
96
  content: '';
97
  clear: both;
98
  }
99
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-group-header {
100
  background: #efefef;
101
  padding: 20px 0 10px 20px;
102
  margin: 30px 0;
103
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
104
  }
105
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-group-header:first-child {
106
  margin-top: 0;
107
  }
108
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-group-header strong {
109
  font-size: 15px;
110
  }
111
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-group-header p {
112
  color: #8c8888;
113
  font-size: 12px;
114
  }
115
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap {
116
  margin-left: 230px;
117
  padding: 80px 0 0 0;
118
  vertical-align: top;
119
  background: #fff;
120
  }
121
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
122
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
123
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
124
  border: 0;
125
  }
126
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-active {
127
  background: #efefef !important;
128
  margin-bottom: -2px !important;
129
  border-bottom: 1px solid #efefef !important;
130
  }
131
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:first-child {
132
  margin: 0;
133
  }
134
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:hover {
135
  background: #f7f7f7;
136
  }
137
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab {
138
  border: 2px solid #dedede;
139
  border-bottom: 0;
140
  box-shadow: -1px 0 0 rgba(0, 0, 0, 0.1);
141
  }
142
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:active,
143
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:focus {
144
  box-shadow: none;
145
  outline: none;
146
  }
147
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header {
148
  position: absolute;
149
  z-index: 13;
150
  top: 0;
@@ -155,7 +155,7 @@
155
  color: #fff;
156
  border-radius: 5px 5px 0 0;
157
  }
158
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo {
159
  float: left;
160
  padding: 25px 0;
161
  font-size: 20px;
@@ -168,11 +168,11 @@
168
  margin-right: 10px;
169
  background: none;
170
  }
171
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title {
172
  display: inline-block;
173
  vertical-align: middle;
174
  }
175
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title h2 {
176
  font-size: 18px;
177
  line-height: 30px;
178
  font-weight: 300;
@@ -183,12 +183,12 @@
183
  text-overflow: ellipsis;
184
  color: #fff;
185
  }
186
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-control {
187
  position: relative;
188
  float: right;
189
  margin: 12px;
190
  }
191
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button {
192
  display: inline-block;
193
  vertical-align: top;
194
  font-size: 13px;
@@ -211,49 +211,49 @@
211
  text-decoration: none;
212
  z-index: 3;
213
  }
214
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save {
215
  box-shadow: none;
216
  min-width: 100px;
217
  background-color: #8bc34a;
218
  color: #fff;
219
  }
220
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:hover {
221
  background: #9dbb7b;
222
  color: #fff;
223
  }
224
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:active {
225
  box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
226
  }
227
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings {
228
  box-shadow: none;
229
  min-width: 200px;
230
  background-color: #9e9e9e;
231
  color: #fff;
232
  }
233
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:hover {
234
  background: #797979;
235
  color: #fff;
236
  }
237
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:active {
238
  box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
239
  }
240
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar {
241
  float: left;
242
  vertical-align: top;
243
  width: 230px;
244
  background: #e6e6e6;
245
  }
246
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul {
247
  padding: 0;
248
  margin-bottom: 0;
249
  margin-top: 80px;
250
  }
251
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab {
252
  display: block;
253
  background: #efefef;
254
  margin: 1px 0;
255
  }
256
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link {
257
  display: block;
258
  width: 100%;
259
  padding: 20px 20px;
@@ -264,83 +264,83 @@
264
  text-align: left;
265
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
266
  }
267
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__title {
268
  display: block;
269
  font-weight: bold;
270
  }
271
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__short-description {
272
  display: block;
273
  font-size: 13px;
274
  font-weight: normal;
275
  text-transform: none;
276
  color: #9a9a9a;
277
  }
278
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .dashicons {
279
  float: right;
280
  color: #ccc;
281
  }
282
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link::after {
283
  clear: both;
284
  }
285
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover {
286
  background: #f7f6f6;
287
  }
288
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover .dashicons {
289
  color: #9a9a9a;
290
  }
291
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link,
292
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
293
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover,
294
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
295
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:focus {
296
  outline: 0 !important;
297
  box-shadow: none !important;
298
  }
299
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab {
300
  background: #fff;
301
  }
302
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a {
303
  color: #ff5722;
304
  font-weight: bold;
305
  border-left: 5px solid #ff5722;
306
  }
307
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a .dashicons {
308
  color: #9a9a9a;
309
  }
310
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section,
311
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-right-sidebar-section {
312
  display: inline-block;
313
  vertical-align: top;
314
  }
315
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section {
316
  width: 74.6%;
317
  }
318
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section.wbcr-fullwidth {
319
  width: 100%;
320
  }
321
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section .nav-tab-wrapper {
322
  margin-top: 15px;
323
  }
324
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content {
325
  background: #f7f7f7;
326
  padding: 0 0 20px 0;
327
  border: 1px solid #dad8d8;
328
  box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
329
  }
330
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content > form {
331
  padding-top: 0 !important;
332
  }
333
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-right-sidebar-section {
334
  width: 25%;
335
  padding: 10px;
336
  margin: 0 0 -20px;
337
  background-color: #f9f9f9;
338
  box-shadow: -1px 1px 5px rgba(0, 0, 0, 0.1);
339
  }
340
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-sidebar-widget {
341
  margin: 0 0 20px;
342
  }
343
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget {
344
  display: inline-block;
345
  min-height: 230px;
346
  width: 100%;
@@ -349,19 +349,19 @@
349
  padding: 20px 15px;
350
  vertical-align: top;
351
  }
352
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-hide {
353
  display: none;
354
  }
355
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-warning {
356
  background: #fff4d0;
357
  }
358
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-danger {
359
  background: #e2ffc0;
360
  }
361
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-success {
362
  background: #ffebe9;
363
  }
364
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-hint-icon-simple {
365
  display: inline-block;
366
  width: 16px;
367
  height: 16px;
@@ -373,16 +373,16 @@
373
  background: #E91E63;
374
  border-radius: 3px;
375
  }
376
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-grey {
377
  background: #E91E63;
378
  }
379
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-red {
380
  background: #9e9e9e;
381
  }
382
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-green {
383
  background: #8bc34a;
384
  }
385
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-icon-5stars {
386
  display: block;
387
  width: 80px;
388
  height: 17px;
@@ -390,23 +390,23 @@
390
  vertical-align: middle;
391
  margin-bottom: 5px;
392
  }
393
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] {
394
  display: block;
395
  margin: 30px auto 0;
396
  outline: none;
397
  }
398
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :focus,
399
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :active {
400
  box-shadow: none;
401
  }
402
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form .wbcr-factory-donation-price {
403
  font-size: 50px;
404
  margin-top: 30px;
405
  text-align: center;
406
  font-weight: 600;
407
  color: #8BC34A;
408
  }
409
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box {
410
  min-height: 240px;
411
  margin-bottom: 20px;
412
  text-align: center;
@@ -414,24 +414,24 @@
414
  padding: 30px;
415
  border: 1px solid #f3f1e7;
416
  }
417
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box .dashicons {
418
  width: 50px;
419
  height: 50px;
420
  font-size: 50px;
421
  color: #FFC107;
422
  line-height: normal;
423
  }
424
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
425
  color: #7b6111;
426
  }
427
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box p {
428
  color: #9e9e9e;
429
  }
430
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-buttons-wrap {
431
  margin-top: 20px;
432
  text-align: center;
433
  }
434
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button {
435
  display: inline-block;
436
  padding: 20px 60px;
437
  background-color: #FFC107;
@@ -441,67 +441,67 @@
441
  font-weight: bold;
442
  transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
443
  }
444
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button:hover {
445
  background-color: #ffce3a;
446
  }
447
- #WBCR .wbcr-factory-pages-420-impressive-page-template #wbcr-factory-confirm-dialog {
448
  padding: 20px;
449
  background: #ffffff;
450
  }
451
- #WBCR .wbcr-factory-pages-420-impressive-page-template #wbcr-factory-confirm-dialog .updated,
452
- #WBCR .wbcr-factory-pages-420-impressive-page-template #wbcr-factory-confirm-dialog .alert {
453
  display: none;
454
  }
455
- #WBCR .wbcr-factory-pages-420-impressive-page-template #wbcr-factory-confirm-dialog h2 {
456
  font-size: 18px;
457
  margin-top: 10px;
458
  }
459
- #WBCR .wbcr-factory-pages-420-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-description {
460
  padding: 10px;
461
  background: #ffedeb;
462
  border: 1px solid #ffdfdc;
463
  margin: 15px 0;
464
  }
465
- #WBCR .wbcr-factory-pages-420-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-hint {
466
  margin-bottom: 15px;
467
  color: #7b7b7b;
468
  }
469
  @media screen and (max-width: 1367px) {
470
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section {
471
  width: 69.6%;
472
  }
473
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-right-sidebar-section {
474
  width: 30%;
475
  }
476
  }
477
  @media screen and (max-width: 1320px) {
478
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-content-section {
479
  width: 100%;
480
  }
481
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-right-sidebar-section {
482
  display: none !important;
483
  }
484
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-header-logo .dash {
485
  display: none !important;
486
  }
487
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-header-title {
488
  display: none !important;
489
  }
490
  }
491
  @media screen and (max-width: 950px) {
492
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar {
493
  width: 70px;
494
  }
495
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab a {
496
  font-size: 0;
497
  }
498
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__title {
499
  font-size: 0;
500
  }
501
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__short-description {
502
  display: none !important;
503
  }
504
- #WBCR .wbcr-factory-pages-420-impressive-page-template .wbcr-factory-page-inner-wrap {
505
  margin-left: 70px;
506
  }
507
  }
8
  #WBCR .error {
9
  display: none !important;
10
  }
11
+ #WBCR .wbcr-factory-pages-422-impressive-page-template {
12
  position: relative;
13
  /**
14
  Content sections
17
  Widget in the sidebar of the plugin
18
  */
19
  }
20
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-color-grey {
21
  color: #9a9a9a;
22
  }
23
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-orange-color {
24
  color: #ffc107;
25
  }
26
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-light-orange-color {
27
  color: #ffeb3b;
28
  }
29
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .form-group {
30
  padding: 0 20px;
31
  }
32
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .form-group label {
33
  font-weight: normal;
34
  }
35
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .form-horizontal .control-label {
36
  max-width: 300px;
37
  }
38
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .factory-control-buttons {
39
  text-align: right;
40
  padding-right: 20px;
41
  }
42
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .factory-from-control-list label span {
43
  display: inline-block;
44
  vertical-align: bottom;
45
  }
46
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .factory-from-control-list label span input[type="checkbox"],
47
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
48
  outline: none;
49
  }
50
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert {
51
  font-weight: bold;
52
  margin: 0 !important;
53
  border: 0;
54
  border-radius: 0;
55
  padding: 15px;
56
  }
57
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert + .wbcr-factory-page-group-header {
58
  margin-top: 0 !important;
59
  }
60
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-warning {
61
  background: #fff3d0;
62
  }
63
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-warning:nth-child(2n+1) {
64
  background: #fffde9;
65
  }
66
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-danger {
67
  background: #de716d;
68
  }
69
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-danger:nth-child(2n+1) {
70
  background: #ec8c89;
71
  }
72
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-success {
73
  background: #d0ecc4;
74
  }
75
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-success:nth-child(2n+1) {
76
  background: #e0eadb;
77
  }
78
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-header {
79
  padding: 20px 20px 40px;
80
  }
81
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-recomended-text {
82
  display: block;
83
  font-size: 11px;
84
  font-weight: lighter;
85
  color: #179347;
86
  }
87
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-options,
88
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page {
89
  position: relative;
90
  background: #e6e6e6;
91
  overflow: hidden;
92
  }
93
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-options:after,
94
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page:after {
95
  display: block;
96
  content: '';
97
  clear: both;
98
  }
99
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header {
100
  background: #efefef;
101
  padding: 20px 0 10px 20px;
102
  margin: 30px 0;
103
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
104
  }
105
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header:first-child {
106
  margin-top: 0;
107
  }
108
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header strong {
109
  font-size: 15px;
110
  }
111
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header p {
112
  color: #8c8888;
113
  font-size: 12px;
114
  }
115
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap {
116
  margin-left: 230px;
117
  padding: 80px 0 0 0;
118
  vertical-align: top;
119
  background: #fff;
120
  }
121
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
122
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
123
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
124
  border: 0;
125
  }
126
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-active {
127
  background: #efefef !important;
128
  margin-bottom: -2px !important;
129
  border-bottom: 1px solid #efefef !important;
130
  }
131
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:first-child {
132
  margin: 0;
133
  }
134
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:hover {
135
  background: #f7f7f7;
136
  }
137
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab {
138
  border: 2px solid #dedede;
139
  border-bottom: 0;
140
  box-shadow: -1px 0 0 rgba(0, 0, 0, 0.1);
141
  }
142
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:active,
143
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:focus {
144
  box-shadow: none;
145
  outline: none;
146
  }
147
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header {
148
  position: absolute;
149
  z-index: 13;
150
  top: 0;
155
  color: #fff;
156
  border-radius: 5px 5px 0 0;
157
  }
158
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo {
159
  float: left;
160
  padding: 25px 0;
161
  font-size: 20px;
168
  margin-right: 10px;
169
  background: none;
170
  }
171
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title {
172
  display: inline-block;
173
  vertical-align: middle;
174
  }
175
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title h2 {
176
  font-size: 18px;
177
  line-height: 30px;
178
  font-weight: 300;
183
  text-overflow: ellipsis;
184
  color: #fff;
185
  }
186
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-control {
187
  position: relative;
188
  float: right;
189
  margin: 12px;
190
  }
191
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button {
192
  display: inline-block;
193
  vertical-align: top;
194
  font-size: 13px;
211
  text-decoration: none;
212
  z-index: 3;
213
  }
214
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save {
215
  box-shadow: none;
216
  min-width: 100px;
217
  background-color: #8bc34a;
218
  color: #fff;
219
  }
220
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:hover {
221
  background: #9dbb7b;
222
  color: #fff;
223
  }
224
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:active {
225
  box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
226
  }
227
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings {
228
  box-shadow: none;
229
  min-width: 200px;
230
  background-color: #9e9e9e;
231
  color: #fff;
232
  }
233
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:hover {
234
  background: #797979;
235
  color: #fff;
236
  }
237
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:active {
238
  box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
239
  }
240
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar {
241
  float: left;
242
  vertical-align: top;
243
  width: 230px;
244
  background: #e6e6e6;
245
  }
246
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul {
247
  padding: 0;
248
  margin-bottom: 0;
249
  margin-top: 80px;
250
  }
251
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab {
252
  display: block;
253
  background: #efefef;
254
  margin: 1px 0;
255
  }
256
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link {
257
  display: block;
258
  width: 100%;
259
  padding: 20px 20px;
264
  text-align: left;
265
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
266
  }
267
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__title {
268
  display: block;
269
  font-weight: bold;
270
  }
271
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__short-description {
272
  display: block;
273
  font-size: 13px;
274
  font-weight: normal;
275
  text-transform: none;
276
  color: #9a9a9a;
277
  }
278
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .dashicons {
279
  float: right;
280
  color: #ccc;
281
  }
282
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link::after {
283
  clear: both;
284
  }
285
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover {
286
  background: #f7f6f6;
287
  }
288
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover .dashicons {
289
  color: #9a9a9a;
290
  }
291
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link,
292
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
293
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover,
294
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
295
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:focus {
296
  outline: 0 !important;
297
  box-shadow: none !important;
298
  }
299
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab {
300
  background: #fff;
301
  }
302
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a {
303
  color: #ff5722;
304
  font-weight: bold;
305
  border-left: 5px solid #ff5722;
306
  }
307
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a .dashicons {
308
  color: #9a9a9a;
309
  }
310
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section,
311
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
312
  display: inline-block;
313
  vertical-align: top;
314
  }
315
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section {
316
  width: 74.6%;
317
  }
318
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section.wbcr-fullwidth {
319
  width: 100%;
320
  }
321
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section .nav-tab-wrapper {
322
  margin-top: 15px;
323
  }
324
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content {
325
  background: #f7f7f7;
326
  padding: 0 0 20px 0;
327
  border: 1px solid #dad8d8;
328
  box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
329
  }
330
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content > form {
331
  padding-top: 0 !important;
332
  }
333
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
334
  width: 25%;
335
  padding: 10px;
336
  margin: 0 0 -20px;
337
  background-color: #f9f9f9;
338
  box-shadow: -1px 1px 5px rgba(0, 0, 0, 0.1);
339
  }
340
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-sidebar-widget {
341
  margin: 0 0 20px;
342
  }
343
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget {
344
  display: inline-block;
345
  min-height: 230px;
346
  width: 100%;
349
  padding: 20px 15px;
350
  vertical-align: top;
351
  }
352
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-hide {
353
  display: none;
354
  }
355
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-warning {
356
  background: #fff4d0;
357
  }
358
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-danger {
359
  background: #e2ffc0;
360
  }
361
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-success {
362
  background: #ffebe9;
363
  }
364
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-hint-icon-simple {
365
  display: inline-block;
366
  width: 16px;
367
  height: 16px;
373
  background: #E91E63;
374
  border-radius: 3px;
375
  }
376
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-grey {
377
  background: #E91E63;
378
  }
379
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-red {
380
  background: #9e9e9e;
381
  }
382
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-green {
383
  background: #8bc34a;
384
  }
385
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-icon-5stars {
386
  display: block;
387
  width: 80px;
388
  height: 17px;
390
  vertical-align: middle;
391
  margin-bottom: 5px;
392
  }
393
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] {
394
  display: block;
395
  margin: 30px auto 0;
396
  outline: none;
397
  }
398
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :focus,
399
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :active {
400
  box-shadow: none;
401
  }
402
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form .wbcr-factory-donation-price {
403
  font-size: 50px;
404
  margin-top: 30px;
405
  text-align: center;
406
  font-weight: 600;
407
  color: #8BC34A;
408
  }
409
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box {
410
  min-height: 240px;
411
  margin-bottom: 20px;
412
  text-align: center;
414
  padding: 30px;
415
  border: 1px solid #f3f1e7;
416
  }
417
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box .dashicons {
418
  width: 50px;
419
  height: 50px;
420
  font-size: 50px;
421
  color: #FFC107;
422
  line-height: normal;
423
  }
424
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
425
  color: #7b6111;
426
  }
427
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box p {
428
  color: #9e9e9e;
429
  }
430
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-buttons-wrap {
431
  margin-top: 20px;
432
  text-align: center;
433
  }
434
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button {
435
  display: inline-block;
436
  padding: 20px 60px;
437
  background-color: #FFC107;
441
  font-weight: bold;
442
  transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
443
  }
444
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button:hover {
445
  background-color: #ffce3a;
446
  }
447
+ #WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog {
448
  padding: 20px;
449
  background: #ffffff;
450
  }
451
+ #WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .updated,
452
+ #WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .alert {
453
  display: none;
454
  }
455
+ #WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog h2 {
456
  font-size: 18px;
457
  margin-top: 10px;
458
  }
459
+ #WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-description {
460
  padding: 10px;
461
  background: #ffedeb;
462
  border: 1px solid #ffdfdc;
463
  margin: 15px 0;
464
  }
465
+ #WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-hint {
466
  margin-bottom: 15px;
467
  color: #7b7b7b;
468
  }
469
  @media screen and (max-width: 1367px) {
470
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section {
471
  width: 69.6%;
472
  }
473
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
474
  width: 30%;
475
  }
476
  }
477
  @media screen and (max-width: 1320px) {
478
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section {
479
  width: 100%;
480
  }
481
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
482
  display: none !important;
483
  }
484
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-header-logo .dash {
485
  display: none !important;
486
  }
487
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-header-title {
488
  display: none !important;
489
  }
490
  }
491
  @media screen and (max-width: 950px) {
492
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar {
493
  width: 70px;
494
  }
495
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab a {
496
  font-size: 0;
497
  }
498
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__title {
499
  font-size: 0;
500
  }
501
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__short-description {
502
  display: none !important;
503
  }
504
+ #WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap {
505
  margin-left: 70px;
506
  }
507
  }
libs/factory/pages/templates/impressive-page.class.php CHANGED
@@ -14,11 +14,11 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
18
  /**
19
- * Class Wbcr_FactoryPages420_ImpressiveThemplate
20
  */
21
- abstract class Wbcr_FactoryPages420_ImpressiveThemplate extends Wbcr_FactoryPages420_AdminPage {
22
 
23
  /**
24
  * Тип страницы:
@@ -112,11 +112,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
112
  public $page_menu = [];
113
 
114
  /**
115
- * @param Wbcr_Factory420_Plugin $plugin
116
  */
117
- public function __construct( Wbcr_Factory420_Plugin $plugin ) {
118
- $this->menuIcon = FACTORY_PAGES_420_URL . '/templates/assets/img/webcraftic-plugin-icon.png';
119
- //$allow_multisite = apply_filters('wbcr_factory_420_core_admin_allow_multisite', false);
120
 
121
  if ( is_multisite() && $this->available_for_multisite && $plugin->isNetworkActive() ) {
122
  $this->network = true;
@@ -126,7 +126,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
126
 
127
  parent::__construct( $plugin );
128
 
129
- $this->title_plugin_action_link = __( 'Settings', 'wbcr_factory_pages_420' );
130
 
131
  $this->setPageMenu();
132
  }
@@ -170,7 +170,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
170
  *
171
  * @since 1.0.0
172
  * @return void
173
- * @see FactoryPages420_AdminPage
174
  *
175
  */
176
  public function assets( $scripts, $styles ) {
@@ -191,7 +191,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
191
  'control.checkbox'
192
  ], 'bootstrap' );
193
 
194
- $this->styles->add( FACTORY_PAGES_420_URL . '/templates/assets/css/impressive.page.template.css' );
195
  }
196
 
197
  /**
@@ -204,7 +204,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
204
  * @since 4.0.8 - добавлен
205
  * @since 4.0.9 - является устаревшим
206
  */
207
- $plugin_title = wbcr_factory_420_apply_filters_deprecated( 'wbcr/factory/imppage/plugin_title', [
208
  $this->plugin->getPluginTitle(),
209
  $this->plugin->getPluginName()
210
  ], '4.0.9', 'wbcr/factory/pages/impressive/plugin_title' );
@@ -287,15 +287,15 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
287
  /**
288
  * @since 4.0.1 - является устаревшим
289
  */
290
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_imppage_flush_cache', [
291
  $this->plugin->getPluginName(),
292
  $this->getResultId()
293
- ], '4.0.1', 'wbcr_factory_420_imppage_after_form_save' );
294
 
295
  /**
296
  * @since 4.0.9 - является устаревшим
297
  */
298
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_imppage_after_form_save', [
299
  $this->plugin,
300
  $this
301
  ], '4.0.9', 'wbcr/factory/pages/impressive/after_form_save' );
@@ -314,7 +314,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
314
  /**
315
  * @since 4.0.9 - является устаревшим
316
  */
317
- $redirect_args = wbcr_factory_420_apply_filters_deprecated( 'wbcr_factory_420_imppage_after_form_save_redirect_args', [ $redirect_args ], '4.0.9', 'wbcr/factory/pages/impressive/save_redirect_args' );
318
 
319
  /**
320
  * @since 4.0.1 - добавлен
@@ -331,7 +331,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
331
  */
332
  protected function warningNotice() {
333
  /*if( WP_CACHE ) {
334
- $this->printWarningNotice(__("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'wbcr_factory_pages_420'));
335
  }*/
336
  // Метод предназначен для вызова в дочернем классе
337
  }
@@ -403,7 +403,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
403
  /**
404
  * @since 4.0.9 - является устаревшим
405
  */
406
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_pages_420_imppage_print_all_notices', [
407
  $this->plugin,
408
  $this
409
  ], '4.0.9', 'wbcr/factory/pages/impressive/print_all_notices' );
@@ -422,14 +422,14 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
422
  $this->plugin->getPluginName() . '_saved' => '1'
423
  ],
424
  'type' => 'success',
425
- 'message' => __( 'The settings have been updated successfully!', 'wbcr_factory_pages_420' ) . ( WP_CACHE ? '<br>' . __( "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'wbcr_factory_pages_420' ) : '' )
426
  ]
427
  ];
428
 
429
  /**
430
  * @since 4.0.9 - является устаревшим
431
  */
432
- $notices = wbcr_factory_420_apply_filters_deprecated( 'wbcr_factory_pages_420_imppage_actions_notice', [
433
  $notices,
434
  $this->plugin,
435
  $this->id
@@ -601,7 +601,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
601
  <?php do_action( 'wbcr/factory/pages/impressive/header', $this->plugin->getPluginName() ) ?>
602
 
603
  <?php if ( $this->type == 'options' ): ?>
604
- <input name="<?= $this->plugin->getPluginName() ?>_save_action" class="wbcr-factory-button wbcr-factory-type-save" type="submit" value="<?php _e( 'Save', 'wbcr_factory_pages_420' ); ?>">
605
  <?php wp_nonce_field( 'wbcr_factory_' . $this->getResultId() . '_save_action' ); ?>
606
  <?php endif; ?>
607
  </div>
@@ -656,7 +656,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
656
  /**
657
  * @since 4.0.9 - является устаревшим
658
  */
659
- $widgets = wbcr_factory_420_apply_filters_deprecated( 'wbcr_factory_pages_420_imppage_get_widgets', [
660
  $widgets,
661
  $position,
662
  $this->plugin,
@@ -673,12 +673,12 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
673
  }
674
 
675
  protected function showOptions() {
676
- $form = new Wbcr_FactoryForms418_Form( [
677
  'scope' => rtrim( $this->plugin->getPrefix(), '_' ),
678
  'name' => $this->getResultId() . "-options"
679
  ], $this->plugin );
680
 
681
- $form->setProvider( new Wbcr_FactoryForms418_OptionsValueProvider( $this->plugin ) );
682
 
683
  $options = $this->getPageOptions();
684
 
@@ -718,14 +718,14 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
718
  check_admin_referer( 'wbcr_factory_' . $this->getResultId() . '_save_action' );
719
 
720
  if ( ! current_user_can( 'administrator' ) && ! current_user_can( $this->capabilitiy ) ) {
721
- wp_die( __( 'You do not have permission to edit page.', 'wbcr_factory_pages_420' ) );
722
  exit;
723
  }
724
 
725
  /**
726
  * @since 4.0.9 - является устаревшим
727
  */
728
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_imppage_before_form_save', [
729
  $form,
730
  $this->plugin,
731
  $this
@@ -744,7 +744,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
744
  /**
745
  * @since 4.0.9 - является устаревшим
746
  */
747
- wbcr_factory_420_do_action_deprecated( 'wbcr_factory_420_imppage_form_saved', [
748
  $form,
749
  $this->plugin,
750
  $this
@@ -765,7 +765,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
765
 
766
  ?>
767
  <div id="WBCR" class="wrap">
768
- <div class="wbcr-factory-pages-420-impressive-page-template factory-bootstrap-421 factory-fontawesome-000">
769
  <div class="wbcr-factory-options wbcr-factory-options-<?= esc_attr( $this->id ) ?>">
770
  <div class="wbcr-factory-left-navigation-bar">
771
  <?php $this->showPageMenu() ?>
@@ -810,7 +810,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
810
 
811
  protected function showPage( $content = null ) { ?>
812
  <div id="WBCR" class="wrap">
813
- <div class="wbcr-factory-pages-420-impressive-page-template factory-bootstrap-421 factory-fontawesome-000">
814
  <div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
815
  <?php $this->showHeader(); ?>
816
  <div class="wbcr-factory-left-navigation-bar">
@@ -873,7 +873,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
873
  public function confirmPageTemplate( $data ) {
874
  ?>
875
  <div id="WBCR" class="wrap">
876
- <div class="wbcr-factory-pages-420-impressive-page-template factory-bootstrap-421 factory-fontawesome-000">
14
  exit;
15
  }
16
 
17
+ if ( ! class_exists( 'Wbcr_FactoryPages422_ImpressiveThemplate' ) ) {
18
  /**
19
+ * Class Wbcr_FactoryPages422_ImpressiveThemplate
20
  */
21
+ abstract class Wbcr_FactoryPages422_ImpressiveThemplate extends Wbcr_FactoryPages422_AdminPage {
22
 
23
  /**
24
  * Тип страницы:
112
  public $page_menu = [];
113
 
114
  /**
115
+ * @param Wbcr_Factory422_Plugin $plugin
116
  */
117
+ public function __construct( Wbcr_Factory422_Plugin $plugin ) {
118
+ $this->menuIcon = FACTORY_PAGES_422_URL . '/templates/assets/img/webcraftic-plugin-icon.png';
119
+ //$allow_multisite = apply_filters('wbcr_factory_422_core_admin_allow_multisite', false);
120
 
121
  if ( is_multisite() && $this->available_for_multisite && $plugin->isNetworkActive() ) {
122
  $this->network = true;
126
 
127
  parent::__construct( $plugin );
128
 
129
+ $this->title_plugin_action_link = __( 'Settings', 'wbcr_factory_pages_422' );
130
 
131
  $this->setPageMenu();
132
  }
170
  *
171
  * @since 1.0.0
172
  * @return void
173
+ * @see FactoryPages422_AdminPage
174
  *
175
  */
176
  public function assets( $scripts, $styles ) {
191
  'control.checkbox'
192
  ], 'bootstrap' );
193
 
194
+ $this->styles->add( FACTORY_PAGES_422_URL . '/templates/assets/css/impressive.page.template.css' );
195
  }
196
 
197
  /**
204
  * @since 4.0.8 - добавлен
205
  * @since 4.0.9 - является устаревшим
206
  */
207
+ $plugin_title = wbcr_factory_422_apply_filters_deprecated( 'wbcr/factory/imppage/plugin_title', [
208
  $this->plugin->getPluginTitle(),
209
  $this->plugin->getPluginName()
210
  ], '4.0.9', 'wbcr/factory/pages/impressive/plugin_title' );
287
  /**
288
  * @since 4.0.1 - является устаревшим
289
  */
290
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_flush_cache', [
291
  $this->plugin->getPluginName(),
292
  $this->getResultId()
293
+ ], '4.0.1', 'wbcr_factory_422_imppage_after_form_save' );
294
 
295
  /**
296
  * @since 4.0.9 - является устаревшим
297
  */
298
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_after_form_save', [
299
  $this->plugin,
300
  $this
301
  ], '4.0.9', 'wbcr/factory/pages/impressive/after_form_save' );
314
  /**
315
  * @since 4.0.9 - является устаревшим
316
  */
317
+ $redirect_args = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_422_imppage_after_form_save_redirect_args', [ $redirect_args ], '4.0.9', 'wbcr/factory/pages/impressive/save_redirect_args' );
318
 
319
  /**
320
  * @since 4.0.1 - добавлен
331
  */
332
  protected function warningNotice() {
333
  /*if( WP_CACHE ) {
334
+ $this->printWarningNotice(__("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'wbcr_factory_pages_422'));
335
  }*/
336
  // Метод предназначен для вызова в дочернем классе
337
  }
403
  /**
404
  * @since 4.0.9 - является устаревшим
405
  */
406
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_pages_422_imppage_print_all_notices', [
407
  $this->plugin,
408
  $this
409
  ], '4.0.9', 'wbcr/factory/pages/impressive/print_all_notices' );
422
  $this->plugin->getPluginName() . '_saved' => '1'
423
  ],
424
  'type' => 'success',
425
+ 'message' => __( 'The settings have been updated successfully!', 'wbcr_factory_pages_422' ) . ( WP_CACHE ? '<br>' . __( "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'wbcr_factory_pages_422' ) : '' )
426
  ]
427
  ];
428
 
429
  /**
430
  * @since 4.0.9 - является устаревшим
431
  */
432
+ $notices = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_pages_422_imppage_actions_notice', [
433
  $notices,
434
  $this->plugin,
435
  $this->id
601
  <?php do_action( 'wbcr/factory/pages/impressive/header', $this->plugin->getPluginName() ) ?>
602
 
603
  <?php if ( $this->type == 'options' ): ?>
604
+ <input name="<?= $this->plugin->getPluginName() ?>_save_action" class="wbcr-factory-button wbcr-factory-type-save" type="submit" value="<?php _e( 'Save', 'wbcr_factory_pages_422' ); ?>">
605
  <?php wp_nonce_field( 'wbcr_factory_' . $this->getResultId() . '_save_action' ); ?>
606
  <?php endif; ?>
607
  </div>
656
  /**
657
  * @since 4.0.9 - является устаревшим
658
  */
659
+ $widgets = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_pages_422_imppage_get_widgets', [
660
  $widgets,
661
  $position,
662
  $this->plugin,
673
  }
674
 
675
  protected function showOptions() {
676
+ $form = new Wbcr_FactoryForms420_Form( [
677
  'scope' => rtrim( $this->plugin->getPrefix(), '_' ),
678
  'name' => $this->getResultId() . "-options"
679
  ], $this->plugin );
680
 
681
+ $form->setProvider( new Wbcr_FactoryForms420_OptionsValueProvider( $this->plugin ) );
682
 
683
  $options = $this->getPageOptions();
684
 
718
  check_admin_referer( 'wbcr_factory_' . $this->getResultId() . '_save_action' );
719
 
720
  if ( ! current_user_can( 'administrator' ) && ! current_user_can( $this->capabilitiy ) ) {
721
+ wp_die( __( 'You do not have permission to edit page.', 'wbcr_factory_pages_422' ) );
722
  exit;
723
  }
724
 
725
  /**
726
  * @since 4.0.9 - является устаревшим
727
  */
728
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_before_form_save', [
729
  $form,
730
  $this->plugin,
731
  $this
744
  /**
745
  * @since 4.0.9 - является устаревшим
746
  */
747
+ wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_form_saved', [
748
  $form,
749
  $this->plugin,
750
  $this
765
 
766
  ?>
767
  <div id="WBCR" class="wrap">
768
+ <div class="wbcr-factory-pages-422-impressive-page-template factory-bootstrap-423 factory-fontawesome-000">
769
  <div class="wbcr-factory-options wbcr-factory-options-<?= esc_attr( $this->id ) ?>">
770
  <div class="wbcr-factory-left-navigation-bar">
771
  <?php $this->showPageMenu() ?>
810
 
811
  protected function showPage( $content = null ) { ?>
812
  <div id="WBCR" class="wrap">
813
+ <div class="wbcr-factory-pages-422-impressive-page-template factory-bootstrap-423 factory-fontawesome-000">
814
  <div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
815
  <?php $this->showHeader(); ?>
816
  <div class="wbcr-factory-left-navigation-bar">
873
  public function confirmPageTemplate( $data ) {
874
  ?>
875
  <div id="WBCR" class="wrap">
876
+ <div class="wbcr-factory