Auto Post Thumbnail - Version 3.7.0

Version Description

  • Added: Automatically generation an image for each post from the post title and sets it as the featured image
  • Added: Settings for featured image generation
  • Added: Support for Wordpress mobile apps (automatic add featured image when creating/updating a post)
  • Redesigned Settings page
  • Fixed: "Metadata error" when trying to download an image from photobank
  • Fixed: In some cases the plugin did not find images in the post text
  • Fixed: (PRO) In the automatic generation filter, you can select a custom post type if it is displayed on the frontend
  • Many other minor changes and bugfixes
Download this release

Release Info

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

Code changes from version 3.5.1 to 3.7.0

Files changed (145) hide show
  1. admin/assets/css/settings.css +128 -0
  2. admin/assets/css/style.css +71 -12
  3. admin/assets/css/tabs.css +221 -0
  4. admin/assets/img/api-icon.png +0 -0
  5. admin/assets/img/apt.svg +13 -13
  6. admin/assets/img/bg.jpg +0 -0
  7. admin/assets/img/image-icon.png +0 -0
  8. admin/assets/img/premium_filter.png +0 -0
  9. admin/assets/img/selected.png +0 -0
  10. admin/assets/img/settings-icon.png +0 -0
  11. admin/assets/img/transparent.png +0 -0
  12. admin/assets/jquery-ui/jquery-ui.min.css +6 -6
  13. admin/assets/jquery-ui/jquery-ui.progressbar.min.js +5 -5
  14. admin/assets/js/admin-thumbnail.js +18 -5
  15. admin/assets/js/check-api.js +48 -0
  16. admin/assets/js/jscolor.js +1855 -0
  17. admin/assets/js/settings.js +11 -0
  18. admin/assets/js/upload-font.js +68 -0
  19. admin/class-wapt-activation.php +10 -2
  20. admin/class-wapt-page.php +8 -3
  21. admin/pages/generate.php +1 -1
  22. admin/pages/license.php +4 -4
  23. admin/pages/settings.php +365 -10
  24. admin/views/pro.php +1 -1
  25. admin/views/pro_column.php +1 -1
  26. admin/views/sources/google.php +40 -27
  27. admin/views/tab-about.php +198 -34
  28. admin/views/tab-license.php +23 -23
  29. admin/views/tab-main.php +159 -56
  30. admin/views/tab-settings.php +137 -39
  31. auto-post-thumbnail.php +9 -7
  32. fonts/Arial.ttf +0 -0
  33. fonts/Segoeui.ttf +0 -0
  34. fonts/Tahoma.ttf +0 -0
  35. includes/class-wapt-base.php +621 -75
  36. includes/class-wapt-image.php +450 -0
  37. includes/class-wapt-plugin.php +43 -33
  38. includes/controls/class.color.php +56 -0
  39. includes/controls/class.fonts.php +93 -0
  40. includes/controls/class.mediabutton.php +109 -0
  41. languages/apt-en_US.mo +0 -0
  42. languages/apt-en_US.po +407 -165
  43. languages/apt-ru_RU.mo +0 -0
  44. languages/apt-ru_RU.po +624 -249
  45. languages/apt.pot +602 -166
  46. libs/factory/adverts/boot.php +12 -12
  47. libs/factory/adverts/includes/class-base.php +6 -6
  48. libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
  49. libs/factory/adverts/includes/class-rest-request.php +8 -8
  50. libs/factory/adverts/langs/wbcr_factory_adverts_106-ru_RU.mo +0 -0
  51. libs/factory/adverts/langs/wbcr_factory_adverts_106-ru_RU.po +83 -0
  52. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
  53. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
  54. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
  55. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
  56. libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +1 -1
  57. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
  58. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
  59. libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +1 -1
  60. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
  61. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
  62. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
  63. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
  64. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
  65. libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +1 -1
  66. libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +1 -1
  67. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
  68. libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +1 -1
  69. libs/factory/bootstrap/assets/css-min/control.color.min.css +1 -1
  70. libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +1 -1
  71. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
  72. libs/factory/bootstrap/assets/css-min/control.fonts.min.css +1 -1
  73. libs/factory/bootstrap/assets/css-min/control.list.min.css +1 -1
  74. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
  75. libs/factory/bootstrap/assets/css-min/control.pattern.min.css +1 -1
  76. libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +1 -1
  77. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
  78. libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +1 -1
  79. libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +1 -1
  80. libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +1 -1
  81. libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +1 -1
  82. libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +1 -1
  83. libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
  84. libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js +1 -1
  85. libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
  86. libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js +1 -1
  87. libs/factory/bootstrap/assets/js-min/control.color.min.js +1 -1
  88. libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js +1 -1
  89. libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
  90. libs/factory/bootstrap/assets/js-min/control.fonts.min.js +1 -1
  91. libs/factory/bootstrap/assets/js-min/control.gradient.min.js +1 -1
  92. libs/factory/bootstrap/assets/js-min/control.integer.min.js +1 -1
  93. libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
  94. libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
  95. libs/factory/bootstrap/assets/js-min/control.pattern.min.js +1 -1
  96. libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +1 -1
  97. libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js +1 -1
  98. libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +1 -1
  99. libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js +1 -1
  100. libs/factory/bootstrap/boot.php +9 -9
  101. libs/factory/bootstrap/includes/functions.php +13 -63
  102. libs/factory/core/boot.php +27 -27
  103. libs/factory/core/includes/activation/class-factory-activator.php +3 -3
  104. libs/factory/core/includes/activation/class-factory-update.php +3 -3
  105. libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
  106. libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
  107. libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
  108. libs/factory/core/includes/class-check-compatibility.php +2 -2
  109. libs/factory/core/includes/class-factory-migrations.php +13 -13
  110. libs/factory/core/includes/class-factory-notices.php +6 -6
  111. libs/factory/core/includes/class-factory-options.php +2 -2
  112. libs/factory/core/includes/class-factory-plugin-abstract.php +100 -84
  113. libs/factory/core/includes/class-factory-plugin-base.php +25 -25
  114. libs/factory/core/includes/class-factory-requests.php +1 -1
  115. libs/factory/core/includes/class-factory-requirements.php +5 -5
  116. libs/factory/core/includes/entities/class-factory-paths.php +1 -1
  117. libs/factory/core/includes/entities/class-factory-support.php +1 -1
  118. libs/factory/core/includes/functions.php +7 -7
  119. libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
  120. libs/factory/core/includes/premium/class-factory-manager.php +10 -10
  121. libs/factory/core/includes/premium/class-factory-provider-abstract.php +6 -6
  122. libs/factory/core/includes/updates/class-factory-premium-upgrader.php +36 -22
  123. libs/factory/core/includes/updates/class-factory-upgrader.php +9 -9
  124. libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php +5 -5
  125. libs/factory/core/includes/updates/repositories/class-factory-wordpress.php +4 -4
  126. libs/factory/core/langs/wbcr_factory_425-ru_RU.mo +0 -0
  127. libs/factory/core/langs/wbcr_factory_425-ru_RU.po +128 -0
  128. libs/factory/feedback/README.md +23 -0
  129. libs/factory/feedback/assets/css/dialog-boxes.css +674 -0
  130. libs/factory/feedback/assets/js/deactivate-feedback.js +140 -0
  131. libs/factory/feedback/boot.php +47 -0
  132. libs/factory/feedback/includes/class-base.php +162 -0
  133. libs/factory/feedback/includes/class-rest-request.php +117 -0
  134. libs/factory/feedback/includes/index.php +2 -0
  135. libs/factory/feedback/index.php +2 -0
  136. libs/factory/feedback/views/deactivate-form.php +86 -0
  137. libs/factory/forms/boot.php +103 -103
  138. libs/factory/forms/controls/checkbox.php +4 -4
  139. libs/factory/forms/controls/color-and-opacity.php +4 -4
  140. libs/factory/forms/controls/color.php +2 -2
  141. libs/factory/forms/controls/customs/html.php +2 -2
  142. libs/factory/forms/controls/customs/separator.php +2 -2
  143. libs/factory/forms/controls/datepicker-range.php +4 -4
  144. libs/factory/forms/controls/dropdown-and-colors.php +6 -6
  145. libs/factory/forms/controls/dropdown.php +4 -4
admin/assets/css/settings.css ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .wapt-footer
2
+ {
3
+ padding: 0px 30px;
4
+ }
5
+ .factory-bootstrap-426 .factory-ajax-loader {
6
+ width: 120px !important;
7
+ background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
8
+ background-size: contain !important;
9
+ display: block;
10
+ position: absolute;
11
+ left: 20px;
12
+ top: 5px;
13
+ }
14
+ .factory-bootstrap-426 select.form-control
15
+ {
16
+ display: inline;
17
+ background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
18
+ background-size: 16px 16px !important;
19
+ }
20
+
21
+ .factory-from-control-integer input
22
+ {
23
+ width: 80px;
24
+ font-size: 16px !important;
25
+ }
26
+ .factory-bootstrap-426 .btn-default.active, .factory-bootstrap-426 .btn-default:active
27
+ {
28
+ text-shadow: none;
29
+ color: #fff !important;
30
+ background-color: #33aad5 !important;
31
+ -webkit-box-shadow: 0 1px 1px #0074a2 !important;
32
+ box-shadow: 0 1px 3px #0074a2 !important;
33
+ border-top: 1px solid;
34
+ border-bottom: 1px solid;
35
+ border-left: 1px solid;
36
+ border-color: #0074a2 !important;
37
+ }
38
+ div.control-group input, div.control-group select
39
+ {
40
+ box-shadow: 1px 1px 5px -2px #8e8d8d !important;
41
+ border: 1px solid #ccc !important;
42
+ }
43
+ select#wapt_font {border-radius: 3px 0px 0px 3px !important;}
44
+ div.control-group select optgroup
45
+ {
46
+ background-color: #e4e4e4;
47
+ }
48
+
49
+ div.control-group .btn-group
50
+ {
51
+ border: 0 !important;
52
+ }
53
+ .factory-control-text-align-vertical .btn
54
+ {
55
+ width: 60%;
56
+ display: block !important;
57
+ border-radius: 0 !important;
58
+ }
59
+
60
+ .wapt-image-preview-title
61
+ {
62
+ text-align: center;
63
+ vertical-align: middle;
64
+ }
65
+ .wapt-image-preview
66
+ {
67
+ background-color: #e8e8e8;
68
+ padding: 10px 20px 30px 20px;
69
+ }
70
+ .wapt-image-preview img
71
+ {
72
+ padding: 5px;
73
+ border: 1px solid #ccc !important;
74
+ border-radius: 5px !important;
75
+ box-shadow: 1px 1px 5px -2px #8e8d8d !important;
76
+ }
77
+ .wapt-form-color
78
+ {
79
+ background-color: #f1f1f1;
80
+ }
81
+ span.wapt-icon-pro,
82
+ .wapt-icon-pro input[class*="factory-"]:before,
83
+ .wapt-icon-pro button.factory-image:after,
84
+ .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after
85
+ {
86
+ display: inline-block;
87
+ position: absolute;
88
+ content: 'PRO';
89
+ background: #ff5722;
90
+ border-radius: 4px;
91
+ color: #fff;
92
+ font-size: 10px;
93
+ line-height: 1;
94
+ font-style: normal;
95
+ padding: 4px 6px;
96
+ margin-left: 4px;
97
+ vertical-align: top;
98
+ top: -10px;
99
+ left: auto;
100
+ right: -15px;
101
+ z-index: 11;
102
+ }
103
+ .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after
104
+ {
105
+ position: initial;
106
+ }
107
+ .wapt-icon-pro input[class*="factory-"] ~ span.factory-units:before
108
+ {
109
+ right: auto;
110
+ left: 0;
111
+ }
112
+ span.wapt-icon-pro
113
+ {
114
+ position: initial;
115
+ }
116
+ .wapt-icon-pro input[class*="factory-"],
117
+ .wapt-icon-pro button[class*="factory-"],
118
+ .wapt-icon-pro button[class*="wapt"],
119
+ .wapt-icon-pro img,
120
+ .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button
121
+ {
122
+ pointer-events: none;
123
+ cursor: not-allowed;
124
+ opacity: .65;
125
+ filter: alpha(opacity=65);
126
+ -webkit-box-shadow: none !important;
127
+ box-shadow: none !important;
128
+ }
admin/assets/css/style.css CHANGED
@@ -69,29 +69,53 @@
69
  {
70
  width: 100px;
71
  }
72
- #apt_thumbid2
73
  {
74
  float: left;
75
  margin: 5px;
76
- cursor: pointer;
77
- border-radius: 5px;
78
  }
79
  .column-apt
80
  {
81
  float: left;
82
  margin: 5px;
83
  }
84
- .img
85
  {
 
 
 
 
86
  border-radius: 5px;
87
- box-shadow: 1px 1px 5px 0px rgba(0,0,0,0.5);
88
- }
89
- .checked-img
90
- {
91
- border: 3px solid #0079a9;
92
- border-radius: 5px;
93
- box-shadow: 1px 1px 5px 0px rgba(0,0,0,0.5);
94
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  input
96
  {
97
  padding:7px 7px 7px 9px;
@@ -151,4 +175,39 @@ input
151
  {
152
  font-weight: bold;
153
  color: red;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  }
69
  {
70
  width: 100px;
71
  }
72
+ .apt_thumbs
73
  {
74
  float: left;
75
  margin: 5px;
 
 
76
  }
77
  .column-apt
78
  {
79
  float: left;
80
  margin: 5px;
81
  }
82
+ .wapt-image-box
83
  {
84
+ overflow: hidden;
85
+ display: flex;
86
+ width: 100%;
87
+ height: 100%;
88
  border-radius: 5px;
89
+ box-shadow: 1px 1px 5px 0px rgba(0,0,0,0.2);
90
+ border: 1px solid #ccc;
91
+ }
92
+ .wapt-item-generated
93
+ {
94
+ color: #000000;
95
+ font-weight: 500;
96
+ font-size: 16px;
97
+ text-align: center;
98
+ margin: auto;
99
+ padding: 0 15px;
100
+ line-height: 1.3;
101
+ }
102
+
103
+ li.wapt-grid-item
104
+ {
105
+ width: 180px;
106
+ height: 180px;
107
+ cursor: pointer;
108
+ }
109
+ .wapt-grid-item {
110
+ float: left;
111
+ margin: 5px;
112
+ }
113
+ .wapt-image-box-checked
114
+ {
115
+ opacity: 0.5;
116
+ filter: alpha(opacity=50); /* For IE8 and earlier */
117
+ box-shadow: inset 0 0 1px 5px #0073aa, inset 0 0 2px 7px #fff;
118
+ }
119
  input
120
  {
121
  padding:7px 7px 7px 9px;
175
  {
176
  font-weight: bold;
177
  color: red;
178
+ }
179
+ /*Filters block*/
180
+ .apt-filter-row
181
+ {
182
+ background: #ffffff;
183
+ padding: 20px 10px 20px 10px;
184
+ margin: 10px 0px 10px 0px !important;
185
+ border: 1px solid #0085ba;
186
+ border-radius: 10px;
187
+ }
188
+
189
+ .apt-filter-input
190
+ {
191
+ width: 150px;
192
+ }
193
+
194
+ .apt-filter-label
195
+ {
196
+ font-size: 15px;
197
+ margin-top: 5px;
198
+ margin-left: 5px;
199
+ margin-right: 5px;
200
+ }
201
+
202
+ .checked_api_key_ok
203
+ {
204
+ border: 2px solid green !important;
205
+ }
206
+ .checked_api_key_fail
207
+ {
208
+ border: 2px solid red !important;
209
+ }
210
+ .checked_api_key_proccess
211
+ {
212
+ background: #fff url('../img/ajax-loader.gif') 98%/25px no-repeat !important;
213
  }
admin/assets/css/tabs.css ADDED
@@ -0,0 +1,221 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #wpcontent
2
+ {
3
+ padding-left: 0 !important;
4
+ background-color: white !important;
5
+ }
6
+ #wpbody-content
7
+ {
8
+ /*height: 100vh;*/
9
+ }
10
+ a:active, a:focus {
11
+ outline: none !important;
12
+ box-shadow: none !important;
13
+ }
14
+ .wis-container {
15
+ /*padding: 0px 30px 0px 10px;*/
16
+ padding: 1px 0 0 0;
17
+ background-color: #ffffff;
18
+ }
19
+ .tabs {
20
+ position: relative;
21
+ width: 100%;
22
+ overflow: hidden;
23
+ margin: 1em 0 2em;
24
+ font-weight: 400;
25
+ }
26
+
27
+ /* Nav */
28
+ .tabs nav {
29
+ text-align: left;
30
+ margin-bottom: -4px;
31
+ }
32
+
33
+ .tabs nav ul {
34
+ padding: 0;
35
+ margin: 0;
36
+ list-style: none;
37
+ display: inline-block;
38
+ margin-left: 25px;
39
+ }
40
+
41
+ .tabs nav ul li {
42
+ border: 1px solid #ccc;
43
+ border-bottom: none;
44
+ border-top-left-radius: 10px;
45
+ border-top-right-radius: 10px;
46
+ border-bottom-right-radius: 0px;
47
+ border-bottom-left-radius: 0px;
48
+ margin: 0 0.25em;
49
+ display: block;
50
+ float: left;
51
+ position: relative;
52
+ width: 20em;
53
+ background-color: #f1f1f1;
54
+ }
55
+ .tabs nav ul li:hover {
56
+ background-color: white;
57
+ }
58
+ .tabs nav li.tab-current {
59
+ border: 1px solid #006303;
60
+ box-shadow: inset 0px 5px 4px -3px #ff7600;
61
+ border-top-left-radius: 10px;
62
+ border-top-right-radius: 10px;
63
+ border-bottom-right-radius: 0px;
64
+ border-bottom-left-radius: 0px;
65
+ border-bottom: none;
66
+ z-index: 100;
67
+ background-color: #f1f1f1;
68
+ }
69
+
70
+ .tabs nav li.tab-current:before,
71
+ .tabs nav li.tab-current:after {
72
+ content: '';
73
+ position: absolute;
74
+ height: 1px;
75
+ right: 100%;
76
+ bottom: 0;
77
+ width: 1000px;
78
+ background: #006303;
79
+ }
80
+
81
+ .tabs nav li.tab-current:after {
82
+ right: auto;
83
+ left: 100%;
84
+ width: 4000px;
85
+ }
86
+
87
+ .tabs nav a {
88
+ color: #becbd2;
89
+ display: block;
90
+ font-size: 1.45em;
91
+ line-height: 2.5;
92
+ padding: 0 1.25em;
93
+ white-space: nowrap;
94
+ }
95
+
96
+ .tabs nav a:hover {
97
+ color: #006303;
98
+ }
99
+
100
+ .tabs nav li.tab-current a {
101
+ color: #006303;
102
+ font-weight: bold;
103
+ outline: none !important;
104
+ }
105
+
106
+ /* Icons */
107
+ .tabs nav a:before {
108
+ display: inline-block;
109
+ vertical-align: middle;
110
+ text-transform: none;
111
+ font-weight: normal;
112
+ font-variant: normal;
113
+ line-height: 1;
114
+ speak: none;
115
+ -webkit-font-smoothing: antialiased;
116
+ margin: -0.25em 0.4em 0 0;
117
+ }
118
+
119
+ .icon-general:before {
120
+ content: url(../img/settings-icon.png);
121
+ }
122
+ .icon-image:before {
123
+ content: url(../img/image-icon.png);
124
+ }
125
+ .icon-api:before {
126
+ content: url(../img/api-icon.png);
127
+ }
128
+
129
+
130
+ /* Content */
131
+ .content
132
+ {
133
+ border-bottom: 1px solid #006303;
134
+ border-top: 0;
135
+ background-color: #f1f1f1;
136
+ padding: 10px 30px;
137
+ /*height: 100vh;*/
138
+ }
139
+ .content section {
140
+
141
+ /*padding: 1em 2em;*/
142
+ max-width: 1230px;
143
+ margin: 0 auto;
144
+ }
145
+
146
+ .content section:before,
147
+ .content section:after {
148
+ content: '';
149
+ display: table;
150
+ }
151
+
152
+ .content section:after {
153
+ clear: both;
154
+ }
155
+
156
+ /* Fallback example */
157
+ .no-js .content section {
158
+ display: block;
159
+ padding-bottom: 2em;
160
+ border-bottom: 1px solid #006303;
161
+ }
162
+
163
+ .content section.content-current {
164
+ display: block;
165
+ }
166
+
167
+ /* Example media queries */
168
+
169
+ @media screen and (max-width: 52.375em) {
170
+ .tabs nav a span {
171
+ display: none;
172
+ }
173
+
174
+ .tabs nav a:before {
175
+ margin-right: 0;
176
+ }
177
+ }
178
+
179
+ @media screen and (max-width: 32em) {
180
+ .tabs nav ul,
181
+ .tabs nav ul li a {
182
+ width: 100%;
183
+ padding: 0;
184
+ }
185
+
186
+ .tabs nav ul li {
187
+ width: 20%;
188
+ width: calc(20% + 1px);
189
+ margin: 0 0 0 -1px;
190
+ }
191
+
192
+ .tabs nav ul li:last-child {
193
+ border-right: none;
194
+ }
195
+ }
196
+
197
+ .tabs nav li a {
198
+ color: #006303;
199
+ text-decoration: none;
200
+ outline: none !important;
201
+ }
202
+
203
+ .tabs nav li a:hover {
204
+ font-weight: bold;
205
+ }
206
+
207
+ p.info {
208
+ text-align: center;
209
+ padding: 20px;
210
+ }
211
+ .wapt-page-title
212
+ {
213
+ text-align: center;
214
+ padding: 10px 0;
215
+ }
216
+ .wapt-page-title h1
217
+ {
218
+ vertical-align: middle;
219
+ color: #000000;
220
+ text-shadow: 1px 1px 1px #ccc;
221
+ }
admin/assets/img/api-icon.png ADDED
Binary file
admin/assets/img/apt.svg CHANGED
@@ -1,13 +1,13 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
- <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
- width="99.000000pt" height="95.000000pt" viewBox="0 0 99.000000 95.000000"
6
- preserveAspectRatio="xMidYMid meet">
7
- <metadata>
8
- Created by potrace 1.15, written by Peter Selinger 2001-2017
9
- </metadata>
10
- <g transform="translate(0.000000,95.000000) scale(0.100000,-0.100000)"
11
- fill="#000000" stroke="none">
12
- </g>
13
- </svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+ <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="99.000000pt" height="95.000000pt" viewBox="0 0 99.000000 95.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+ <metadata>
8
+ Created by potrace 1.15, written by Peter Selinger 2001-2017
9
+ </metadata>
10
+ <g transform="translate(0.000000,95.000000) scale(0.100000,-0.100000)"
11
+ fill="#000000" stroke="none">
12
+ </g>
13
+ </svg>
admin/assets/img/bg.jpg ADDED
Binary file
admin/assets/img/image-icon.png ADDED
Binary file
admin/assets/img/premium_filter.png ADDED
Binary file
admin/assets/img/selected.png ADDED
Binary file
admin/assets/img/settings-icon.png ADDED
Binary file
admin/assets/img/transparent.png ADDED
Binary file
admin/assets/jquery-ui/jquery-ui.min.css CHANGED
@@ -1,7 +1,7 @@
1
- /*! jQuery UI - v1.12.1 - 2019-07-26
2
- * http://jqueryui.com
3
- * Includes: core.css, progressbar.css, theme.css
4
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=start&cornerRadiusShadow=5px&offsetLeftShadow=5px&offsetTopShadow=5px&thicknessShadow=0px&opacityShadow=45&bgImgOpacityShadow=55&bgTextureShadow=flat&bgColorShadow=999999&opacityOverlay=30&bgImgOpacityOverlay=75&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=fcd113&fcError=ffffff&borderColorError=cd0a0a&bgImgOpacityError=45&bgTextureError=gloss_wave&bgColorError=e14f1c&iconColorHighlight=f7a50d&fcHighlight=915608&borderColorHighlight=fcd113&bgImgOpacityHighlight=55&bgTextureHighlight=glass&bgColorHighlight=f8da4e&iconColorActive=f5e175&fcActive=ffffff&borderColorActive=acdd4a&bgImgOpacityActive=50&bgTextureActive=gloss_wave&bgColorActive=6eac2c&iconColorHover=056b93&fcHover=026890&borderColorHover=448dae&bgImgOpacityHover=75&bgTextureHover=glass&bgColorHover=79c9ec&iconColorDefault=e0fdff&fcDefault=ffffff&borderColorDefault=77d5f7&bgImgOpacityDefault=45&bgTextureDefault=glass&bgColorDefault=0078ae&iconColorContent=0078ae&fcContent=222222&borderColorContent=a6c9e2&bgImgOpacityContent=100&bgTextureContent=inset_hard&bgColorContent=fcfdfd&iconColorHeader=d8e7f3&fcHeader=eaf5f7&borderColorHeader=4297d7&bgImgOpacityHeader=75&bgTextureHeader=gloss_wave&bgColorHeader=2191c0&cornerRadius=5px&fsDefault=1.1em&fwDefault=normal&ffDefault=Verdana%2CArial%2Csans-serif
5
- * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
-
7
  .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #77d5f7}.ui-widget-content{border:1px solid #a6c9e2;background:#fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #4297d7;background:#2191c0 url("images/ui-bg_gloss-wave_75_2191c0_500x100.png") 50% 50% repeat-x;color:#eaf5f7;font-weight:bold}.ui-widget-header a{color:#eaf5f7}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #77d5f7;background:#0078ae url("images/ui-bg_glass_45_0078ae_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #448dae;background:#79c9ec url("images/ui-bg_glass_75_79c9ec_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#026890}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#026890;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #acdd4a;background:#6eac2c url("images/ui-bg_gloss-wave_50_6eac2c_500x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#acdd4a;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcd113;background:#f8da4e url("images/ui-bg_glass_55_f8da4e_1x400.png") 50% 50% repeat-x;color:#915608}.ui-state-checked{border:1px solid #fcd113;background:#f8da4e}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#915608}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#e14f1c url("images/ui-bg_gloss-wave_45_e14f1c_500x100.png") 50% top repeat-x;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_0078ae_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_d8e7f3_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_056b93_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f5e175_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_f7a50d_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_fcd113_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_e0fdff_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:5px 5px 0 #999;box-shadow:5px 5px 0 #999}
1
+ /*! jQuery UI - v1.12.1 - 2019-07-26
2
+ * http://jqueryui.com
3
+ * Includes: core.css, progressbar.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=start&cornerRadiusShadow=5px&offsetLeftShadow=5px&offsetTopShadow=5px&thicknessShadow=0px&opacityShadow=45&bgImgOpacityShadow=55&bgTextureShadow=flat&bgColorShadow=999999&opacityOverlay=30&bgImgOpacityOverlay=75&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=fcd113&fcError=ffffff&borderColorError=cd0a0a&bgImgOpacityError=45&bgTextureError=gloss_wave&bgColorError=e14f1c&iconColorHighlight=f7a50d&fcHighlight=915608&borderColorHighlight=fcd113&bgImgOpacityHighlight=55&bgTextureHighlight=glass&bgColorHighlight=f8da4e&iconColorActive=f5e175&fcActive=ffffff&borderColorActive=acdd4a&bgImgOpacityActive=50&bgTextureActive=gloss_wave&bgColorActive=6eac2c&iconColorHover=056b93&fcHover=026890&borderColorHover=448dae&bgImgOpacityHover=75&bgTextureHover=glass&bgColorHover=79c9ec&iconColorDefault=e0fdff&fcDefault=ffffff&borderColorDefault=77d5f7&bgImgOpacityDefault=45&bgTextureDefault=glass&bgColorDefault=0078ae&iconColorContent=0078ae&fcContent=222222&borderColorContent=a6c9e2&bgImgOpacityContent=100&bgTextureContent=inset_hard&bgColorContent=fcfdfd&iconColorHeader=d8e7f3&fcHeader=eaf5f7&borderColorHeader=4297d7&bgImgOpacityHeader=75&bgTextureHeader=gloss_wave&bgColorHeader=2191c0&cornerRadius=5px&fsDefault=1.1em&fwDefault=normal&ffDefault=Verdana%2CArial%2Csans-serif
5
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
+
7
  .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #77d5f7}.ui-widget-content{border:1px solid #a6c9e2;background:#fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #4297d7;background:#2191c0 url("images/ui-bg_gloss-wave_75_2191c0_500x100.png") 50% 50% repeat-x;color:#eaf5f7;font-weight:bold}.ui-widget-header a{color:#eaf5f7}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #77d5f7;background:#0078ae url("images/ui-bg_glass_45_0078ae_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #448dae;background:#79c9ec url("images/ui-bg_glass_75_79c9ec_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#026890}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#026890;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #acdd4a;background:#6eac2c url("images/ui-bg_gloss-wave_50_6eac2c_500x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#acdd4a;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcd113;background:#f8da4e url("images/ui-bg_glass_55_f8da4e_1x400.png") 50% 50% repeat-x;color:#915608}.ui-state-checked{border:1px solid #fcd113;background:#f8da4e}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#915608}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#e14f1c url("images/ui-bg_gloss-wave_45_e14f1c_500x100.png") 50% top repeat-x;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_0078ae_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_d8e7f3_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_056b93_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f5e175_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_f7a50d_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_fcd113_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_e0fdff_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:5px 5px 0 #999;box-shadow:5px 5px 0 #999}
admin/assets/jquery-ui/jquery-ui.progressbar.min.js CHANGED
@@ -1,6 +1,6 @@
1
- /*! jQuery UI - v1.12.1 - 2019-07-26
2
- * http://jqueryui.com
3
- * Includes: widget.js, widgets/progressbar.js
4
- * Copyright jQuery Foundation and other contributors; Licensed MIT */
5
-
6
  (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){t.ui=t.ui||{},t.ui.version="1.12.1";var e=0,i=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},l=e.split(".")[0];e=e.split(".")[1];var h=l+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][h.toLowerCase()]=function(e){return!!t.data(e,h)},t[l]=t[l]||{},n=t[l][e],o=t[l][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:l,widgetName:e,widgetFullName:h}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var s,n,o=i.call(arguments,1),a=0,r=o.length;r>a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})});
1
+ /*! jQuery UI - v1.12.1 - 2019-07-26
2
+ * http://jqueryui.com
3
+ * Includes: widget.js, widgets/progressbar.js
4
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
5
+
6
  (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){t.ui=t.ui||{},t.ui.version="1.12.1";var e=0,i=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},l=e.split(".")[0];e=e.split(".")[1];var h=l+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][h.toLowerCase()]=function(e){return!!t.data(e,h)},t[l]=t[l]||{},n=t[l][e],o=t[l][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:l,widgetName:e,widgetFullName:h}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var s,n,o=i.call(arguments,1),a=0,r=o.length;r>a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})});
admin/assets/js/admin-thumbnail.js CHANGED
@@ -9,10 +9,22 @@
9
  *
10
  * global ajaxurl, apt_thumb - language array
11
  */
12
-
13
  //Отображение окна со всеми картинками в тексте поста
14
  jQuery(document).ready(function($){
15
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  window.aptModalShow = function(that, postid, wpnonce){
17
 
18
  var $modal = $('#post_imgs_'+postid).find('> p');
@@ -20,7 +32,7 @@ jQuery(document).ready(function($){
20
  //$modal.html('');
21
  $('.imgs').find('> p').html(''); //очистка всех модальных окон, чтобы исключить конфликты
22
 
23
- tb_show( apt_thumb.modal_title, '/?TB_inline&inlineId=post_imgs_'+postid+'&width=600&height=500' );
24
 
25
  $ajaximg.show();
26
  // AJAX запрос для загрузки контента окна
@@ -32,13 +44,14 @@ jQuery(document).ready(function($){
32
  }).done( function( html ) {
33
  $ajaximg.hide();
34
  $modal.html(html);
35
- $('#apt_thumbid2').autocolumnlist({
36
  columns: 3,
37
- classname: 'column-apt',
38
  min: 1
39
  });
40
  });
41
 
42
  //return false; // для ссылки
43
  }
44
- });
 
9
  *
10
  * global ajaxurl, apt_thumb - language array
11
  */
12
+ (function($){
13
  //Отображение окна со всеми картинками в тексте поста
14
  jQuery(document).ready(function($){
15
 
16
+ jQuery(document).on('click', '#hide_notice_auto_generation', function(e) {
17
+ e.preventDefault();
18
+ jQuery('#notice_auto_generation').animate({opacity: 'hide' , height: 'hide'}, 200);
19
+ jQuery.post ( ajaxurl, {
20
+ action: 'hide_notice_auto_generation',
21
+ }).done( function( html ) {
22
+ console.log('Hided');
23
+ });
24
+
25
+ });
26
+
27
+
28
  window.aptModalShow = function(that, postid, wpnonce){
29
 
30
  var $modal = $('#post_imgs_'+postid).find('> p');
32
  //$modal.html('');
33
  $('.imgs').find('> p').html(''); //очистка всех модальных окон, чтобы исключить конфликты
34
 
35
+ tb_show( apt_thumb.modal_title, '/?TB_inline&inlineId=post_imgs_'+postid+'&width=620&height=500' );
36
 
37
  $ajaximg.show();
38
  // AJAX запрос для загрузки контента окна
44
  }).done( function( html ) {
45
  $ajaximg.hide();
46
  $modal.html(html);
47
+ $('#wapt_thumbs').autocolumnlist({
48
  columns: 3,
49
+ classname: 'wapt-grid-item',
50
  min: 1
51
  });
52
  });
53
 
54
  //return false; // для ссылки
55
  }
56
+ });
57
+ })(jQuery);
admin/assets/js/check-api.js ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function check_api_google(provider)
2
+ {
3
+ provider_input = jQuery('#wapt_'+provider+'_apikey');
4
+ provider_input2 = jQuery('#wapt_'+provider+'_cse');
5
+ if(provider_input.val() !== "" || provider_input2.val() !== "") {
6
+ provider_input.addClass("checked_api_key_proccess");
7
+ provider_input2.addClass("checked_api_key_proccess");
8
+ jQuery.post(ajaxurl, {
9
+ action: 'apt_check_api_key',
10
+ provider: provider,
11
+ key: provider_input.val(),
12
+ key2: provider_input2.val(),
13
+ nonce: jQuery('#wapt_ajax_nonce').val(),
14
+ }).done(function (html) {
15
+ console.log(html);
16
+ provider_input.removeClass("checked_api_key_proccess");
17
+ provider_input2.removeClass("checked_api_key_proccess");
18
+ if (html) {
19
+ provider_input.removeClass("checked_api_key_fail");
20
+ provider_input2.removeClass("checked_api_key_fail");
21
+ provider_input.addClass("checked_api_key_ok");
22
+ provider_input2.addClass("checked_api_key_ok");
23
+ } else {
24
+ provider_input.removeClass("checked_api_key_ok");
25
+ provider_input2.removeClass("checked_api_key_ok");
26
+ provider_input.addClass("checked_api_key_fail");
27
+ provider_input2.addClass("checked_api_key_fail");
28
+ }
29
+ });
30
+ }
31
+ else if (provider_input.val() === "" && provider_input2.val() === "")
32
+ {
33
+ provider_input.removeClass("checked_api_key_proccess");
34
+ provider_input2.removeClass("checked_api_key_proccess");
35
+ provider_input.removeClass("checked_api_key_fail");
36
+ provider_input2.removeClass("checked_api_key_fail");
37
+ provider_input.removeClass("checked_api_key_ok");
38
+ provider_input2.removeClass("checked_api_key_ok");
39
+
40
+ }
41
+ }
42
+
43
+ jQuery(document).on('change', '#wapt_google_apikey', function(event) {
44
+ check_api_google('google');
45
+ });
46
+ jQuery(document).on('change', '#wapt_google_cse', function(event) {
47
+ check_api_google('google');
48
+ });
admin/assets/js/jscolor.js ADDED
@@ -0,0 +1,1855 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * jscolor - JavaScript Color Picker
3
+ *
4
+ * @link http://jscolor.com
5
+ * @license For open source use: GPLv3
6
+ * For commercial use: JSColor Commercial License
7
+ * @author Jan Odvarko
8
+ * @version 2.0.5
9
+ *
10
+ * See usage examples at http://jscolor.com/examples/
11
+ */
12
+
13
+
14
+ "use strict";
15
+
16
+
17
+ if (!window.jscolor) { window.jscolor = (function () {
18
+
19
+
20
+ var jsc = {
21
+
22
+
23
+ register : function () {
24
+ jsc.attachDOMReadyEvent(jsc.init);
25
+ jsc.attachEvent(document, 'mousedown', jsc.onDocumentMouseDown);
26
+ jsc.attachEvent(document, 'touchstart', jsc.onDocumentTouchStart);
27
+ jsc.attachEvent(window, 'resize', jsc.onWindowResize);
28
+ },
29
+
30
+
31
+ init : function () {
32
+ if (jsc.jscolor.lookupClass) {
33
+ jsc.jscolor.installByClassName(jsc.jscolor.lookupClass);
34
+ }
35
+ },
36
+
37
+
38
+ tryInstallOnElements : function (elms, className) {
39
+ var matchClass = new RegExp('(^|\\s)(' + className + ')(\\s*(\\{[^}]*\\})|\\s|$)', 'i');
40
+
41
+ for (var i = 0; i < elms.length; i += 1) {
42
+ if (elms[i].type !== undefined && elms[i].type.toLowerCase() == 'color') {
43
+ if (jsc.isColorAttrSupported) {
44
+ // skip inputs of type 'color' if supported by the browser
45
+ continue;
46
+ }
47
+ }
48
+ var m;
49
+ if (!elms[i].jscolor && elms[i].className && (m = elms[i].className.match(matchClass))) {
50
+ var targetElm = elms[i];
51
+ var optsStr = null;
52
+
53
+ var dataOptions = jsc.getDataAttr(targetElm, 'jscolor');
54
+ if (dataOptions !== null) {
55
+ optsStr = dataOptions;
56
+ } else if (m[4]) {
57
+ optsStr = m[4];
58
+ }
59
+
60
+ var opts = {};
61
+ if (optsStr) {
62
+ try {
63
+ opts = (new Function ('return (' + optsStr + ')'))();
64
+ } catch(eParseError) {
65
+ jsc.warn('Error parsing jscolor options: ' + eParseError + ':\n' + optsStr);
66
+ }
67
+ }
68
+ targetElm.jscolor = new jsc.jscolor(targetElm, opts);
69
+ }
70
+ }
71
+ },
72
+
73
+
74
+ isColorAttrSupported : (function () {
75
+ var elm = document.createElement('input');
76
+ if (elm.setAttribute) {
77
+ elm.setAttribute('type', 'color');
78
+ if (elm.type.toLowerCase() == 'color') {
79
+ return true;
80
+ }
81
+ }
82
+ return false;
83
+ })(),
84
+
85
+
86
+ isCanvasSupported : (function () {
87
+ var elm = document.createElement('canvas');
88
+ return !!(elm.getContext && elm.getContext('2d'));
89
+ })(),
90
+
91
+
92
+ fetchElement : function (mixed) {
93
+ return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
94
+ },
95
+
96
+
97
+ isElementType : function (elm, type) {
98
+ return elm.nodeName.toLowerCase() === type.toLowerCase();
99
+ },
100
+
101
+
102
+ getDataAttr : function (el, name) {
103
+ var attrName = 'data-' + name;
104
+ var attrValue = el.getAttribute(attrName);
105
+ if (attrValue !== null) {
106
+ return attrValue;
107
+ }
108
+ return null;
109
+ },
110
+
111
+
112
+ attachEvent : function (el, evnt, func) {
113
+ if (el.addEventListener) {
114
+ el.addEventListener(evnt, func, false);
115
+ } else if (el.attachEvent) {
116
+ el.attachEvent('on' + evnt, func);
117
+ }
118
+ },
119
+
120
+
121
+ detachEvent : function (el, evnt, func) {
122
+ if (el.removeEventListener) {
123
+ el.removeEventListener(evnt, func, false);
124
+ } else if (el.detachEvent) {
125
+ el.detachEvent('on' + evnt, func);
126
+ }
127
+ },
128
+
129
+
130
+ _attachedGroupEvents : {},
131
+
132
+
133
+ attachGroupEvent : function (groupName, el, evnt, func) {
134
+ if (!jsc._attachedGroupEvents.hasOwnProperty(groupName)) {
135
+ jsc._attachedGroupEvents[groupName] = [];
136
+ }
137
+ jsc._attachedGroupEvents[groupName].push([el, evnt, func]);
138
+ jsc.attachEvent(el, evnt, func);
139
+ },
140
+
141
+
142
+ detachGroupEvents : function (groupName) {
143
+ if (jsc._attachedGroupEvents.hasOwnProperty(groupName)) {
144
+ for (var i = 0; i < jsc._attachedGroupEvents[groupName].length; i += 1) {
145
+ var evt = jsc._attachedGroupEvents[groupName][i];
146
+ jsc.detachEvent(evt[0], evt[1], evt[2]);
147
+ }
148
+ delete jsc._attachedGroupEvents[groupName];
149
+ }
150
+ },
151
+
152
+
153
+ attachDOMReadyEvent : function (func) {
154
+ var fired = false;
155
+ var fireOnce = function () {
156
+ if (!fired) {
157
+ fired = true;
158
+ func();
159
+ }
160
+ };
161
+
162
+ if (document.readyState === 'complete') {
163
+ setTimeout(fireOnce, 1); // async
164
+ return;
165
+ }
166
+
167
+ if (document.addEventListener) {
168
+ document.addEventListener('DOMContentLoaded', fireOnce, false);
169
+
170
+ // Fallback
171
+ window.addEventListener('load', fireOnce, false);
172
+
173
+ } else if (document.attachEvent) {
174
+ // IE
175
+ document.attachEvent('onreadystatechange', function () {
176
+ if (document.readyState === 'complete') {
177
+ document.detachEvent('onreadystatechange', attachDOMReadyEvent);
178
+ fireOnce();
179
+ }
180
+ })
181
+
182
+ // Fallback
183
+ window.attachEvent('onload', fireOnce);
184
+
185
+ // IE7/8
186
+ if (document.documentElement.doScroll && window == window.top) {
187
+ var tryScroll = function () {
188
+ if (!document.body) { return; }
189
+ try {
190
+ document.documentElement.doScroll('left');
191
+ fireOnce();
192
+ } catch (e) {
193
+ setTimeout(tryScroll, 1);
194
+ }
195
+ };
196
+ tryScroll();
197
+ }
198
+ }
199
+ },
200
+
201
+
202
+ warn : function (msg) {
203
+ if (window.console && window.console.warn) {
204
+ window.console.warn(msg);
205
+ }
206
+ },
207
+
208
+
209
+ preventDefault : function (e) {
210
+ if (e.preventDefault) { e.preventDefault(); }
211
+ e.returnValue = false;
212
+ },
213
+
214
+
215
+ captureTarget : function (target) {
216
+ // IE
217
+ if (target.setCapture) {
218
+ jsc._capturedTarget = target;
219
+ jsc._capturedTarget.setCapture();
220
+ }
221
+ },
222
+
223
+
224
+ releaseTarget : function () {
225
+ // IE
226
+ if (jsc._capturedTarget) {
227
+ jsc._capturedTarget.releaseCapture();
228
+ jsc._capturedTarget = null;
229
+ }
230
+ },
231
+
232
+
233
+ fireEvent : function (el, evnt) {
234
+ if (!el) {
235
+ return;
236
+ }
237
+ if (document.createEvent) {
238
+ var ev = document.createEvent('HTMLEvents');
239
+ ev.initEvent(evnt, true, true);
240
+ el.dispatchEvent(ev);
241
+ } else if (document.createEventObject) {
242
+ var ev = document.createEventObject();
243
+ el.fireEvent('on' + evnt, ev);
244
+ } else if (el['on' + evnt]) { // alternatively use the traditional event model
245
+ el['on' + evnt]();
246
+ }
247
+ },
248
+
249
+
250
+ classNameToList : function (className) {
251
+ return className.replace(/^\s+|\s+$/g, '').split(/\s+/);
252
+ },
253
+
254
+
255
+ // The className parameter (str) can only contain a single class name
256
+ hasClass : function (elm, className) {
257
+ if (!className) {
258
+ return false;
259
+ }
260
+ return -1 != (' ' + elm.className.replace(/\s+/g, ' ') + ' ').indexOf(' ' + className + ' ');
261
+ },
262
+
263
+
264
+ // The className parameter (str) can contain multiple class names separated by whitespace
265
+ setClass : function (elm, className) {
266
+ var classList = jsc.classNameToList(className);
267
+ for (var i = 0; i < classList.length; i += 1) {
268
+ if (!jsc.hasClass(elm, classList[i])) {
269
+ elm.className += (elm.className ? ' ' : '') + classList[i];
270
+ }
271
+ }
272
+ },
273
+
274
+
275
+ // The className parameter (str) can contain multiple class names separated by whitespace
276
+ unsetClass : function (elm, className) {
277
+ var classList = jsc.classNameToList(className);
278
+ for (var i = 0; i < classList.length; i += 1) {
279
+ var repl = new RegExp(
280
+ '^\\s*' + classList[i] + '\\s*|' +
281
+ '\\s*' + classList[i] + '\\s*$|' +
282
+ '\\s+' + classList[i] + '(\\s+)',
283
+ 'g'
284
+ );
285
+ elm.className = elm.className.replace(repl, '$1');
286
+ }
287
+ },
288
+
289
+
290
+ getStyle : function (elm) {
291
+ return window.getComputedStyle ? window.getComputedStyle(elm) : elm.currentStyle;
292
+ },
293
+
294
+
295
+ setStyle : (function () {
296
+ var helper = document.createElement('div');
297
+ var getSupportedProp = function (names) {
298
+ for (var i = 0; i < names.length; i += 1) {
299
+ if (names[i] in helper.style) {
300
+ return names[i];
301
+ }
302
+ }
303
+ };
304
+ var props = {
305
+ borderRadius: getSupportedProp(['borderRadius', 'MozBorderRadius', 'webkitBorderRadius']),
306
+ boxShadow: getSupportedProp(['boxShadow', 'MozBoxShadow', 'webkitBoxShadow'])
307
+ };
308
+ return function (elm, prop, value) {
309
+ switch (prop.toLowerCase()) {
310
+ case 'opacity':
311
+ var alphaOpacity = Math.round(parseFloat(value) * 100);
312
+ elm.style.opacity = value;
313
+ elm.style.filter = 'alpha(opacity=' + alphaOpacity + ')';
314
+ break;
315
+ default:
316
+ elm.style[props[prop]] = value;
317
+ break;
318
+ }
319
+ };
320
+ })(),
321
+
322
+
323
+ setBorderRadius : function (elm, value) {
324
+ jsc.setStyle(elm, 'borderRadius', value || '0');
325
+ },
326
+
327
+
328
+ setBoxShadow : function (elm, value) {
329
+ jsc.setStyle(elm, 'boxShadow', value || 'none');
330
+ },
331
+
332
+
333
+ getElementPos : function (e, relativeToViewport) {
334
+ var x=0, y=0;
335
+ var rect = e.getBoundingClientRect();
336
+ x = rect.left;
337
+ y = rect.top;
338
+ if (!relativeToViewport) {
339
+ var viewPos = jsc.getViewPos();
340
+ x += viewPos[0];
341
+ y += viewPos[1];
342
+ }
343
+ return [x, y];
344
+ },
345
+
346
+
347
+ getElementSize : function (e) {
348
+ return [e.offsetWidth, e.offsetHeight];
349
+ },
350
+
351
+
352
+ // get pointer's X/Y coordinates relative to viewport
353
+ getAbsPointerPos : function (e) {
354
+ if (!e) { e = window.event; }
355
+ var x = 0, y = 0;
356
+ if (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {
357
+ // touch devices
358
+ x = e.changedTouches[0].clientX;
359
+ y = e.changedTouches[0].clientY;
360
+ } else if (typeof e.clientX === 'number') {
361
+ x = e.clientX;
362
+ y = e.clientY;
363
+ }
364
+ return { x: x, y: y };
365
+ },
366
+
367
+
368
+ // get pointer's X/Y coordinates relative to target element
369
+ getRelPointerPos : function (e) {
370
+ if (!e) { e = window.event; }
371
+ var target = e.target || e.srcElement;
372
+ var targetRect = target.getBoundingClientRect();
373
+
374
+ var x = 0, y = 0;
375
+
376
+ var clientX = 0, clientY = 0;
377
+ if (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {
378
+ // touch devices
379
+ clientX = e.changedTouches[0].clientX;
380
+ clientY = e.changedTouches[0].clientY;
381
+ } else if (typeof e.clientX === 'number') {
382
+ clientX = e.clientX;
383
+ clientY = e.clientY;
384
+ }
385
+
386
+ x = clientX - targetRect.left;
387
+ y = clientY - targetRect.top;
388
+ return { x: x, y: y };
389
+ },
390
+
391
+
392
+ getViewPos : function () {
393
+ var doc = document.documentElement;
394
+ return [
395
+ (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0),
396
+ (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)
397
+ ];
398
+ },
399
+
400
+
401
+ getViewSize : function () {
402
+ var doc = document.documentElement;
403
+ return [
404
+ (window.innerWidth || doc.clientWidth),
405
+ (window.innerHeight || doc.clientHeight),
406
+ ];
407
+ },
408
+
409
+
410
+ redrawPosition : function () {
411
+
412
+ if (jsc.picker && jsc.picker.owner) {
413
+ var thisObj = jsc.picker.owner;
414
+
415
+ var tp, vp;
416
+
417
+ if (thisObj.fixed) {
418
+ // Fixed elements are positioned relative to viewport,
419
+ // therefore we can ignore the scroll offset
420
+ tp = jsc.getElementPos(thisObj.targetElement, true); // target pos
421
+ vp = [0, 0]; // view pos
422
+ } else {
423
+ tp = jsc.getElementPos(thisObj.targetElement); // target pos
424
+ vp = jsc.getViewPos(); // view pos
425
+ }
426
+
427
+ var ts = jsc.getElementSize(thisObj.targetElement); // target size
428
+ var vs = jsc.getViewSize(); // view size
429
+ var ps = jsc.getPickerOuterDims(thisObj); // picker size
430
+ var a, b, c;
431
+ switch (thisObj.position.toLowerCase()) {
432
+ case 'left': a=1; b=0; c=-1; break;
433
+ case 'right':a=1; b=0; c=1; break;
434
+ case 'top': a=0; b=1; c=-1; break;
435
+ default: a=0; b=1; c=1; break;
436
+ }
437
+ var l = (ts[b]+ps[b])/2;
438
+
439
+ // compute picker position
440
+ if (!thisObj.smartPosition) {
441
+ var pp = [
442
+ tp[a],
443
+ tp[b]+ts[b]-l+l*c
444
+ ];
445
+ } else {
446
+ var pp = [
447
+ -vp[a]+tp[a]+ps[a] > vs[a] ?
448
+ (-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
449
+ tp[a],
450
+ -vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
451
+ (-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
452
+ (tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
453
+ ];
454
+ }
455
+
456
+ var x = pp[a];
457
+ var y = pp[b];
458
+ var positionValue = thisObj.fixed ? 'fixed' : 'absolute';
459
+ var contractShadow =
460
+ (pp[0] + ps[0] > tp[0] || pp[0] < tp[0] + ts[0]) &&
461
+ (pp[1] + ps[1] < tp[1] + ts[1]);
462
+
463
+ jsc._drawPosition(thisObj, x, y, positionValue, contractShadow);
464
+ }
465
+ },
466
+
467
+
468
+ _drawPosition : function (thisObj, x, y, positionValue, contractShadow) {
469
+ var vShadow = contractShadow ? 0 : thisObj.shadowBlur; // px
470
+
471
+ jsc.picker.wrap.style.position = positionValue;
472
+ jsc.picker.wrap.style.left = x + 'px';
473
+ jsc.picker.wrap.style.top = y + 'px';
474
+
475
+ jsc.setBoxShadow(
476
+ jsc.picker.boxS,
477
+ thisObj.shadow ?
478
+ new jsc.BoxShadow(0, vShadow, thisObj.shadowBlur, 0, thisObj.shadowColor) :
479
+ null);
480
+ },
481
+
482
+
483
+ getPickerDims : function (thisObj) {
484
+ var displaySlider = !!jsc.getSliderComponent(thisObj);
485
+ var dims = [
486
+ 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.width +
487
+ (displaySlider ? 2 * thisObj.insetWidth + jsc.getPadToSliderPadding(thisObj) + thisObj.sliderSize : 0),
488
+ 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.height +
489
+ (thisObj.closable ? 2 * thisObj.insetWidth + thisObj.padding + thisObj.buttonHeight : 0)
490
+ ];
491
+ return dims;
492
+ },
493
+
494
+
495
+ getPickerOuterDims : function (thisObj) {
496
+ var dims = jsc.getPickerDims(thisObj);
497
+ return [
498
+ dims[0] + 2 * thisObj.borderWidth,
499
+ dims[1] + 2 * thisObj.borderWidth
500
+ ];
501
+ },
502
+
503
+
504
+ getPadToSliderPadding : function (thisObj) {
505
+ return Math.max(thisObj.padding, 1.5 * (2 * thisObj.pointerBorderWidth + thisObj.pointerThickness));
506
+ },
507
+
508
+
509
+ getPadYComponent : function (thisObj) {
510
+ switch (thisObj.mode.charAt(1).toLowerCase()) {
511
+ case 'v': return 'v'; break;
512
+ }
513
+ return 's';
514
+ },
515
+
516
+
517
+ getSliderComponent : function (thisObj) {
518
+ if (thisObj.mode.length > 2) {
519
+ switch (thisObj.mode.charAt(2).toLowerCase()) {
520
+ case 's': return 's'; break;
521
+ case 'v': return 'v'; break;
522
+ }
523
+ }
524
+ return null;
525
+ },
526
+
527
+
528
+ onDocumentMouseDown : function (e) {
529
+ if (!e) { e = window.event; }
530
+ var target = e.target || e.srcElement;
531
+
532
+ if (target._jscLinkedInstance) {
533
+ if (target._jscLinkedInstance.showOnClick) {
534
+ target._jscLinkedInstance.show();
535
+ }
536
+ } else if (target._jscControlName) {
537
+ jsc.onControlPointerStart(e, target, target._jscControlName, 'mouse');
538
+ } else {
539
+ // Mouse is outside the picker controls -> hide the color picker!
540
+ if (jsc.picker && jsc.picker.owner) {
541
+ jsc.picker.owner.hide();
542
+ }
543
+ }
544
+ },
545
+
546
+
547
+ onDocumentTouchStart : function (e) {
548
+ if (!e) { e = window.event; }
549
+ var target = e.target || e.srcElement;
550
+
551
+ if (target._jscLinkedInstance) {
552
+ if (target._jscLinkedInstance.showOnClick) {
553
+ target._jscLinkedInstance.show();
554
+ }
555
+ } else if (target._jscControlName) {
556
+ jsc.onControlPointerStart(e, target, target._jscControlName, 'touch');
557
+ } else {
558
+ if (jsc.picker && jsc.picker.owner) {
559
+ jsc.picker.owner.hide();
560
+ }
561
+ }
562
+ },
563
+
564
+
565
+ onWindowResize : function (e) {
566
+ jsc.redrawPosition();
567
+ },
568
+
569
+
570
+ onParentScroll : function (e) {
571
+ // hide the picker when one of the parent elements is scrolled
572
+ if (jsc.picker && jsc.picker.owner) {
573
+ jsc.picker.owner.hide();
574
+ }
575
+ },
576
+
577
+
578
+ _pointerMoveEvent : {
579
+ mouse: 'mousemove',
580
+ touch: 'touchmove'
581
+ },
582
+ _pointerEndEvent : {
583
+ mouse: 'mouseup',
584
+ touch: 'touchend'
585
+ },
586
+
587
+
588
+ _pointerOrigin : null,
589
+ _capturedTarget : null,
590
+
591
+
592
+ onControlPointerStart : function (e, target, controlName, pointerType) {
593
+ var thisObj = target._jscInstance;
594
+
595
+ jsc.preventDefault(e);
596
+ jsc.captureTarget(target);
597
+
598
+ var registerDragEvents = function (doc, offset) {
599
+ jsc.attachGroupEvent('drag', doc, jsc._pointerMoveEvent[pointerType],
600
+ jsc.onDocumentPointerMove(e, target, controlName, pointerType, offset));
601
+ jsc.attachGroupEvent('drag', doc, jsc._pointerEndEvent[pointerType],
602
+ jsc.onDocumentPointerEnd(e, target, controlName, pointerType));
603
+ };
604
+
605
+ registerDragEvents(document, [0, 0]);
606
+
607
+ if (window.parent && window.frameElement) {
608
+ var rect = window.frameElement.getBoundingClientRect();
609
+ var ofs = [-rect.left, -rect.top];
610
+ registerDragEvents(window.parent.window.document, ofs);
611
+ }
612
+
613
+ var abs = jsc.getAbsPointerPos(e);
614
+ var rel = jsc.getRelPointerPos(e);
615
+ jsc._pointerOrigin = {
616
+ x: abs.x - rel.x,
617
+ y: abs.y - rel.y
618
+ };
619
+
620
+ switch (controlName) {
621
+ case 'pad':
622
+ // if the slider is at the bottom, move it up
623
+ switch (jsc.getSliderComponent(thisObj)) {
624
+ case 's': if (thisObj.hsv[1] === 0) { thisObj.fromHSV(null, 100, null); }; break;
625
+ case 'v': if (thisObj.hsv[2] === 0) { thisObj.fromHSV(null, null, 100); }; break;
626
+ }
627
+ jsc.setPad(thisObj, e, 0, 0);
628
+ break;
629
+
630
+ case 'sld':
631
+ jsc.setSld(thisObj, e, 0);
632
+ break;
633
+ }
634
+
635
+ jsc.dispatchFineChange(thisObj);
636
+ },
637
+
638
+
639
+ onDocumentPointerMove : function (e, target, controlName, pointerType, offset) {
640
+ return function (e) {
641
+ var thisObj = target._jscInstance;
642
+ switch (controlName) {
643
+ case 'pad':
644
+ if (!e) { e = window.event; }
645
+ jsc.setPad(thisObj, e, offset[0], offset[1]);
646
+ jsc.dispatchFineChange(thisObj);
647
+ break;
648
+
649
+ case 'sld':
650
+ if (!e) { e = window.event; }
651
+ jsc.setSld(thisObj, e, offset[1]);
652
+ jsc.dispatchFineChange(thisObj);
653
+ break;
654
+ }
655
+ }
656
+ },
657
+
658
+
659
+ onDocumentPointerEnd : function (e, target, controlName, pointerType) {
660
+ return function (e) {
661
+ var thisObj = target._jscInstance;
662
+ jsc.detachGroupEvents('drag');
663
+ jsc.releaseTarget();
664
+ // Always dispatch changes after detaching outstanding mouse handlers,
665
+ // in case some user interaction will occur in user's onchange callback
666
+ // that would intrude with current mouse events
667
+ jsc.dispatchChange(thisObj);
668
+ };
669
+ },
670
+
671
+
672
+ dispatchChange : function (thisObj) {
673
+ if (thisObj.valueElement) {
674
+ if (jsc.isElementType(thisObj.valueElement, 'input')) {
675
+ jsc.fireEvent(thisObj.valueElement, 'change');
676
+ }
677
+ }
678
+ },
679
+
680
+
681
+ dispatchFineChange : function (thisObj) {
682
+ if (thisObj.onFineChange) {
683
+ var callback;
684
+ if (typeof thisObj.onFineChange === 'string') {
685
+ callback = new Function (thisObj.onFineChange);
686
+ } else {
687
+ callback = thisObj.onFineChange;
688
+ }
689
+ callback.call(thisObj);
690
+ }
691
+ },
692
+
693
+
694
+ setPad : function (thisObj, e, ofsX, ofsY) {
695
+ var pointerAbs = jsc.getAbsPointerPos(e);
696
+ var x = ofsX + pointerAbs.x - jsc._pointerOrigin.x - thisObj.padding - thisObj.insetWidth;
697
+ var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth;
698
+
699
+ var xVal = x * (360 / (thisObj.width - 1));
700
+ var yVal = 100 - (y * (100 / (thisObj.height - 1)));
701
+
702
+ switch (jsc.getPadYComponent(thisObj)) {
703
+ case 's': thisObj.fromHSV(xVal, yVal, null, jsc.leaveSld); break;
704
+ case 'v': thisObj.fromHSV(xVal, null, yVal, jsc.leaveSld); break;
705
+ }
706
+ },
707
+
708
+
709
+ setSld : function (thisObj, e, ofsY) {
710
+ var pointerAbs = jsc.getAbsPointerPos(e);
711
+ var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth;
712
+
713
+ var yVal = 100 - (y * (100 / (thisObj.height - 1)));
714
+
715
+ switch (jsc.getSliderComponent(thisObj)) {
716
+ case 's': thisObj.fromHSV(null, yVal, null, jsc.leavePad); break;
717
+ case 'v': thisObj.fromHSV(null, null, yVal, jsc.leavePad); break;
718
+ }
719
+ },
720
+
721
+
722
+ _vmlNS : 'jsc_vml_',
723
+ _vmlCSS : 'jsc_vml_css_',
724
+ _vmlReady : false,
725
+
726
+
727
+ initVML : function () {
728
+ if (!jsc._vmlReady) {
729
+ // init VML namespace
730
+ var doc = document;
731
+ if (!doc.namespaces[jsc._vmlNS]) {
732
+ doc.namespaces.add(jsc._vmlNS, 'urn:schemas-microsoft-com:vml');
733
+ }
734
+ if (!doc.styleSheets[jsc._vmlCSS]) {
735
+ var tags = ['shape', 'shapetype', 'group', 'background', 'path', 'formulas', 'handles', 'fill', 'stroke', 'shadow', 'textbox', 'textpath', 'imagedata', 'line', 'polyline', 'curve', 'rect', 'roundrect', 'oval', 'arc', 'image'];
736
+ var ss = doc.createStyleSheet();
737
+ ss.owningElement.id = jsc._vmlCSS;
738
+ for (var i = 0; i < tags.length; i += 1) {
739
+ ss.addRule(jsc._vmlNS + '\\:' + tags[i], 'behavior:url(#default#VML);');
740
+ }
741
+ }
742
+ jsc._vmlReady = true;
743
+ }
744
+ },
745
+
746
+
747
+ createPalette : function () {
748
+
749
+ var paletteObj = {
750
+ elm: null,
751
+ draw: null
752
+ };
753
+
754
+ if (jsc.isCanvasSupported) {
755
+ // Canvas implementation for modern browsers
756
+
757
+ var canvas = document.createElement('canvas');
758
+ var ctx = canvas.getContext('2d');
759
+
760
+ var drawFunc = function (width, height, type) {
761
+ canvas.width = width;
762
+ canvas.height = height;
763
+
764
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
765
+
766
+ var hGrad = ctx.createLinearGradient(0, 0, canvas.width, 0);
767
+ hGrad.addColorStop(0 / 6, '#F00');
768
+ hGrad.addColorStop(1 / 6, '#FF0');
769
+ hGrad.addColorStop(2 / 6, '#0F0');
770
+ hGrad.addColorStop(3 / 6, '#0FF');
771
+ hGrad.addColorStop(4 / 6, '#00F');
772
+ hGrad.addColorStop(5 / 6, '#F0F');
773
+ hGrad.addColorStop(6 / 6, '#F00');
774
+
775
+ ctx.fillStyle = hGrad;
776
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
777
+
778
+ var vGrad = ctx.createLinearGradient(0, 0, 0, canvas.height);
779
+ switch (type.toLowerCase()) {
780
+ case 's':
781
+ vGrad.addColorStop(0, 'rgba(255,255,255,0)');
782
+ vGrad.addColorStop(1, 'rgba(255,255,255,1)');
783
+ break;
784
+ case 'v':
785
+ vGrad.addColorStop(0, 'rgba(0,0,0,0)');
786
+ vGrad.addColorStop(1, 'rgba(0,0,0,1)');
787
+ break;
788
+ }
789
+ ctx.fillStyle = vGrad;
790
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
791
+ };
792
+
793
+ paletteObj.elm = canvas;
794
+ paletteObj.draw = drawFunc;
795
+
796
+ } else {
797
+ // VML fallback for IE 7 and 8
798
+
799
+ jsc.initVML();
800
+
801
+ var vmlContainer = document.createElement('div');
802
+ vmlContainer.style.position = 'relative';
803
+ vmlContainer.style.overflow = 'hidden';
804
+
805
+ var hGrad = document.createElement(jsc._vmlNS + ':fill');
806
+ hGrad.type = 'gradient';
807
+ hGrad.method = 'linear';
808
+ hGrad.angle = '90';
809
+ hGrad.colors = '16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0'
810
+
811
+ var hRect = document.createElement(jsc._vmlNS + ':rect');
812
+ hRect.style.position = 'absolute';
813
+ hRect.style.left = -1 + 'px';
814
+ hRect.style.top = -1 + 'px';
815
+ hRect.stroked = false;
816
+ hRect.appendChild(hGrad);
817
+ vmlContainer.appendChild(hRect);
818
+
819
+ var vGrad = document.createElement(jsc._vmlNS + ':fill');
820
+ vGrad.type = 'gradient';
821
+ vGrad.method = 'linear';
822
+ vGrad.angle = '180';
823
+ vGrad.opacity = '0';
824
+
825
+ var vRect = document.createElement(jsc._vmlNS + ':rect');
826
+ vRect.style.position = 'absolute';
827
+ vRect.style.left = -1 + 'px';
828
+ vRect.style.top = -1 + 'px';
829
+ vRect.stroked = false;
830
+ vRect.appendChild(vGrad);
831
+ vmlContainer.appendChild(vRect);
832
+
833
+ var drawFunc = function (width, height, type) {
834
+ vmlContainer.style.width = width + 'px';
835
+ vmlContainer.style.height = height + 'px';
836
+
837
+ hRect.style.width =
838
+ vRect.style.width =
839
+ (width + 1) + 'px';
840
+ hRect.style.height =
841
+ vRect.style.height =
842
+ (height + 1) + 'px';
843
+
844
+ // Colors must be specified during every redraw, otherwise IE won't display
845
+ // a full gradient during a subsequential redraw
846
+ hGrad.color = '#F00';
847
+ hGrad.color2 = '#F00';
848
+
849
+ switch (type.toLowerCase()) {
850
+ case 's':
851
+ vGrad.color = vGrad.color2 = '#FFF';
852
+ break;
853
+ case 'v':
854
+ vGrad.color = vGrad.color2 = '#000';
855
+ break;
856
+ }
857
+ };
858
+
859
+ paletteObj.elm = vmlContainer;
860
+ paletteObj.draw = drawFunc;
861
+ }
862
+
863
+ return paletteObj;
864
+ },
865
+
866
+
867
+ createSliderGradient : function () {
868
+
869
+ var sliderObj = {
870
+ elm: null,
871
+ draw: null
872
+ };
873
+
874
+ if (jsc.isCanvasSupported) {
875
+ // Canvas implementation for modern browsers
876
+
877
+ var canvas = document.createElement('canvas');
878
+ var ctx = canvas.getContext('2d');
879
+
880
+ var drawFunc = function (width, height, color1, color2) {
881
+ canvas.width = width;
882
+ canvas.height = height;
883
+
884
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
885
+
886
+ var grad = ctx.createLinearGradient(0, 0, 0, canvas.height);
887
+ grad.addColorStop(0, color1);
888
+ grad.addColorStop(1, color2);
889
+
890
+ ctx.fillStyle = grad;
891
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
892
+ };
893
+
894
+ sliderObj.elm = canvas;
895
+ sliderObj.draw = drawFunc;
896
+
897
+ } else {
898
+ // VML fallback for IE 7 and 8
899
+
900
+ jsc.initVML();
901
+
902
+ var vmlContainer = document.createElement('div');
903
+ vmlContainer.style.position = 'relative';
904
+ vmlContainer.style.overflow = 'hidden';
905
+
906
+ var grad = document.createElement(jsc._vmlNS + ':fill');
907
+ grad.type = 'gradient';
908
+ grad.method = 'linear';
909
+ grad.angle = '180';
910
+
911
+ var rect = document.createElement(jsc._vmlNS + ':rect');
912
+ rect.style.position = 'absolute';
913
+ rect.style.left = -1 + 'px';
914
+ rect.style.top = -1 + 'px';
915
+ rect.stroked = false;
916
+ rect.appendChild(grad);
917
+ vmlContainer.appendChild(rect);
918
+
919
+ var drawFunc = function (width, height, color1, color2) {
920
+ vmlContainer.style.width = width + 'px';
921
+ vmlContainer.style.height = height + 'px';
922
+
923
+ rect.style.width = (width + 1) + 'px';
924
+ rect.style.height = (height + 1) + 'px';
925
+
926
+ grad.color = color1;
927
+ grad.color2 = color2;
928
+ };
929
+
930
+ sliderObj.elm = vmlContainer;
931
+ sliderObj.draw = drawFunc;
932
+ }
933
+
934
+ return sliderObj;
935
+ },
936
+
937
+
938
+ leaveValue : 1<<0,
939
+ leaveStyle : 1<<1,
940
+ leavePad : 1<<2,
941
+ leaveSld : 1<<3,
942
+
943
+
944
+ BoxShadow : (function () {
945
+ var BoxShadow = function (hShadow, vShadow, blur, spread, color, inset) {
946
+ this.hShadow = hShadow;
947
+ this.vShadow = vShadow;
948
+ this.blur = blur;
949
+ this.spread = spread;
950
+ this.color = color;
951
+ this.inset = !!inset;
952
+ };
953
+
954
+ BoxShadow.prototype.toString = function () {
955
+ var vals = [
956
+ Math.round(this.hShadow) + 'px',
957
+ Math.round(this.vShadow) + 'px',
958
+ Math.round(this.blur) + 'px',
959
+ Math.round(this.spread) + 'px',
960
+ this.color
961
+ ];
962
+ if (this.inset) {
963
+ vals.push('inset');
964
+ }
965
+ return vals.join(' ');
966
+ };
967
+
968
+ return BoxShadow;
969
+ })(),
970
+
971
+
972
+ //
973
+ // Usage:
974
+ // var myColor = new jscolor(<targetElement> [, <options>])
975
+ //
976
+
977
+ jscolor : function (targetElement, options) {
978
+
979
+ // General options
980
+ //
981
+ this.value = null; // initial HEX color. To change it later, use methods fromString(), fromHSV() and fromRGB()
982
+ this.valueElement = targetElement; // element that will be used to display and input the color code
983
+ this.styleElement = targetElement; // element that will preview the picked color using CSS backgroundColor
984
+ this.required = true; // whether the associated text <input> can be left empty
985
+ this.refine = true; // whether to refine the entered color code (e.g. uppercase it and remove whitespace)
986
+ this.hash = true; // whether to prefix the HEX color code with # symbol
987
+ this.uppercase = true; // whether to show the color code in upper case
988
+ this.onFineChange = null; // called instantly every time the color changes (value can be either a function or a string with javascript code)
989
+ this.activeClass = 'jscolor-active'; // class to be set to the target element when a picker window is open on it
990
+ this.overwriteImportant = false; // whether to overwrite colors of styleElement using !important
991
+ this.minS = 0; // min allowed saturation (0 - 100)
992
+ this.maxS = 100; // max allowed saturation (0 - 100)
993
+ this.minV = 0; // min allowed value (brightness) (0 - 100)
994
+ this.maxV = 100; // max allowed value (brightness) (0 - 100)
995
+
996
+ // Accessing the picked color
997
+ //
998
+ this.hsv = [0, 0, 100]; // read-only [0-360, 0-100, 0-100]
999
+ this.rgb = [255, 255, 255]; // read-only [0-255, 0-255, 0-255]
1000
+
1001
+ // Color Picker options
1002
+ //
1003
+ this.width = 200; // width of color palette (in px)
1004
+ this.height = 200; // height of color palette (in px)
1005
+ this.showOnClick = true; // whether to display the color picker when user clicks on its target element
1006
+ this.mode = 'HSV'; // HSV | HVS | HS | HV - layout of the color picker controls
1007
+ this.position = 'right'; // left | right | top | bottom - position relative to the target element
1008
+ this.smartPosition = true; // automatically change picker position when there is not enough space for it
1009
+ this.sliderSize = 16; // px
1010
+ this.crossSize = 8; // px
1011
+ this.closable = false; // whether to display the Close button
1012
+ this.closeText = 'Close';
1013
+ this.buttonColor = '#000000'; // CSS color
1014
+ this.buttonHeight = 18; // px
1015
+ this.padding = 12; // px
1016
+ this.backgroundColor = '#FFFFFF'; // CSS color
1017
+ this.borderWidth = 1; // px
1018
+ this.borderColor = '#BBBBBB'; // CSS color
1019
+ this.borderRadius = 8; // px
1020
+ this.insetWidth = 1; // px
1021
+ this.insetColor = '#BBBBBB'; // CSS color
1022
+ this.shadow = true; // whether to display shadow
1023
+ this.shadowBlur = 15; // px
1024
+ this.shadowColor = 'rgba(0,0,0,0.2)'; // CSS color
1025
+ this.pointerColor = '#4C4C4C'; // px
1026
+ this.pointerBorderColor = '#FFFFFF'; // px
1027
+ this.pointerBorderWidth = 1; // px
1028
+ this.pointerThickness = 2; // px
1029
+ this.zIndex = 1000;
1030
+ this.container = null; // where to append the color picker (BODY element by default)
1031
+
1032
+
1033
+ for (var opt in options) {
1034
+ if (options.hasOwnProperty(opt)) {
1035
+ this[opt] = options[opt];
1036
+ }
1037
+ }
1038
+
1039
+
1040
+ this.hide = function () {
1041
+ if (isPickerOwner()) {
1042
+ detachPicker();
1043
+ }
1044
+ };
1045
+
1046
+
1047
+ this.show = function () {
1048
+ drawPicker();
1049
+ };
1050
+
1051
+
1052
+ this.redraw = function () {
1053
+ if (isPickerOwner()) {
1054
+ drawPicker();
1055
+ }
1056
+ };
1057
+
1058
+
1059
+ this.importColor = function () {
1060
+ if (!this.valueElement) {
1061
+ this.exportColor();
1062
+ } else {
1063
+ if (jsc.isElementType(this.valueElement, 'input')) {
1064
+ if (!this.refine) {
1065
+ if (!this.fromString(this.valueElement.value, jsc.leaveValue)) {
1066
+ if (this.styleElement) {
1067
+ this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage;
1068
+ this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor;
1069
+ this.styleElement.style.color = this.styleElement._jscOrigStyle.color;
1070
+ }
1071
+ this.exportColor(jsc.leaveValue | jsc.leaveStyle);
1072
+ }
1073
+ } else if (!this.required && /^\s*$/.test(this.valueElement.value)) {
1074
+ this.valueElement.value = '';
1075
+ if (this.styleElement) {
1076
+ this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage;
1077
+ this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor;
1078
+ this.styleElement.style.color = this.styleElement._jscOrigStyle.color;
1079
+ }
1080
+ this.exportColor(jsc.leaveValue | jsc.leaveStyle);
1081
+
1082
+ } else if (this.fromString(this.valueElement.value)) {
1083
+ // managed to import color successfully from the value -> OK, don't do anything
1084
+ } else {
1085
+ this.exportColor();
1086
+ }
1087
+ } else {
1088
+ // not an input element -> doesn't have any value
1089
+ this.exportColor();
1090
+ }
1091
+ }
1092
+ };
1093
+
1094
+
1095
+ this.exportColor = function (flags) {
1096
+ if (!(flags & jsc.leaveValue) && this.valueElement) {
1097
+ var value = this.toString();
1098
+ if (this.uppercase) { value = value.toUpperCase(); }
1099
+ if (this.hash) { value = '#' + value; }
1100
+
1101
+ if (jsc.isElementType(this.valueElement, 'input')) {
1102
+ this.valueElement.value = value;
1103
+ } else {
1104
+ this.valueElement.innerHTML = value;
1105
+ }
1106
+ }
1107
+ if (!(flags & jsc.leaveStyle)) {
1108
+ if (this.styleElement) {
1109
+ var bgColor = '#' + this.toString();
1110
+ var fgColor = this.isLight() ? '#000' : '#FFF';
1111
+
1112
+ this.styleElement.style.backgroundImage = 'none';
1113
+ this.styleElement.style.backgroundColor = bgColor;
1114
+ this.styleElement.style.color = fgColor;
1115
+
1116
+ if (this.overwriteImportant) {
1117
+ this.styleElement.setAttribute('style',
1118
+ 'background: ' + bgColor + ' !important; ' +
1119
+ 'color: ' + fgColor + ' !important;'
1120
+ );
1121
+ }
1122
+ }
1123
+ }
1124
+ if (!(flags & jsc.leavePad) && isPickerOwner()) {
1125
+ redrawPad();
1126
+ }
1127
+ if (!(flags & jsc.leaveSld) && isPickerOwner()) {
1128
+ redrawSld();
1129
+ }
1130
+ };
1131
+
1132
+
1133
+ // h: 0-360
1134
+ // s: 0-100
1135
+ // v: 0-100
1136
+ //
1137
+ this.fromHSV = function (h, s, v, flags) { // null = don't change
1138
+ if (h !== null) {
1139
+ if (isNaN(h)) { return false; }
1140
+ h = Math.max(0, Math.min(360, h));
1141
+ }
1142
+ if (s !== null) {
1143
+ if (isNaN(s)) { return false; }
1144
+ s = Math.max(0, Math.min(100, this.maxS, s), this.minS);
1145
+ }
1146
+ if (v !== null) {
1147
+ if (isNaN(v)) { return false; }
1148
+ v = Math.max(0, Math.min(100, this.maxV, v), this.minV);
1149
+ }
1150
+
1151
+ this.rgb = HSV_RGB(
1152
+ h===null ? this.hsv[0] : (this.hsv[0]=h),
1153
+ s===null ? this.hsv[1] : (this.hsv[1]=s),
1154
+ v===null ? this.hsv[2] : (this.hsv[2]=v)
1155
+ );
1156
+
1157
+ this.exportColor(flags);
1158
+ };
1159
+
1160
+
1161
+ // r: 0-255
1162
+ // g: 0-255
1163
+ // b: 0-255
1164
+ //
1165
+ this.fromRGB = function (r, g, b, flags) { // null = don't change
1166
+ if (r !== null) {
1167
+ if (isNaN(r)) { return false; }
1168
+ r = Math.max(0, Math.min(255, r));
1169
+ }
1170
+ if (g !== null) {
1171
+ if (isNaN(g)) { return false; }
1172
+ g = Math.max(0, Math.min(255, g));
1173
+ }
1174
+ if (b !== null) {
1175
+ if (isNaN(b)) { return false; }
1176
+ b = Math.max(0, Math.min(255, b));
1177
+ }
1178
+
1179
+ var hsv = RGB_HSV(
1180
+ r===null ? this.rgb[0] : r,
1181
+ g===null ? this.rgb[1] : g,
1182
+ b===null ? this.rgb[2] : b
1183
+ );
1184
+ if (hsv[0] !== null) {
1185
+ this.hsv[0] = Math.max(0, Math.min(360, hsv[0]));
1186
+ }
1187
+ if (hsv[2] !== 0) {
1188
+ this.hsv[1] = hsv[1]===null ? null : Math.max(0, this.minS, Math.min(100, this.maxS, hsv[1]));
1189
+ }
1190
+ this.hsv[2] = hsv[2]===null ? null : Math.max(0, this.minV, Math.min(100, this.maxV, hsv[2]));
1191
+
1192
+ // update RGB according to final HSV, as some values might be trimmed
1193
+ var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
1194
+ this.rgb[0] = rgb[0];
1195
+ this.rgb[1] = rgb[1];
1196
+ this.rgb[2] = rgb[2];
1197
+
1198
+ this.exportColor(flags);
1199
+ };
1200
+
1201
+
1202
+ this.fromString = function (str, flags) {
1203
+ var m;
1204
+ if (m = str.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i)) {
1205
+ // HEX notation
1206
+ //
1207
+
1208
+ if (m[1].length === 6) {
1209
+ // 6-char notation
1210
+ this.fromRGB(
1211
+ parseInt(m[1].substr(0,2),16),
1212
+ parseInt(m[1].substr(2,2),16),
1213
+ parseInt(m[1].substr(4,2),16),
1214
+ flags
1215
+ );
1216
+ } else {
1217
+ // 3-char notation
1218
+ this.fromRGB(
1219
+ parseInt(m[1].charAt(0) + m[1].charAt(0),16),
1220
+ parseInt(m[1].charAt(1) + m[1].charAt(1),16),
1221
+ parseInt(m[1].charAt(2) + m[1].charAt(2),16),
1222
+ flags
1223
+ );
1224
+ }
1225
+ return true;
1226
+
1227
+ } else if (m = str.match(/^\W*rgba?\(([^)]*)\)\W*$/i)) {
1228
+ var params = m[1].split(',');
1229
+ var re = /^\s*(\d*)(\.\d+)?\s*$/;
1230
+ var mR, mG, mB;
1231
+ if (
1232
+ params.length >= 3 &&
1233
+ (mR = params[0].match(re)) &&
1234
+ (mG = params[1].match(re)) &&
1235
+ (mB = params[2].match(re))
1236
+ ) {
1237
+ var r = parseFloat((mR[1] || '0') + (mR[2] || ''));
1238
+ var g = parseFloat((mG[1] || '0') + (mG[2] || ''));
1239
+ var b = parseFloat((mB[1] || '0') + (mB[2] || ''));
1240
+ this.fromRGB(r, g, b, flags);
1241
+ return true;
1242
+ }
1243
+ }
1244
+ return false;
1245
+ };
1246
+
1247
+
1248
+ this.toString = function () {
1249
+ return (
1250
+ (0x100 | Math.round(this.rgb[0])).toString(16).substr(1) +
1251
+ (0x100 | Math.round(this.rgb[1])).toString(16).substr(1) +
1252
+ (0x100 | Math.round(this.rgb[2])).toString(16).substr(1)
1253
+ );
1254
+ };
1255
+
1256
+
1257
+ this.toHEXString = function () {
1258
+ return '#' + this.toString().toUpperCase();
1259
+ };
1260
+
1261
+
1262
+ this.toRGBString = function () {
1263
+ return ('rgb(' +
1264
+ Math.round(this.rgb[0]) + ',' +
1265
+ Math.round(this.rgb[1]) + ',' +
1266
+ Math.round(this.rgb[2]) + ')'
1267
+ );
1268
+ };
1269
+
1270
+
1271
+ this.isLight = function () {
1272
+ return (
1273
+ 0.213 * this.rgb[0] +
1274
+ 0.715 * this.rgb[1] +
1275
+ 0.072 * this.rgb[2] >
1276
+ 255 / 2
1277
+ );
1278
+ };
1279
+
1280
+
1281
+ this._processParentElementsInDOM = function () {
1282
+ if (this._linkedElementsProcessed) { return; }
1283
+ this._linkedElementsProcessed = true;
1284
+
1285
+ var elm = this.targetElement;
1286
+ do {
1287
+ // If the target element or one of its parent nodes has fixed position,
1288
+ // then use fixed positioning instead
1289
+ //
1290
+ // Note: In Firefox, getComputedStyle returns null in a hidden iframe,
1291
+ // that's why we need to check if the returned style object is non-empty
1292
+ var currStyle = jsc.getStyle(elm);
1293
+ if (currStyle && currStyle.position.toLowerCase() === 'fixed') {
1294
+ this.fixed = true;
1295
+ }
1296
+
1297
+ if (elm !== this.targetElement) {
1298
+ // Ensure to attach onParentScroll only once to each parent element
1299
+ // (multiple targetElements can share the same parent nodes)
1300
+ //
1301
+ // Note: It's not just offsetParents that can be scrollable,
1302
+ // that's why we loop through all parent nodes
1303
+ if (!elm._jscEventsAttached) {
1304
+ jsc.attachEvent(elm, 'scroll', jsc.onParentScroll);
1305
+ elm._jscEventsAttached = true;
1306
+ }
1307
+ }
1308
+ } while ((elm = elm.parentNode) && !jsc.isElementType(elm, 'body'));
1309
+ };
1310
+
1311
+
1312
+ // r: 0-255
1313
+ // g: 0-255
1314
+ // b: 0-255
1315
+ //
1316
+ // returns: [ 0-360, 0-100, 0-100 ]
1317
+ //
1318
+ function RGB_HSV (r, g, b) {
1319
+ r /= 255;
1320
+ g /= 255;
1321
+ b /= 255;
1322
+ var n = Math.min(Math.min(r,g),b);
1323
+ var v = Math.max(Math.max(r,g),b);
1324
+ var m = v - n;
1325
+ if (m === 0) { return [ null, 0, 100 * v ]; }
1326
+ var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
1327
+ return [
1328
+ 60 * (h===6?0:h),
1329
+ 100 * (m/v),
1330
+ 100 * v
1331
+ ];
1332
+ }
1333
+
1334
+
1335
+ // h: 0-360
1336
+ // s: 0-100
1337
+ // v: 0-100
1338
+ //
1339
+ // returns: [ 0-255, 0-255, 0-255 ]
1340
+ //
1341
+ function HSV_RGB (h, s, v) {
1342
+ var u = 255 * (v / 100);
1343
+
1344
+ if (h === null) {
1345
+ return [ u, u, u ];
1346
+ }
1347
+
1348
+ h /= 60;
1349
+ s /= 100;
1350
+
1351
+ var i = Math.floor(h);
1352
+ var f = i%2 ? h-i : 1-(h-i);
1353
+ var m = u * (1 - s);
1354
+ var n = u * (1 - s * f);
1355
+ switch (i) {
1356
+ case 6:
1357
+ case 0: return [u,n,m];
1358
+ case 1: return [n,u,m];
1359
+ case 2: return [m,u,n];
1360
+ case 3: return [m,n,u];
1361
+ case 4: return [n,m,u];
1362
+ case 5: return [u,m,n];
1363
+ }
1364
+ }
1365
+
1366
+
1367
+ function detachPicker () {
1368
+ jsc.unsetClass(THIS.targetElement, THIS.activeClass);
1369
+ jsc.picker.wrap.parentNode.removeChild(jsc.picker.wrap);
1370
+ delete jsc.picker.owner;
1371
+ }
1372
+
1373
+
1374
+ function drawPicker () {
1375
+
1376
+ // At this point, when drawing the picker, we know what the parent elements are
1377
+ // and we can do all related DOM operations, such as registering events on them
1378
+ // or checking their positioning
1379
+ THIS._processParentElementsInDOM();
1380
+
1381
+ if (!jsc.picker) {
1382
+ jsc.picker = {
1383
+ owner: null,
1384
+ wrap : document.createElement('div'),
1385
+ box : document.createElement('div'),
1386
+ boxS : document.createElement('div'), // shadow area
1387
+ boxB : document.createElement('div'), // border
1388
+ pad : document.createElement('div'),
1389
+ padB : document.createElement('div'), // border
1390
+ padM : document.createElement('div'), // mouse/touch area
1391
+ padPal : jsc.createPalette(),
1392
+ cross : document.createElement('div'),
1393
+ crossBY : document.createElement('div'), // border Y
1394
+ crossBX : document.createElement('div'), // border X
1395
+ crossLY : document.createElement('div'), // line Y
1396
+ crossLX : document.createElement('div'), // line X
1397
+ sld : document.createElement('div'),
1398
+ sldB : document.createElement('div'), // border
1399
+ sldM : document.createElement('div'), // mouse/touch area
1400
+ sldGrad : jsc.createSliderGradient(),
1401
+ sldPtrS : document.createElement('div'), // slider pointer spacer
1402
+ sldPtrIB : document.createElement('div'), // slider pointer inner border
1403
+ sldPtrMB : document.createElement('div'), // slider pointer middle border
1404
+ sldPtrOB : document.createElement('div'), // slider pointer outer border
1405
+ btn : document.createElement('div'),
1406
+ btnT : document.createElement('span') // text
1407
+ };
1408
+
1409
+ jsc.picker.pad.appendChild(jsc.picker.padPal.elm);
1410
+ jsc.picker.padB.appendChild(jsc.picker.pad);
1411
+ jsc.picker.cross.appendChild(jsc.picker.crossBY);
1412
+ jsc.picker.cross.appendChild(jsc.picker.crossBX);
1413
+ jsc.picker.cross.appendChild(jsc.picker.crossLY);
1414
+ jsc.picker.cross.appendChild(jsc.picker.crossLX);
1415
+ jsc.picker.padB.appendChild(jsc.picker.cross);
1416
+ jsc.picker.box.appendChild(jsc.picker.padB);
1417
+ jsc.picker.box.appendChild(jsc.picker.padM);
1418
+
1419
+ jsc.picker.sld.appendChild(jsc.picker.sldGrad.elm);
1420
+ jsc.picker.sldB.appendChild(jsc.picker.sld);
1421
+ jsc.picker.sldB.appendChild(jsc.picker.sldPtrOB);
1422
+ jsc.picker.sldPtrOB.appendChild(jsc.picker.sldPtrMB);
1423
+ jsc.picker.sldPtrMB.appendChild(jsc.picker.sldPtrIB);
1424
+ jsc.picker.sldPtrIB.appendChild(jsc.picker.sldPtrS);
1425
+ jsc.picker.box.appendChild(jsc.picker.sldB);
1426
+ jsc.picker.box.appendChild(jsc.picker.sldM);
1427
+
1428
+ jsc.picker.btn.appendChild(jsc.picker.btnT);
1429
+ jsc.picker.box.appendChild(jsc.picker.btn);
1430
+
1431
+ jsc.picker.boxB.appendChild(jsc.picker.box);
1432
+ jsc.picker.wrap.appendChild(jsc.picker.boxS);
1433
+ jsc.picker.wrap.appendChild(jsc.picker.boxB);
1434
+ }
1435
+
1436
+ var p = jsc.picker;
1437
+
1438
+ var displaySlider = !!jsc.getSliderComponent(THIS);
1439
+ var dims = jsc.getPickerDims(THIS);
1440
+ var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);
1441
+ var padToSliderPadding = jsc.getPadToSliderPadding(THIS);
1442
+ var borderRadius = Math.min(
1443
+ THIS.borderRadius,
1444
+ Math.round(THIS.padding * Math.PI)); // px
1445
+ var padCursor = 'crosshair';
1446
+
1447
+ // wrap
1448
+ p.wrap.style.clear = 'both';
1449
+ p.wrap.style.width = (dims[0] + 2 * THIS.borderWidth) + 'px';
1450
+ p.wrap.style.height = (dims[1] + 2 * THIS.borderWidth) + 'px';
1451
+ p.wrap.style.zIndex = THIS.zIndex;
1452
+
1453
+ // picker
1454
+ p.box.style.width = dims[0] + 'px';
1455
+ p.box.style.height = dims[1] + 'px';
1456
+
1457
+ p.boxS.style.position = 'absolute';
1458
+ p.boxS.style.left = '0';
1459
+ p.boxS.style.top = '0';
1460
+ p.boxS.style.width = '100%';
1461
+ p.boxS.style.height = '100%';
1462
+ jsc.setBorderRadius(p.boxS, borderRadius + 'px');
1463
+
1464
+ // picker border
1465
+ p.boxB.style.position = 'relative';
1466
+ p.boxB.style.border = THIS.borderWidth + 'px solid';
1467
+ p.boxB.style.borderColor = THIS.borderColor;
1468
+ p.boxB.style.background = THIS.backgroundColor;
1469
+ jsc.setBorderRadius(p.boxB, borderRadius + 'px');
1470
+
1471
+ // IE hack:
1472
+ // If the element is transparent, IE will trigger the event on the elements under it,
1473
+ // e.g. on Canvas or on elements with border
1474
+ p.padM.style.background =
1475
+ p.sldM.style.background =
1476
+ '#FFF';
1477
+ jsc.setStyle(p.padM, 'opacity', '0');
1478
+ jsc.setStyle(p.sldM, 'opacity', '0');
1479
+
1480
+ // pad
1481
+ p.pad.style.position = 'relative';
1482
+ p.pad.style.width = THIS.width + 'px';
1483
+ p.pad.style.height = THIS.height + 'px';
1484
+
1485
+ // pad palettes (HSV and HVS)
1486
+ p.padPal.draw(THIS.width, THIS.height, jsc.getPadYComponent(THIS));
1487
+
1488
+ // pad border
1489
+ p.padB.style.position = 'absolute';
1490
+ p.padB.style.left = THIS.padding + 'px';
1491
+ p.padB.style.top = THIS.padding + 'px';
1492
+ p.padB.style.border = THIS.insetWidth + 'px solid';
1493
+ p.padB.style.borderColor = THIS.insetColor;
1494
+
1495
+ // pad mouse area
1496
+ p.padM._jscInstance = THIS;
1497
+ p.padM._jscControlName = 'pad';
1498
+ p.padM.style.position = 'absolute';
1499
+ p.padM.style.left = '0';
1500
+ p.padM.style.top = '0';
1501
+ p.padM.style.width = (THIS.padding + 2 * THIS.insetWidth + THIS.width + padToSliderPadding / 2) + 'px';
1502
+ p.padM.style.height = dims[1] + 'px';
1503
+ p.padM.style.cursor = padCursor;
1504
+
1505
+ // pad cross
1506
+ p.cross.style.position = 'absolute';
1507
+ p.cross.style.left =
1508
+ p.cross.style.top =
1509
+ '0';
1510
+ p.cross.style.width =
1511
+ p.cross.style.height =
1512
+ crossOuterSize + 'px';
1513
+
1514
+ // pad cross border Y and X
1515
+ p.crossBY.style.position =
1516
+ p.crossBX.style.position =
1517
+ 'absolute';
1518
+ p.crossBY.style.background =
1519
+ p.crossBX.style.background =
1520
+ THIS.pointerBorderColor;
1521
+ p.crossBY.style.width =
1522
+ p.crossBX.style.height =
1523
+ (2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';
1524
+ p.crossBY.style.height =
1525
+ p.crossBX.style.width =
1526
+ crossOuterSize + 'px';
1527
+ p.crossBY.style.left =
1528
+ p.crossBX.style.top =
1529
+ (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2) - THIS.pointerBorderWidth) + 'px';
1530
+ p.crossBY.style.top =
1531
+ p.crossBX.style.left =
1532
+ '0';
1533
+
1534
+ // pad cross line Y and X
1535
+ p.crossLY.style.position =
1536
+ p.crossLX.style.position =
1537
+ 'absolute';
1538
+ p.crossLY.style.background =
1539
+ p.crossLX.style.background =
1540
+ THIS.pointerColor;
1541
+ p.crossLY.style.height =
1542
+ p.crossLX.style.width =
1543
+ (crossOuterSize - 2 * THIS.pointerBorderWidth) + 'px';
1544
+ p.crossLY.style.width =
1545
+ p.crossLX.style.height =
1546
+ THIS.pointerThickness + 'px';
1547
+ p.crossLY.style.left =
1548
+ p.crossLX.style.top =
1549
+ (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2)) + 'px';
1550
+ p.crossLY.style.top =
1551
+ p.crossLX.style.left =
1552
+ THIS.pointerBorderWidth + 'px';
1553
+
1554
+ // slider
1555
+ p.sld.style.overflow = 'hidden';
1556
+ p.sld.style.width = THIS.sliderSize + 'px';
1557
+ p.sld.style.height = THIS.height + 'px';
1558
+
1559
+ // slider gradient
1560
+ p.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000');
1561
+
1562
+ // slider border
1563
+ p.sldB.style.display = displaySlider ? 'block' : 'none';
1564
+ p.sldB.style.position = 'absolute';
1565
+ p.sldB.style.right = THIS.padding + 'px';
1566
+ p.sldB.style.top = THIS.padding + 'px';
1567
+ p.sldB.style.border = THIS.insetWidth + 'px solid';
1568
+ p.sldB.style.borderColor = THIS.insetColor;
1569
+
1570
+ // slider mouse area
1571
+ p.sldM._jscInstance = THIS;
1572
+ p.sldM._jscControlName = 'sld';
1573
+ p.sldM.style.display = displaySlider ? 'block' : 'none';
1574
+ p.sldM.style.position = 'absolute';
1575
+ p.sldM.style.right = '0';
1576
+ p.sldM.style.top = '0';
1577
+ p.sldM.style.width = (THIS.sliderSize + padToSliderPadding / 2 + THIS.padding + 2 * THIS.insetWidth) + 'px';
1578
+ p.sldM.style.height = dims[1] + 'px';
1579
+ p.sldM.style.cursor = 'default';
1580
+
1581
+ // slider pointer inner and outer border
1582
+ p.sldPtrIB.style.border =
1583
+ p.sldPtrOB.style.border =
1584
+ THIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor;
1585
+
1586
+ // slider pointer outer border
1587
+ p.sldPtrOB.style.position = 'absolute';
1588
+ p.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';
1589
+ p.sldPtrOB.style.top = '0';
1590
+
1591
+ // slider pointer middle border
1592
+ p.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor;
1593
+
1594
+ // slider pointer spacer
1595
+ p.sldPtrS.style.width = THIS.sliderSize + 'px';
1596
+ p.sldPtrS.style.height = sliderPtrSpace + 'px';
1597
+
1598
+ // the Close button
1599
+ function setBtnBorder () {
1600
+ var insetColors = THIS.insetColor.split(/\s+/);
1601
+ var outsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
1602
+ p.btn.style.borderColor = outsetColor;
1603
+ }
1604
+ p.btn.style.display = THIS.closable ? 'block' : 'none';
1605
+ p.btn.style.position = 'absolute';
1606
+ p.btn.style.left = THIS.padding + 'px';
1607
+ p.btn.style.bottom = THIS.padding + 'px';
1608
+ p.btn.style.padding = '0 15px';
1609
+ p.btn.style.height = THIS.buttonHeight + 'px';
1610
+ p.btn.style.border = THIS.insetWidth + 'px solid';
1611
+ setBtnBorder();
1612
+ p.btn.style.color = THIS.buttonColor;
1613
+ p.btn.style.font = '12px sans-serif';
1614
+ p.btn.style.textAlign = 'center';
1615
+ try {
1616
+ p.btn.style.cursor = 'pointer';
1617
+ } catch(eOldIE) {
1618
+ p.btn.style.cursor = 'hand';
1619
+ }
1620
+ p.btn.onmousedown = function () {
1621
+ THIS.hide();
1622
+ };
1623
+ p.btnT.style.lineHeight = THIS.buttonHeight + 'px';
1624
+ p.btnT.innerHTML = '';
1625
+ p.btnT.appendChild(document.createTextNode(THIS.closeText));
1626
+
1627
+ // place pointers
1628
+ redrawPad();
1629
+ redrawSld();
1630
+
1631
+ // If we are changing the owner without first closing the picker,
1632
+ // make sure to first deal with the old owner
1633
+ if (jsc.picker.owner && jsc.picker.owner !== THIS) {
1634
+ jsc.unsetClass(jsc.picker.owner.targetElement, THIS.activeClass);
1635
+ }
1636
+
1637
+ // Set the new picker owner
1638
+ jsc.picker.owner = THIS;
1639
+
1640
+ // The redrawPosition() method needs picker.owner to be set, that's why we call it here,
1641
+ // after setting the owner
1642
+ if (jsc.isElementType(container, 'body')) {
1643
+ jsc.redrawPosition();
1644
+ } else {
1645
+ jsc._drawPosition(THIS, 0, 0, 'relative', false);
1646
+ }
1647
+
1648
+ if (p.wrap.parentNode != container) {
1649
+ container.appendChild(p.wrap);
1650
+ }
1651
+
1652
+ jsc.setClass(THIS.targetElement, THIS.activeClass);
1653
+ }
1654
+
1655
+
1656
+ function redrawPad () {
1657
+ // redraw the pad pointer
1658
+ switch (jsc.getPadYComponent(THIS)) {
1659
+ case 's': var yComponent = 1; break;
1660
+ case 'v': var yComponent = 2; break;
1661
+ }
1662
+ var x = Math.round((THIS.hsv[0] / 360) * (THIS.width - 1));
1663
+ var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1));
1664
+ var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);
1665
+ var ofs = -Math.floor(crossOuterSize / 2);
1666
+ jsc.picker.cross.style.left = (x + ofs) + 'px';
1667
+ jsc.picker.cross.style.top = (y + ofs) + 'px';
1668
+
1669
+ // redraw the slider
1670
+ switch (jsc.getSliderComponent(THIS)) {
1671
+ case 's':
1672
+ var rgb1 = HSV_RGB(THIS.hsv[0], 100, THIS.hsv[2]);
1673
+ var rgb2 = HSV_RGB(THIS.hsv[0], 0, THIS.hsv[2]);
1674
+ var color1 = 'rgb(' +
1675
+ Math.round(rgb1[0]) + ',' +
1676
+ Math.round(rgb1[1]) + ',' +
1677
+ Math.round(rgb1[2]) + ')';
1678
+ var color2 = 'rgb(' +
1679
+ Math.round(rgb2[0]) + ',' +
1680
+ Math.round(rgb2[1]) + ',' +
1681
+ Math.round(rgb2[2]) + ')';
1682
+ jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);
1683
+ break;
1684
+ case 'v':
1685
+ var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 100);
1686
+ var color1 = 'rgb(' +
1687
+ Math.round(rgb[0]) + ',' +
1688
+ Math.round(rgb[1]) + ',' +
1689
+ Math.round(rgb[2]) + ')';
1690
+ var color2 = '#000';
1691
+ jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);
1692
+ break;
1693
+ }
1694
+ }
1695
+
1696
+
1697
+ function redrawSld () {
1698
+ var sldComponent = jsc.getSliderComponent(THIS);
1699
+ if (sldComponent) {
1700
+ // redraw the slider pointer
1701
+ switch (sldComponent) {
1702
+ case 's': var yComponent = 1; break;
1703
+ case 'v': var yComponent = 2; break;
1704
+ }
1705
+ var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1));
1706
+ jsc.picker.sldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(sliderPtrSpace / 2)) + 'px';
1707
+ }
1708
+ }
1709
+
1710
+
1711
+ function isPickerOwner () {
1712
+ return jsc.picker && jsc.picker.owner === THIS;
1713
+ }
1714
+
1715
+
1716
+ function blurValue () {
1717
+ THIS.importColor();
1718
+ }
1719
+
1720
+
1721
+ // Find the target element
1722
+ if (typeof targetElement === 'string') {
1723
+ var id = targetElement;
1724
+ var elm = document.getElementById(id);
1725
+ if (elm) {
1726
+ this.targetElement = elm;
1727
+ } else {
1728
+ jsc.warn('Could not find target element with ID \'' + id + '\'');
1729
+ }
1730
+ } else if (targetElement) {
1731
+ this.targetElement = targetElement;
1732
+ } else {
1733
+ jsc.warn('Invalid target element: \'' + targetElement + '\'');
1734
+ }
1735
+
1736
+ if (this.targetElement._jscLinkedInstance) {
1737
+ jsc.warn('Cannot link jscolor twice to the same element. Skipping.');
1738
+ return;
1739
+ }
1740
+ this.targetElement._jscLinkedInstance = this;
1741
+
1742
+ // Find the value element
1743
+ this.valueElement = jsc.fetchElement(this.valueElement);
1744
+ // Find the style element
1745
+ this.styleElement = jsc.fetchElement(this.styleElement);
1746
+
1747
+ var THIS = this;
1748
+ var container =
1749
+ this.container ?
1750
+ jsc.fetchElement(this.container) :
1751
+ document.getElementsByTagName('body')[0];
1752
+ var sliderPtrSpace = 3; // px
1753
+
1754
+ // For BUTTON elements it's important to stop them from sending the form when clicked
1755
+ // (e.g. in Safari)
1756
+ if (jsc.isElementType(this.targetElement, 'button')) {
1757
+ if (this.targetElement.onclick) {
1758
+ var origCallback = this.targetElement.onclick;
1759
+ this.targetElement.onclick = function (evt) {
1760
+ origCallback.call(this, evt);
1761
+ return false;
1762
+ };
1763
+ } else {
1764
+ this.targetElement.onclick = function () { return false; };
1765
+ }
1766
+ }
1767
+
1768
+ /*
1769
+ var elm = this.targetElement;
1770
+ do {
1771
+ // If the target element or one of its offsetParents has fixed position,
1772
+ // then use fixed positioning instead
1773
+ //
1774
+ // Note: In Firefox, getComputedStyle returns null in a hidden iframe,
1775
+ // that's why we need to check if the returned style object is non-empty
1776
+ var currStyle = jsc.getStyle(elm);
1777
+ if (currStyle && currStyle.position.toLowerCase() === 'fixed') {
1778
+ this.fixed = true;
1779
+ }
1780
+
1781
+ if (elm !== this.targetElement) {
1782
+ // attach onParentScroll so that we can recompute the picker position
1783
+ // when one of the offsetParents is scrolled
1784
+ if (!elm._jscEventsAttached) {
1785
+ jsc.attachEvent(elm, 'scroll', jsc.onParentScroll);
1786
+ elm._jscEventsAttached = true;
1787
+ }
1788
+ }
1789
+ } while ((elm = elm.offsetParent) && !jsc.isElementType(elm, 'body'));
1790
+ */
1791
+
1792
+ // valueElement
1793
+ if (this.valueElement) {
1794
+ if (jsc.isElementType(this.valueElement, 'input')) {
1795
+ var updateField = function () {
1796
+ THIS.fromString(THIS.valueElement.value, jsc.leaveValue);
1797
+ jsc.dispatchFineChange(THIS);
1798
+ };
1799
+ jsc.attachEvent(this.valueElement, 'keyup', updateField);
1800
+ jsc.attachEvent(this.valueElement, 'input', updateField);
1801
+ jsc.attachEvent(this.valueElement, 'blur', blurValue);
1802
+ this.valueElement.setAttribute('autocomplete', 'off');
1803
+ }
1804
+ }
1805
+
1806
+ // styleElement
1807
+ if (this.styleElement) {
1808
+ this.styleElement._jscOrigStyle = {
1809
+ backgroundImage : this.styleElement.style.backgroundImage,
1810
+ backgroundColor : this.styleElement.style.backgroundColor,
1811
+ color : this.styleElement.style.color
1812
+ };
1813
+ }
1814
+
1815
+ if (this.value) {
1816
+ // Try to set the color from the .value option and if unsuccessful,
1817
+ // export the current color
1818
+ this.fromString(this.value) || this.exportColor();
1819
+ } else {
1820
+ this.importColor();
1821
+ }
1822
+ }
1823
+
1824
+ };
1825
+
1826
+
1827
+ //================================
1828
+ // Public properties and methods
1829
+ //================================
1830
+
1831
+
1832
+ // By default, search for all elements with class="jscolor" and install a color picker on them.
1833
+ //
1834
+ // You can change what class name will be looked for by setting the property jscolor.lookupClass
1835
+ // anywhere in your HTML document. To completely disable the automatic lookup, set it to null.
1836
+ //
1837
+ jsc.jscolor.lookupClass = 'jscolor';
1838
+
1839
+
1840
+ jsc.jscolor.installByClassName = function (className) {
1841
+ var inputElms = document.getElementsByTagName('input');
1842
+ var buttonElms = document.getElementsByTagName('button');
1843
+
1844
+ jsc.tryInstallOnElements(inputElms, className);
1845
+ jsc.tryInstallOnElements(buttonElms, className);
1846
+ };
1847
+
1848
+
1849
+ jsc.register();
1850
+
1851
+
1852
+ return jsc.jscolor;
1853
+
1854
+
1855
+ })(); }
admin/assets/js/settings.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($){
2
+ $(document).ready(function(){
3
+ $('input#wapt_text-line-spacing').attr('step', '0.1');
4
+ $('input#wapt_text-line-spacing').attr('min', '0');
5
+
6
+ //Чтобы при клике на label не открывались закрытые опции
7
+ $("label[for*='wapt_']").on('click', function (e) {
8
+ e.preventDefault();
9
+ })
10
+ });
11
+ })(jQuery);
admin/assets/js/upload-font.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function ( $ ) {
2
+
3
+ var $element = $(".factory-bootstrap-426 .factory-wapt-fonts");
4
+ var upload_button = $('#wapt-upload-button');
5
+ var upload_loader = $('#wapt-upload-loader');
6
+
7
+ $element.factoryBootstrap426_dropdownControl();
8
+
9
+ upload_button.on('click', function(e){
10
+ e.preventDefault();
11
+ $('#wapt-font-file').trigger('click');
12
+ });
13
+
14
+ $('#wapt-font-file').on('change', function(event){
15
+ upload_button.attr('disabled', 'disabled');
16
+ upload_loader.toggleClass('wapt-loader-invisible');
17
+ files = this.files;
18
+ //event.stopPropagation(); // остановка всех текущих JS событий
19
+
20
+ // ничего не делаем если files пустой
21
+ if( typeof files == 'undefined' || files.length < 1) return;
22
+
23
+ var data = new FormData();
24
+
25
+ // заполняем объект данных файлами в подходящем для отправки формате
26
+ $.each( files, function( key, value ){
27
+ data.append( key, value );
28
+ });
29
+
30
+ data.append( 'action', 'wapt_upload_font' );
31
+ data.append( 'wpnonce', wapt_upload_font.nonce );
32
+ data.append( 'is_font_upload', 1 );
33
+
34
+ $.ajax({
35
+ url : ajaxurl,
36
+ type : 'POST',
37
+ data : data,
38
+ cache : false,
39
+ dataType : 'json',
40
+ processData : false,
41
+ contentType : false,
42
+ success : function( respond, status, jqXHR ){
43
+ if( typeof respond.error === 'undefined' ){
44
+ $('#wapt-font-file').val([]);
45
+ console.log(respond.files);
46
+ file = respond.files;
47
+ var $option = $('<option />')
48
+ .attr('value', file.name)
49
+ .text(file.name)
50
+ .appendTo($element);
51
+ }
52
+ else {
53
+ alert('ERROR: ' + respond.error );
54
+ console.log('ERROR: ' + respond.error );
55
+ }
56
+ },
57
+ error: function( jqXHR, status, errorThrown ){
58
+ console.log( 'AJAX error: ' + status, jqXHR );
59
+ },
60
+ complete: function( ){
61
+ upload_button.removeAttr('disabled');
62
+ upload_loader.toggleClass('wapt-loader-invisible');
63
+ }
64
+
65
+ });
66
+ });
67
+
68
+ });
admin/class-wapt-activation.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_Factory421_Activator
8
  *
9
  * @version 1.0.1
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WAPT_Activation extends Wbcr_Factory421_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
@@ -23,6 +23,14 @@ class WAPT_Activation extends Wbcr_Factory421_Activator {
23
  */
24
  public function activate() {
25
  // Code to be executed during plugin activation
 
 
 
 
 
 
 
 
26
  }
27
 
28
  /**
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_Factory425_Activator
8
  *
9
  * @version 1.0.1
10
  */
14
  exit;
15
  }
16
 
17
+ class WAPT_Activation extends Wbcr_Factory425_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
23
  */
24
  public function activate() {
25
  // Code to be executed during plugin activation
26
+ $limit = array(
27
+ 'count' => 10,
28
+ 'expires' => time(),
29
+ );
30
+ $google_limit = WAPT_Plugin::app()->getOption('google_limit');
31
+ if(!$google_limit) WAPT_Plugin::app()->updateOption('google_limit', $limit);
32
+
33
+ //update_option( $this->plugin->getOptionName( 'whats_new_v360' ), 1 );
34
  }
35
 
36
  /**
admin/class-wapt-page.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_FactoryPages421_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WAPT_Page extends Wbcr_FactoryPages421_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
@@ -59,7 +59,10 @@ class WAPT_Page extends Wbcr_FactoryPages421_AdminPage {
59
 
60
  $this->scripts->request( [
61
  'control.checkbox',
62
- 'control.dropdown'
 
 
 
63
  ], 'bootstrap' );
64
 
65
  $this->styles->request( [
@@ -68,6 +71,8 @@ class WAPT_Page extends Wbcr_FactoryPages421_AdminPage {
68
  'bootstrap.separator',
69
  'control.dropdown',
70
  'control.checkbox',
 
 
71
  ], 'bootstrap' );
72
  }
73
 
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_FactoryPages425_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
14
  exit;
15
  }
16
 
17
+ class WAPT_Page extends Wbcr_FactoryPages425_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
59
 
60
  $this->scripts->request( [
61
  'control.checkbox',
62
+ 'control.dropdown',
63
+ 'control.integer',
64
+ 'plugin.nouislider',
65
+ 'bootstrap.dropdown'
66
  ], 'bootstrap' );
67
 
68
  $this->styles->request( [
71
  'bootstrap.separator',
72
  'control.dropdown',
73
  'control.checkbox',
74
+ 'control.integer',
75
+ 'plugin.nouislider',
76
  ], 'bootstrap' );
77
  }
78
 
admin/pages/generate.php CHANGED
@@ -20,7 +20,7 @@ class WAPT_Generate extends WAPT_Page {
20
  * Mainly used to navigate between pages.
21
  *
22
  * @since 1.0.0
23
- * @see FactoryPages421_AdminPage
24
  *
25
  * @var string
26
  */
20
  * Mainly used to navigate between pages.
21
  *
22
  * @since 1.0.0
23
+ * @see FactoryPages425_AdminPage
24
  *
25
  * @var string
26
  */
admin/pages/license.php CHANGED
@@ -52,7 +52,7 @@ class WAPT_License extends WAPT_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 WAPT_License extends WAPT_Page {
70
 
71
  /**
72
  * @since 2.0.7
73
- * @var \WBCR\Factory_413\Premium\Interfaces\License
74
  */
75
  protected $premium_license;
76
 
@@ -79,9 +79,9 @@ class WAPT_License extends WAPT_Page {
79
 
80
  /**
81
  * {@inheritdoc}
82
- * @param Wbcr_Factory421_Plugin $plugin
83
  */
84
- public function __construct ( Wbcr_Factory421_Plugin $plugin ) {
85
  $this->plugin = $plugin;
86
 
87
  parent::__construct( $plugin );
52
 
53
  /**
54
  * @since 2.0.7
55
+ * @var \WBCR\Factory_425\Premium\Provider
56
  */
57
  protected $premium;
58
 
70
 
71
  /**
72
  * @since 2.0.7
73
+ * @var \WBCR\Factory_425\Premium\Interfaces\License
74
  */
75
  protected $premium_license;
76
 
79
 
80
  /**
81
  * {@inheritdoc}
82
+ * @param WAPT_Plugin $plugin
83
  */
84
+ public function __construct ( $plugin ) {
85
  $this->plugin = $plugin;
86
 
87
  parent::__construct( $plugin );
admin/pages/settings.php CHANGED
@@ -48,18 +48,39 @@ class WAPT_Settings extends WAPT_Page {
48
  $this->capabilitiy = "manage_options";
49
  $this->template_name = "settings";
50
 
51
- parent::__construct( $plugin );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
  $this->plugin = $plugin;
 
 
54
  }
55
 
56
  /**
57
  * Returns options for the Basic Settings screen.
58
  *
59
- * @since 1.0.0
60
  * @return array
61
  */
62
- public function getOptions() {
63
 
64
  $options = [];
65
 
@@ -76,9 +97,26 @@ class WAPT_Settings extends WAPT_Page {
76
  'type' => 'checkbox',
77
  'way' => 'buttons',
78
  'name' => 'auto_generation',
79
- 'title' => __( 'Enable automatic post thumbnail generation', 'apt' ),
80
- 'default' => false,
81
- 'hint' => __( 'Enable automatic post thumbnail generation', 'apt' )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  ];
83
 
84
  $options[] = [
@@ -89,6 +127,300 @@ class WAPT_Settings extends WAPT_Page {
89
  'default' => false,
90
  'hint' => __( 'Delete settings when removing the plugin', 'apt' )
91
  ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  /* GOOGLE */
93
  $options[] = [
94
  'type' => 'html',
@@ -99,6 +431,12 @@ class WAPT_Settings extends WAPT_Page {
99
  'type' => 'separator'
100
  ];
101
 
 
 
 
 
 
 
102
  // Текстовое поле
103
  $options[] = [
104
  'type' => 'textbox',
@@ -126,17 +464,34 @@ class WAPT_Settings extends WAPT_Page {
126
  }
127
 
128
  public function indexAction() {
129
-
 
 
130
  // creating a form
131
  global $form;
132
- $form = new Wbcr_FactoryForms419_Form( [
133
  'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
134
  'name' => 'setting'
135
  ], $this->plugin );
136
 
137
- $form->setProvider( new Wbcr_FactoryForms419_OptionsValueProvider( $this->plugin ) );
138
 
139
- $form->add( $this->getOptions() );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
 
141
  $wapt_saved = WAPT_Plugin::app()->request->post( $this->plugin->getPrefix() . 'saved', '' );
142
  if ( ! empty( $wapt_saved ) ) {
48
  $this->capabilitiy = "manage_options";
49
  $this->template_name = "settings";
50
 
51
+ add_action( 'wbcr_factory_forms_423_register_controls', function(){
52
+ $colorControls = array(
53
+ [
54
+ 'type' => 'wapt-color',
55
+ 'class' => 'Wapt_FactoryForms_ColorControl',
56
+ 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.color.php'
57
+ ],
58
+ [
59
+ 'type' => 'wapt-mediabutton',
60
+ 'class' => 'Wapt_FactoryForms_MediaButtonControl',
61
+ 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.mediabutton.php'
62
+ ],
63
+ [
64
+ 'type' => 'wapt-fonts',
65
+ 'class' => 'Wapt_FactoryForms_FontsControl',
66
+ 'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.fonts.php'
67
+ ],
68
+ );
69
+ $this->plugin->forms->registerControls( $colorControls );
70
+ });
71
 
72
  $this->plugin = $plugin;
73
+
74
+ parent::__construct( $plugin );
75
  }
76
 
77
  /**
78
  * Returns options for the Basic Settings screen.
79
  *
80
+ * @since 3.6.2
81
  * @return array
82
  */
83
+ public function getOptions_general() {
84
 
85
  $options = [];
86
 
97
  'type' => 'checkbox',
98
  'way' => 'buttons',
99
  'name' => 'auto_generation',
100
+ 'title' => __( 'Add featured image when saving a post', 'apt' ),
101
+ 'default' => true,
102
+ 'hint' => __( 'Automatically add featured image when saving a post', 'apt' )
103
+ ];
104
+
105
+ $options[] = [
106
+ 'type' => 'dropdown',
107
+ 'way' => 'buttons',
108
+ 'name' => 'generate_autoimage',
109
+ 'data' => [
110
+ [ 'find', __( 'Find in post', 'apt' ) ],
111
+ [ 'generate', __( 'Generate from title', 'apt' ) ],
112
+ [ 'both', __( 'Both', 'apt' ) ],
113
+ ],
114
+ 'default' => 'find',
115
+ 'title' => __( 'Featured image', 'apt' ),
116
+ 'hint' => __( "How to generate featured image:
117
+ <br> <b>Find in post:</b> search for the first image in the post text
118
+ <br> <b>Generate from title:</b> created from the title on a colored background
119
+ <br> <b>Both:</b> find an image in the post text, if it is not present, generate it from the title", 'apt' ),
120
  ];
121
 
122
  $options[] = [
127
  'default' => false,
128
  'hint' => __( 'Delete settings when removing the plugin', 'apt' )
129
  ];
130
+
131
+ return $options;
132
+ }
133
+
134
+ /**
135
+ * Returns options for the Basic Settings screen.
136
+ *
137
+ * @since 3.6.2
138
+ * @return array
139
+ */
140
+ public function getOptions_image() {
141
+
142
+ $is_premium = AutoPostThumbnails::instance()->is_premium();
143
+ $pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
144
+
145
+ $options = [];
146
+
147
+ $options[] = [
148
+ 'type' => 'html',
149
+ 'html' => '<h3 style="margin-left:0">'.__( 'Background settings', 'apt' ).'</h3>'
150
+ ];
151
+
152
+ $options[] = [
153
+ 'type' => 'separator'
154
+ ];
155
+
156
+ $options[] = [
157
+ 'type' => 'dropdown',
158
+ 'way' => 'buttons',
159
+ 'name' => 'background-type',
160
+ 'data' => [
161
+ [ 'color', __( 'Color', 'apt' ) ],
162
+ [ 'image', __( 'Image', 'apt' ) ],
163
+ ],
164
+ 'default' => 'color',
165
+ 'title' => __( 'Background type', 'apt' ),
166
+ 'hint' => __( 'Select the background type for the featured image', 'apt' ),
167
+ 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
168
+ ];
169
+
170
+ $options[] = [
171
+ 'type' => 'wapt-color',
172
+ 'name' => 'background-color',
173
+ 'default' => '#ff6262',
174
+ 'title' => __( 'Background color for the image', 'apt' ),
175
+ 'hint' => __( 'Set the background color for the featured image', 'apt' )
176
+ ];
177
+
178
+ if($is_premium) {
179
+ $options[] = [
180
+ 'type' => 'wapt-mediabutton',
181
+ 'name' => 'background-image',
182
+ 'text' => __( 'Select image', 'apt' ),
183
+ 'title' => __( 'Background image', 'apt' ),
184
+ 'hint' => __( 'Set the background image. Only JPG or PNG', 'apt' ),
185
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
186
+ ];
187
+ }
188
+
189
+ $options[] = [
190
+ 'type' => 'dropdown',
191
+ 'way' => 'buttons',
192
+ 'name' => 'image-type',
193
+ 'data' => [
194
+ [ 'jpg', __( 'JPEG', 'apt' ) ],
195
+ [ 'png', __( 'PNG', 'apt' ) ],
196
+ ],
197
+ 'default' => 'jpg',
198
+ 'title' => __( 'Image format', 'apt' ),
199
+ 'hint' => __( 'Set format to save images', 'apt' ),
200
+ ];
201
+ //----------------------------------------------------------------------
202
+ $options[] = [
203
+ 'type' => 'html',
204
+ 'html' => '<h3 style="margin-left:0">'.__( 'Font settings', 'apt' ).'</h3>'
205
+ ];
206
+
207
+ $options[] = [
208
+ 'type' => 'separator'
209
+ ];
210
+
211
+ $options[] = [
212
+ 'type' => 'wapt-fonts',
213
+ 'name' => 'font',
214
+ 'data' => AutoPostThumbnails::get_fonts(),
215
+ 'empty' => '',
216
+ 'title' => __( 'Font name', 'apt' ),
217
+ 'hint' => __( 'Select a font for the text in the featured image', 'apt' ),
218
+ 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
219
+ ];
220
+
221
+ $options[] = [
222
+ 'type' => 'integer',
223
+ 'way' => 'text',
224
+ 'name' => 'font-size',
225
+ 'units' => 'pt',
226
+ 'default' => 25,
227
+ 'title' => __( 'Font size', 'apt' ),
228
+ 'hint' => __( 'Set the font size for the featured image', 'apt' )
229
+ ];
230
+
231
+ $options[] = [
232
+ 'type' => 'wapt-color',
233
+ 'name' => 'font-color',
234
+ 'title' => __( 'Font color', 'apt' ),
235
+ 'hint' => __( 'Set the font color for the featured image', 'apt' )
236
+ ];
237
+
238
+ //----------------------------------------------------------------------
239
+ $options[] = [
240
+ 'type' => 'html',
241
+ 'html' => '<h3 style="margin-left:0">'.__( 'Text settings', 'apt' ).'</h3>'
242
+ ];
243
+
244
+ $options[] = [
245
+ 'type' => 'separator'
246
+ ];
247
+
248
+ $options[] = [
249
+ 'type' => 'checkbox',
250
+ 'way' => 'buttons',
251
+ 'name' => 'shadow',
252
+ 'default' => '0',
253
+ 'title' => __( 'Text shadow', 'apt' ),
254
+ 'hint' => __( 'Use text shadow?', 'apt' ),
255
+ 'eventsOn' => [
256
+ 'show' => '.factory-control-shadow-color'
257
+ ],
258
+ 'eventsOff' => [
259
+ 'hide' => '.factory-control-shadow-color'
260
+ ],
261
+ ];
262
+
263
+ $options[] = [
264
+ 'type' => 'wapt-color',
265
+ 'name' => 'shadow-color',
266
+ 'title' => __( 'Shadow color', 'apt' ),
267
+ 'hint' => __( 'Set the shadow color for the text', 'apt' )
268
+ ];
269
+
270
+ $options[] = [
271
+ 'type' => 'dropdown',
272
+ 'way' => 'buttons',
273
+ 'name' => 'text-transform',
274
+ 'data' => [
275
+ [ 'no', __( 'No transform', 'apt' ) ],
276
+ [ 'upper', __( 'Uppercase', 'apt' ) ],
277
+ [ 'lower', __( 'Lowercase', 'apt' ) ],
278
+ ],
279
+ 'default' => 'no',
280
+ 'title' => __( 'Text transform', 'apt' ),
281
+ 'hint' => __( 'Select type of text transformation', 'apt' )
282
+ ];
283
+
284
+ $options[] = [
285
+ 'type' => 'integer',
286
+ 'way' => 'text',
287
+ 'name' => 'text-crop',
288
+ 'units' => __( 'chars', 'apt' ),
289
+ 'default' => 50,
290
+ 'title' => __( 'Text length', 'apt' ),
291
+ 'hint' => __( 'Set the maximum text length', 'apt' )
292
+ ];
293
+
294
+ $options[] = [
295
+ 'type' => 'integer',
296
+ 'way' => 'text',
297
+ 'name' => 'text-line-spacing',
298
+ 'range' => array(0,3),
299
+ 'default' => 1.5,
300
+ 'title' => __( 'Line spacing', 'apt' ),
301
+ 'hint' => __( 'Set the line spacing', 'apt' )
302
+ ];
303
+
304
+ //----------------------------------------------------------------------
305
+ $options[] = [
306
+ 'type' => 'html',
307
+ 'html' => '<h3 style="margin-left:0">'.__( 'Alignment', 'apt' ).'</h3>'
308
+ ];
309
+
310
+ $options[] = [
311
+ 'type' => 'separator'
312
+ ];
313
+
314
+ $options[] = [
315
+ 'type' => 'dropdown',
316
+ 'way' => 'buttons',
317
+ 'name' => 'text-align-horizontal',
318
+ 'data' => [
319
+ [ 'left', __( 'Left', 'apt' ) ],
320
+ [ 'center', __( 'Center', 'apt' ) ],
321
+ [ 'right', __( 'Right', 'apt' ) ],
322
+ ],
323
+ 'default' => 'center',
324
+ 'title' => __( 'Horizontal text alignment', 'apt' ).$pro,
325
+ 'hint' => __( 'Select how to horizontally align the text on the image', 'apt' ),
326
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
327
+ ];
328
+
329
+ $options[] = [
330
+ 'type' => 'dropdown',
331
+ 'way' => 'buttons',
332
+ 'name' => 'text-align-vertical',
333
+ 'data' => [
334
+ [ 'top', __( 'Top', 'apt' ) ],
335
+ [ 'center', __( 'Center', 'apt' ) ],
336
+ [ 'bottom', __( 'Bottom', 'apt' ) ],
337
+ ],
338
+ 'default' => 'center',
339
+ 'title' => __( 'Vertical text alignment', 'apt' ).$pro,
340
+ 'hint' => __( 'Select how to vertically align the text on the image', 'apt' ),
341
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
342
+ ];
343
+
344
+ //----------------------------------------------------------------------
345
+ $options[] = [
346
+ 'type' => 'html',
347
+ 'html' => '<h3 style="margin-left:0">'.__( 'Padding', 'apt' ).'</h3>'
348
+ ];
349
+
350
+ $options[] = [
351
+ 'type' => 'separator'
352
+ ];
353
+
354
+ $options[] = [
355
+ 'type' => 'integer',
356
+ 'way' => 'text',
357
+ 'name' => 'text-padding-tb',
358
+ 'units' => __( 'px', 'apt' ),
359
+ 'default' => 15,
360
+ 'title' => __( 'Top/bottom text padding', 'apt' ).$pro,
361
+ 'hint' => __( 'Padding at the top and bottom of the text', 'apt' ),
362
+ 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
363
+ ];
364
+
365
+ $options[] = [
366
+ 'type' => 'integer',
367
+ 'way' => 'text',
368
+ 'name' => 'text-padding-lr',
369
+ 'units' => __( 'px', 'apt' ),
370
+ 'default' => 15,
371
+ 'title' => __( 'Left/right text padding', 'apt' ).$pro,
372
+ 'hint' => __( 'Padding at the left and right of the text', 'apt' ),
373
+ 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
374
+ ];
375
+
376
+ //----------------------------------------------------------------------
377
+ $options[] = [
378
+ 'type' => 'html',
379
+ 'html' => '<h3 style="margin-left:0">'.__( 'Addition of text', 'apt' ).'</h3>'
380
+ ];
381
+
382
+ $options[] = [
383
+ 'type' => 'separator'
384
+ ];
385
+
386
+ $options[] = [
387
+ 'type' => 'textbox',
388
+ 'name' => 'before-text',
389
+ 'default' => '',
390
+ 'title' => __( 'String before text', 'apt' ).$pro,
391
+ 'hint' => __( 'Additional string before text. For a line break, use <b>[br]</b>', 'apt' ),
392
+ 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
393
+ 'htmlAttrs' => ( !$is_premium ) ? [ 'disabled' => 'disabled' ] : [],
394
+ ];
395
+
396
+ $options[] = [
397
+ 'type' => 'textbox',
398
+ 'name' => 'after-text',
399
+ 'default' => '',
400
+ 'title' => __( 'String after text', 'apt' ).$pro,
401
+ 'hint' => __( 'Additional string after text. For a line break, use <b>[br]</b>', 'apt' ),
402
+ 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
403
+ 'htmlAttrs' => ( !$is_premium ) ? [ 'disabled' => 'disabled' ] : [],
404
+ ];
405
+
406
+ return $options;
407
+ }
408
+
409
+ /**
410
+ * Returns options for the Basic Settings screen.
411
+ *
412
+ * @since 3.6.2
413
+ * @return array
414
+ */
415
+ public function getOptions_api() {
416
+
417
+ $options = [];
418
+
419
+ $options[] = [
420
+ 'type' => 'html',
421
+ 'html' => '<h3 style="margin-left:0">API Settings</h3>'
422
+ ];
423
+
424
  /* GOOGLE */
425
  $options[] = [
426
  'type' => 'html',
431
  'type' => 'separator'
432
  ];
433
 
434
+ $options[] = [
435
+ 'type' => 'hidden',
436
+ 'name' => 'ajax_nonce',
437
+ 'value' => wp_create_nonce( 'check-api-key' )
438
+ ];
439
+
440
  // Текстовое поле
441
  $options[] = [
442
  'type' => 'textbox',
464
  }
465
 
466
  public function indexAction() {
467
+ wp_enqueue_style( 'wapt-tabs-style', WAPT_PLUGIN_URL.'/admin/assets/css/tabs.css', array(), WAPT_PLUGIN_VERSION );
468
+ wp_enqueue_style( 'wapt-settings-style', WAPT_PLUGIN_URL.'/admin/assets/css/settings.css', array(), WAPT_PLUGIN_VERSION );
469
+ wp_enqueue_script( 'wapt-settings-script', WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [], WAPT_PLUGIN_VERSION, true );
470
  // creating a form
471
  global $form;
472
+ $form = new Wbcr_FactoryForms423_Form( [
473
  'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
474
  'name' => 'setting'
475
  ], $this->plugin );
476
 
477
+ $form->setProvider( new Wbcr_FactoryForms423_OptionsValueProvider( $this->plugin ) );
478
 
479
+ $wapt_tab = WAPT_Plugin::app()->request->get( 'apt_tab', '' );
480
+ switch ($wapt_tab)
481
+ {
482
+ case 'general':
483
+ $form->add( $this->getOptions_general() );
484
+ break;
485
+ case 'img_generation':
486
+ $form->add( $this->getOptions_image() );
487
+ break;
488
+ case 'api':
489
+ $form->add( $this->getOptions_api() );
490
+ break;
491
+ default:
492
+ $form->add( $this->getOptions_general() );
493
+ break;
494
+ }
495
 
496
  $wapt_saved = WAPT_Plugin::app()->request->post( $this->plugin->getPrefix() . 'saved', '' );
497
  if ( ! empty( $wapt_saved ) ) {
admin/views/pro.php CHANGED
@@ -6,7 +6,7 @@ if(!WAPT_Plugin::app()->premium->is_activate())
6
  <a href="<?php echo WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ); ?>"
7
  class="purchase-premium" target="_blank" rel="noopener">
8
  <span class="btn btn-gold">
9
- <?php printf( __( 'Upgrade to Premium for $%s', 'insert-php' ), WAPT_Plugin::app()->premium->get_price() ) ?>
10
  </span><br>
11
  </a>
12
  <?php
6
  <a href="<?php echo WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ); ?>"
7
  class="purchase-premium" target="_blank" rel="noopener">
8
  <span class="btn btn-gold">
9
+ <?php printf( __( 'Upgrade to Premium', 'insert-php' ), WAPT_Plugin::app()->premium->get_price() ) ?>
10
  </span><br>
11
  </a>
12
  <?php
admin/views/pro_column.php CHANGED
@@ -4,7 +4,7 @@ echo __( "Thumbnails of posts available in the PRO version" );
4
  <a href="<?php echo WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ); ?>"
5
  class="purchase-premium" target="_blank" rel="noopener">
6
  <span class="btn btn-gold">
7
- <?php printf( __( 'Upgrade to Premium for $%s', 'insert-php' ), WAPT_Plugin::app()->premium->get_price() ) ?>
8
  </span>
9
  </a>
10
 
4
  <a href="<?php echo WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ); ?>"
5
  class="purchase-premium" target="_blank" rel="noopener">
6
  <span class="btn btn-gold">
7
+ <?php printf( __( 'Upgrade to Premium', 'insert-php' ), WAPT_Plugin::app()->premium->get_price() ) ?>
8
  </span>
9
  </a>
10
 
admin/views/sources/google.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php $ajaxloader = WAPT_PLUGIN_URL."/admin/assets/img/ajax-loader-line.gif";
2
- $apt_google_nonce = wp_create_nonce( 'apt_upload' );
3
 
4
  $apt_google_key = WAPT_Plugin::app()->getOption('google_apikey');
5
  $apt_google_cse = WAPT_Plugin::app()->getOption('google_cse');
@@ -11,30 +11,50 @@ if($apt_google_key && $apt_google_cse)
11
  {
12
  ?>
13
  <script type="text/javascript">
14
- var thisModal = window.parent.window.parent.window.wp.media.frame;
15
- var API_KEY = '<?php echo $apt_google_key;?>';
16
- var CSE = '<?php echo $apt_google_cse;?>';
17
  function call_api(query, page = 1) {
18
- if (page < 1) page = 1; //защита
19
- var start = ((page-1)*10) + 1;
20
- var URL = "https://www.googleapis.com/customsearch/v1?searchType=image&start="+start+"&q=" + encodeURIComponent(query) + "&key=" + API_KEY + "&cx=" + CSE;
21
-
22
- jQuery.getJSON(URL, function (data) {
23
- if (!parseInt(data.searchInformation.totalResults) > 0) {
24
- jQuery('#loader_flex').hide();
25
- jQuery('#page_num_div').hide();
26
- jQuery('#prev_page').hide();
27
- jQuery('#next_page').hide();
28
- jQuery('#google_results').html('<?php echo __( 'No hits', 'apt' ); ?>');
29
- return false;
30
- }
31
- show_images(data, page);
32
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  }
34
 
35
  function show_images(data, page) {
36
  var s = '';
37
- var totalhits = data.searchInformation.totalResults;
 
 
 
 
 
 
 
 
38
  jQuery.each(data.items, function (k, v) {
39
  descr = v.title;
40
  if(!descr) descr = "google_image";
@@ -57,13 +77,6 @@ if($apt_google_key && $apt_google_cse)
57
  jQuery('#google_results').html(jQuery('#google_results').html() + s);
58
  jQuery('.flex-images').flexImages({rowHeight: 160});
59
  jQuery('#loader_flex').hide();
60
-
61
- if (page > 1) jQuery('#prev_page').show();
62
- else jQuery('#prev_page').hide();
63
- if (page < parseInt(totalhits, 10) / 20) jQuery('#next_page').show();
64
-
65
- jQuery('#page_num_div').html(page);
66
- jQuery('#page_num_div').show();
67
  }
68
 
69
  function do_submit() {
1
  <?php $ajaxloader = WAPT_PLUGIN_URL."/admin/assets/img/ajax-loader-line.gif";
2
+ $apt_google_nonce = wp_create_nonce( 'apt_api' );
3
 
4
  $apt_google_key = WAPT_Plugin::app()->getOption('google_apikey');
5
  $apt_google_cse = WAPT_Plugin::app()->getOption('google_cse');
11
  {
12
  ?>
13
  <script type="text/javascript">
14
+
 
 
15
  function call_api(query, page = 1) {
16
+ jQuery.post(ajaxurl,
17
+ {
18
+ action: 'apt_api_google',
19
+ query: query,
20
+ page: page,
21
+ nonce: '<?php echo $apt_google_nonce; ?>'
22
+ },
23
+ function (data) {
24
+ try {
25
+ data = JSON.parse(data);
26
+ } catch (e) {
27
+ jQuery('#loader_flex').hide();
28
+ jQuery('#page_num_div').hide();
29
+ jQuery('#prev_page').hide();
30
+ jQuery('#next_page').hide();
31
+ jQuery('#google_results').html(data);
32
+ return false;
33
+ }
34
+
35
+ if (!parseInt(data.searchInformation.totalResults) > 0) {
36
+ jQuery('#loader_flex').hide();
37
+ jQuery('#page_num_div').hide();
38
+ jQuery('#prev_page').hide();
39
+ jQuery('#next_page').hide();
40
+ jQuery('#google_results').html('<?php echo __( 'No hits', 'apt' ); ?>');
41
+ return false;
42
+ }
43
+ show_images(data, page);
44
+ });
45
  }
46
 
47
  function show_images(data, page) {
48
  var s = '';
49
+ var totalhits = 100; //google limit
50
+ if (page > 1) jQuery('#prev_page').show();
51
+ else jQuery('#prev_page').hide();
52
+ if (page < parseInt(totalhits, 10) / 10) jQuery('#next_page').show();
53
+ else jQuery('#next_page').hide();
54
+
55
+ jQuery('#page_num_div').html(page);
56
+ jQuery('#page_num_div').show();
57
+
58
  jQuery.each(data.items, function (k, v) {
59
  descr = v.title;
60
  if(!descr) descr = "google_image";
77
  jQuery('#google_results').html(jQuery('#google_results').html() + s);
78
  jQuery('.flex-images').flexImages({rowHeight: 160});
79
  jQuery('#loader_flex').hide();
 
 
 
 
 
 
 
80
  }
81
 
82
  function do_submit() {
admin/views/tab-about.php CHANGED
@@ -7,7 +7,7 @@
7
  }
8
 
9
  .apt-section {
10
- padding: 29px 29px 29px 29px;
11
  }
12
 
13
  .apt-section .container {
@@ -79,6 +79,58 @@
79
  #wpfooter {
80
  position: relative !important;
81
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
 
83
  @media screen and (max-width: 1500px) {
84
  .apt-section .container {
@@ -101,38 +153,150 @@
101
  }
102
  }
103
  </style>
104
- <div class="apt-section-wrapper">
105
- <div class="apt-section apt-section-intro">
106
- <img src="<?php echo WAPT_PLUGIN_URL; ?>/admin/assets/img/photo_2019-09-10_11-21-14.jpg" alt="">
107
- </div>
108
- <section class="apt-section apt-section-video">
109
- <div class="container">
110
- <p><?php printf( __( 'We suppose you’ve noticed the changes which happened with <a href="%s" target="_blank" rel="noopener">Auto Post Thumbnail</a>. In this tutorial you can get more information about new features.', 'apt' ), 'https://cm-wp.com/apt/' ) ?></p>
111
- <iframe width="800" height="441" src="https://www.youtube.com/embed/rucqKNdVQGY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
112
- </div>
113
- </section>
114
- <section class="apt-section apt-section-changelog">
115
- <div class="container">
116
- <div>
117
- <h4>3.4.2</h4>
118
- <p><?php _e( 'As you’ve already noticed, we haven’t updated the plugin for more than 2 years. This new version fixes existing problems. APT becomes a fully functional plugin.', 'apt' ) ?></p>
119
- <h4>3.5.0</h4>
120
- <p><?php _e( 'Starting from this version, the APT plugin evolves from being an aiding tool to the full-featured search & image editing system with a Creative Commons license for your website. It means that you get:', 'apt' ) ?></p>
121
- <ul>
122
- <li><?php _e( 'Search and download images from Google', 'apt' ) ?></li>
123
- <li><?php _e( 'Auto generate feature image in editor', 'apt' ) ?></li>
124
- <li><?php _e( 'Image search through the 3 popular stock services from the plugin interface. Just enter a search query and choose an image (images) you like.', 'apt' ) ?></li>
125
- </ul>
126
- <h4>3.6.0</h4>
127
- <ul>
128
- <li><?php _e( 'Upload images from the external URL to your post or product (for Woocommerce).', 'apt' ) ?></li>
129
- <li><?php _e( 'Compatibility with the most popular builders.', 'apt' ) ?></li>
130
- </ul>
131
- <h4>3.7.0</h4>
132
- <ul>
133
- <li><?php _e( 'Advanced APT editor. You can edit images using layers. It means that you can overlay text, logo, or mask, adjust color, brightness, and contract and use other great features. Save presets and apply them on any image in one click. The editor doesn’t replace the default WordPress editor.', 'apt' ) ?></li>
134
- </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  </div>
136
  </div>
137
- </section>
138
- </div>
7
  }
8
 
9
  .apt-section {
10
+ padding: 29px 29px 0px 29px;
11
  }
12
 
13
  .apt-section .container {
79
  #wpfooter {
80
  position: relative !important;
81
  }
82
+ .heading-title
83
+ {
84
+ text-align: center;
85
+ }
86
+ .heading-container
87
+ {
88
+ text-align: center;
89
+ margin-top: 20px;
90
+ }
91
+ .heading-container > p > a
92
+ {
93
+ font-size: 2em;
94
+ }
95
+ h1.heading-title
96
+ {
97
+ font-size: 1.8em;
98
+ line-height: 1.2em;
99
+
100
+ }
101
+ h2.image-box-title
102
+ {
103
+ font-size: 2em;
104
+ line-height: 1.2em;
105
+ margin: 0;
106
+ }
107
+ p.image-box-description
108
+ {
109
+ font-size: 1.15em;
110
+ line-height: 1.2em;
111
+ margin: 5px;
112
+ margin-bottom: 20px;
113
+ font-weight: bold;
114
+ }
115
+ div.text-editor > p
116
+ {
117
+ font-size: 1.2em;
118
+ line-height: 1.5em;
119
+ margin: 10px;
120
+ }
121
+ div.image > img{
122
+ box-sizing: border-box;
123
+ /*border: 1px solid black;*/
124
+ box-shadow: 0px 0px 24px rgba(107, 107, 107, 0.5);
125
+ text-align: center;
126
+ display:block;
127
+ margin:auto;
128
+ margin-bottom: 30px;
129
+ }
130
+ hr
131
+ {
132
+ border: 1px solid black;
133
+ }
134
 
135
  @media screen and (max-width: 1500px) {
136
  .apt-section .container {
153
  }
154
  }
155
  </style>
156
+ <div class="apt-section">
157
+ <div class="row">
158
+ <div class="widget-container">
159
+ <h1 class="heading-title size-default">
160
+ We suppose you’ve noticed the changes which happened with Auto Post Thumbnail.
161
+ <br>Reading this tutorial you can get more information about new features.</h1>
162
+ </div>
163
+
164
+ <div class="widget-container">
165
+ <div class="divider">
166
+ <hr>
167
+ </div>
168
+ </div>
169
+
170
+ <div class="heading-container">
171
+ <img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-6-150x150.png" class="attachment-thumbnail size-thumbnail" alt="">
172
+ <h2 class="image-box-title">New image generation tools</h2>
173
+ <p class="image-box-description">You can generate featured images by single click as you did in the past. But comparing with last release&nbsp; here appeared some new additional tools, so you can:</p>
174
+ </div>
175
+ <div class="widget-container">
176
+ <div class="text-editor clearfix">
177
+ <p>Bulk generate or delete&nbsp;featured images.</p>
178
+ </div>
179
+ </div>
180
+ <div class="widget-container">
181
+ <div class="image">
182
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/2019-10-03_16-42-43.png" class="attachment-full size-full" alt="" >
183
+ </div>
184
+ </div>
185
+ <div class="widget-container">
186
+ <div class="text-editor clearfix"><p>Selective generation and deletion of featured images using filters <a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(PRO)</a>.</p></div>
187
+ </div>
188
+ <div class="widget-container">
189
+ <div class="image">
190
+ <img width="1024" height="320" src="https://cm-wp.com/wp-content/uploads/2019/10/Sequence-01.gif" class="attachment-large size-large" alt="" >
191
+ </div>
192
+ </div>
193
+ <div class="widget-container">
194
+ <div class="text-editor clearfix"><p>Disable automatic post thumbnail generation.</p></div>
195
+ </div>
196
+ <div class="widget-container">
197
+ <div class="image">
198
+ <img width="500" src="https://cm-wp.com/wp-content/uploads/2019/09/2.png" class="attachment-large size-large" alt="" >
199
+ </div>
200
+ </div>
201
+ <div class="widget-container">
202
+ <div class="text-editor clearfix"><p>If you do not want the plug-in settings to be saved, after uninstalling, click “delete settings”</p></div>
203
+ </div>
204
+ <div class="widget-container">
205
+ <div class="image">
206
+ <img width="500" height="145" src="https://cm-wp.com/wp-content/uploads/2019/09/3.png" class="attachment-large size-large" alt="" >
207
+ </div>
208
+ </div>
209
+
210
+ <div class="widget-container">
211
+ <div class="divider">
212
+ <hr>
213
+ </div>
214
+ </div>
215
+
216
+ <div class="heading-container">
217
+ <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-2-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Bulk featured Images generation or unset in post list</h2><p class="image-box-description">Use bulk actions when you set featured images. For example Generate or Unset all of them.</p></div></div> </div>
218
+ <div class="widget-container">
219
+ <div class="text-editor clearfix"><p>Also we changed the Posts list interface in dashboard and added a Column for displaying featured images. If any post stays without any featured image you’ll see this from the posts list. Opening post is unnecessary, that’s why It makes the process easier.</p></div>
220
+ </div>
221
+ <div class="widget-container">
222
+ <div class="image">
223
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/03.gif" class="attachment-full size-full" alt=""> </div>
224
+ </div>
225
+
226
+ <div class="widget-container">
227
+ <div class="divider">
228
+ <hr>
229
+ </div>
230
+ </div>
231
+
232
+ <div class="heading-container">
233
+ <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-3-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Featured Images selective generation </h2><p class="image-box-description">Execute custom generation or unset featured images applying this tool for single or some posts.</p></div></div> </div>
234
+ <div class="widget-container">
235
+ <div class="image">
236
+ <img width="500" src="https://cm-wp.com/wp-content/uploads/2019/09/7.png" class="attachment-large size-large" alt="" >
237
+ </div>
238
+ </div>
239
+
240
+ <div class="widget-container">
241
+ <div class="divider">
242
+ <hr>
243
+ </div>
244
+ </div>
245
+
246
+ <div class="heading-container">
247
+ <div class="image-box-wrapper"><a href="http://cm-wp.com/apt/pricing/"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-4-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""></a><div class="image-box-content"><h2 class="image-box-title">Manual Featured Images Selection</h2><p class="image-box-description">Select featured images from the post images when you are in dashboard’s Posts list. This feature is available for users who have PRO account.</p></div></div> </div>
248
+ <div class="widget-container">
249
+ <div class="image">
250
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/04.gif" class="attachment-full size-full" alt=""> </div>
251
+ </div>
252
+ <div class="widget-container">
253
+ <div class="text-editor clearfix"><p>You can add featured images even if the picture is not uploaded to the medialibrary but inserted into the post using an external link or shortcode.</p></div>
254
+ </div>
255
+
256
+ <div class="widget-container">
257
+ <div class="divider">
258
+ <hr>
259
+ </div>
260
+ </div>
261
+
262
+ <div class="heading-container">
263
+ <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon1-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Image search in Google, Unsplash, Pixabay</h2><p class="image-box-description">Search for images with Creative Commons license.</p></div></div> </div>
264
+ <div class="widget-container">
265
+ <div class="text-editor clearfix"><p><span style="font-weight: 400;">It appeared new tab in the Media Library =&gt; </span><i><span style="font-weight: 400;">Add from APT. </span></i><span style="font-weight: 400;">There you can find images using popular free stock sites:&nbsp; Google, Pixabay <a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(pro)</a>, Unsplash <a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(pro)</a>. Just enter a search query, choose the image and insert it into the Media library by single click.</span></p></div>
266
+ </div>
267
+ <div class="widget-container">
268
+ <div class="image">
269
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/05.gif" class="attachment-large size-large" alt="" >
270
+ </div>
271
+ </div>
272
+
273
+ <div class="widget-container">
274
+ <div class="divider">
275
+ <hr>
276
+ </div>
277
+ </div>
278
+
279
+ <div class="heading-container">
280
+ <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-5-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Compatibility with Elementor and Gutenberg</h2><p class="image-box-description">Auto Post Thumbnail is compatible with Classic Editor, Gutenberg and Elementor plugins.</p></div></div> </div>
281
+ <div class="widget-container">
282
+ <div class="image">
283
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/007.gif" class="attachment-large size-large" alt="">
284
+ </div>
285
+ </div>
286
+
287
+ <div class="widget-container">
288
+ <div class="divider">
289
+ <hr>
290
+ </div>
291
+ </div>
292
+
293
+ <div class="heading-container">
294
+ <p>
295
+ <a href="https://cm-wp.com/apt/apt-f-a-q/?utm_medium=right_banner&amp;utm_campaign=apt&amp;utm_content=link" target="_blank" rel="noopener">F.A.Q.</a>
296
+ </p>
297
+ <p>
298
+ <a href="https://forum.webcraftic.com/" target="_blank" rel="noopener">Get starting free support</a>
299
+ </p>
300
  </div>
301
  </div>
302
+ </div>
 
admin/views/tab-license.php CHANGED
@@ -1,5 +1,5 @@
1
  <div class="wrap">
2
- <div class="factory-bootstrap-422 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
  <div id="wapt-license-wrapper"
5
  data-loader="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
@@ -8,7 +8,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', 'insert-php' ), $this->plan_name ) ?></h3>
12
  <?php echo $this->get_plan_description() ?>
13
  </div>
14
  <br>
@@ -19,20 +19,20 @@
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', 'insert-php' ), $this->premium->get_price() ) ?>
23
  </span>
24
  </a>
25
- <p><?php printf( __( 'Your current license for %1$s:', 'insert-php' ), $this->plugin->getPluginTitle() ) ?></p>
26
  <?php endif; ?>
27
  <div class="license-details-block <?php echo $this->get_license_type() ?>-details-block">
28
  <?php if ( $this->is_premium ): ?>
29
  <a data-action="deactivate" href="#"
30
  class="btn btn-default btn-small license-delete-button wapt-control-btn">
31
- <?php _e( 'Delete Key', 'insert-php' ) ?>
32
  </a>
33
  <a data-action="sync" href="#"
34
  class="btn btn-default btn-small license-synchronization-button wapt-control-btn">
35
- <?php _e( 'Synchronization', 'insert-php' ) ?>
36
  </a>
37
  <?php endif; ?>
38
  <h3>
@@ -51,17 +51,17 @@
51
  </div>
52
  <?php endif; ?>
53
  <div class="license-key-description">
54
- <p><?php _e( 'Public License is a GPLv2 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'insert-php' ) ?>
55
  </p>
56
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
57
  <p class="activate-trial-hint">
58
- <?php _e( 'You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wapt-control-btn" href="#">cancel subscription</a>', 'insert-php' ) ?>
59
  </p>
60
  <?php endif; ?>
61
 
62
  <?php if ( $this->get_license_type() == 'trial' ): ?>
63
  <p class="activate-error-hint">
64
- <?php printf( __( 'Your license has expired, please extend the license to get updates and support.', 'insert-php' ), '' ) ?>
65
  </p>
66
  <?php endif; ?>
67
  </div>
@@ -69,30 +69,30 @@
69
  <tr>
70
  <!--<td class="license-param license-param-domain">
71
  <span class="license-value"><?php echo esc_attr( $_SERVER['SERVER_NAME'] ); ?></span>
72
- <span class="license-value-name"><?php _e( 'domain', 'insert-php' ) ?></span>
73
  </td>-->
74
  <td class="license-param license-param-days">
75
  <span class="license-value"><?php echo $this->get_plan() ?></span>
76
- <span class="license-value-name"><?php _e( 'plan', 'insert-php' ) ?></span>
77
  </td>
78
  <?php if ( $this->is_premium ) : ?>
79
  <td class="license-param license-param-sites">
80
  <span class="license-value">
81
  <?php echo esc_attr( $this->premium_license->get_count_active_sites() ); ?>
82
- <?php _e( 'of', 'insert-php' ) ?>
83
  <?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
84
- <span class="license-value-name"><?php _e( 'active sites', 'insert-php' ) ?></span>
85
  </td>
86
  <?php endif; ?>
87
  <td class="license-param license-param-version">
88
  <span class="license-value"><?php echo $this->plugin->getPluginVersion() ?></span>
89
- <span class="license-value-name"><span><?php _e( 'version', 'insert-php' ) ?></span></span>
90
  </td>
91
  <?php if ( $this->is_premium ): ?>
92
  <td class="license-param license-param-days">
93
  <?php if ( $this->get_license_type() == 'trial' ): ?>
94
- <span class="license-value"><?php _e( 'EXPIRED!', 'insert-php' ) ?></span>
95
- <span class="license-value-name"><?php _e( 'please update the key', 'insert-php' ) ?></span>
96
  <?php else: ?>
97
  <span class="license-value">
98
  <?php
@@ -102,9 +102,9 @@
102
  echo $this->get_expiration_days();
103
  }
104
  ?>
105
- <small> <?php _e( 'day(s)', 'insert-php' ) ?></small>
106
  </span>
107
- <span class="license-value-name"><?php _e( 'remained', 'insert-php' ) ?></span>
108
  <?php endif; ?>
109
  </td>
110
  <?php endif; ?>
@@ -115,15 +115,15 @@
115
  <div class="license-input">
116
  <form action="" method="post">
117
  <?php if ( $this->is_premium ): ?>
118
- <p><?php _e( 'Have a key to activate the premium version? Paste it here:', 'insert-php' ) ?><p>
119
  <?php else: ?>
120
- <p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'insert-php' ) ?>
121
  <p>
122
  <?php endif; ?>
123
  <button data-action="activate" class="btn btn-default wapt-control-btn"
124
  type="button"
125
  id="license-submit">
126
- <?php _e( 'Submit Key', 'insert-php' ) ?>
127
  </button>
128
  <div class="license-key-wrap">
129
  <input type="text" id="license-key" name="licensekey" value=""
@@ -131,11 +131,11 @@
131
  </div>
132
  <?php if ( $this->is_premium ): ?>
133
  <p style="margin-top: 10px;">
134
- <?php printf( __( '<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'insert-php' ), $this->plugin->get_support()->get_pricing_url( true, 'license_page' ) ); ?>
135
  </p>
136
  <?php else: ?>
137
  <p style="margin-top: 10px;">
138
- <?php printf( __( 'Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'insert-php' ), 'https://users.freemius.com/password/recover' ) ?>
139
  </p>
140
  <?php endif; ?>
141
  </form>
1
  <div class="wrap">
2
+ <div class="factory-bootstrap-426 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
  <div id="wapt-license-wrapper"
5
  data-loader="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
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', 'apt' ), $this->plan_name ) ?></h3>
12
  <?php echo $this->get_plan_description() ?>
13
  </div>
14
  <br>
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', 'apt' ), $this->premium->get_price() ) ?>
23
  </span>
24
  </a>
25
+ <p><?php printf( __( 'Your current license for %1$s:', 'apt' ), $this->plugin->getPluginTitle() ) ?></p>
26
  <?php endif; ?>
27
  <div class="license-details-block <?php echo $this->get_license_type() ?>-details-block">
28
  <?php if ( $this->is_premium ): ?>
29
  <a data-action="deactivate" href="#"
30
  class="btn btn-default btn-small license-delete-button wapt-control-btn">
31
+ <?php _e( 'Delete Key', 'apt' ) ?>
32
  </a>
33
  <a data-action="sync" href="#"
34
  class="btn btn-default btn-small license-synchronization-button wapt-control-btn">
35
+ <?php _e( 'Synchronization', 'apt' ) ?>
36
  </a>
37
  <?php endif; ?>
38
  <h3>
51
  </div>
52
  <?php endif; ?>
53
  <div class="license-key-description">
54
+ <p><?php _e( 'Public License is a GPLv2 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'apt' ) ?>
55
  </p>
56
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
57
  <p class="activate-trial-hint">
58
+ <?php _e( 'You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wapt-control-btn" href="#">cancel subscription</a>', 'apt' ) ?>
59
  </p>
60
  <?php endif; ?>
61
 
62
  <?php if ( $this->get_license_type() == 'trial' ): ?>
63
  <p class="activate-error-hint">
64
+ <?php printf( __( 'Your license has expired, please extend the license to get updates and support.', 'apt' ), '' ) ?>
65
  </p>
66
  <?php endif; ?>
67
  </div>
69
  <tr>
70
  <!--<td class="license-param license-param-domain">
71
  <span class="license-value"><?php echo esc_attr( $_SERVER['SERVER_NAME'] ); ?></span>
72
+ <span class="license-value-name"><?php _e( 'domain', 'apt' ) ?></span>
73
  </td>-->
74
  <td class="license-param license-param-days">
75
  <span class="license-value"><?php echo $this->get_plan() ?></span>
76
+ <span class="license-value-name"><?php _e( 'plan', 'apt' ) ?></span>
77
  </td>
78
  <?php if ( $this->is_premium ) : ?>
79
  <td class="license-param license-param-sites">
80
  <span class="license-value">
81
  <?php echo esc_attr( $this->premium_license->get_count_active_sites() ); ?>
82
+ <?php _e( 'of', 'apt' ) ?>
83
  <?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
84
+ <span class="license-value-name"><?php _e( 'active sites', 'apt' ) ?></span>
85
  </td>
86
  <?php endif; ?>
87
  <td class="license-param license-param-version">
88
  <span class="license-value"><?php echo $this->plugin->getPluginVersion() ?></span>
89
+ <span class="license-value-name"><span><?php _e( 'version', 'apt' ) ?></span></span>
90
  </td>
91
  <?php if ( $this->is_premium ): ?>
92
  <td class="license-param license-param-days">
93
  <?php if ( $this->get_license_type() == 'trial' ): ?>
94
+ <span class="license-value"><?php _e( 'EXPIRED!', 'apt' ) ?></span>
95
+ <span class="license-value-name"><?php _e( 'please update the key', 'apt' ) ?></span>
96
  <?php else: ?>
97
  <span class="license-value">
98
  <?php
102
  echo $this->get_expiration_days();
103
  }
104
  ?>
105
+ <small> <?php _e( 'day(s)', 'apt' ) ?></small>
106
  </span>
107
+ <span class="license-value-name"><?php _e( 'remained', 'apt' ) ?></span>
108
  <?php endif; ?>
109
  </td>
110
  <?php endif; ?>
115
  <div class="license-input">
116
  <form action="" method="post">
117
  <?php if ( $this->is_premium ): ?>
118
+ <p><?php _e( 'Have a key to activate the premium version? Paste it here:', 'apt' ) ?><p>
119
  <?php else: ?>
120
+ <p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'apt' ) ?>
121
  <p>
122
  <?php endif; ?>
123
  <button data-action="activate" class="btn btn-default wapt-control-btn"
124
  type="button"
125
  id="license-submit">
126
+ <?php _e( 'Submit Key', 'apt' ) ?>
127
  </button>
128
  <div class="license-key-wrap">
129
  <input type="text" id="license-key" name="licensekey" value=""
131
  </div>
132
  <?php if ( $this->is_premium ): ?>
133
  <p style="margin-top: 10px;">
134
+ <?php printf( __( '<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'apt' ), $this->plugin->get_support()->get_pricing_url( true, 'license_page' ) ); ?>
135
  </p>
136
  <?php else: ?>
137
  <p style="margin-top: 10px;">
138
+ <?php printf( __( 'Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'apt' ), 'https://users.freemius.com/password/recover' ) ?>
139
  </p>
140
  <?php endif; ?>
141
  </form>
admin/views/tab-main.php CHANGED
@@ -1,74 +1,177 @@
1
  <div class="wrap">
2
- <h2><?php esc_html_e( 'Generate Featured images for all of your published posts', 'apt' ) ?></h2>
3
- <div class="factory-bootstrap-422 factory-fontawesome-000">
4
  <div class="row">
5
  <div class="col-md-9">
6
- <div class="wrap genpostthumbs">
7
- <p><?php _e( 'Note: Thumbnails won\'t be generated for posts that already have post thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field.', 'apt' ) ?></p>
8
- <p>
 
 
 
 
 
 
 
 
 
 
 
 
9
  <button class="button button-primary button-large hide-if-no-js" name="generate-post-thumbnails" id="generate-post-thumbnails">
10
- <?php esc_attr_e( 'Generate Featured images', 'apt' ) ?>
 
 
 
11
  </button>
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  <div id="message" class="updated fade" style="display:none"></div>
13
  </p>
 
14
  <noscript><p>
15
  <em><?php esc_html_e( 'You must enable Javascript in order to proceed!', 'apt' ) ?></em>
16
  </p>
17
  </noscript>
18
- <div id="genpostthumbsbar" style="position:relative;height:25px;">
19
- <div id="genpostthumbsbar-percent"
20
- style="position:absolute;left:50%;top:50%;width:50px;margin-left:-25px;height:25px;margin-top:-9px;font-weight:bold;text-align:center;"></div>
21
- </div>
22
  <!-- esc_html_e( 'We are generating post thumbnails. Please be patient!', 'apt' ); -->
23
  <script type="text/javascript">
24
  // <![CDATA[
25
  jQuery(document).ready(function($) {
26
- jQuery('#generate-post-thumbnails').on('click', function(event) {
27
- rt_images = [];
28
-
29
- $("#generate-post-thumbnails").hide();
30
- $("#genpostthumbsbar").progressbar();
31
- $("#genpostthumbsbar-percent").html("1%");
32
-
33
- $.post("admin-ajax.php", {
34
- action: "get-posts-ids",
35
- _ajax_nonce: '<?php echo wp_create_nonce( 'get-posts' ); ?>'
36
- }, function(ids) {
37
- rt_images = JSON.parse("[" + ids + "]");
38
-
39
- var rt_total = rt_images.length;
40
- var rt_count = 1;
41
- var rt_percent = 0;
42
- var posted_count = 0;
43
-
44
- function genPostThumb(id) {
45
- $.post("admin-ajax.php", {
46
- action: "generatepostthumbnail",
47
- id: id,
48
- _ajax_nonce: '<?php echo wp_create_nonce( 'generate-post-thumbnails' ); ?>'
49
- }, function(posted) {
50
- console.log(posted);
51
- if( Number(posted) !== 0 ) {
52
- posted_count++;
53
- }
54
- rt_percent = (rt_count / rt_total) * 100;
55
- $("#genpostthumbsbar").progressbar("value", rt_percent);
56
- $("#genpostthumbsbar-percent").html(Math.round(rt_percent) + "%");
57
- rt_count = rt_count + 1;
58
-
59
- if( rt_images.length ) {
60
- genPostThumb(rt_images.shift());
61
- } else {
62
- $("#genpostthumbsbar").hide();
63
- $("#message").html("<p><strong><?php echo esc_html__( 'All done! Processed posts:', 'apt' ); ?> " + rt_total + "<br><?php echo esc_html__( 'Set featured image in posts:', 'apt' ); ?> " + posted_count + "</strong></p>");
64
- $("#message").show();
65
- }
66
- });
67
- }
68
-
69
- genPostThumb(rt_images.shift());
70
- });
71
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  });
73
  // ]]>
74
  </script>
1
  <div class="wrap">
2
+ <h2><?php esc_html_e( 'Generate Featured images for posts', 'apt' ) ?></h2>
3
+ <div class="factory-bootstrap-426 factory-fontawesome-000">
4
  <div class="row">
5
  <div class="col-md-9">
6
+
7
+ <div class="row wrap apt-filter-row">
8
+ <?php
9
+ if(auto_post_thumbnails()->is_premium())
10
+ do_action( 'wapt/filter_form_print');
11
+ else {
12
+ echo '<div class="col-md-12">';
13
+ echo '<a target="_blank" href="'.WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ).'"><img src="'.WAPT_PLUGIN_URL.'/admin/assets/img/premium_filter.png"></a><br />';
14
+ printf( __( 'Advanced filter form available in <a href="%s">Premium version</a>', 'aptp' ), WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) );
15
+ echo '</div>';
16
+ }
17
+ ?>
18
+ <div class="col-md-12">&nbsp;</div>
19
+
20
+ <div class="col-md-12">
21
  <button class="button button-primary button-large hide-if-no-js" name="generate-post-thumbnails" id="generate-post-thumbnails">
22
+ <?php esc_attr_e( 'Generate Featured images', 'apt' ) ?>
23
+ </button>&nbsp;
24
+ <button class="button button-danger button-large hide-if-no-js" name="delete-post-thumbnails" id="delete-post-thumbnails">
25
+ <?php esc_attr_e( 'Delete Featured images', 'apt' ) ?>
26
  </button>
27
+ </div>
28
+
29
+ <div class="col-md-12">&nbsp;</div>
30
+
31
+ <div class="col-md-12">
32
+ <div id="genpostthumbsbar" style="position:relative;height:40px;display: none;">
33
+ <div id="genpostthumbsbar-percent"
34
+ style="position:absolute;left:50%;top:50%;margin-left:-25px;height:25px;margin-top:-9px;font-weight:bold;text-align:center;"></div>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div class="wrap genpostthumbs">
39
+ <p>
40
  <div id="message" class="updated fade" style="display:none"></div>
41
  </p>
42
+ <p><?php _e( 'Note: Thumbnails won\'t be generated for posts that already have post thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field.', 'apt' ) ?></p>
43
  <noscript><p>
44
  <em><?php esc_html_e( 'You must enable Javascript in order to proceed!', 'apt' ) ?></em>
45
  </p>
46
  </noscript>
 
 
 
 
47
  <!-- esc_html_e( 'We are generating post thumbnails. Please be patient!', 'apt' ); -->
48
  <script type="text/javascript">
49
  // <![CDATA[
50
  jQuery(document).ready(function($) {
51
+ jQuery('#generate-post-thumbnails').on('click', function(event) {
52
+ rt_images = [];
53
+
54
+ $("#generate-post-thumbnails").attr('disabled','');
55
+ $("#delete-post-thumbnails").attr('disabled','');
56
+ $("#message").hide();
57
+ $("#genpostthumbsbar").show();
58
+ $("#genpostthumbsbar").progressbar();
59
+ $("#genpostthumbsbar-percent").html("1%");
60
+
61
+ $.post("admin-ajax.php", {
62
+ action: "get-posts-ids",
63
+ withThumb: 0,
64
+ <?php
65
+ if(auto_post_thumbnails()->is_premium()) { ?>
66
+ poststatus: $("#filter_poststatus").val(),
67
+ posttype: $("#filter_posttype").val(),
68
+ date_start: $("#filter_startdate").val(),
69
+ date_end: $("#filter_enddate").val(),
70
+ category: $("#filter_postcategory").val(),
71
+ <?php } ?>
72
+ _ajax_nonce: '<?php echo wp_create_nonce( 'get-posts' ); ?>'
73
+ }, function(ids) {
74
+ rt_images = JSON.parse("[" + ids + "]");
75
+
76
+ var rt_total = rt_images.length;
77
+ var rt_count = 1;
78
+ var rt_percent = 0;
79
+ var posted_count = 0;
80
+
81
+ function genPostThumb(id) {
82
+ $.post("admin-ajax.php", {
83
+ action: "generatepostthumbnail",
84
+ id: id,
85
+ _ajax_nonce: '<?php echo wp_create_nonce( 'generate-post-thumbnails' ); ?>'
86
+ }, function(posted) {
87
+ if( Number(posted) !== 0 ) {
88
+ posted_count++;
89
+ }
90
+ rt_percent = (rt_count / rt_total) * 100;
91
+ $("#genpostthumbsbar").progressbar("value", rt_percent);
92
+ $("#genpostthumbsbar-percent").html(Math.round(rt_percent) + "% ("+ rt_count + "/" + rt_total +")");
93
+ rt_count = rt_count + 1;
94
+
95
+ if( rt_images.length ) {
96
+ genPostThumb(rt_images.shift());
97
+ } else {
98
+ setTimeout(function(){
99
+ $("#genpostthumbsbar").hide();
100
+ $("#genpostthumbsbar").progressbar("value", 0);
101
+ $("#generate-post-thumbnails").removeAttr('disabled');
102
+ $("#delete-post-thumbnails").removeAttr('disabled');
103
+ $("#message").html("<p><strong><?php echo esc_html__( 'All done! Processed posts:', 'apt' ); ?> " + rt_total + "<br><?php echo esc_html__( 'Set featured image in posts:', 'apt' ); ?> " + posted_count + "</strong></p>");
104
+ $("#message").show();
105
+ }, 500);
106
+ }
107
+ });
108
+ }
109
+
110
+ genPostThumb(rt_images.shift());
111
+ });
112
+ });
113
+ //delete thumbnails
114
+ jQuery('#delete-post-thumbnails').on('click', function(event) {
115
+ if(!confirm('Are sure to delete thumbnails from posts?'))
116
+ return;
117
+
118
+ rt_images = [];
119
+
120
+ $("#generate-post-thumbnails").hide();
121
+ $("#delete-post-thumbnails").hide();
122
+ $("#genpostthumbsbar").show();
123
+ $("#genpostthumbsbar").progressbar();
124
+ $("#genpostthumbsbar-percent").html("1%");
125
+
126
+ $.post("admin-ajax.php", {
127
+ action: "get-posts-ids",
128
+ withThumb: 1,
129
+ <?php
130
+ if(auto_post_thumbnails()->is_premium()) { ?>
131
+ poststatus: $("#filter_poststatus").val(),
132
+ posttype: $("#filter_posttype").val(),
133
+ date_start: $("#filter_startdate").val(),
134
+ date_end: $("#filter_enddate").val(),
135
+ category: $("#filter_postcategory").val(),
136
+ <?php } ?>
137
+ _ajax_nonce: '<?php echo wp_create_nonce( 'get-posts' ); ?>'
138
+ }, function(ids) {
139
+ rt_images = JSON.parse("[" + ids + "]");
140
+
141
+ var rt_total = rt_images.length;
142
+ var rt_count = 1;
143
+ var rt_percent = 0;
144
+ var posted_count = 0;
145
+
146
+ function delPostThumb(id) {
147
+ $.post("admin-ajax.php", {
148
+ action: "delete_post_thumbnails",
149
+ id: id,
150
+ _ajax_nonce: '<?php echo wp_create_nonce( 'delete-post-thumbnails' ); ?>'
151
+ }, function(posted) {
152
+ if( Boolean(posted) ) {
153
+ posted_count++;
154
+ }
155
+ rt_percent = (rt_count / rt_total) * 100;
156
+ $("#genpostthumbsbar").progressbar("value", rt_percent);
157
+ $("#genpostthumbsbar-percent").html(Math.round(rt_percent) + "%");
158
+ rt_count = rt_count + 1;
159
+
160
+ if( rt_images.length ) {
161
+ delPostThumb(rt_images.shift());
162
+ } else {
163
+ $("#genpostthumbsbar").hide();
164
+ $("#generate-post-thumbnails").removeAttr('disabled');
165
+ $("#delete-post-thumbnails").removeAttr('disabled');
166
+ $("#message").html("<p><strong><?php echo esc_html__( 'All done! Processed posts:', 'apt' ); ?> " + rt_total + "<br><?php echo esc_html__( 'Delete featured image in posts:', 'apt' ); ?> " + posted_count + "</strong></p>");
167
+ $("#message").show();
168
+ }
169
+ });
170
+ }
171
+
172
+ delPostThumb(rt_images.shift());
173
+ });
174
+ });
175
  });
176
  // ]]>
177
  </script>
admin/views/tab-settings.php CHANGED
@@ -1,47 +1,145 @@
1
- <?php global $form; ?>
2
- <div class="wrap">
3
- <div class="factory-bootstrap-422 factory-fontawesome-000">
4
- <h3><?php _e( 'Settings', 'insert-php' ) ?></h3>
5
- <div class="row">
6
- <div class="col-md-9">
7
- <form method="post" class="form-horizontal">
8
- <?php if ( ! empty( $wbcr_saved ) ) { ?>
9
- <div id="message" class="alert alert-success">
10
- <p><?php _e( 'The settings have been updated successfully!', 'insert-php' ) ?></p>
11
- </div>
12
- <?php } ?>
13
- <div style="padding-top: 10px;">
14
- <?php $form->html(); ?>
15
- </div>
16
- <div class="form-group form-horizontal">
17
- <label class="col-sm-2 control-label"> </label>
18
- <div class="control-group controls col-sm-10">
19
- <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
20
- <input name="<?php echo $this->plugin->getPrefix() . 'saved' ?>" class="btn btn-primary" type="submit" value="<?php _e( 'Save settings', 'insert-php' ) ?>"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  </div>
22
  </div>
23
- </form>
24
- </div>
25
- <div class="col-md-3">
26
- <div id="wapt-dashboard-widget" class="wapt-right-widget">
27
- <div style="padding:20px">
28
- <?php WAPT_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar'); ?>
29
- </div>
30
  </div>
31
- <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
32
- <p><strong>Having Issues?</strong></p>
33
- <div class="wbcr-clr-support-widget-body">
34
- <p>
35
- We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you! </p>
36
- <ul>
37
- <li><span class="dashicons dashicons-sos"></span>
38
- <a href="https://forum.webcraftic.com" target="_blank" rel="noopener">Get starting free support</a>
39
- </li>
40
- </ul>
41
- </div>
 
 
 
 
42
  </div>
43
-
44
  </div>
45
  </div>
46
  </div>
 
47
  </div>
1
+ <?php
2
+ global $form;
3
+
4
+ $current_url = admin_url( 'admin.php?page=wapt_settings-' . WAPT_Plugin::app()->getPluginName() );
5
+ $current_tab = 'general';
6
+ $TABS = array(
7
+ 'general' => array(
8
+ 'current' => false,
9
+ 'caption' => 'General',
10
+ 'icon' => 'icon-general',
11
+ 'url' => $current_url."&apt_tab=general",
12
+ ),
13
+ 'img_generation' => array(
14
+ 'current' => false,
15
+ 'caption' => 'Image generation',
16
+ 'icon' => 'icon-image',
17
+ 'url' => $current_url."&apt_tab=img_generation",
18
+ ),
19
+ 'api' => array(
20
+ 'current' => false,
21
+ 'caption' => 'API',
22
+ 'icon' => 'icon-api',
23
+ 'url' => $current_url."&apt_tab=api",
24
+ ),
25
+ );
26
+ if(isset($_GET['apt_tab']) && !empty($_GET['apt_tab']))
27
+ {
28
+ $current_tab = htmlspecialchars( $_GET['apt_tab']);
29
+ $current_url .= "&apt_tab={$current_tab}";
30
+ $TABS[$current_tab]['current'] = true;
31
+ }
32
+ else
33
+ {
34
+ $current_tab = 'general';
35
+ $current_url .= "&apt_tab={$current_tab}";
36
+ $TABS[$current_tab]['current'] = true;
37
+ }
38
+ ?>
39
+ <div class="wis-container">
40
+ <div class="wapt-page-title"><h1><?php _e( 'Settings', 'apt' ) ?> <?php echo WAPT_Plugin::app()->getPluginTitle()." ".WAPT_Plugin::app()->getPluginVersion(); ?></h1></div>
41
+ <div id="tabs" class="tabs">
42
+ <nav>
43
+ <ul>
44
+ <?php
45
+ foreach ($TABS as $key => $tab)
46
+ {
47
+ if($tab['current']) {
48
+ echo "<li class='tab-current'>";
49
+ }
50
+ else {
51
+ echo "<li>";
52
+ }
53
+ echo "<a href='{$tab['url']}' class='{$tab['icon']}'><span>{$tab['caption']}</span></a>";
54
+ echo "</li>";
55
+ }
56
+ ?>
57
+ </ul>
58
+ </nav>
59
+ <div class="content">
60
+ <section id="section-<?php echo $current_tab;?>">
61
+ <div class="wrap">
62
+ <div class="factory-bootstrap-426 factory-fontawesome-000">
63
+ <div class="row">
64
+ <div class="col-md-8">
65
+ <form method="post" class="form-horizontal">
66
+ <?php if ( ! empty( $wbcr_saved ) ) { ?>
67
+ <div id="message" class="alert alert-success">
68
+ <p><?php _e( 'The settings have been updated successfully!', 'insert-php' ) ?></p>
69
+ </div>
70
+ <?php } ?>
71
+ <div>
72
+ <?php $form->html(); ?>
73
+ </div>
74
+ <div class="form-group form-horizontal">
75
+
76
+ <div class="control-group controls col-sm-10">
77
+ <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
78
+ <input name="<?php echo $this->plugin->getPrefix() . 'saved' ?>" class="btn btn-primary" type="submit" value="<?php _e( 'Save settings', 'insert-php' ) ?>"/>
79
+ </div>
80
+ </div>
81
+ </form>
82
+ </div>
83
+ <div class="col-md-4">
84
+ <?php if($current_tab == 'img_generation') { ?>
85
+ <div id="wapt-image-preview" class="wapt-image-preview">
86
+ <div class="wapt-image-preview-title"><h3>Post thumbnail preview</h3></div>
87
+ <?php
88
+ $format = WAPT_Plugin::app()->getOption( "image-type", "jpg" );
89
+ switch($format)
90
+ {
91
+ case 'png':
92
+ $format = 'png';
93
+ break;
94
+ case 'jpg':
95
+ case 'jpeg':
96
+ default:
97
+ $format = 'jpg';
98
+ break;
99
+ }
100
+
101
+ $posts = get_posts( array( 'numberposts' => 0, ) );
102
+ $id = rand(0, count($posts)-1);
103
+ if(count($posts) !== 0) $txt = $posts[$id]->post_title;
104
+ else $txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas aliquet turpis quis ex elementum malesuada';
105
+
106
+ $image = apply_filters('wapt/generate/image', AutoPostThumbnails::generate_image_with_text($txt), $txt);
107
+
108
+ $image->save( WAPT_PLUGIN_DIR . "/preview.{$format}", 100, $format);
109
+ ?>
110
+ <img src="<?php echo WAPT_PLUGIN_URL . "/preview.{$format}?".time(); ?>" width="100%" alt="">
111
+ </div>
112
+ <?php } ?>
113
+
114
+ <?php if(!WAPT_Plugin::app()->is_premium()) { ?>
115
+ <div id="wapt-dashboard-widget" class="wapt-right-widget">
116
+ <div style="padding:20px">
117
+ <?php WAPT_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar'); ?>
118
+ </div>
119
+ </div>
120
+ <?php } ?>
121
+ </div>
122
  </div>
123
  </div>
 
 
 
 
 
 
 
124
  </div>
125
+ </section>
126
+ </div><!-- /content -->
127
+ </div><!-- /tabs -->
128
+ <div class="row wapt-footer">
129
+ <div class="col-md-6">
130
+ <div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
131
+ <p><strong>Having Issues?</strong></p>
132
+ <div class="wbcr-clr-support-widget-body">
133
+ <p>
134
+ We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you! </p>
135
+ <ul>
136
+ <li><span class="dashicons dashicons-sos"></span>
137
+ <a href="https://forum.webcraftic.com" target="_blank" rel="noopener">Get starting free support</a>
138
+ </li>
139
+ </ul>
140
  </div>
 
141
  </div>
142
  </div>
143
  </div>
144
+
145
  </div>
auto-post-thumbnail.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Auto Post Thumbnail
4
  Plugin URI: https://cm-wp.com/apt
5
  Description: Automatically generate the Post Thumbnail (Featured Thumbnail) from the first image in post (or any custom post type) only if Post Thumbnail is not set manually.
6
- Version: 3.5.1
7
  Author: Creativemotion <support@cm-wp.com>
8
  Author URI: cm-wp.com
9
  Text Domain: apt
@@ -101,15 +101,16 @@ $plugin_info = array(
101
  // Подключаемые модуль фреймворка
102
  // Необходимые для ускоренной разработки продуктов Webcrfatic
103
  'load_factory_modules' => array(
104
- array( 'libs/factory/bootstrap', 'factory_bootstrap_422', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
105
- array( 'libs/factory/forms', 'factory_forms_419', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
106
- array( 'libs/factory/pages', 'factory_pages_421', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
107
- array( 'libs/factory/freemius', 'factory_freemius_109', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
108
- array( 'libs/factory/adverts', 'factory_adverts_103', 'admin') // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
 
109
  )
110
  );
111
 
112
- $wapt_compatibility = new Wbcr_Factory421_Requirements( __FILE__, array_merge( $plugin_info, array(
113
  'plugin_already_activate' => defined( 'WAPT_PLUGIN_ACTIVE' ),
114
  'required_php_version' => '5.4',
115
  'required_wp_version' => '4.2.0',
@@ -182,6 +183,7 @@ try {
182
  */
183
  function auto_post_thumbnails() {
184
  require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-base.php' );
 
185
 
186
  return AutoPostThumbnails::instance();
187
  }
3
  Plugin Name: Auto Post Thumbnail
4
  Plugin URI: https://cm-wp.com/apt
5
  Description: Automatically generate the Post Thumbnail (Featured Thumbnail) from the first image in post (or any custom post type) only if Post Thumbnail is not set manually.
6
+ Version: 3.7.0
7
  Author: Creativemotion <support@cm-wp.com>
8
  Author URI: cm-wp.com
9
  Text Domain: apt
101
  // Подключаемые модуль фреймворка
102
  // Необходимые для ускоренной разработки продуктов Webcrfatic
103
  'load_factory_modules' => array(
104
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_426', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
105
+ array( 'libs/factory/forms', 'factory_forms_423', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
106
+ array( 'libs/factory/pages', 'factory_pages_425', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
107
+ array( 'libs/factory/freemius', 'factory_freemius_113', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
108
+ array( 'libs/factory/adverts', 'factory_adverts_106', 'admin'), // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
109
+ array( 'libs/factory/feedback', 'factory_feedback_102', 'admin'),
110
  )
111
  );
112
 
113
+ $wapt_compatibility = new Wbcr_Factory425_Requirements( __FILE__, array_merge( $plugin_info, array(
114
  'plugin_already_activate' => defined( 'WAPT_PLUGIN_ACTIVE' ),
115
  'required_php_version' => '5.4',
116
  'required_wp_version' => '4.2.0',
183
  */
184
  function auto_post_thumbnails() {
185
  require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-base.php' );
186
+ require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-image.php' );
187
 
188
  return AutoPostThumbnails::instance();
189
  }
fonts/Arial.ttf ADDED
Binary file
fonts/Segoeui.ttf ADDED
Binary file
fonts/Tahoma.ttf ADDED
Binary file
includes/class-wapt-base.php CHANGED
@@ -3,8 +3,8 @@
3
  /**
4
  * Class AutoPostThumbnails
5
  *
6
- * @author Alexander Teshabaev <sasha.tesh@gmail.com>
7
- * @copyright (c) 2018, Webcraftic Ltd
8
  */
9
  class AutoPostThumbnails {
10
 
@@ -81,18 +81,29 @@ class AutoPostThumbnails {
81
  * Initiate all required hooks.
82
  */
83
  private function init() {
 
 
84
  add_action( 'admin_menu', [ $this, 'my_custom_submenu_page' ] );
85
 
86
  $apt_ag = WAPT_Plugin::app()->getOption( 'auto_generation' );
87
 
88
  if ( $apt_ag ) {
89
- add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
90
-
 
 
91
  // This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
92
  add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
93
  }
 
 
 
 
 
94
 
95
  add_action( 'admin_notices', [ $this, 'check_perms' ] );
 
 
96
  //add_action( 'admin_menu', [ $this, 'init_admin_menu' ] );
97
 
98
  // Plugin hook for adding CSS and JS files required for this plugin
@@ -121,11 +132,21 @@ class AutoPostThumbnails {
121
  $this,
122
  'ajax_process_post',
123
  ] );
 
 
 
 
124
  add_action( 'wp_ajax_get-posts-ids', [ $this, 'get_posts_ids' ] );
125
  add_action( 'wp_ajax_apt_replace_thumbnail', [ $this, 'apt_replace_thumbnail' ] );
126
  add_action( 'wp_ajax_apt_get_thumbnail', [ $this, 'apt_get_thumbnail' ] );
127
  add_action( 'wp_ajax_source_content', [ $this, 'source_content' ] );
128
  add_action( 'wp_ajax_upload_to_library', [ $this, 'upload_to_library' ] );
 
 
 
 
 
 
129
  }
130
 
131
  /**
@@ -179,20 +200,6 @@ class AutoPostThumbnails {
179
  $action_column_get_thumbnails = apply_filters( 'wapt/get-thumbnails/action', $action_column_get_thumbnails );
180
  wp_localize_script( 'apt-admin-script-thumbnail', 'action_column_get_thumbnails', $action_column_get_thumbnails );
181
 
182
- /*
183
- wp_enqueue_script(
184
- 'apt-media-views',
185
- plugins_url( 'admin/assets/js/media.js', __FILE__ ),
186
- array( 'jquery' ),
187
- false,
188
- true
189
- );
190
- */
191
- /*
192
- //global $post;
193
- $aptIframeSrc = get_admin_url(get_current_blog_id(), 'media-upload.php?chromeless=1&post_id=' . $_REQUEST['post'] . '&tab=apttab');
194
- wp_localize_script('apt-media-views', 'aptIframeSrc', $aptIframeSrc);
195
- */
196
  if ( is_admin() ) {
197
  wp_enqueue_script( 'jquery-progress', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.progressbar.min.js', [], false, true );
198
  wp_enqueue_script( 'jquery-autocolumnlist', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.autocolumnlist.js', [], false, true );
@@ -207,12 +214,62 @@ class AutoPostThumbnails {
207
  //wp_enqueue_style( 'jquery-ui-genpostthumbs', plugins_url( 'admin/assets/jquery-ui/redmond/jquery-ui-1.7.2.custom.css', __FILE__ ), array(), '1.7.2' );
208
  }
209
 
 
 
 
 
 
 
 
 
210
  //-----------------------------------
211
  if ( 'settings_page_generate-post-thumbnails' != $hook_suffix ) {
212
  return;
213
  }
214
  }
215
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  /**
217
  * Get posts id's
218
  *
@@ -224,23 +281,46 @@ class AutoPostThumbnails {
224
  }
225
  check_ajax_referer( 'get-posts' );
226
 
227
- global $wpdb;
228
-
229
- // Get id's of all the published posts for which post thumbnails does not exist.
230
- $query = $this->get_posts_query();
231
- $posts = $wpdb->get_results( $query );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
 
233
- if ( ! empty( $posts ) ) {
234
  // Generate the list of IDs
235
  $ids = [];
236
- foreach ( $posts as $post ) {
237
- $ids[] = $post->ID;
 
 
 
 
 
 
 
 
238
  }
239
  $ids = implode( ',', $ids );
240
  echo $ids;
241
  } else {
242
  echo "0";
243
- //esc_html_e( 'Currently there are no published posts available to generate thumbnails.', 'apt' );
244
  }
245
  die( - 1 );
246
  }
@@ -272,6 +352,57 @@ class AutoPostThumbnails {
272
  die( - 1 );
273
  }
274
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  /**
276
  * Check whether the required directory structure is available so that the plugin can create thumbnails if needed.
277
  * If not, don't allow plugin activation.
@@ -311,17 +442,48 @@ class AutoPostThumbnails {
311
  /**
312
  * Return sql query, which allows to receive all the posts without thumbnails
313
  *
314
- * @return string
315
  */
316
- public function get_posts_query() {
317
- global $wpdb;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
 
319
- return "SELECT * FROM {$wpdb->posts} p WHERE p.post_status = 'publish' AND p.post_type = 'post' AND (
320
- p.ID NOT IN (
321
- SELECT DISTINCT post_id FROM {$wpdb->postmeta} WHERE meta_key IN ('_thumbnail_id', 'skip_post_thumb')
322
- ) OR
323
- NOT EXISTS (SELECT p2.ID FROM {$wpdb->posts} p2 WHERE p2.ID = (SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_thumbnail_id' AND post_id = p.ID) AND p2.post_type = 'attachment')
324
- )";
325
  }
326
 
327
  /**
@@ -338,8 +500,11 @@ class AutoPostThumbnails {
338
  $matches = [];
339
  $images = [];
340
 
 
 
 
341
  // Get all images from post's body
342
- preg_match_all( '/<\s*img [^\>]*src\s*=\s*[\""\']?([^\""\'>]*).*?>/i', $post->post_content, $matches );
343
 
344
  if ( count( $matches ) ) {
345
  foreach ( $matches[0] as $key => $image ) {
@@ -361,14 +526,12 @@ class AutoPostThumbnails {
361
  /**
362
  * Get thumbnail id for image
363
  *
364
- * @param $post_id
365
- * @param $image
366
- * @param $key
367
- * @param array $images_urls
368
  *
369
  * @return bool|int
370
  */
371
- public function get_thumbnail_id( $image, $key ) {
372
  global $wpdb;
373
 
374
  /**
@@ -387,8 +550,8 @@ class AutoPostThumbnails {
387
 
388
  // If thumb id is not found, try to look for the image in DB. Thanks to "Erwin Vrolijk" for providing this code.
389
  if ( ! $thumb_id ) {
390
- $image = substr( $image, strpos( $image, '"' ) + 1 );
391
- $result = $wpdb->get_results( "SELECT ID FROM {$wpdb->posts} WHERE guid = '" . $image . "'" );
392
  if ( $result ) {
393
  $thumb_id = $result[0]->ID;
394
  }
@@ -396,8 +559,8 @@ class AutoPostThumbnails {
396
 
397
  // Still no id found? Try found by post_name
398
  if ( ! $thumb_id ) {
399
- if ( isset( $images['tags'][ $key ] ) && ! empty( $images['tags'][ $key ] ) ) {
400
- $image_url = trim( $images['tags'][ $key ] );
401
  $_parts = explode( '/', $image_url );
402
  $image_url = array_pop( $_parts );
403
  $_parts = explode( '.', $image_url );
@@ -432,21 +595,41 @@ class AutoPostThumbnails {
432
  }
433
 
434
  $thumb_id = 0;
435
-
436
  $images = $this->get_images_from_post( $post_id );
437
- if ( isset( $images['tags'] ) && count( $images['tags'] ) ) {
 
438
  foreach ( $images['tags'] as $key => $image ) {
439
- $thumb_id = $this->get_thumbnail_id( $image, $key );
440
  // If we succeed in generating thumb, let's update post meta
441
  if ( $thumb_id ) {
442
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
443
-
444
  return $thumb_id;
445
  } else {
446
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $images['urls'][ $key ] . "'" );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
447
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
448
 
449
- return $thumb_id ? $thumb_id : 0;
450
  }
451
  }
452
  }
@@ -512,18 +695,17 @@ class AutoPostThumbnails {
512
  *
513
  * @return int|WP_Error|null
514
  */
515
- public function generate_post_thumb( $matches, $titles, $key, $post_id ) {
516
  // Get the URL now for further processing
517
  //$imageUrl = $matches[1][ $key ];
518
- $imageUrl = $matches[ $key ];
519
- if ( ! empty( $titles ) ) {
520
- $imageTitle = $titles[ $key ];
521
- } else {
522
- $imageTitle = '';
523
- }
524
 
525
  // Get the file name
526
  $filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
 
 
 
527
 
528
  if ( ! ( ( $uploads = wp_upload_dir( current_time( 'mysql' ) ) ) && false === $uploads['error'] ) ) {
529
  return null;
@@ -538,9 +720,16 @@ class AutoPostThumbnails {
538
  if ( ! ini_get( 'allow_url_fopen' ) ) {
539
  $file_data = $this->curl_get_file_contents( $imageUrl );
540
  } else {
541
- $file_data = @file_get_contents( $imageUrl );
 
 
 
 
 
 
542
  }
543
 
 
544
  if ( ! $file_data ) {
545
  return null;
546
  }
@@ -548,7 +737,7 @@ class AutoPostThumbnails {
548
  //Fix for checking file extensions
549
  $exts = explode( ".", $filename );
550
  if ( count( $exts ) > 2 ) {
551
- return null;
552
  }
553
 
554
  $allowed = get_allowed_mime_types();
@@ -611,6 +800,8 @@ class AutoPostThumbnails {
611
  $c = curl_init();
612
  curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
613
  curl_setopt( $c, CURLOPT_URL, $URL );
 
 
614
  $contents = curl_exec( $c );
615
  curl_close( $c );
616
 
@@ -629,8 +820,10 @@ class AutoPostThumbnails {
629
  * @return array
630
  */
631
  public function add_image_column( $columns ) {
 
 
632
  $new_columns = [
633
- 'apt-image' => __( 'Image', 'apt' ) . ' <sup class="wapt-sup-pro">(PRO)<sup>',
634
  ];
635
 
636
  return array_slice( $columns, 0, $this->numberOfColumn ) + $new_columns + array_slice( $columns, $this->numberOfColumn );
@@ -667,23 +860,35 @@ class AutoPostThumbnails {
667
  check_ajax_referer( 'set_post_thumbnail-' . $post_id );
668
  if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
669
  $thumb_id = intval( $_POST['thumbnail_id'] );
670
- } else {
671
- if ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) ) {
672
- $thumb_id = $this->generate_post_thumb( [ 0 => $_POST['image'] ], [], 0, $post_id );
 
673
  }
674
  }
 
 
 
 
 
 
675
 
676
- if ( $thumb_id ) {
677
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
678
- } else {
679
  global $wpdb;
680
- $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $_POST['image'] . "'" );
681
- if ( $thumb_id ) {
682
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
683
- } else {
684
- $thumb_id = 0;
 
 
 
685
  }
686
  }
 
 
 
 
 
687
  echo $this->apt_getThumbHtml( $post_id, $thumb_id );
688
  }
689
  }
@@ -810,7 +1015,7 @@ class AutoPostThumbnails {
810
  */
811
  public function upload_to_library() {
812
 
813
- if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_upload' ) ) {
814
  die( 'Error: Invalid request.' );
815
  }
816
  if ( isset( $_POST['is_upload'] ) ) {
@@ -890,8 +1095,8 @@ class AutoPostThumbnails {
890
 
891
  $attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
892
  $result = wp_update_attachment_metadata( $attach_id, $attach_data );
893
- if ( $result === false ) {
894
- die( 'Error: File attachment metadata error' );
895
  }
896
 
897
  $image_data = [];
@@ -904,4 +1109,345 @@ class AutoPostThumbnails {
904
  exit;
905
  }
906
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
907
  }
3
  /**
4
  * Class AutoPostThumbnails
5
  *
6
+ * @author Artem Prihodko <webtemyk@yandex.ru>, Github: https://github.com/temyk
7
+ * @copyright (c) 2019, Webcraftic Ltd
8
  */
9
  class AutoPostThumbnails {
10
 
81
  * Initiate all required hooks.
82
  */
83
  private function init() {
84
+ add_action( 'admin_init', [ $this, 'redirect_to_about_page' ] );
85
+
86
  add_action( 'admin_menu', [ $this, 'my_custom_submenu_page' ] );
87
 
88
  $apt_ag = WAPT_Plugin::app()->getOption( 'auto_generation' );
89
 
90
  if ( $apt_ag ) {
91
+ //add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
92
+ add_action( 'save_post', [ $this, 'publish_post' ], 10, 1 );
93
+ // This hook handle update post via rest api. for example Wordpress mobile apps
94
+ add_action( 'rest_api_inserted_post', [ $this, 'publish_post' ], 10, 1 );
95
  // This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
96
  add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
97
  }
98
+ else {
99
+ if(WAPT_Plugin::app()->getOption( 'auto_generation_notice', 1 )) {
100
+ add_action( 'admin_notices', [ $this, 'notice_auto_generation' ] );
101
+ }
102
+ }
103
 
104
  add_action( 'admin_notices', [ $this, 'check_perms' ] );
105
+ add_action( 'wbcr/factory/admin_notices', [ $this, 'check_api_notice' ], 10, 2 );
106
+ add_action( 'wbcr/factory/admin_notices', [ $this, 'show_about_notice' ], 10, 2 );
107
  //add_action( 'admin_menu', [ $this, 'init_admin_menu' ] );
108
 
109
  // Plugin hook for adding CSS and JS files required for this plugin
132
  $this,
133
  'ajax_process_post',
134
  ] );
135
+ add_action( 'wp_ajax_delete_post_thumbnails', [
136
+ $this,
137
+ 'ajax_delete_post_thumbnails',
138
+ ] );
139
  add_action( 'wp_ajax_get-posts-ids', [ $this, 'get_posts_ids' ] );
140
  add_action( 'wp_ajax_apt_replace_thumbnail', [ $this, 'apt_replace_thumbnail' ] );
141
  add_action( 'wp_ajax_apt_get_thumbnail', [ $this, 'apt_get_thumbnail' ] );
142
  add_action( 'wp_ajax_source_content', [ $this, 'source_content' ] );
143
  add_action( 'wp_ajax_upload_to_library', [ $this, 'upload_to_library' ] );
144
+ add_action( 'wp_ajax_wapt_upload_font', [ $this, 'upload_font' ] );
145
+
146
+ //APIs
147
+ add_action( 'wp_ajax_apt_api_google', [ $this, 'apt_api_google' ] );
148
+ add_action( 'wp_ajax_apt_check_api_key', [ $this, 'apt_check_api_key' ] );
149
+ add_action( 'wp_ajax_hide_notice_auto_generation', [ $this, 'hide_notice_auto_generation' ] );
150
  }
151
 
152
  /**
200
  $action_column_get_thumbnails = apply_filters( 'wapt/get-thumbnails/action', $action_column_get_thumbnails );
201
  wp_localize_script( 'apt-admin-script-thumbnail', 'action_column_get_thumbnails', $action_column_get_thumbnails );
202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  if ( is_admin() ) {
204
  wp_enqueue_script( 'jquery-progress', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.progressbar.min.js', [], false, true );
205
  wp_enqueue_script( 'jquery-autocolumnlist', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.autocolumnlist.js', [], false, true );
214
  //wp_enqueue_style( 'jquery-ui-genpostthumbs', plugins_url( 'admin/assets/jquery-ui/redmond/jquery-ui-1.7.2.custom.css', __FILE__ ), array(), '1.7.2' );
215
  }
216
 
217
+ wp_enqueue_script(
218
+ 'apt-admin-check_api',
219
+ WAPT_PLUGIN_URL.'/admin/assets/js/check-api.js',
220
+ array(),
221
+ false,
222
+ true
223
+ );
224
+
225
  //-----------------------------------
226
  if ( 'settings_page_generate-post-thumbnails' != $hook_suffix ) {
227
  return;
228
  }
229
  }
230
 
231
+ /**
232
+ * Этот хук реализует условную логику, при которой пользователь переодически будет
233
+ * видет страницу "О плагине", а конкретно при активации и обновлении плагина.
234
+ */
235
+ public function redirect_to_about_page()
236
+ {
237
+ $plugin = WAPT_Plugin::app();
238
+
239
+ // If the user has updated the plugin or activated it for the first time,
240
+ // you need to show the page "What's new?"
241
+ if ( ! $plugin->isNetworkAdmin() ) {
242
+ $about_page_viewed = $plugin->request->get( 'wapt_about_page_viewed', null );
243
+ $need_show_about = get_option( $plugin->getOptionName( 'whats_new_v360' ) );
244
+ if ( is_null( $about_page_viewed ) ) {
245
+ if ( $need_show_about && !(defined( 'DOING_AJAX' ) && DOING_AJAX) && !(defined( 'DOING_CRON' ) && DOING_CRON) ) {
246
+ try {
247
+ $redirect_url = '';
248
+ if ( class_exists( 'Wbcr_FactoryPages425' ) ) {
249
+ $redirect_url = admin_url("admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1");
250
+ }
251
+ if ( $redirect_url ) {
252
+ wp_safe_redirect( $redirect_url );
253
+ die();
254
+ }
255
+ } catch( Exception $e ) {
256
+ }
257
+ }
258
+ } else {
259
+ if ( $need_show_about && !(defined( 'DOING_AJAX' ) && DOING_AJAX) && !(defined( 'DOING_CRON' ) && DOING_CRON) ) {
260
+ delete_option( $plugin->getOptionName( 'whats_new_v360' ) );
261
+ }
262
+ }
263
+ }
264
+ }
265
+
266
+ /**
267
+ * Метод проверяет активацию премиум плагина и наличие действующего лицензионнного ключа
268
+ */
269
+ public function is_premium()
270
+ {
271
+ return WAPT_Plugin::app()->is_premium();
272
+ }
273
  /**
274
  * Get posts id's
275
  *
281
  }
282
  check_ajax_referer( 'get-posts' );
283
 
284
+ $generate = WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
285
+ if($generate == 'find') $auto_generate = false;
286
+ else if($generate == 'generate' || $generate == 'both') $auto_generate = true;
287
+ else $auto_generate = false;
288
+
289
+
290
+ $has_thumb = (bool) $_POST['withThumb'];
291
+ if(auto_post_thumbnails()->is_premium()) {
292
+ $status = $_POST['poststatus'];
293
+ $type = $_POST['posttype'];
294
+ $category = $_POST['category'];
295
+ $date_start = $_POST['date_start'] ? DateTime::createFromFormat( get_option( 'date_format ' ), $_POST['date_start'] )->format( 'Y-m-d' ) : 0;
296
+ $date_end = $_POST['date_end'] ? DateTime::createFromFormat( get_option( 'date_format ' ), $_POST['date_end'] )->format( 'Y-m-d' ) : 0;
297
+ // Get id's of the posts that satisfy the filters
298
+ $query = $this->get_posts_query( $has_thumb,$status, $type, $category, $date_start, $date_end );
299
+ }
300
+ else
301
+ {
302
+ // Get id's of all the published posts for which post thumbnails exist or does not exist
303
+ $query = $this->get_posts_query($has_thumb);
304
+ }
305
 
306
+ if ( ! empty( $query->posts ) ) {
307
  // Generate the list of IDs
308
  $ids = [];
309
+ foreach ( $query->posts as $post ) {
310
+ //если запрошены посты без тамбнеила, значит пользователь хочет сгенерировать их
311
+ if(!$has_thumb) {
312
+ $images = $this->get_images_from_post( $post->ID );
313
+ if ( (isset( $images['urls'] ) && count( $images['urls'] )) || $auto_generate ) {
314
+ $ids[] = $post->ID;
315
+ }
316
+ }
317
+ else //иначе он хочет удалить тамбнэйлы
318
+ $ids[] = $post->ID;
319
  }
320
  $ids = implode( ',', $ids );
321
  echo $ids;
322
  } else {
323
  echo "0";
 
324
  }
325
  die( - 1 );
326
  }
352
  die( - 1 );
353
  }
354
 
355
+ /**
356
+ * Process single post to delete the post thumbnail
357
+ *
358
+ * @return void
359
+ */
360
+ public function ajax_delete_post_thumbnails() {
361
+ if ( ! current_user_can( 'manage_options' ) ) {
362
+ die( '-1' );
363
+ }
364
+ check_ajax_referer( 'delete-post-thumbnails' );
365
+ if ( isset( $_POST['id'] ) && ! empty( $_POST['id'] ) ) {
366
+ $id = intval( $_POST['id'] );
367
+
368
+ if ( empty( $id ) ) {
369
+ die( '-1' );
370
+ }
371
+
372
+ set_time_limit( 60 );
373
+
374
+ // Pass on the id to our 'publish' callback function.
375
+ echo delete_post_thumbnail($id);
376
+
377
+ die( - 1 );
378
+ }
379
+ die( - 1 );
380
+ }
381
+
382
+ /**
383
+ *
384
+ */
385
+ public function notice_auto_generation() {
386
+ ?>
387
+ <div class="notice notice-warning is-dismissible" id="notice_auto_generation">
388
+ <p><b>Auto Post Thumbnail:</b> Do you want to enable automatic post thumbnail generation? Enable this option in
389
+ <a href="<?php echo admin_url('admin.php?page=wapt_settings-wbcr_apt&tab=general'); ?>">settings</a><br>
390
+ <a href="#" id="hide_notice_auto_generation">Don't ask again</a>
391
+ </p>
392
+ </div>
393
+ <?php
394
+ }
395
+
396
+ /**
397
+ *
398
+ */
399
+ public function hide_notice_auto_generation() {
400
+ if( isset($_POST['action']) && $_POST['action'] === 'hide_notice_auto_generation')
401
+ {
402
+ WAPT_Plugin::app()->updateOption( 'auto_generation_notice', 0 );
403
+ }
404
+ }
405
+
406
  /**
407
  * Check whether the required directory structure is available so that the plugin can create thumbnails if needed.
408
  * If not, don't allow plugin activation.
442
  /**
443
  * Return sql query, which allows to receive all the posts without thumbnails
444
  *
445
+ * @return WP_Query
446
  */
447
+ public function get_posts_query($has_thumb = false, $status = 'publish', $type = 'post', $category = 0, $date_start = 0, $date_end = 0) {
448
+
449
+ $q_status = $status ? $status : 'any';
450
+ $q_type = $type ? $type : 'any';
451
+ $q_has_thumb = $has_thumb ? "EXISTS" : "NOT EXISTS";
452
+
453
+ $args = array(
454
+ 'posts_per_page' => -1,
455
+ 'post_status' => $q_status,
456
+ 'post_type' => $q_type,
457
+ 'meta_query' => array(
458
+ 'relation' => 'AND',
459
+ array(
460
+ 'key' => '_thumbnail_id',
461
+ 'compare' => $q_has_thumb
462
+ ),
463
+ array(
464
+ 'key' => 'skip_post_thumb',
465
+ 'compare' => 'NOT EXISTS'
466
+ ),
467
+ ),
468
+ );
469
+ if($category) $args['cat'] = $category;
470
+ if($date_start && $date_start)
471
+ {
472
+ $args['date_query'][] = array(
473
+ 'after' => $date_start,
474
+ 'before' => $date_end,
475
+ 'inclusive' => true,
476
+ );
477
+ }
478
+ $query = new WP_Query( $args);
479
+
480
+ // $query = "SELECT * FROM {$wpdb->posts} p WHERE {$q_status_type}
481
+ // {$q_date} AND (
482
+ // p.ID NOT IN (
483
+ // SELECT DISTINCT post_id FROM {$wpdb->postmeta} WHERE meta_key IN ('_thumbnail_id', 'skip_post_thumb')
484
+ // ) OR {$q_without_thumb} EXISTS (SELECT p2.ID FROM {$wpdb->posts} p2 WHERE p2.ID = (SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_thumbnail_id' AND post_id = p.ID) AND p2.post_type = 'attachment'))";
485
 
486
+ return $query;
 
 
 
 
 
487
  }
488
 
489
  /**
500
  $matches = [];
501
  $images = [];
502
 
503
+ //do shortcodes before search images
504
+ $post_content = do_shortcode( $post->post_content);
505
+
506
  // Get all images from post's body
507
+ preg_match_all( '/<\s*img .*src\s*=\s*[\""\']?([^\""\'>]*).*?>/i', $post_content, $matches );
508
 
509
  if ( count( $matches ) ) {
510
  foreach ( $matches[0] as $key => $image ) {
526
  /**
527
  * Get thumbnail id for image
528
  *
529
+ * @param string $image
530
+ * @param string $url
 
 
531
  *
532
  * @return bool|int
533
  */
534
+ public function get_thumbnail_id( $image, $url ) {
535
  global $wpdb;
536
 
537
  /**
550
 
551
  // If thumb id is not found, try to look for the image in DB. Thanks to "Erwin Vrolijk" for providing this code.
552
  if ( ! $thumb_id ) {
553
+ //$image = substr( $image, strpos( $image, '"' ) + 1 );
554
+ $result = $wpdb->get_results( "SELECT ID FROM {$wpdb->posts} WHERE guid = '" . $url . "'" );
555
  if ( $result ) {
556
  $thumb_id = $result[0]->ID;
557
  }
559
 
560
  // Still no id found? Try found by post_name
561
  if ( ! $thumb_id ) {
562
+ if ( isset( $image ) && ! empty( $image ) ) {
563
+ $image_url = trim( $image );
564
  $_parts = explode( '/', $image_url );
565
  $image_url = array_pop( $_parts );
566
  $_parts = explode( '.', $image_url );
595
  }
596
 
597
  $thumb_id = 0;
598
+ $autoimage = WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
599
  $images = $this->get_images_from_post( $post_id );
600
+ if ( (isset( $images['tags'] ) && count( $images['tags'] )) && $autoimage !== 'generate') {
601
+
602
  foreach ( $images['tags'] as $key => $image ) {
603
+ $thumb_id = $this->get_thumbnail_id( $image, $images['urls'][$key] );
604
  // If we succeed in generating thumb, let's update post meta
605
  if ( $thumb_id ) {
606
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
 
607
  return $thumb_id;
608
  } else {
609
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $images['urls'][ $key ] . "'" );
610
+ if($thumb_id) {
611
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
612
+ return $thumb_id ? $thumb_id : 0;
613
+ }
614
+ else {
615
+ if(auto_post_thumbnails()->is_premium()) $thumb_id = apply_filters( 'wapt/generate_post_thumb', $images['urls'][ $key ], $post_id );
616
+ if($thumb_id) {
617
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
618
+ return $thumb_id;
619
+ }
620
+ }
621
+ }
622
+ }
623
+ }
624
+ else {
625
+ // создаём свою картинку с заголовком на цветном фоне
626
+ if ( $autoimage == 'generate' || $autoimage == 'both' ) {
627
+
628
+ $thumb_id = $this->generate_and_attachment($post_id);
629
+ if ( $thumb_id ) {
630
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
631
 
632
+ return $thumb_id;
633
  }
634
  }
635
  }
695
  *
696
  * @return int|WP_Error|null
697
  */
698
+ public function generate_post_thumb( $image_url, $title, $post_id ) {
699
  // Get the URL now for further processing
700
  //$imageUrl = $matches[1][ $key ];
701
+ $imageUrl = $image_url;
702
+ $imageTitle = $title;
 
 
 
 
703
 
704
  // Get the file name
705
  $filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
706
+ //исключаем параметры после имени файла
707
+ if(strrpos( $filename, '?' ))
708
+ $filename = substr( $filename, 0, strrpos( $filename, '?' ) );
709
 
710
  if ( ! ( ( $uploads = wp_upload_dir( current_time( 'mysql' ) ) ) && false === $uploads['error'] ) ) {
711
  return null;
720
  if ( ! ini_get( 'allow_url_fopen' ) ) {
721
  $file_data = $this->curl_get_file_contents( $imageUrl );
722
  } else {
723
+ $arrContextOptions = array (
724
+ "ssl" => array(
725
+ "verify_peer" => false,
726
+ "verify_peer_name" => false,
727
+ ),
728
+ );
729
+ $file_data = file_get_contents( $imageUrl, false, stream_context_create($arrContextOptions) );
730
  }
731
 
732
+
733
  if ( ! $file_data ) {
734
  return null;
735
  }
737
  //Fix for checking file extensions
738
  $exts = explode( ".", $filename );
739
  if ( count( $exts ) > 2 ) {
740
+ //return null;
741
  }
742
 
743
  $allowed = get_allowed_mime_types();
800
  $c = curl_init();
801
  curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
802
  curl_setopt( $c, CURLOPT_URL, $URL );
803
+ curl_setopt( $c, CURLOPT_SSL_VERIFYHOST, 0 );
804
+ curl_setopt( $c, CURLOPT_SSL_VERIFYPEER, false );
805
  $contents = curl_exec( $c );
806
  curl_close( $c );
807
 
820
  * @return array
821
  */
822
  public function add_image_column( $columns ) {
823
+ $pro = $this->is_premium() ? '' : ' <sup class="wapt-sup-pro">(PRO)<sup>';
824
+
825
  $new_columns = [
826
+ 'apt-image' => __( 'Image', 'apt' ) . $pro,
827
  ];
828
 
829
  return array_slice( $columns, 0, $this->numberOfColumn ) + $new_columns + array_slice( $columns, $this->numberOfColumn );
860
  check_ajax_referer( 'set_post_thumbnail-' . $post_id );
861
  if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
862
  $thumb_id = intval( $_POST['thumbnail_id'] );
863
+
864
+ if($thumb_id == -1) //generate image
865
+ {
866
+ $thumb_id = $this->generate_and_attachment($post_id);
867
  }
868
  }
869
+ else if ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) )
870
+ {
871
+ $img = $_POST['image'];
872
+
873
+ //Совместимость с NexGen
874
+ $img = preg_replace('/(thumbs\/thumbs_)/', '.', $img);
875
 
 
 
 
876
  global $wpdb;
877
+ $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
878
+ if ( !$thumb_id ) {
879
+ //если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
880
+ $img = preg_replace('/-[0-9]{1,}x[0-9]{1,}\./', '.', $img);
881
+ $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
882
+ }
883
+ if ( !$thumb_id ) {
884
+ $thumb_id = $this->generate_post_thumb( $img, '', $post_id );
885
  }
886
  }
887
+ else {
888
+ $thumb_id = 0;
889
+ }
890
+ if($thumb_id) update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
891
+
892
  echo $this->apt_getThumbHtml( $post_id, $thumb_id );
893
  }
894
  }
1015
  */
1016
  public function upload_to_library() {
1017
 
1018
+ if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_api' ) ) {
1019
  die( 'Error: Invalid request.' );
1020
  }
1021
  if ( isset( $_POST['is_upload'] ) ) {
1095
 
1096
  $attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
1097
  $result = wp_update_attachment_metadata( $attach_id, $attach_data );
1098
+ if (! $result ) {
1099
+ //die( 'Error: File attachment metadata error' );
1100
  }
1101
 
1102
  $image_data = [];
1109
  exit;
1110
  }
1111
  }
1112
+
1113
+ /**
1114
+ * AJAX загрузка шрифта
1115
+ *
1116
+ */
1117
+ public function upload_font() {
1118
+ if ( ! wp_verify_nonce( $_POST['wpnonce'], 'wapt_upload_font' ) ) {
1119
+ die( 'Error: Invalid request.' );
1120
+ }
1121
+
1122
+ if( isset( $_POST['is_font_upload'] ) && count($_FILES) > 0){
1123
+ $file = $_FILES[0];
1124
+ $upload_dir = wp_upload_dir();
1125
+ $upload_dir = $upload_dir['basedir']."/apt_fonts";
1126
+ if( ! is_dir( $upload_dir ) ) mkdir( $upload_dir, 0777 );
1127
+
1128
+ $done_files = array();
1129
+ $file_name = $file['name'];
1130
+
1131
+ // Проверка, что файл является шрифтом TrueType
1132
+ $header = file_get_contents($file['tmp_name'], false, null, null, 4);
1133
+ if( $header !== "\x00\x01\x00\x00" && $header !== "true" && $header !== "typ1" )
1134
+ die( json_encode( array('error' => "The uploaded file is not a TrueType font") ) );
1135
+ //-----
1136
+
1137
+ if( move_uploaded_file( $file['tmp_name'], "$upload_dir/$file_name" ) ){
1138
+ if(realpath( "$upload_dir/$file_name" ))
1139
+ $data = array('files' => $file );
1140
+ else
1141
+ $data = array('error' => "Unable to copy the file to the font folder: $upload_dir");
1142
+ }
1143
+
1144
+ die( json_encode( $data ) );
1145
+ }
1146
+ }
1147
+
1148
+ /**
1149
+ * AJAX загрузка google
1150
+ *
1151
+ */
1152
+ public function apt_api_google() {
1153
+
1154
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'apt_api' ) ) {
1155
+ die( 'Error: Invalid request.' );
1156
+ }
1157
+ if ( isset( $_POST['query'] ) )
1158
+ {
1159
+ $query = $_POST['query'];
1160
+ $google_key = WAPT_Plugin::app()->getOption('google_apikey');
1161
+ $google_cse = WAPT_Plugin::app()->getOption('google_cse');
1162
+
1163
+ if ( isset( $_POST['page'] ) )
1164
+ $page = $_POST['page'];
1165
+ else
1166
+ $page = 1;
1167
+
1168
+ $start = (($page-1)*10) + 1;
1169
+ $url = "https://www.googleapis.com/customsearch/v1?searchType=image&start={$start}&q=".urlencode($query)."&key={$google_key}&cx={$google_cse}";
1170
+
1171
+ // Check limits
1172
+ $limit = WAPT_Plugin::app()->getOption('google_limit');
1173
+ if(!$limit) WAPT_Plugin::app()->updateOption('google_limit', array('expires'=>time(), 'count'=>10));
1174
+ if(time()-$limit['expires'] > 3600) //1 hour - 3600 sec
1175
+ {
1176
+ $limit['expires'] = time();
1177
+ $limit['count'] = 10;
1178
+ WAPT_Plugin::app()->updateOption('google_limit', $limit);
1179
+ }
1180
+
1181
+ if(!WAPT_Plugin::app()->premium->is_active() && !WAPT_Plugin::app()->premium->is_activate()) {
1182
+ if ( $limit['count'] < 1 ) {
1183
+ die( sprintf( __( 'You have reached the limit at the moment. Try again in an 1 hour or <a href="%s">Upgrade to Premium</a>', 'apt' ), WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) ) );
1184
+ }
1185
+ $limit['count'] --;
1186
+ }
1187
+
1188
+ if($start === 1) WAPT_Plugin::app()->updateOption('google_limit', $limit);
1189
+
1190
+ $response = wp_remote_get( $url, [ 'timeout' => 100 ] );
1191
+ if ( is_wp_error( $response ) ) {
1192
+ die( 'Error: ' . $response->get_error_message() );
1193
+ }
1194
+
1195
+ echo $response['body'];
1196
+
1197
+ exit;
1198
+ }
1199
+ }
1200
+
1201
+ /**
1202
+ * Проверка API ключей
1203
+ *
1204
+ */
1205
+ public function apt_check_api_key() {
1206
+
1207
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'check-api-key' ) ) {
1208
+ die( 'Error: Invalid request.' );
1209
+ }
1210
+ if ( isset( $_POST['provider'] ) && isset( $_POST['key'] ) && isset( $_POST['key2'] ) )
1211
+ {
1212
+ $provider = $_POST['provider'];
1213
+ $key = $_POST['key'];
1214
+ $cx = $_POST['key2'];
1215
+ switch ($provider){
1216
+ case "google":
1217
+ $url = "https://www.googleapis.com/customsearch/v1?q=cat&key={$key}&cx={$cx}";
1218
+
1219
+ $response = wp_remote_get( $url, [ 'timeout' => 100 ] );
1220
+ if ( is_wp_error( $response ) ) {
1221
+ die( 'Error: ' . $response->get_error_message() );
1222
+ }
1223
+ $result = json_decode( $response['body']);
1224
+ echo !isset($result->error->errors) ? true : false;
1225
+ break;
1226
+ }
1227
+ exit;
1228
+ }
1229
+ }
1230
+
1231
+ public function check_api_notice($notices, $plugin_name)
1232
+ {
1233
+ // Если экшен вызывал не этот плагин, то не выводим это уведомления
1234
+ if ( $plugin_name != WAPT_Plugin::app()->getPluginName() ) {
1235
+ return $notices;
1236
+ }
1237
+ // Получаем заголовок плагина
1238
+ $plugin_title = WAPT_Plugin::app()->getPluginTitle();
1239
+
1240
+ if(!WAPT_Plugin::app()->getOption( 'google_apikey') && !WAPT_Plugin::app()->getOption( 'google_cse') )
1241
+ {
1242
+ // Задаем текст уведомления
1243
+ $notice_text = '<p><b>'.$plugin_title.':</b> <br>' . sprintf(__( "To download images from Google, specify Google API keys in the <a href='%s'>settings</a>.", 'apt' ), admin_url('admin.php?page=wapt_settings-wbcr_apt'))."</p>";
1244
+
1245
+ // Задаем настройки уведомления
1246
+ $notices[] = [
1247
+ 'id' => 'apt_check_api',
1248
+ //error, success, warning
1249
+ 'type' => 'warning',
1250
+ 'dismissible' => true,
1251
+ // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1252
+ 'where' => array('plugins', 'dashboard', 'edit'),
1253
+ // Через какое время уведомление снова появится?
1254
+ 'dismiss_expires' => 0,
1255
+ 'text' => $notice_text,
1256
+ 'classes' => array()
1257
+ ];
1258
+ }
1259
+ return $notices;
1260
+ }
1261
+
1262
+ public function show_about_notice($notices, $plugin_name)
1263
+ {
1264
+ // Если экшен вызывал не этот плагин, то не выводим это уведомления
1265
+ if ( $plugin_name != WAPT_Plugin::app()->getPluginName() ) {
1266
+ return $notices;
1267
+ }
1268
+ // Получаем заголовок плагина
1269
+ $plugin_title = WAPT_Plugin::app()->getPluginTitle();
1270
+
1271
+ $notice_text = '<p><b>'.$plugin_title.':</b> ' .
1272
+ sprintf(__( "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on our website.", 'apt' ), 'https://cm-wp.com/auto-featured-image-from-title/')."</p>";
1273
+ $notices[] = [
1274
+ 'id' => 'apt_show_about_370',
1275
+ //error, success, warning
1276
+ 'type' => 'info',
1277
+ 'dismissible' => true,
1278
+ // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1279
+ 'where' => array('plugins', 'dashboard', 'edit'),
1280
+ // Через какое время уведомление снова появится?
1281
+ 'dismiss_expires' => 0,
1282
+ 'text' => $notice_text,
1283
+ 'classes' => array()
1284
+ ];
1285
+ return $notices;
1286
+ }
1287
+ /**
1288
+ * Получение списка шрифтов из папок
1289
+ *
1290
+ * @return array
1291
+ */
1292
+ public static function get_fonts() {
1293
+ $upload_dir = wp_upload_dir();
1294
+ $upload_dir_fonts = $upload_dir['basedir']."/apt_fonts";
1295
+ $plugin_dir_fonts = WAPT_PLUGIN_DIR."/fonts";
1296
+ $fonts = array();
1297
+
1298
+ $fonts[] = array( 'title' => __('Standard','apt'), 'type' => 'group');
1299
+ $files = scandir($plugin_dir_fonts);
1300
+ foreach ( $files as $file ) {
1301
+ if($file == '.' || $file == '..') continue;
1302
+ $name = pathinfo($plugin_dir_fonts.'/'.$file);
1303
+ $name = $name['filename'];
1304
+ $fonts[] = array( 'value' => $file, 'title' => $name);
1305
+ }
1306
+
1307
+ if(is_dir( $upload_dir_fonts )) $files = scandir($upload_dir_fonts);
1308
+ if(count($files) && AutoPostThumbnails::instance()->is_premium()) {
1309
+ $fonts[] = array( 'title' => __('Uploaded','apt'), 'type' => 'group');
1310
+ foreach ( $files as $file ) {
1311
+ if ( $file == '.' || $file == '..' ) {
1312
+ continue;
1313
+ }
1314
+ $name = pathinfo( $upload_dir_fonts . '/' . $file );
1315
+ $name = $name['filename'];
1316
+ $fonts[] = array( 'value' => $file, 'title' => $name );
1317
+ }
1318
+ }
1319
+
1320
+ return $fonts;
1321
+
1322
+ }
1323
+
1324
+ /**
1325
+ * Генерация изображения с текстом.
1326
+ * Если $pathToSave задан, то файл сохранится по этому пути.
1327
+ *
1328
+ * @param string $text
1329
+ * @param string $pathToSave
1330
+ * @param string $format
1331
+ * @param int $width
1332
+ * @param int $height
1333
+ *
1334
+ * @return WAPT_Image
1335
+ */
1336
+ public static function generate_image_with_text($text, $pathToSave = '', $format = 'jpg', $width = 800, $height = 600) {
1337
+ $font = WAPT_PLUGIN_DIR."/fonts/Arial.ttf";
1338
+ $font_size = WAPT_Plugin::app()->getOption( 'font-size', 25);
1339
+ $font_color = WAPT_Plugin::app()->getOption( 'font-color', "#ffffff");
1340
+ $before_text = '';
1341
+ $after_text = '';
1342
+ $shadow = WAPT_Plugin::app()->getOption( 'shadow', 0);
1343
+ if(!$shadow)
1344
+ $shadow_color = '';
1345
+ else
1346
+ $shadow_color = WAPT_Plugin::app()->getOption( 'shadow-color', "#ffffff");
1347
+
1348
+ $background_type = "color";
1349
+ $background = WAPT_Plugin::app()->getOption( 'background-color', "#ff6262");
1350
+
1351
+ $text_transform = WAPT_Plugin::app()->getOption( 'text-transform', "no");;
1352
+ switch($text_transform) {
1353
+ case 'upper':
1354
+ $text = strtoupper( $text );
1355
+ break;
1356
+ case 'lower':
1357
+ $text = strtolower( $text );
1358
+ break;
1359
+ }
1360
+
1361
+ $text_crop = WAPT_Plugin::app()->getOption( 'text-crop', 100);
1362
+ if($text_crop > 0) {
1363
+ if ( strlen($text) > $text_crop) {
1364
+ $temp = substr( $text, 0, $text_crop);
1365
+ $text = substr( $temp, 0, strrpos( $temp, ' ' ) );
1366
+ }
1367
+
1368
+ }
1369
+
1370
+ $align = 'center';
1371
+ $valign = 'center';
1372
+ $padding_tb = 15;
1373
+ $padding_lr = 15;
1374
+ $line_spacing = WAPT_Plugin::app()->getOption( 'text-line-spacing', 1.5);
1375
+
1376
+ $params = array(
1377
+ 'text' => $text,
1378
+ 'pathToSave' => $pathToSave,
1379
+ 'format' => $format,
1380
+ 'width' => $width,
1381
+ 'height' => $height,
1382
+ );
1383
+ $image = new WAPT_Image( $width, $height, $background, $font, $font_size, $font_color );
1384
+ $image->params = $params;
1385
+ $image->setPadding( $padding_lr, $padding_tb );
1386
+ $image->write_text( $before_text.$text.$after_text, '', '', '', $align, $valign,$line_spacing, $shadow_color );
1387
+ if(!empty($pathToSave)) $image->save( $pathToSave, 100, $format );
1388
+
1389
+ return $image;
1390
+
1391
+ }
1392
+ /**
1393
+ * Генерация изображения с текстом.
1394
+ * Если $pathToSave задан, то файл сохранится по этому пути.
1395
+ *
1396
+ * @param integer $post_id
1397
+ *
1398
+ * @return integer $thumb_id
1399
+ */
1400
+ public function generate_and_attachment($post_id) {
1401
+ $format = WAPT_Plugin::app()->getOption( "image-type", "jpg" );
1402
+ switch($format)
1403
+ {
1404
+ case 'png':
1405
+ $extension = 'png';
1406
+ $mime_type = "image/png";
1407
+ break;
1408
+ case 'jpg':
1409
+ case 'jpeg':
1410
+ default:
1411
+ $extension = 'jpg';
1412
+ $mime_type = "image/jpeg";
1413
+ break;
1414
+ }
1415
+ $post = get_post( $post_id, 'OBJECT' );
1416
+
1417
+ $uploads = wp_upload_dir( current_time( 'mysql' ) );
1418
+
1419
+ // Generate unique file name
1420
+ $filename = "wapt_image_{$post_id}.{$extension}";
1421
+ $filename = wp_unique_filename( $uploads['path'], $filename );
1422
+
1423
+ // Move the file to the uploads dir
1424
+ $image = apply_filters('wapt/generate/image', $this->generate_image_with_text($post->post_title, $uploads['path'] . "/$filename", $extension), $post->post_title, $uploads['path'] . "/$filename", $extension);
1425
+
1426
+ if(file_exists( $uploads['path'] . "/$filename")) {
1427
+ // Compute the URL
1428
+ $file_url = $uploads['url'] . "/$filename";
1429
+ $file_path = $uploads['path'] . "/$filename";
1430
+
1431
+ // Construct the attachment array
1432
+ $attachment = [
1433
+ 'post_mime_type' => $mime_type,
1434
+ 'guid' => $file_url,
1435
+ 'post_parent' => $post_id,
1436
+ 'post_title' => $post->post_title,
1437
+ 'post_content' => '',
1438
+ ];
1439
+
1440
+ $thumb_id = wp_insert_attachment( $attachment, $file_path, $post_id );
1441
+ if ( ! is_wp_error( $thumb_id ) ) {
1442
+ require_once( ABSPATH . '/wp-admin/includes/image.php' );
1443
+
1444
+ // Added fix by misthero as suggested
1445
+ wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $file_path ) );
1446
+ update_attached_file( $thumb_id, $file_path );
1447
+ return $thumb_id;
1448
+ }
1449
+ }
1450
+ return 0;
1451
+
1452
+ }
1453
  }
includes/class-wapt-image.php ADDED
@@ -0,0 +1,450 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Exit if accessed directly
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+
8
+ /**
9
+ * Class for image processing
10
+ *
11
+ * @author Artem Prikhodko <webtemyk@yandex.ru>
12
+ * @copyright (c) 2020 Webraftic Ltd
13
+ * @version 1.0
14
+ */
15
+
16
+ class WAPT_Image {
17
+
18
+ /**
19
+ * @see self::app()
20
+ * @var WAPT_Image
21
+ */
22
+ private static $app;
23
+
24
+ /**
25
+ * @var integer
26
+ */
27
+ public $width;
28
+
29
+ /**
30
+ * @var integer
31
+ */
32
+ public $height;
33
+
34
+ /**
35
+ * @var string
36
+ */
37
+ private $font_path = WAPT_PLUGIN_DIR."/fonts/arial.ttf";
38
+
39
+ /**
40
+ * @var integer
41
+ */
42
+ public $font_size;
43
+
44
+ /**
45
+ * @var string|array
46
+ */
47
+ public $font_color;
48
+
49
+ /**
50
+ * @var string
51
+ */
52
+ public $text;
53
+
54
+ /**
55
+ * @var string
56
+ */
57
+ public $background;
58
+
59
+ /**
60
+ * @var string
61
+ */
62
+ private $reference_text = 'abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ-!?.,_"[]';
63
+
64
+ /**
65
+ * @var Resource
66
+ */
67
+ private $image;
68
+
69
+ /**
70
+ * @var string
71
+ */
72
+ public $padding_left = 0;
73
+
74
+ /**
75
+ * @var string
76
+ */
77
+ public $padding_top = 0;
78
+
79
+ /**
80
+ * @var string
81
+ */
82
+ public $line_spacing = 1;
83
+
84
+ /**
85
+ * @var array
86
+ */
87
+ public $params = array();
88
+
89
+ /**
90
+ * @return
91
+ */
92
+ public function getImage() {
93
+ return $this->image;
94
+ }
95
+
96
+ /**
97
+ * @param string $padding_left
98
+ * @param string $padding_top
99
+ */
100
+ public function setPadding( $padding_left, $padding_top ) {
101
+ $this->padding_left = $padding_left;
102
+ $this->padding_top = $padding_top;
103
+ }
104
+
105
+ /**
106
+ * @param int $width
107
+ */
108
+ public function setWidth( $width ) {
109
+ $this->width = $width;
110
+ }
111
+
112
+ /**
113
+ * @param int $height
114
+ */
115
+ public function setHeight( $height ) {
116
+ $this->height = $height;
117
+ }
118
+
119
+ /**
120
+ * @param string $font_path
121
+ */
122
+ public function setFontPath( $font_path ) {
123
+ if(file_exists( $font_path)) $this->font_path = $font_path;
124
+ }
125
+
126
+ /**
127
+ * {PLUGIN_DIR}/fonts/{font}.ttf
128
+ *
129
+ * @param string $font
130
+ */
131
+ public function setFont( $font ) {
132
+ $this->font_path = WAPT_PLUGIN_DIR."/fonts/{$font}.ttf";
133
+ }
134
+
135
+ /**
136
+ * @param int $font_size
137
+ */
138
+ public function setFontSize( $font_size ) {
139
+ $this->font_size = $font_size;
140
+ }
141
+
142
+ /**
143
+ * @param array|string $font_color
144
+ */
145
+ public function setFontColor( $font_color ) {
146
+ $this->font_color = $font_color;
147
+ }
148
+
149
+ /**
150
+ * @param string $text
151
+ */
152
+ public function setText($text) {
153
+ $this->text = $text;
154
+ }
155
+
156
+ /**
157
+ * @param array|string $background
158
+ */
159
+ public function setBackground( $background ) {
160
+ $this->background = $background;
161
+ }
162
+
163
+ /**
164
+ * Конструктор
165
+ *
166
+ * @param string $width
167
+ * @param string $height
168
+ * @param array|string $background = '#ffffff'
169
+ * @param string $font = ''
170
+ * @param integer $font_size = 0
171
+ * @param string $font_color = '#000000'
172
+ *
173
+ */
174
+ public function __construct( $width, $height, $background = '#ffffff', $font = '', $font_size = 0, $font_color = '#000000' ) {
175
+ self::$app = $this;
176
+
177
+ $this->width = $width;
178
+ $this->height = $height;
179
+ $this->background = $background;
180
+ $this->font_path = $font;
181
+ $this->font_size = $font_size;
182
+ $this->font_color = $font_color;
183
+
184
+ $this->image = $this->create($width, $height, $background);
185
+ }
186
+
187
+ /**
188
+ * Статический метод для быстрого доступа к интерфейсу плагина.
189
+ *
190
+ * @return WAPT_Image
191
+ */
192
+ public static function app() {
193
+ return self::$app;
194
+ }
195
+
196
+ /**
197
+ * Create image
198
+ *
199
+ * @return Resource
200
+ */
201
+ public function create($width, $height, $background = '#ffffff') {
202
+ if(is_numeric( $background)) //image
203
+ {
204
+ $image = wp_get_attachment_metadata( $background);
205
+ if($image) {
206
+ $upload_dir = wp_upload_dir();
207
+ $file_path = $upload_dir['basedir'].'/'.$image['file'];
208
+ $file_type = wp_check_filetype( $file_path );
209
+ switch ( $file_type['type'] ) {
210
+ case 'image/jpeg':
211
+ $im = imagecreatefromjpeg( $file_path );
212
+ $this->setWidth( $image['width']);
213
+ $this->setHeight( $image['height']);
214
+ break;
215
+
216
+ case 'image/png':
217
+ $im = imagecreatefrompng( $file_path );
218
+ imagesavealpha($im, true);
219
+ $this->setWidth( $image['width']);
220
+ $this->setHeight( $image['height']);
221
+ break;
222
+
223
+ default:
224
+ $im = $this->create( $width, $height);
225
+ break;
226
+ }
227
+ }
228
+ else {
229
+ $im = $this->create( $width, $height);
230
+ }
231
+ }
232
+ else { //color
233
+ $im = imagecreatetruecolor($width, $height);
234
+ $color = $this->color_hex_to_rgb( $background);
235
+ $bg_color = imagecolorallocate($im, $color['r'], $color['g'], $color['b']);
236
+ imagefill($im, 0, 0, $bg_color);
237
+ }
238
+
239
+ return $im;
240
+ }
241
+
242
+ /**
243
+ * Convert hex color to RGB
244
+ *
245
+ * @param string $hex
246
+ * @return array
247
+ */
248
+ private function color_hex_to_rgb($hex = '') {
249
+ if(empty($hex)) $hex = $this->font_color;
250
+ list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
251
+ return array(
252
+ 'r' => $r,
253
+ 'g' => $g,
254
+ 'b' => $b,
255
+ );
256
+ }
257
+
258
+ /**
259
+ * Get width of the letter in the font.
260
+ *
261
+ * return array(
262
+ * 'width' => int
263
+ * 'height' => int
264
+ * );
265
+ * OR false
266
+ *
267
+ * @return array|false
268
+ */
269
+ public function get_font_char_size()
270
+ {
271
+ if($this->font_path !== '' && $this->font_size !== 0) {
272
+
273
+ $text = !empty($this->text) ? $this->text : $this->reference_text;
274
+ //$txt_image = $this->create( 500, 500 );
275
+ $box = imagettfbbox($this->font_size, 0, $this->font_path, $text);
276
+ $width = $box[2]-$box[0];
277
+ $height = $box[1]-$box[7];
278
+ $result = array(
279
+ 'width' => ceil($width / strlen( $text )), //средняя ширина одного символа
280
+ 'height' => $height, //высота одного символа
281
+ );
282
+
283
+ return $result;
284
+ }
285
+ else {
286
+ return false;
287
+ }
288
+ }
289
+
290
+ /**
291
+ * Write text on the image
292
+ *
293
+ * @param string $text
294
+ * @param string $font = ''
295
+ * @param integer $font_size = 0
296
+ * @param string $font_color = '#000000'
297
+ * @param string $align
298
+ * @param string $valign
299
+ * @param float $line_spacing
300
+ * @param string $shadow_color
301
+ *
302
+ * @return bool
303
+ */
304
+ public function write_text($text, $font = '', $font_size = '', $font_color = '', $align = 'left', $valign = 'top', $line_spacing = '1.5', $shadow_color = '')
305
+ {
306
+ if(!empty($text)) {
307
+ if(empty($font)) $font = $this->font_path;
308
+ if(empty($font_size)) $font_size = $this->font_size;
309
+ if(empty($font_color)) $font_color = $this->font_color;
310
+ $this->setText( $text);
311
+ $char_size = $this->get_font_char_size();
312
+
313
+ $pad_left = (int)$this->padding_left;
314
+ $pad_top = (int)$this->padding_top;
315
+
316
+ $color = $this->color_hex_to_rgb($font_color);
317
+ $font_color = imagecolorallocate($this->image, $color['r'], $color['g'], $color['b']);
318
+ if(!empty($shadow_color)) {
319
+ $color = $this->color_hex_to_rgb( $shadow_color );
320
+ $shadow_color = imagecolorallocate( $this->image, $color['r'], $color['g'], $color['b'] );
321
+ }
322
+ $line_spacing = (float)$line_spacing;
323
+
324
+ $width = $this->width - $pad_left*2;
325
+ $height = $this->height - $pad_top*2;
326
+
327
+ $chars_per_line = ceil($width/$char_size['width'] *0.9); //count of chars per line
328
+ $text2 = wordwrap ($text, $chars_per_line, "\n", false);
329
+ $text2 = str_replace( "[br]", "\n", $text2);
330
+ $line_count = count(explode("\n",$text2));
331
+ $lines = explode("\n",$text2);
332
+ for ($i=0; $i<$line_count; $i++) {
333
+ $box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $lines[$i] ) );
334
+ $w = $box[4] - $box[6];
335
+ if($w > $width) { $font_size--; $i=0; }
336
+
337
+ }
338
+
339
+ $text_height = $line_count * $char_size['height'];
340
+ while ( $text_height > $height || ($height-$text_height <= (2*$pad_left))) {
341
+ $this->font_size--;
342
+ $font_size--;
343
+ $char_size = $this->get_font_char_size();
344
+ if(!$char_size) break;
345
+ $line_width = ceil($width/$char_size['width'] * 0.9); //count of chars per line
346
+ $text2 = wordwrap ( $text, (int)$line_width, "\n", false);
347
+ $text2 = str_replace( "[br]", "\n", $text2);
348
+ $line_count = count(explode("\n",$text2));
349
+ $text_height = $line_count * ($char_size['height']*$line_spacing);
350
+ }
351
+ $width = $this->width;
352
+ $height = $this->height;
353
+
354
+ $lines = explode("\n",$text2);
355
+ if($valign == "bottom") $lines = array_reverse( $lines);
356
+
357
+ foreach ( $lines as $key => $line ) {
358
+ $box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $line ) );
359
+ $h = $char_size['height'] * count( $lines ) + ($line_spacing-1)*$char_size['height'] * count( $lines );
360
+ $w = $box[4] - $box[6];
361
+ $num = $line_spacing*$key;
362
+
363
+ switch ($align.'-'.$valign)
364
+ {
365
+ case 'left-top':
366
+ $x = $pad_left;
367
+ $y = ceil($pad_top + $char_size['height'] + ($char_size['height']*$num));
368
+ break;
369
+ case 'left-center':
370
+ $x = $pad_left;
371
+ $y = ceil(($height/2 - $h/2) + $char_size['height'] + ($char_size['height']*$num));
372
+ break;
373
+ case 'left-bottom':
374
+ $x = $pad_left;
375
+ $y = ceil(($height-$pad_top)-($char_size['height']*$num));
376
+ break;
377
+ //-------------------------
378
+ case 'center-top':
379
+ $x = ceil($width/2-$w/2);
380
+ $y = ceil($pad_top + $char_size['height'] + ($char_size['height']*$num));
381
+ break;
382
+ case 'center-center':
383
+ $x = ceil($width/2-$w/2);
384
+ $y = ceil(($height/2 - $h/2) + $char_size['height'] + ($char_size['height']*$num));
385
+ break;
386
+ case 'center-bottom':
387
+ $x = ceil($width/2-$w/2);
388
+ $y = ceil(($height-$pad_top)-($char_size['height']*$num));
389
+ break;
390
+ //-------------------------
391
+ case 'right-top':
392
+ $x = $width - $w - $pad_left;
393
+ $y = ceil($pad_top + $char_size['height'] + ($char_size['height']*$num));
394
+ break;
395
+ case 'right-center':
396
+ $x = $width - $w - $pad_left;
397
+ $y = ceil(($height/2 - $h/2) + $char_size['height'] + ($char_size['height']*$num));
398
+ break;
399
+ case 'right-bottom':
400
+ $x = $width - $w - $pad_left;
401
+ $y = ceil(($height-$pad_top)-($char_size['height']*$num));
402
+ break;
403
+ }
404
+ //shadow
405
+ if(!empty($shadow_color)) imagettftext($this->image, $font_size, 0, $x+2, $y+2, $shadow_color, $font, trim($line));
406
+
407
+ //text
408
+ imagettftext($this->image, $font_size, 0, (int)$x, (int)$y, $font_color, $font, trim($line));
409
+ //imagerectangle($this->image, 0,$y,$width,$y, 1);
410
+ //imagerectangle($this->image, 0,$height/2,$width,$height/2, 2);
411
+ }
412
+
413
+ return true;
414
+ }
415
+ else {
416
+ return false;
417
+ }
418
+ }
419
+ /**
420
+ * Save image
421
+ *
422
+ * @param string $text
423
+ *
424
+ * @return string
425
+ */
426
+ public function commas_cut($text) {
427
+ return str_replace( ',', '', $text);
428
+ }
429
+
430
+ /**
431
+ * Save image
432
+ *
433
+ * @param string $path
434
+ * @param integer $quality
435
+ * @param string $format
436
+ */
437
+ public function save($path, $quality = 100, $format = 'jpg') {
438
+ switch (strtolower( $format))
439
+ {
440
+ case 'jpg':
441
+ case 'jpeg':
442
+ imagejpeg($this->image, $path, $quality);
443
+ break;
444
+ case 'png':
445
+ imagepng($this->image, $path);
446
+ break;
447
+ }
448
+ }
449
+
450
+ }
includes/class-wapt-plugin.php CHANGED
@@ -13,11 +13,11 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  * @version 1.0
14
  */
15
 
16
- class WAPT_Plugin extends Wbcr_Factory421_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory421_Plugin
21
  */
22
  private static $app;
23
 
@@ -58,6 +58,7 @@ class WAPT_Plugin extends Wbcr_Factory421_Plugin {
58
  add_filter( 'bulk_actions-edit-post', [ $this, 'register_bulk_action_generate'] );
59
  add_filter( 'handle_bulk_actions-edit-post', [ $this, 'bulk_action_generate_handler'], 10, 3 );
60
  add_action( 'admin_notices', [ $this, 'apt_bulk_action_admin_notice'] );
 
61
  }
62
  $this->global_scripts();
63
  }
@@ -71,12 +72,30 @@ class WAPT_Plugin extends Wbcr_Factory421_Plugin {
71
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
72
  * классам.
73
  *
74
- * @return Wbcr_Factory421_Plugin
75
  */
76
  public static function app() {
77
  return self::$app;
78
  }
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  /**
81
  * Регистрации класса активации/деактивации плагина
82
  */
@@ -138,7 +157,7 @@ class WAPT_Plugin extends Wbcr_Factory421_Plugin {
138
  switch($doaction)
139
  {
140
  case 'apt_generate_thumb':
141
- auto_post_thumbnails()->publish_post($post_id);
142
  break;
143
  case 'apt_delete_thumb':
144
  delete_post_thumbnail($post_id);
@@ -146,7 +165,11 @@ class WAPT_Plugin extends Wbcr_Factory421_Plugin {
146
  }
147
  }
148
 
149
- $redirect_to = add_query_arg( 'apt_bulk_action', count( $post_ids ), $redirect_to );
 
 
 
 
150
 
151
  return $redirect_to;
152
  }
@@ -163,6 +186,17 @@ class WAPT_Plugin extends Wbcr_Factory421_Plugin {
163
  $msg = __('Processed posts: ','apt').intval($data);
164
  echo '<div id="message" class="updated"><p>'. $msg .'</p></div>';
165
  }
 
 
 
 
 
 
 
 
 
 
 
166
  /**
167
  * Add filter on the Posts list tables.
168
  *
@@ -216,37 +250,13 @@ class WAPT_Plugin extends Wbcr_Factory421_Plugin {
216
  */
217
  public function add_filter_link($views)
218
  {
219
- $args = array(
220
- 'post_type' => 'post',
221
- 'meta_query' => array(
222
- array(
223
- 'key' => '_thumbnail_id',
224
- 'compare' => 'NOT EXISTS',
225
- ),
226
- ),
227
- );
228
- $my = new WP_Query($args);
229
  $q = add_query_arg( array('apt_is_image' => '0', 'post_type' => 'post'), 'edit.php' );
230
- $views['apt_filter'] = '<a href="'.$q.'">'.__('Without featured image','apt').'</a> ('.$my->post_count.')';
231
  unset($my);
232
  return $views;
233
 
234
  }
235
-
236
- /**
237
- * Adding button fields
238
- * @param \Elementor\Widget_Base $button
239
- * @param array $args
240
- */
241
- public function elementor_gallery_custom_button($button, $args)
242
- {
243
- $button->add_control( 'custom_button_type',
244
- [
245
- 'label' => __( 'Add image from APT', 'apt' ),
246
- 'type' => \Elementor\Controls_Manager::BUTTON,
247
- 'text' => 'Add image',
248
- 'event' => 'apt:editor:gallery'
249
- ]
250
- );
251
- }
252
  }
13
  * @version 1.0
14
  */
15
 
16
+ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
+ * @var Wbcr_Factory425_Plugin
21
  */
22
  private static $app;
23
 
58
  add_filter( 'bulk_actions-edit-post', [ $this, 'register_bulk_action_generate'] );
59
  add_filter( 'handle_bulk_actions-edit-post', [ $this, 'bulk_action_generate_handler'], 10, 3 );
60
  add_action( 'admin_notices', [ $this, 'apt_bulk_action_admin_notice'] );
61
+ add_action( 'admin_notices', [ $this, 'update_admin_notice'] );
62
  }
63
  $this->global_scripts();
64
  }
72
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
73
  * классам.
74
  *
75
+ * @return Wbcr_Factory425_Plugin
76
  */
77
  public static function app() {
78
  return self::$app;
79
  }
80
 
81
+ /**
82
+ * Метод проверяет активацию премиум плагина и наличие действующего лицензионнного ключа
83
+ *
84
+ * @return bool
85
+ */
86
+ public function is_premium()
87
+ {
88
+ if(
89
+ $this->premium->is_active() &&
90
+ $this->premium->is_activate() &&
91
+ is_plugin_active( "{$this->premium->get_setting('slug')}/{$this->premium->get_setting('slug')}.php" )
92
+ //$this->premium->is_install_package()
93
+ )
94
+ return true;
95
+ else
96
+ return false;
97
+ }
98
+
99
  /**
100
  * Регистрации класса активации/деактивации плагина
101
  */
157
  switch($doaction)
158
  {
159
  case 'apt_generate_thumb':
160
+ $thumb = auto_post_thumbnails()->publish_post($post_id);
161
  break;
162
  case 'apt_delete_thumb':
163
  delete_post_thumbnail($post_id);
165
  }
166
  }
167
 
168
+ $redirect_to = add_query_arg(
169
+ array(
170
+ 'apt_bulk_action' => count( $post_ids ),
171
+ ),
172
+ $redirect_to );
173
 
174
  return $redirect_to;
175
  }
186
  $msg = __('Processed posts: ','apt').intval($data);
187
  echo '<div id="message" class="updated"><p>'. $msg .'</p></div>';
188
  }
189
+ /**
190
+ * Admin notice
191
+ *
192
+ */
193
+ public function update_admin_notice()
194
+ {
195
+ if( defined( 'WAPTP_PLUGIN_VERSION') && str_replace( '.', '', WAPTP_PLUGIN_VERSION) < 130 ) {
196
+ $msg = __( 'To use premium features, update the <b>Auto Post Thumbnail Premium</b> plugin!', 'apt' );
197
+ echo '<div id="message" class="notice notice-warning is-dismissible"><p>' . $msg . '</p></div>';
198
+ }
199
+ }
200
  /**
201
  * Add filter on the Posts list tables.
202
  *
250
  */
251
  public function add_filter_link($views)
252
  {
253
+ $query = auto_post_thumbnails()->get_posts_query(false, 'publish','post');
254
+ $posts = $query->post_count;
255
+
 
 
 
 
 
 
 
256
  $q = add_query_arg( array('apt_is_image' => '0', 'post_type' => 'post'), 'edit.php' );
257
+ $views['apt_filter'] = '<a href="'.$q.'">'.__('Without featured image','apt').'</a> ('.$posts.')';
258
  unset($my);
259
  return $views;
260
 
261
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  }
includes/controls/class.color.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Color
4
+ *
5
+ * Main options:
6
+ * name => a name of the control
7
+ * value => a value to show in the control
8
+ * default => a default value of the control if the "value" option is not specified
9
+ *
10
+ * @author Artem Prihodko <webtemyk@yandex.ru>
11
+ * @copyright (c) 2020, Webcraftic Ltd
12
+ *
13
+ */
14
+
15
+ // Exit if accessed directly
16
+ if( !defined('ABSPATH') ) {
17
+ exit;
18
+ }
19
+
20
+ if( !class_exists('Wapt_FactoryForms_ColorControl') ) {
21
+
22
+ class Wapt_FactoryForms_ColorControl extends Wbcr_FactoryForms423_Control {
23
+
24
+ public $type = 'wapt-color';
25
+
26
+ /**
27
+ * Shows the html markup of the control.
28
+ *
29
+ * @since 1.0.0
30
+ * @return void
31
+ */
32
+ public function html()
33
+ {
34
+ $name = $this->getNameOnForm();
35
+ $value = esc_attr($this->getValue());
36
+
37
+ if( !$value ) {
38
+ $value = '#ffffff';
39
+ }
40
+ ?>
41
+ <script src="<?php echo WAPT_PLUGIN_URL;?>/admin/assets/js/jscolor.js"></script>
42
+ <style>
43
+ .wapt-jscolor
44
+ {
45
+ padding: 15px !important;
46
+ font-size: 16px !important;
47
+ cursor: pointer;
48
+ }
49
+ </style>
50
+ <div <?php $this->attrs() ?>>
51
+ <input type="text" readonly id="<?php echo $name; ?>" name="<?php echo $name; ?>" class="factory-input-text jscolor wapt-jscolor" value="<?php echo $value; ?>">
52
+ </div>
53
+ <?php
54
+ }
55
+ }
56
+ }
includes/controls/class.fonts.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Dropdown List of fonts and upload Control
5
+ *
6
+ * Main options:
7
+ * name => a name of the control
8
+ * value => a value to show in the control
9
+ * default => a default value of the control if the "value" option is not specified
10
+ * items => a callback to return items or an array of items to select
11
+ *
12
+ * @author Artem Prihodko <webtemyk@yandex.ru>
13
+ * @copyright (c) 2020, Webcraftic Ltd
14
+ *
15
+ * @package factory-forms
16
+ */
17
+
18
+ // Exit if accessed directly
19
+ if ( ! defined( 'ABSPATH' ) ) {
20
+ exit;
21
+ }
22
+
23
+ if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
24
+
25
+ class Wapt_FactoryForms_FontsControl extends Wbcr_FactoryForms423_DropdownControl {
26
+
27
+ public $type = 'wapt-fonts';
28
+
29
+ /**
30
+ * Shows the assets
31
+ *
32
+ * @since 1.0.0
33
+ * @return void
34
+ */
35
+ public function assets() {
36
+ wp_enqueue_script( 'apt-upload-font', WAPT_PLUGIN_URL . '/admin/assets/js/upload-font.js', [], false, true );
37
+ wp_localize_script( 'apt-upload-font', 'wapt_upload_font', [ 'nonce' => wp_create_nonce( 'wapt_upload_font' ) ] );
38
+ ?>
39
+ <style>
40
+ .wapt-upload-div
41
+ {
42
+ margin: 10px 0px;
43
+ display: inline;
44
+ vertical-align: middle;
45
+ margin-left: -5px !important;
46
+ }
47
+ .wapt-upload-button
48
+ {
49
+ height: 34px;
50
+ box-shadow: 1px 1px 5px -2px #8e8d8d;
51
+ border: 1px solid #ccc;
52
+ border-radius: 0px 3px 3px 0px;
53
+ }
54
+ .wapt-upload-loader
55
+ {
56
+ height: 34px;
57
+ display: inline;
58
+ margin-left: 5px !important;
59
+ }
60
+ .wapt-loader-invisible
61
+ {
62
+ display: none !important;
63
+ }
64
+
65
+
66
+ </style>
67
+ <?php
68
+ }
69
+ /**
70
+ * Shows the html markup of the control.
71
+ *
72
+ * @since 1.0.0
73
+ * @return void
74
+ */
75
+ public function html() {
76
+
77
+ parent::addCssClass( 'factory-hidden');
78
+ parent::addCssClass( 'wapt-form-control');
79
+ parent::html();
80
+
81
+ $this->assets();
82
+ ?>
83
+ <div class="wapt-upload-div">
84
+ <input type="file" accept=".ttf" id="wapt-font-file" style="display: none;">
85
+ <button id="wapt-upload-button" class="wapt-upload-button">Upload custom font</button>
86
+ <div id="wapt-upload-loader" class="wapt-upload-loader wapt-loader-invisible"><img src="<?php echo WAPT_PLUGIN_URL;?>/admin/assets/img/ajax-loader.gif" alt="" height="34"></div>
87
+ </div>
88
+ <?php
89
+
90
+ }
91
+
92
+ }
93
+ }
includes/controls/class.mediabutton.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Media Button
4
+ *
5
+ * Main options:
6
+ * name => a name of the control
7
+ * value => a value to show in the control
8
+ * default => a default value of the control if the "value" option is not specified
9
+ * text => a text to button
10
+ *
11
+ * @author Artem Prihodko <webtemyk@yandex.ru>
12
+ * @copyright (c) 2020, Webcraftic Ltd
13
+ *
14
+ */
15
+
16
+ // Exit if accessed directly
17
+ if( !defined('ABSPATH') ) {
18
+ exit;
19
+ }
20
+
21
+ if( !class_exists('Wapt_FactoryForms_MediaButtonControl') ) {
22
+
23
+ class Wapt_FactoryForms_MediaButtonControl extends Wbcr_FactoryForms423_Control {
24
+
25
+ public $type = 'wapt-mediabutton';
26
+
27
+ /**
28
+ * Shows the html markup of the control.
29
+ *
30
+ * @since 1.0.0
31
+ * @return void
32
+ */
33
+ public function html()
34
+ {
35
+ wp_enqueue_media();
36
+
37
+ $name = $this->getNameOnForm();
38
+ $value = esc_attr($this->getValue());
39
+ $button_text = esc_attr($this->options['text']);
40
+ $thumbnail_url = '';
41
+ $image_class = 'wapt-invisible';
42
+
43
+ if( !$value ) {
44
+ $value = 0;
45
+ $thumbnail_url = '';
46
+ }
47
+ else {
48
+ $thumbnail = wp_get_attachment_image_src((int)$value, 'thumbnail');
49
+ if(is_array( $thumbnail)) {
50
+ $thumbnail_url = $thumbnail[0];
51
+ $image_class = 'wapt-visible';
52
+ }
53
+ }
54
+ ?>
55
+ <style>
56
+ .wapt-bg-image-thumb
57
+ {
58
+ margin: 10px 0px;
59
+ border-radius: 10px;
60
+ box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.5);
61
+ }
62
+ .wapt-invisible
63
+ {
64
+ display: none;
65
+ }
66
+ .wapt-visible
67
+ {
68
+ display: block;
69
+ }
70
+ </style>
71
+ <script lang="js">
72
+ jQuery(function ( $ ) {
73
+
74
+ var frame;
75
+ $(document).on('click', '#wapt-select-image', function ( event ) {
76
+ event.preventDefault();
77
+ if( frame ) {
78
+ frame.open();
79
+ return;
80
+ }
81
+
82
+ frame = wp.media({
83
+ //title : 'Выберите файл',
84
+ button : {
85
+ //text: 'Использовать этот файл'
86
+ },
87
+ multiple: false
88
+ });
89
+ frame.on('select', function () {
90
+ var attachment = frame.state().get('selection').first().toJSON();
91
+ var thumb = $('#wapt-bg-image-thumb');
92
+ $('#<?php echo $name; ?>').val(attachment.id);
93
+ thumb.attr('src', attachment.sizes.thumbnail.url);
94
+ thumb.removeClass('wapt-bg-image-invisible').addClass('wapt-visible');
95
+
96
+ });
97
+ frame.open();
98
+ });
99
+ });
100
+ </script>
101
+ <div <?php $this->attrs() ?>>
102
+ <img src="<?php echo $thumbnail_url?>" alt="" class="wapt-bg-image-thumb <?php echo $image_class; ?>" id="wapt-bg-image-thumb">
103
+ <button class="button button-primary button-large <?php echo $name; ?>" id="wapt-select-image"><?php echo $button_text; ?></button>
104
+ <input type="hidden" id="<?php echo $name; ?>" name="<?php echo $name; ?>" class="factory-input-text" value="<?php echo $value; ?>">
105
+ </div>
106
+ <?php
107
+ }
108
+ }
109
+ }
languages/apt-en_US.mo CHANGED
Binary file
languages/apt-en_US.po CHANGED
@@ -1,165 +1,407 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Auto Post Thumbnail\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2019-06-05 19:26+0000\n"
6
- "PO-Revision-Date: 2019-06-05 19:33+0000\n"
7
- "Last-Translator: admin <sasha.tesh@gmail.com>\n"
8
- "Language-Team: English (United States)\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.2.0; wp-4.9.8"
16
-
17
- #: auto-post-thumbnail.php:201
18
- msgid "This plugin has been automatically deactivated."
19
- msgstr ""
20
-
21
- #: views/tab-main.php:18
22
- msgid ""
23
- "Currently there are no published posts available to generate thumbnails."
24
- msgstr ""
25
-
26
- #: views/tab-main.php:20
27
- msgid "We are generating post thumbnails. Please be patient!"
28
- msgstr ""
29
-
30
- #: views/tab-main.php:32 views/tab-main.php:92
31
- msgid "You must enable Javascript in order to proceed!"
32
- msgstr ""
33
-
34
- #: views/tab-main.php:64
35
- #, php-format
36
- msgid "All done! Processed %d posts."
37
- msgstr ""
38
-
39
- #: views/tab-main.php:79
40
- msgid ""
41
- "Use this tool to generate Post Thumbnail (Featured Thumbnail) for your "
42
- "Published posts."
43
- msgstr ""
44
-
45
- #: views/tab-main.php:81
46
- msgid ""
47
- "If the script stops executing for any reason, just <strong>Reload</strong> "
48
- "the page and it will continue from where it stopped."
49
- msgstr ""
50
-
51
- #: views/tab-main.php:88 views/index.php:13
52
- msgid "Generate Thumbnails"
53
- msgstr ""
54
-
55
- #: views/tab-main.php:97
56
- msgid ""
57
- "Note: Thumbnails won't be generated for posts that already have post "
58
- "thumbnail or <strong><em>skip_post_thumb</em></strong> custom field set."
59
- msgstr ""
60
-
61
- #. Name of the plugin
62
- #: views/tab-about.php:81
63
- msgid "Auto Post Thumbnail"
64
- msgstr ""
65
-
66
- #: views/tab-about.php:83
67
- msgid ""
68
- "We didn’t please you with updated lately. However, great news today! We are "
69
- "about to tell you about all the spectacular changes that are planned for our "
70
- "plugin!"
71
- msgstr ""
72
-
73
- #: views/tab-about.php:85
74
- msgid ""
75
- "First of all, we proudly announce that a new group of developers, <span "
76
- "style=\"text-decoration: underline;\"><strong>Creative Motion</strong></span>"
77
- ", are helping us with plugin improvement."
78
- msgstr ""
79
-
80
- #: views/tab-about.php:87
81
- msgid ""
82
- "Auto Post Thumbnails has perfectly fit in our close family of popular "
83
- "plugins with more than 600,000 users worldwide."
84
- msgstr ""
85
-
86
- #: views/tab-about.php:89
87
- msgid "What you can expect soon:"
88
- msgstr ""
89
-
90
- #: views/tab-about.php:100
91
- msgid ""
92
- "As you’ve already noticed, we haven’t updated the plugin for more than 2 "
93
- "years. This new version fixes existing problems. APT becomes a fully "
94
- "functional plugin."
95
- msgstr ""
96
-
97
- #: views/tab-about.php:103
98
- msgid ""
99
- "In the next release, you can automatically generate featured images from any "
100
- "image in the post, not only the first one. Besides, we offer you an advanced "
101
- "tool – choose an image for the featured image right from the Posts tab. You "
102
- "no longer need to edit each post to install or change the featured image. "
103
- "Feel free to do it right from the list of posts. It saves much time and "
104
- "efforts. "
105
- msgstr ""
106
-
107
- #: views/tab-about.php:108
108
- msgid ""
109
- "Starting from this version, the APT plugin evolves from being an aiding tool "
110
- "to the full-featured search & image editing system with a Creative Commons "
111
- "license for your website. <strong>It means that you get:</strong>"
112
- msgstr ""
113
-
114
- #: views/tab-about.php:111
115
- msgid ""
116
- "Image search through the 5 popular stock services from the plugin interface. "
117
- "Just enter a search query and choose an image(images) you like."
118
- msgstr ""
119
-
120
- #: views/tab-about.php:112
121
- msgid ""
122
- "Advanced APT editor. You can edit images using layers. It means that you can "
123
- "overlay text, logo, or mask, adjust color, brightness, and contract and use "
124
- "other great features. Save presets and apply them on any image in one click. "
125
- "The editor doesn’t replace the default WordPress editor."
126
- msgstr ""
127
-
128
- #: views/tab-about.php:118
129
- msgid ""
130
- "Upload images from the external URL to your post or product (for Woocommerce)"
131
- "."
132
- msgstr ""
133
-
134
- #: views/tab-about.php:119
135
- msgid "Compatibility with the most popular builders."
136
- msgstr ""
137
-
138
- #: views/index.php:6
139
- msgid "Generate Post Thumbnails"
140
- msgstr ""
141
-
142
- #: views/index.php:17
143
- msgid "About"
144
- msgstr ""
145
-
146
- #. Description of the plugin
147
- msgid ""
148
- "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
149
- "first image in post (or any custom post type) only if Post Thumbnail is not "
150
- "set manually."
151
- msgstr ""
152
-
153
- #. URI of the plugin
154
- msgid ""
155
- "http://www.sanisoft.com/blog/2010/04/19/wordpress-plugin-automatic-post-"
156
- "thumbnail/"
157
- msgstr ""
158
-
159
- #. Author of the plugin
160
- msgid "Webcraftic <wordpress.webraftic@gmail.com>"
161
- msgstr ""
162
-
163
- #. Author URI of the plugin
164
- msgid "webcraftic.com"
165
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Auto Post Thumbnail\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-10-03 11:05+0000\n"
6
+ "PO-Revision-Date: 2019-10-03 11:05+0000\n"
7
+ "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
+ "Language-Team: English (United States)\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.0; wp-5.2.3"
16
+
17
+ #. Name of the plugin
18
+ #: auto-post-thumbnail.php:48 includes/class-wapt-base.php:908
19
+ #: admin/pages/generate.php:100
20
+ msgid "Auto Post Thumbnail"
21
+ msgstr ""
22
+
23
+ #: includes/class-wapt-base.php:200
24
+ msgid "Use as thumbnail"
25
+ msgstr ""
26
+
27
+ #: includes/class-wapt-base.php:201 includes/class-wapt-base.php:865
28
+ msgid "Change featured image"
29
+ msgstr ""
30
+
31
+ #: includes/class-wapt-base.php:385
32
+ msgid "This plugin has been automatically deactivated."
33
+ msgstr ""
34
+
35
+ #: includes/class-wapt-base.php:773
36
+ msgid "Image"
37
+ msgstr ""
38
+
39
+ #: includes/class-wapt-base.php:862
40
+ msgid "No image"
41
+ msgstr ""
42
+
43
+ #: includes/class-wapt-base.php:882
44
+ msgid "Auto Post Thumbnails"
45
+ msgstr ""
46
+
47
+ #: includes/class-wapt-base.php:882
48
+ msgid "Add from APT"
49
+ msgstr ""
50
+
51
+ #: includes/class-wapt-base.php:1090
52
+ #, php-format
53
+ msgid ""
54
+ "You have reached the limit at the moment. Try again in an 1 hour or <a "
55
+ "href=\"%s\">Upgrade to Premium</a>"
56
+ msgstr ""
57
+
58
+ #: includes/class-wapt-base.php:1150
59
+ #, php-format
60
+ msgid ""
61
+ "To download images from Google, specify Google API keys in the <a href='%s'>"
62
+ "settings</a>."
63
+ msgstr ""
64
+
65
+ #: includes/class-wapt-plugin.php:122
66
+ msgid "Generate featured image"
67
+ msgstr ""
68
+
69
+ #: includes/class-wapt-plugin.php:123
70
+ msgid "Unset featured image"
71
+ msgstr ""
72
+
73
+ #: includes/class-wapt-plugin.php:167
74
+ msgid "Processed posts: "
75
+ msgstr ""
76
+
77
+ #: includes/class-wapt-plugin.php:186
78
+ msgid "Featured Image"
79
+ msgstr ""
80
+
81
+ #: includes/class-wapt-plugin.php:187
82
+ msgid "With image"
83
+ msgstr ""
84
+
85
+ #: includes/class-wapt-plugin.php:188
86
+ msgid "Without image"
87
+ msgstr ""
88
+
89
+ #: includes/class-wapt-plugin.php:227
90
+ msgid "Without featured image"
91
+ msgstr ""
92
+
93
+ #: admin/ajax/check-license.php:27
94
+ msgid "Licensing action not passed or this action is prohibited!"
95
+ msgstr ""
96
+
97
+ #: admin/ajax/check-license.php:39
98
+ msgid ""
99
+ "License key is empty or license key too long (license key is 32 characters "
100
+ "long)"
101
+ msgstr ""
102
+
103
+ #: admin/ajax/check-license.php:42
104
+ msgid "Your license has been successfully activated"
105
+ msgstr ""
106
+
107
+ #: admin/ajax/check-license.php:47
108
+ msgid "The license is deactivated"
109
+ msgstr ""
110
+
111
+ #: admin/ajax/check-license.php:51
112
+ msgid "The license has been updated"
113
+ msgstr ""
114
+
115
+ #: admin/ajax/check-license.php:55
116
+ msgid "Subscription success cancelled"
117
+ msgstr ""
118
+
119
+ #: admin/pages/about.php:45
120
+ msgid "About APT"
121
+ msgstr ""
122
+
123
+ #: admin/pages/about.php:46
124
+ msgid "About"
125
+ msgstr ""
126
+
127
+ #: admin/pages/generate.php:101
128
+ msgid "Generate featured images"
129
+ msgstr ""
130
+
131
+ #: admin/pages/license.php:91
132
+ msgid "License of APT"
133
+ msgstr ""
134
+
135
+ #: admin/pages/settings.php:46
136
+ msgid "Settings of APT"
137
+ msgstr ""
138
+
139
+ #: admin/pages/settings.php:47
140
+ msgid "Settings"
141
+ msgstr ""
142
+
143
+ #: admin/pages/settings.php:79
144
+ msgid "Automatic post thumbnail generation"
145
+ msgstr ""
146
+
147
+ #: admin/pages/settings.php:81
148
+ msgid "Enable automatic post thumbnail generation"
149
+ msgstr ""
150
+
151
+ #: admin/pages/settings.php:88 admin/pages/settings.php:90
152
+ msgid "Delete settings when removing the plugin"
153
+ msgstr ""
154
+
155
+ #: admin/pages/settings.php:95
156
+ msgid "How to get google api key & custom search engine id"
157
+ msgstr ""
158
+
159
+ #: admin/pages/settings.php:112
160
+ msgid "API key for Google"
161
+ msgstr ""
162
+
163
+ #: admin/pages/settings.php:120
164
+ msgid "Google Custom Search Engine ID"
165
+ msgstr ""
166
+
167
+ #: admin/pages/settings.php:121
168
+ msgid "You can get API key after registration on the site"
169
+ msgstr ""
170
+
171
+ #: admin/views/tab-about.php:110
172
+ #, php-format
173
+ msgid ""
174
+ "We suppose you’ve noticed the changes which happened with <a href=\"%s\" "
175
+ "target=\"_blank\" rel=\"noopener\">Auto Post Thumbnail</a>. In this tutorial "
176
+ "you can get more information about new features."
177
+ msgstr ""
178
+
179
+ #: admin/views/tab-about.php:118
180
+ msgid ""
181
+ "As you’ve already noticed, we haven’t updated the plugin for more than 2 "
182
+ "years. This new version fixes existing problems. APT becomes a fully "
183
+ "functional plugin."
184
+ msgstr ""
185
+
186
+ #: admin/views/tab-about.php:120
187
+ msgid ""
188
+ "Starting from this version, the APT plugin evolves from being an aiding tool "
189
+ "to the full-featured search & image editing system with a Creative Commons "
190
+ "license for your website. It means that you get:"
191
+ msgstr ""
192
+
193
+ #: admin/views/tab-about.php:122
194
+ msgid "Search and download images from Google"
195
+ msgstr ""
196
+
197
+ #: admin/views/tab-about.php:123
198
+ msgid "Auto generate feature image in editor"
199
+ msgstr ""
200
+
201
+ #: admin/views/tab-about.php:124
202
+ msgid ""
203
+ "Image search through the 3 popular stock services from the plugin interface. "
204
+ "Just enter a search query and choose an image (images) you like."
205
+ msgstr ""
206
+
207
+ #: admin/views/tab-about.php:128
208
+ msgid ""
209
+ "Upload images from the external URL to your post or product (for Woocommerce)"
210
+ "."
211
+ msgstr ""
212
+
213
+ #: admin/views/tab-about.php:129
214
+ msgid "Compatibility with the most popular builders."
215
+ msgstr ""
216
+
217
+ #: admin/views/tab-about.php:133
218
+ msgid ""
219
+ "Advanced APT editor. You can edit images using layers. It means that you can "
220
+ "overlay text, logo, or mask, adjust color, brightness, and contract and use "
221
+ "other great features. Save presets and apply them on any image in one click. "
222
+ "The editor doesn’t replace the default WordPress editor."
223
+ msgstr ""
224
+
225
+ #: admin/views/tab-license.php:11
226
+ #, php-format
227
+ msgid "Activate %s"
228
+ msgstr ""
229
+
230
+ #: admin/views/tab-license.php:22
231
+ #, php-format
232
+ msgid "Upgrade to Premium for $%s"
233
+ msgstr ""
234
+
235
+ #: admin/views/tab-license.php:25
236
+ #, php-format
237
+ msgid "Your current license for %1$s:"
238
+ msgstr ""
239
+
240
+ #: admin/views/tab-license.php:31
241
+ msgid "Delete Key"
242
+ msgstr ""
243
+
244
+ #: admin/views/tab-license.php:35
245
+ msgid "Synchronization"
246
+ msgstr ""
247
+
248
+ #: admin/views/tab-license.php:54
249
+ msgid ""
250
+ "Public License is a GPLv2 compatible license allowing you to change and use "
251
+ "this version of the plugin for free. Please keep in mind this license covers "
252
+ "only free edition of the plugin. Premium versions are distributed with other "
253
+ "type of a license."
254
+ msgstr ""
255
+
256
+ #: admin/views/tab-license.php:58
257
+ msgid ""
258
+ "You use a paid subscription for the plugin updates. In case you don’t want "
259
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
260
+ "class=\"wapt-control-btn\" href=\"#\">cancel subscription</a>"
261
+ msgstr ""
262
+
263
+ #: admin/views/tab-license.php:64
264
+ msgid ""
265
+ "Your license has expired, please extend the license to get updates and "
266
+ "support."
267
+ msgstr ""
268
+
269
+ #: admin/views/tab-license.php:72
270
+ msgid "domain"
271
+ msgstr ""
272
+
273
+ #: admin/views/tab-license.php:76
274
+ msgid "plan"
275
+ msgstr ""
276
+
277
+ #: admin/views/tab-license.php:82
278
+ msgid "of"
279
+ msgstr ""
280
+
281
+ #: admin/views/tab-license.php:84
282
+ msgid "active sites"
283
+ msgstr ""
284
+
285
+ #: admin/views/tab-license.php:89
286
+ msgid "version"
287
+ msgstr ""
288
+
289
+ #: admin/views/tab-license.php:94
290
+ msgid "EXPIRED!"
291
+ msgstr ""
292
+
293
+ #: admin/views/tab-license.php:95
294
+ msgid "please update the key"
295
+ msgstr ""
296
+
297
+ #: admin/views/tab-license.php:105
298
+ msgid "day(s)"
299
+ msgstr ""
300
+
301
+ #: admin/views/tab-license.php:107
302
+ msgid "remained"
303
+ msgstr ""
304
+
305
+ #: admin/views/tab-license.php:118
306
+ msgid "Have a key to activate the premium version? Paste it here:"
307
+ msgstr ""
308
+
309
+ #: admin/views/tab-license.php:120
310
+ msgid "Have a key to activate the plugin? Paste it here:"
311
+ msgstr ""
312
+
313
+ #: admin/views/tab-license.php:126
314
+ msgid "Submit Key"
315
+ msgstr ""
316
+
317
+ #: admin/views/tab-license.php:134
318
+ #, php-format
319
+ msgid ""
320
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
321
+ "premium version and get the license key to activate it now!"
322
+ msgstr ""
323
+
324
+ #: admin/views/tab-license.php:138
325
+ #, php-format
326
+ msgid ""
327
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
328
+ "this page</a> and login using the e-mail address associated with your "
329
+ "purchase."
330
+ msgstr ""
331
+
332
+ #: admin/views/tab-main.php:2
333
+ msgid "Generate Featured images for posts"
334
+ msgstr ""
335
+
336
+ #: admin/views/tab-main.php:22
337
+ msgid "Generate Featured images"
338
+ msgstr ""
339
+
340
+ #: admin/views/tab-main.php:25
341
+ msgid "Delete Featured images"
342
+ msgstr ""
343
+
344
+ #: admin/views/tab-main.php:42
345
+ msgid ""
346
+ "Note: Thumbnails won't be generated for posts that already have post "
347
+ "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
348
+ msgstr ""
349
+
350
+ #: admin/views/tab-main.php:44
351
+ msgid "You must enable Javascript in order to proceed!"
352
+ msgstr ""
353
+
354
+ #: admin/views/tab-main.php:103 admin/views/tab-main.php:164
355
+ msgid "All done! Processed posts:"
356
+ msgstr ""
357
+
358
+ #: admin/views/tab-main.php:103
359
+ msgid "Set featured image in posts:"
360
+ msgstr ""
361
+
362
+ #: admin/views/tab-main.php:164
363
+ msgid "Delete featured image in posts:"
364
+ msgstr ""
365
+
366
+ #: admin/views/sources/google.php:40
367
+ msgid "No hits"
368
+ msgstr ""
369
+
370
+ #: admin/views/sources/google.php:156
371
+ msgid "Search..."
372
+ msgstr ""
373
+
374
+ #: admin/views/sources/google.php:158
375
+ msgid "Search"
376
+ msgstr ""
377
+
378
+ #: admin/views/sources/google.php:165
379
+ msgid "Prev"
380
+ msgstr ""
381
+
382
+ #: admin/views/sources/google.php:168
383
+ msgid "Next"
384
+ msgstr ""
385
+
386
+ #: admin/views/sources/google.php:177
387
+ msgid "API key is missing. Add it in APT settings"
388
+ msgstr ""
389
+
390
+ #. Description of the plugin
391
+ msgid ""
392
+ "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
393
+ "first image in post (or any custom post type) only if Post Thumbnail is not "
394
+ "set manually."
395
+ msgstr ""
396
+
397
+ #. URI of the plugin
398
+ msgid "https://cm-wp.com/apt"
399
+ msgstr ""
400
+
401
+ #. Author of the plugin
402
+ msgid "Creativemotion <support@cm-wp.com>"
403
+ msgstr ""
404
+
405
+ #. Author URI of the plugin
406
+ msgid "cm-wp.com"
407
+ msgstr ""
languages/apt-ru_RU.mo CHANGED
Binary file
languages/apt-ru_RU.po CHANGED
@@ -1,249 +1,624 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Auto Post Thumbnail\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2019-06-05 19:26+0000\n"
6
- "PO-Revision-Date: 2019-06-19 13:13+0300\n"
7
- "Last-Translator: admin <sasha.tesh@gmail.com>\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 && n"
11
- "%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: Poedit 1.8.7\n"
16
- "X-Loco-Version: 2.2.0; wp-4.9.8\n"
17
-
18
- #: auto-post-thumbnail.php:201
19
- msgid "This plugin has been automatically deactivated."
20
- msgstr "Этот плагин был автоматически деактивирован."
21
-
22
- #: views/tab-main.php:18
23
- msgid ""
24
- "Currently there are no published posts available to generate thumbnails."
25
- msgstr ""
26
- "На данный момент у вас нет опубликованных записей для генерации изображений."
27
-
28
- #: views/tab-main.php:20
29
- msgid "We are generating post thumbnails. Please be patient!"
30
- msgstr "Начилась генерация изображений. Пожалуйста, подождите!"
31
-
32
- #: views/tab-main.php:32 views/tab-main.php:92
33
- msgid "You must enable Javascript in order to proceed!"
34
- msgstr "Вам нужно включить JavaScript чтобы продолжить!"
35
-
36
- #: views/tab-main.php:64
37
- #, php-format
38
- msgid "All done! Processed posts: %d"
39
- msgstr "Завершено! Обработано записей: %d"
40
-
41
- #: views/tab-main.php:79
42
- msgid ""
43
- "Use this tool to generate Post Thumbnail (Featured Thumbnail) for your "
44
- "Published posts."
45
- msgstr ""
46
- "Используйте этот инструмент для автоматической генерации изображений для "
47
- "опубликованных записей."
48
-
49
- #: views/tab-main.php:81
50
- msgid ""
51
- "If the script stops executing for any reason, just <strong>Reload</strong> "
52
- "the page and it will continue from where it stopped."
53
- msgstr ""
54
- "Если скрипт перестанет работать по какой-то причине, вы можете "
55
- "<strong>перезагрузить</strong> эту страницу и он продолжит свою работу с "
56
- "места где остановился."
57
-
58
- #: views/tab-main.php:88 views/index.php:13
59
- msgid "Generate Thumbnails"
60
- msgstr "Генерировать изображения"
61
-
62
- #: views/tab-main.php:97
63
- msgid ""
64
- "Note: Thumbnails won't be generated for posts that already have post "
65
- "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
66
- msgstr ""
67
- "Обратите внимание: Изображения не будут сгенерированы для записей у которых "
68
- "уже есть изображение или имеют заполненное мета поле "
69
- "<strong><em>skip_post_thumb</em></strong>."
70
-
71
- #. Name of the plugin
72
- #: views/tab-about.php:81
73
- msgid "Auto Post Thumbnail"
74
- msgstr "Auto Post Thumbnail"
75
-
76
- #: views/tab-about.php:83
77
- msgid ""
78
- "We didn’t please you with updated lately. However, great news today! We are "
79
- "about to tell you about all the spectacular changes that are planned for our "
80
- "plugin!"
81
- msgstr ""
82
- "Мы давно не радовал Вас обновлениями, но сегодня у нас отличные новости ! Мы "
83
- "расскажем Вам о потрясающих изменениях, которые ждут наш плагин!"
84
-
85
- #: views/tab-about.php:85
86
- msgid ""
87
- "First of all, we proudly announce that a new group of developers, <span "
88
- "style=\"text-decoration: underline;\"><strong>Creative Motion</strong></"
89
- "span>, are helping us with plugin improvement."
90
- msgstr ""
91
- "Прежде всего, хотим сообщить, что теперь над улучшением плагина работает "
92
- "новая команда разработчиков <span style=\"text-decoration: underline;"
93
- "\"><strong>Creative Motion</strong></span>."
94
-
95
- #: views/tab-about.php:87
96
- msgid ""
97
- "Auto Post Thumbnails has perfectly fit in our close family of popular "
98
- "plugins with more than 600,000 users worldwide."
99
- msgstr ""
100
- "Auto Post Thumbnails влился в нашу дружную семью плагинов, которыми "
101
- "пользуется более 600 тыс пользователей по всему миру."
102
-
103
- #: views/tab-about.php:89
104
- msgid "What you can expect soon:"
105
- msgstr "Что нового появится в ближайших релизах:"
106
-
107
- #: views/tab-about.php:100
108
- msgid ""
109
- "As you’ve already noticed, we haven’t updated the plugin for more than 2 "
110
- "years. This new version fixes existing problems. APT becomes a fully "
111
- "functional plugin."
112
- msgstr ""
113
- "Как вы могли заметить, плагин не обновлялся более 2 лет. В версии, которую "
114
- "вы только что установили, мы исправили существующие проблемы, теперь APT "
115
- "полностью работоспособен."
116
-
117
- #: views/tab-about.php:103
118
- msgid ""
119
- "In the next release, you can automatically generate featured images from any "
120
- "image in the post, not only the first one. Besides, we offer you an advanced "
121
- "tool – choose an image for the featured image right from the Posts tab. You "
122
- "no longer need to edit each post to install or change the featured image. "
123
- "Feel free to do it right from the list of posts. It saves much time and "
124
- "efforts. ​"
125
- msgstr ""
126
- "В следующем релизе плагина мы осуществили возможность автоматически "
127
- "генерировать изображение записи для ваших записей не только из первой "
128
- "картинке записи, но и из любой картинки записи. Кроме того, вам будет "
129
- "доступен продвинутый инструмент - выбор картинки для feature image прямо во "
130
- "вкладке “записи”. Больше не нужно редактировать каждую запись по "
131
- "отдельности, чтобы установить или изменить feature image, это можно сделать "
132
- "прямо в списке записей. Это значительно сэкономит ваше время и усилия."
133
-
134
- #: views/tab-about.php:108
135
- msgid ""
136
- "Starting from this version, the APT plugin evolves from being an aiding tool "
137
- "to the full-featured search & image editing system with a Creative Commons "
138
- "license for your website. <strong>It means that you get:</strong>"
139
- msgstr ""
140
- "Начиная с этой версии, плагин APT превращается из помощника в полноценную "
141
- "систему поиска и редактирования изображений с лицензией Creative Commons для "
142
- "вашего сайта. <strong>Что это означает</strong>:"
143
-
144
- #: views/tab-about.php:111
145
- msgid ""
146
- "Image search through the 5 popular stock services from the plugin interface. "
147
- "Just enter a search query and choose an image(images) you like."
148
- msgstr ""
149
- "Появится возможность поиска изображений из пяти популярных стоковых сервисов "
150
- "прямо в интерфейсе плагина. Просто введите поисковый запрос и выберите "
151
- "подходящее изображение или несколько изображений."
152
-
153
- #: views/tab-about.php:112
154
- msgid ""
155
- "Advanced APT editor. You can edit images using layers. It means that you can "
156
- "overlay text, logo, or mask, adjust color, brightness, and contract and use "
157
- "other great features. Save presets and apply them on any image in one click. "
158
- "The editor doesn’t replace the default WordPress editor."
159
- msgstr ""
160
- "Продвинутый редактор APT даст возможность редактировать изображения, "
161
- "используя слои. Это означает, что вы сможете наложить текст, логотип, маску "
162
- "на изображение, откорректировать яркости и контраст, сделать цветокоррекцию "
163
- еще много возможностей. Сохраняйте пресеты и применяйте их к любым "
164
- "картинками одним кликом. Редактор не заменяет стандартный редактор WordPress."
165
-
166
- #: views/tab-about.php:118
167
- msgid ""
168
- "Upload images from the external URL to your post or product (for "
169
- "Woocommerce)."
170
- msgstr ""
171
- "Возможность установки в качестве изображения в статью или товар (для "
172
- "Woocommerce) картинки из внешнего URL."
173
-
174
- #: views/tab-about.php:119
175
- msgid "Compatibility with the most popular builders."
176
- msgstr "Совместимость с самыми популярными билдерами."
177
-
178
- #: views/index.php:6
179
- msgid "Generate Post Thumbnails"
180
- msgstr "Генерация изображений для записей"
181
-
182
- #: views/index.php:17
183
- msgid "About"
184
- msgstr "О нас"
185
-
186
- #. Description of the plugin
187
- msgid ""
188
- "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
189
- "first image in post (or any custom post type) only if Post Thumbnail is not "
190
- "set manually."
191
- msgstr ""
192
- "Автоматически генерировать изображения для записи из ее первой картинки (или "
193
- "кастомных типов записей) только если изображение не установлено вручную."
194
-
195
- #. URI of the plugin
196
- msgid ""
197
- "http://www.sanisoft.com/blog/2010/04/19/wordpress-plugin-automatic-post-"
198
- "thumbnail/"
199
- msgstr ""
200
- "http://www.sanisoft.com/blog/2010/04/19/wordpress-plugin-automatic-post-"
201
- "thumbnail/"
202
-
203
- #. Author of the plugin
204
- msgid "Webcraftic <wordpress.webraftic@gmail.com>"
205
- msgstr "Webcraftic <wordpress.webraftic@gmail.com>"
206
-
207
- #. Author URI of the plugin
208
- msgid "webcraftic.com"
209
- msgstr "webcraftic.com"
210
-
211
- #. text
212
- msgid "Settings"
213
- msgstr "Настройки"
214
-
215
- #. text
216
- msgid "Custom generation"
217
- msgstr "Выборочная генерация"
218
-
219
- #. text
220
- msgid "Title"
221
- msgstr "Заголовок"
222
-
223
- #. text
224
- msgid "Author"
225
- msgstr "Автор"
226
-
227
- #. text
228
- msgid "Date"
229
- msgstr "Дата"
230
-
231
- #. text
232
- msgid "Enable automatic post thumbnail generation"
233
- msgstr "Включить автоматическую генерацию миниатюры поста"
234
-
235
- #. text
236
- msgid "Delete settings when removing the plugin"
237
- msgstr "Удалять настройки при удалении плагина"
238
-
239
- #. text
240
- msgid "Save settings"
241
- msgstr "Сохранить настройки"
242
-
243
- #. text
244
- msgid "Generate Thumbnail"
245
- msgstr "Генерировать изображение"
246
-
247
- #. text
248
- msgid "All done! Success processed posts: %d"
249
- msgstr "Завершено! Успешно обработано записей: %d"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Auto Post Thumbnail\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2020-02-10 11:21+0000\n"
6
+ "PO-Revision-Date: 2020-02-10 12:05+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.3.2"
17
+
18
+ #. Name of the plugin
19
+ #: auto-post-thumbnail.php:48 includes/class-wapt-base.php:959
20
+ #: admin/pages/generate.php:100
21
+ msgid "Auto Post Thumbnail"
22
+ msgstr "Auto Post Thumbnail"
23
+
24
+ #: includes/class-wapt-base.php:207
25
+ msgid "Use as thumbnail"
26
+ msgstr "Применить изображение"
27
+
28
+ #: includes/class-wapt-base.php:208 includes/class-wapt-base.php:916
29
+ msgid "Change featured image"
30
+ msgstr "Изменить изображение"
31
+
32
+ #: includes/class-wapt-base.php:411
33
+ msgid "This plugin has been automatically deactivated."
34
+ msgstr "Этот плагин был автоматически деактивирован."
35
+
36
+ #: includes/class-wapt-base.php:819 admin/pages/settings.php:154
37
+ msgid "Image"
38
+ msgstr "Изображение"
39
+
40
+ #: includes/class-wapt-base.php:913
41
+ msgid "No image"
42
+ msgstr "Нет изображений"
43
+
44
+ #: includes/class-wapt-base.php:933
45
+ msgid "Auto Post Thumbnails"
46
+ msgstr "Auto Post Thumbnails"
47
+
48
+ #: includes/class-wapt-base.php:933
49
+ msgid "Add from APT"
50
+ msgstr "Добавить через APT"
51
+
52
+ #: includes/class-wapt-base.php:1176
53
+ #, php-format
54
+ msgid ""
55
+ "You have reached the limit at the moment. Try again in an 1 hour or <a "
56
+ "href=\"%s\">Upgrade to Premium</a>"
57
+ msgstr ""
58
+ "На данный момент Вы достигли лимита запросов. Повторите попытку через 1 час "
59
+ "или <a href=\"%s\">обновите до Premium</a>"
60
+
61
+ #: includes/class-wapt-base.php:1236
62
+ #, php-format
63
+ msgid ""
64
+ "To download images from Google, specify Google API keys in the <a href='%s'>"
65
+ "settings</a>."
66
+ msgstr ""
67
+ "Чтобы загружать изображения из Google, укажите ключи API Google в <a "
68
+ "href='%s'>настройках</a>."
69
+
70
+ #: includes/class-wapt-base.php:1265
71
+ #, php-format
72
+ msgid ""
73
+ "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on "
74
+ "our website."
75
+ msgstr ""
76
+
77
+ #: includes/class-wapt-base.php:1291
78
+ msgid "Standard"
79
+ msgstr ""
80
+
81
+ #: includes/class-wapt-base.php:1302
82
+ msgid "Uploaded"
83
+ msgstr ""
84
+
85
+ #: includes/class-wapt-plugin.php:140
86
+ msgid "Generate featured image"
87
+ msgstr "Генерировать изображение"
88
+
89
+ #: includes/class-wapt-plugin.php:141
90
+ msgid "Unset featured image"
91
+ msgstr "Убрать изображение"
92
+
93
+ #: includes/class-wapt-plugin.php:185
94
+ msgid "Processed posts: "
95
+ msgstr "Обработано постов:"
96
+
97
+ #: includes/class-wapt-plugin.php:204
98
+ msgid "Featured Image"
99
+ msgstr "Изображение"
100
+
101
+ #: includes/class-wapt-plugin.php:205
102
+ msgid "With image"
103
+ msgstr "С изображением"
104
+
105
+ #: includes/class-wapt-plugin.php:206
106
+ msgid "Without image"
107
+ msgstr "Без изображения"
108
+
109
+ #: includes/class-wapt-plugin.php:245
110
+ msgid "Without featured image"
111
+ msgstr "Без изображения"
112
+
113
+ #: admin/ajax/check-license.php:27
114
+ msgid "Licensing action not passed or this action is prohibited!"
115
+ msgstr "Licensing action not passed or this action is prohibited!"
116
+
117
+ #: admin/ajax/check-license.php:39
118
+ msgid ""
119
+ "License key is empty or license key too long (license key is 32 characters "
120
+ "long)"
121
+ msgstr ""
122
+ "Лицензионный ключ пуст или слишком длинный (длина лицензионного ключа "
123
+ "составляет 32 символа)"
124
+
125
+ #: admin/ajax/check-license.php:42
126
+ msgid "Your license has been successfully activated"
127
+ msgstr "Ваша лицензия успешно активирована"
128
+
129
+ #: admin/ajax/check-license.php:47
130
+ msgid "The license is deactivated"
131
+ msgstr "Ваша лицензия деактивирована"
132
+
133
+ #: admin/ajax/check-license.php:51
134
+ msgid "The license has been updated"
135
+ msgstr "Ваша лицензия была обновлена"
136
+
137
+ #: admin/ajax/check-license.php:55
138
+ msgid "Subscription success cancelled"
139
+ msgstr "Подписка успешно отменена"
140
+
141
+ #: admin/pages/about.php:45
142
+ msgid "About APT"
143
+ msgstr "О плагине Auto Post Thumbnail"
144
+
145
+ #: admin/pages/about.php:46
146
+ msgid "About"
147
+ msgstr "О плагине"
148
+
149
+ #: admin/pages/generate.php:101
150
+ msgid "Generate featured images"
151
+ msgstr "Генератор изображений"
152
+
153
+ #: admin/pages/license.php:91
154
+ msgid "License of APT"
155
+ msgstr "Лицензия Auto Post Thumbnail"
156
+
157
+ #: admin/pages/settings.php:46
158
+ msgid "Settings of APT"
159
+ msgstr "Настройки Auto Post Thumbnail"
160
+
161
+ #. text
162
+ #: admin/pages/settings.php:47 admin/views/tab-settings.php:40
163
+ msgid "Settings"
164
+ msgstr "Настройки"
165
+
166
+ #: admin/pages/settings.php:100
167
+ msgid "Automatic set featured image on save"
168
+ msgstr "Автодобавление изображения записи"
169
+
170
+ #: admin/pages/settings.php:102
171
+ msgid "Set the first image in a post as the featured image"
172
+ msgstr "При сохранении, первое изображение станет изображением поста"
173
+
174
+ #. text
175
+ #: admin/pages/settings.php:109 admin/pages/settings.php:111
176
+ msgid "Delete settings when removing the plugin"
177
+ msgstr "Удалять настройки при удалении плагина"
178
+
179
+ #: admin/pages/settings.php:118
180
+ msgid "Generate featured image from title"
181
+ msgstr "Генерировать изображение поста из заголовка"
182
+
183
+ #: admin/pages/settings.php:120
184
+ msgid ""
185
+ "A featured image will be created automatically from the title on a colored "
186
+ "background"
187
+ msgstr ""
188
+ "Изображение поста будет создано автоматически из заголовка на цветном фоне"
189
+
190
+ #: admin/pages/settings.php:141
191
+ msgid "Background settings"
192
+ msgstr "Настройки фона"
193
+
194
+ #: admin/pages/settings.php:153
195
+ msgid "Color"
196
+ msgstr "Цвет"
197
+
198
+ #: admin/pages/settings.php:157
199
+ msgid "Background type"
200
+ msgstr "Тип фона"
201
+
202
+ #: admin/pages/settings.php:158
203
+ msgid "Select the background type for the featured image"
204
+ msgstr "Тип фона для изображения поста"
205
+
206
+ #: admin/pages/settings.php:166
207
+ msgid "Background color for the image"
208
+ msgstr "Цвет фона"
209
+
210
+ #: admin/pages/settings.php:167
211
+ msgid "Set the background color for the featured image"
212
+ msgstr "Цвет фона для изображения поста"
213
+
214
+ #: admin/pages/settings.php:174
215
+ msgid "Select image"
216
+ msgstr "Выбрать изображение"
217
+
218
+ #: admin/pages/settings.php:175
219
+ msgid "Background image"
220
+ msgstr "Фоновое изображение"
221
+
222
+ #: admin/pages/settings.php:176
223
+ msgid "Set the background image. Only JPG or PNG"
224
+ msgstr "Изображение для фона. Только JPG или PNG"
225
+
226
+ #: admin/pages/settings.php:186
227
+ msgid "JPEG"
228
+ msgstr "JPEG"
229
+
230
+ #: admin/pages/settings.php:187
231
+ msgid "PNG"
232
+ msgstr "PNG"
233
+
234
+ #: admin/pages/settings.php:190
235
+ msgid "Image format"
236
+ msgstr "Формат изображения"
237
+
238
+ #: admin/pages/settings.php:191
239
+ msgid "Set format to save images"
240
+ msgstr "В каком формате сохранять изображения поста"
241
+
242
+ #: admin/pages/settings.php:196
243
+ msgid "Font settings"
244
+ msgstr "Настройки шрифта"
245
+
246
+ #: admin/pages/settings.php:208
247
+ msgid "Font name"
248
+ msgstr "Шрифт"
249
+
250
+ #: admin/pages/settings.php:209
251
+ msgid "Select a font for the text in the featured image"
252
+ msgstr "Шрифт текста на изображении поста"
253
+
254
+ #: admin/pages/settings.php:219
255
+ msgid "Font size"
256
+ msgstr "Размер шрифта"
257
+
258
+ #: admin/pages/settings.php:220
259
+ msgid "Set the font size for the featured image"
260
+ msgstr "Размер шрифта на изображении поста"
261
+
262
+ #: admin/pages/settings.php:226
263
+ msgid "Font color"
264
+ msgstr "Цвет шрифта"
265
+
266
+ #: admin/pages/settings.php:227
267
+ msgid "Set the font color for the featured image"
268
+ msgstr "Цвет шрифта на изображении поста"
269
+
270
+ #: admin/pages/settings.php:233
271
+ msgid "Text settings"
272
+ msgstr "Настройки текста"
273
+
274
+ #: admin/pages/settings.php:245
275
+ msgid "Text shadow"
276
+ msgstr "Тень"
277
+
278
+ #: admin/pages/settings.php:246
279
+ msgid "Use text shadow?"
280
+ msgstr "Рисовать тень для текста?"
281
+
282
+ #: admin/pages/settings.php:258
283
+ msgid "Shadow color"
284
+ msgstr "Цвет тени"
285
+
286
+ #: admin/pages/settings.php:259
287
+ msgid "Set the shadow color for the text"
288
+ msgstr "Цвет тени для текста"
289
+
290
+ #: admin/pages/settings.php:267
291
+ msgid "No transform"
292
+ msgstr "Нет"
293
+
294
+ #: admin/pages/settings.php:268
295
+ msgid "Uppercase"
296
+ msgstr "ЗАГЛАВНЫЕ"
297
+
298
+ #: admin/pages/settings.php:269
299
+ msgid "Lowercase"
300
+ msgstr "строчные"
301
+
302
+ #: admin/pages/settings.php:272
303
+ msgid "Text transform"
304
+ msgstr "Преобразование текста"
305
+
306
+ #: admin/pages/settings.php:273
307
+ msgid "Select type of text transformation"
308
+ msgstr "Выберите тип преобразования текста"
309
+
310
+ #: admin/pages/settings.php:280
311
+ msgid "chars"
312
+ msgstr "символов"
313
+
314
+ #: admin/pages/settings.php:282
315
+ msgid "Text length"
316
+ msgstr "Длина текста"
317
+
318
+ #: admin/pages/settings.php:283
319
+ msgid "Set the maximum text length"
320
+ msgstr "Максимальная длинна текста (обрезается по словам)"
321
+
322
+ #: admin/pages/settings.php:292
323
+ msgid "Line spacing"
324
+ msgstr "Межстрочный интервал"
325
+
326
+ #: admin/pages/settings.php:293
327
+ msgid "Set the line spacing"
328
+ msgstr "Интервал между строками текста (коэффициент от размера шрифта)"
329
+
330
+ #: admin/pages/settings.php:299
331
+ msgid "Alignment"
332
+ msgstr "Выравнивание"
333
+
334
+ #: admin/pages/settings.php:311
335
+ msgid "Left"
336
+ msgstr "Слева"
337
+
338
+ #: admin/pages/settings.php:312 admin/pages/settings.php:327
339
+ msgid "Center"
340
+ msgstr "По центру"
341
+
342
+ #: admin/pages/settings.php:313
343
+ msgid "Right"
344
+ msgstr "Справа"
345
+
346
+ #: admin/pages/settings.php:316
347
+ msgid "Horizontal text alignment"
348
+ msgstr "Горизонтальное выравнивание"
349
+
350
+ #: admin/pages/settings.php:317
351
+ msgid "Select how to horizontally align the text on the image"
352
+ msgstr "Горизонтальное выравнивание текста на изображении поста"
353
+
354
+ #: admin/pages/settings.php:326
355
+ msgid "Top"
356
+ msgstr "Вверху"
357
+
358
+ #: admin/pages/settings.php:328
359
+ msgid "Bottom"
360
+ msgstr "Внизу"
361
+
362
+ #: admin/pages/settings.php:331
363
+ msgid "Vertical text alignment"
364
+ msgstr "Вертикальное выравнивание"
365
+
366
+ #: admin/pages/settings.php:332
367
+ msgid "Select how to vertically align the text on the image"
368
+ msgstr "Вертикальное выравнивание текста на изображении поста"
369
+
370
+ #: admin/pages/settings.php:339
371
+ msgid "Padding"
372
+ msgstr "Отступы"
373
+
374
+ #: admin/pages/settings.php:350 admin/pages/settings.php:361
375
+ msgid "px"
376
+ msgstr "px"
377
+
378
+ #: admin/pages/settings.php:352
379
+ msgid "Top/bottom text padding"
380
+ msgstr "Верхний/нижний отступ"
381
+
382
+ #: admin/pages/settings.php:353
383
+ msgid "Padding at the top and bottom of the text"
384
+ msgstr "Отступ сверху и снизу от текста"
385
+
386
+ #: admin/pages/settings.php:363
387
+ msgid "Left/right text padding"
388
+ msgstr "Левый/правый отступ"
389
+
390
+ #: admin/pages/settings.php:364
391
+ msgid "Padding at the left and right of the text"
392
+ msgstr "Отступ слева и справа от текста"
393
+
394
+ #: admin/pages/settings.php:371
395
+ msgid "Addition of text"
396
+ msgstr "Добавление текста"
397
+
398
+ #: admin/pages/settings.php:382
399
+ msgid "String before text"
400
+ msgstr "Текст до"
401
+
402
+ #: admin/pages/settings.php:383
403
+ msgid "Additional string before text. For a line break, use <b>[br]</b>"
404
+ msgstr ""
405
+ "Дополнительный текст перед текстом. Для переноса строки используйте <b>[br]"
406
+ "</b>"
407
+
408
+ #: admin/pages/settings.php:392
409
+ msgid "String after text"
410
+ msgstr "Текст после"
411
+
412
+ #: admin/pages/settings.php:393
413
+ msgid "Additional string after text. For a line break, use <b>[br]</b>"
414
+ msgstr ""
415
+ "Дополнительный текст после текста. Для переноса строки используйте <b>[br]"
416
+ "</b>"
417
+
418
+ #: admin/pages/settings.php:419
419
+ msgid "How to get google api key & custom search engine id"
420
+ msgstr "Как получить Google API key и Custom Search Engine ID"
421
+
422
+ #: admin/pages/settings.php:436
423
+ msgid "API key for Google"
424
+ msgstr "API ключ Google"
425
+
426
+ #: admin/pages/settings.php:444
427
+ msgid "Google Custom Search Engine ID"
428
+ msgstr "Google Custom Search Engine ID"
429
+
430
+ #: admin/pages/settings.php:445
431
+ msgid "You can get API key after registration on the site"
432
+ msgstr "Вы можете получить API ключ на сайте"
433
+
434
+ #: admin/views/tab-license.php:11
435
+ #, php-format
436
+ msgid "Activate %s"
437
+ msgstr ""
438
+
439
+ #: admin/views/tab-license.php:22
440
+ msgid "Upgrade to Premium"
441
+ msgstr ""
442
+
443
+ #: admin/views/tab-license.php:25
444
+ #, php-format
445
+ msgid "Your current license for %1$s:"
446
+ msgstr ""
447
+
448
+ #: admin/views/tab-license.php:31
449
+ msgid "Delete Key"
450
+ msgstr "Удалить ключ"
451
+
452
+ #: admin/views/tab-license.php:35
453
+ msgid "Synchronization"
454
+ msgstr "Синхронизация"
455
+
456
+ #: admin/views/tab-license.php:54
457
+ msgid ""
458
+ "Public License is a GPLv2 compatible license allowing you to change and use "
459
+ "this version of the plugin for free. Please keep in mind this license covers "
460
+ "only free edition of the plugin. Premium versions are distributed with other "
461
+ "type of a license."
462
+ msgstr ""
463
+
464
+ #: admin/views/tab-license.php:58
465
+ msgid ""
466
+ "You use a paid subscription for the plugin updates. In case you don’t want "
467
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
468
+ "class=\"wapt-control-btn\" href=\"#\">cancel subscription</a>"
469
+ msgstr ""
470
+
471
+ #: admin/views/tab-license.php:64
472
+ msgid ""
473
+ "Your license has expired, please extend the license to get updates and "
474
+ "support."
475
+ msgstr ""
476
+ "Ваша лицензия истекла, пожалуйста, продлите лицензию, чтобы продолжить "
477
+ "пользоваться премиум функциями"
478
+
479
+ #: admin/views/tab-license.php:72
480
+ msgid "domain"
481
+ msgstr ""
482
+
483
+ #: admin/views/tab-license.php:76
484
+ msgid "plan"
485
+ msgstr "тариф"
486
+
487
+ #: admin/views/tab-license.php:82
488
+ msgid "of"
489
+ msgstr "из"
490
+
491
+ #: admin/views/tab-license.php:84
492
+ msgid "active sites"
493
+ msgstr "активных сайтов"
494
+
495
+ #: admin/views/tab-license.php:89
496
+ msgid "version"
497
+ msgstr "версия"
498
+
499
+ #: admin/views/tab-license.php:94
500
+ msgid "EXPIRED!"
501
+ msgstr ""
502
+
503
+ #: admin/views/tab-license.php:95
504
+ msgid "please update the key"
505
+ msgstr ""
506
+
507
+ #: admin/views/tab-license.php:105
508
+ msgid "day(s)"
509
+ msgstr "дней"
510
+
511
+ #: admin/views/tab-license.php:107
512
+ msgid "remained"
513
+ msgstr "осталось"
514
+
515
+ #: admin/views/tab-license.php:118
516
+ msgid "Have a key to activate the premium version? Paste it here:"
517
+ msgstr "Есть ключ для активации премиум версии? Вставьте его сюда:"
518
+
519
+ #: admin/views/tab-license.php:120
520
+ msgid "Have a key to activate the plugin? Paste it here:"
521
+ msgstr "Есть ключ для активации плагина? Вставьте его сюда:"
522
+
523
+ #: admin/views/tab-license.php:126
524
+ msgid "Submit Key"
525
+ msgstr "Отправить ключ"
526
+
527
+ #: admin/views/tab-license.php:134
528
+ #, php-format
529
+ msgid ""
530
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
531
+ "premium version and get the license key to activate it now!"
532
+ msgstr ""
533
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Узнать больше</a> о "
534
+ "премиум версии и получить лицензионный ключ!"
535
+
536
+ #: admin/views/tab-license.php:138
537
+ #, php-format
538
+ msgid ""
539
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
540
+ "this page</a> and login using the e-mail address associated with your "
541
+ "purchase."
542
+ msgstr ""
543
+
544
+ #: admin/views/tab-main.php:2
545
+ msgid "Generate Featured images for posts"
546
+ msgstr "Генератор изображений для постов"
547
+
548
+ #: admin/views/tab-main.php:22
549
+ msgid "Generate Featured images"
550
+ msgstr "Сгенерировать изображения"
551
+
552
+ #: admin/views/tab-main.php:25
553
+ msgid "Delete Featured images"
554
+ msgstr "Убрать изображения"
555
+
556
+ #: admin/views/tab-main.php:42
557
+ msgid ""
558
+ "Note: Thumbnails won't be generated for posts that already have post "
559
+ "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
560
+ msgstr ""
561
+ "Обратите внимание: Изображения не будут сгенерированы для записей у которых "
562
+ "уже есть изображение или имеют заполненное мета поле <strong><em>"
563
+ "skip_post_thumb</em></strong>."
564
+
565
+ #: admin/views/tab-main.php:44
566
+ msgid "You must enable Javascript in order to proceed!"
567
+ msgstr "Вам нужно включить JavaScript чтобы продолжить!"
568
+
569
+ #: admin/views/tab-main.php:103 admin/views/tab-main.php:164
570
+ msgid "All done! Processed posts:"
571
+ msgstr "Завершено! Обработано постов: "
572
+
573
+ #: admin/views/tab-main.php:103
574
+ msgid "Set featured image in posts:"
575
+ msgstr "Добавлены изображения в посты:"
576
+
577
+ #: admin/views/tab-main.php:164
578
+ msgid "Delete featured image in posts:"
579
+ msgstr "Убраны изображения из постов:"
580
+
581
+ #: admin/views/sources/google.php:40
582
+ msgid "No hits"
583
+ msgstr "Нет результатов"
584
+
585
+ #: admin/views/sources/google.php:156
586
+ msgid "Search..."
587
+ msgstr "Запрос для поиска"
588
+
589
+ #: admin/views/sources/google.php:158
590
+ msgid "Search"
591
+ msgstr "Поиск"
592
+
593
+ #: admin/views/sources/google.php:165
594
+ msgid "Prev"
595
+ msgstr "Предыдущая"
596
+
597
+ #: admin/views/sources/google.php:168
598
+ msgid "Next"
599
+ msgstr "Следующая"
600
+
601
+ #: admin/views/sources/google.php:177
602
+ msgid "API key is missing. Add it in APT settings"
603
+ msgstr "Ключ API не задан. Добавьте его в настройках Auto Post Thumbnail"
604
+
605
+ #. Description of the plugin
606
+ msgid ""
607
+ "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
608
+ "first image in post (or any custom post type) only if Post Thumbnail is not "
609
+ "set manually."
610
+ msgstr ""
611
+ "Автоматически генерировать изображения для записи из ее первой картинки, "
612
+ "только если изображение не установлено вручную."
613
+
614
+ #. URI of the plugin
615
+ msgid "https://cm-wp.com/apt"
616
+ msgstr "https://cm-wp.com/apt"
617
+
618
+ #. Author of the plugin
619
+ msgid "Creativemotion <support@cm-wp.com>"
620
+ msgstr "Creativemotion <support@cm-wp.com>"
621
+
622
+ #. Author URI of the plugin
623
+ msgid "cm-wp.com"
624
+ msgstr "cm-wp.com"
languages/apt.pot CHANGED
@@ -1,166 +1,602 @@
1
- #, fuzzy
2
- msgid ""
3
- msgstr ""
4
- "Project-Id-Version: Auto Post Thumbnail\n"
5
- "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2019-06-05 19:26+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.2.0; wp-4.9.8"
17
-
18
- #: auto-post-thumbnail.php:201
19
- msgid "This plugin has been automatically deactivated."
20
- msgstr ""
21
-
22
- #: views/tab-main.php:18
23
- msgid ""
24
- "Currently there are no published posts available to generate thumbnails."
25
- msgstr ""
26
-
27
- #: views/tab-main.php:20
28
- msgid "We are generating post thumbnails. Please be patient!"
29
- msgstr ""
30
-
31
- #: views/tab-main.php:32 views/tab-main.php:92
32
- msgid "You must enable Javascript in order to proceed!"
33
- msgstr ""
34
-
35
- #: views/tab-main.php:64
36
- #, php-format
37
- msgid "All done! Processed %d posts."
38
- msgstr ""
39
-
40
- #: views/tab-main.php:79
41
- msgid ""
42
- "Use this tool to generate Post Thumbnail (Featured Thumbnail) for your "
43
- "Published posts."
44
- msgstr ""
45
-
46
- #: views/tab-main.php:81
47
- msgid ""
48
- "If the script stops executing for any reason, just <strong>Reload</strong> "
49
- "the page and it will continue from where it stopped."
50
- msgstr ""
51
-
52
- #: views/tab-main.php:88 views/index.php:13
53
- msgid "Generate Thumbnails"
54
- msgstr ""
55
-
56
- #: views/tab-main.php:97
57
- msgid ""
58
- "Note: Thumbnails won't be generated for posts that already have post "
59
- "thumbnail or <strong><em>skip_post_thumb</em></strong> custom field set."
60
- msgstr ""
61
-
62
- #. Name of the plugin
63
- #: views/tab-about.php:81
64
- msgid "Auto Post Thumbnail"
65
- msgstr ""
66
-
67
- #: views/tab-about.php:83
68
- msgid ""
69
- "We didn’t please you with updated lately. However, great news today! We are "
70
- "about to tell you about all the spectacular changes that are planned for our "
71
- "plugin!"
72
- msgstr ""
73
-
74
- #: views/tab-about.php:85
75
- msgid ""
76
- "First of all, we proudly announce that a new group of developers, <span "
77
- "style=\"text-decoration: underline;\"><strong>Creative Motion</strong></span>"
78
- ", are helping us with plugin improvement."
79
- msgstr ""
80
-
81
- #: views/tab-about.php:87
82
- msgid ""
83
- "Auto Post Thumbnails has perfectly fit in our close family of popular "
84
- "plugins with more than 600,000 users worldwide."
85
- msgstr ""
86
-
87
- #: views/tab-about.php:89
88
- msgid "What you can expect soon:"
89
- msgstr ""
90
-
91
- #: views/tab-about.php:100
92
- msgid ""
93
- "As you’ve already noticed, we haven’t updated the plugin for more than 2 "
94
- "years. This new version fixes existing problems. APT becomes a fully "
95
- "functional plugin."
96
- msgstr ""
97
-
98
- #: views/tab-about.php:103
99
- msgid ""
100
- "In the next release, you can automatically generate featured images from any "
101
- "image in the post, not only the first one. Besides, we offer you an advanced "
102
- "tool – choose an image for the featured image right from the Posts tab. You "
103
- "no longer need to edit each post to install or change the featured image. "
104
- "Feel free to do it right from the list of posts. It saves much time and "
105
- "efforts. ​"
106
- msgstr ""
107
-
108
- #: views/tab-about.php:108
109
- msgid ""
110
- "Starting from this version, the APT plugin evolves from being an aiding tool "
111
- "to the full-featured search & image editing system with a Creative Commons "
112
- "license for your website. <strong>It means that you get:</strong>"
113
- msgstr ""
114
-
115
- #: views/tab-about.php:111
116
- msgid ""
117
- "Image search through the 5 popular stock services from the plugin interface. "
118
- "Just enter a search query and choose an image(images) you like."
119
- msgstr ""
120
-
121
- #: views/tab-about.php:112
122
- msgid ""
123
- "Advanced APT editor. You can edit images using layers. It means that you can "
124
- "overlay text, logo, or mask, adjust color, brightness, and contract and use "
125
- "other great features. Save presets and apply them on any image in one click. "
126
- "The editor doesn’t replace the default WordPress editor."
127
- msgstr ""
128
-
129
- #: views/tab-about.php:118
130
- msgid ""
131
- "Upload images from the external URL to your post or product (for Woocommerce)"
132
- "."
133
- msgstr ""
134
-
135
- #: views/tab-about.php:119
136
- msgid "Compatibility with the most popular builders."
137
- msgstr ""
138
-
139
- #: views/index.php:6
140
- msgid "Generate Post Thumbnails"
141
- msgstr ""
142
-
143
- #: views/index.php:17
144
- msgid "About"
145
- msgstr ""
146
-
147
- #. Description of the plugin
148
- msgid ""
149
- "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
150
- "first image in post (or any custom post type) only if Post Thumbnail is not "
151
- "set manually."
152
- msgstr ""
153
-
154
- #. URI of the plugin
155
- msgid ""
156
- "http://www.sanisoft.com/blog/2010/04/19/wordpress-plugin-automatic-post-"
157
- "thumbnail/"
158
- msgstr ""
159
-
160
- #. Author of the plugin
161
- msgid "Webcraftic <wordpress.webraftic@gmail.com>"
162
- msgstr ""
163
-
164
- #. Author URI of the plugin
165
- msgid "webcraftic.com"
166
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Project-Id-Version: Auto Post Thumbnail\n"
5
+ "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2020-02-10 11:21+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.2.0; wp-4.9.8"
17
+
18
+ #. Name of the plugin
19
+ #: auto-post-thumbnail.php:48 includes/class-wapt-base.php:959
20
+ #: admin/pages/generate.php:100
21
+ msgid "Auto Post Thumbnail"
22
+ msgstr ""
23
+
24
+ #: includes/class-wapt-base.php:207
25
+ msgid "Use as thumbnail"
26
+ msgstr ""
27
+
28
+ #: includes/class-wapt-base.php:208 includes/class-wapt-base.php:916
29
+ msgid "Change featured image"
30
+ msgstr ""
31
+
32
+ #: includes/class-wapt-base.php:411
33
+ msgid "This plugin has been automatically deactivated."
34
+ msgstr ""
35
+
36
+ #: includes/class-wapt-base.php:819 admin/pages/settings.php:154
37
+ msgid "Image"
38
+ msgstr ""
39
+
40
+ #: includes/class-wapt-base.php:913
41
+ msgid "No image"
42
+ msgstr ""
43
+
44
+ #: includes/class-wapt-base.php:933
45
+ msgid "Auto Post Thumbnails"
46
+ msgstr ""
47
+
48
+ #: includes/class-wapt-base.php:933
49
+ msgid "Add from APT"
50
+ msgstr ""
51
+
52
+ #: includes/class-wapt-base.php:1176
53
+ #, php-format
54
+ msgid ""
55
+ "You have reached the limit at the moment. Try again in an 1 hour or <a "
56
+ "href=\"%s\">Upgrade to Premium</a>"
57
+ msgstr ""
58
+
59
+ #: includes/class-wapt-base.php:1236
60
+ #, php-format
61
+ msgid ""
62
+ "To download images from Google, specify Google API keys in the <a href='%s'>"
63
+ "settings</a>."
64
+ msgstr ""
65
+
66
+ #: includes/class-wapt-base.php:1265
67
+ #, php-format
68
+ msgid ""
69
+ "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on "
70
+ "our website."
71
+ msgstr ""
72
+
73
+ #: includes/class-wapt-base.php:1291
74
+ msgid "Standard"
75
+ msgstr ""
76
+
77
+ #: includes/class-wapt-base.php:1302
78
+ msgid "Uploaded"
79
+ msgstr ""
80
+
81
+ #: includes/class-wapt-plugin.php:140
82
+ msgid "Generate featured image"
83
+ msgstr ""
84
+
85
+ #: includes/class-wapt-plugin.php:141
86
+ msgid "Unset featured image"
87
+ msgstr ""
88
+
89
+ #: includes/class-wapt-plugin.php:185
90
+ msgid "Processed posts: "
91
+ msgstr ""
92
+
93
+ #: includes/class-wapt-plugin.php:204
94
+ msgid "Featured Image"
95
+ msgstr ""
96
+
97
+ #: includes/class-wapt-plugin.php:205
98
+ msgid "With image"
99
+ msgstr ""
100
+
101
+ #: includes/class-wapt-plugin.php:206
102
+ msgid "Without image"
103
+ msgstr ""
104
+
105
+ #: includes/class-wapt-plugin.php:245
106
+ msgid "Without featured image"
107
+ msgstr ""
108
+
109
+ #: admin/ajax/check-license.php:27
110
+ msgid "Licensing action not passed or this action is prohibited!"
111
+ msgstr ""
112
+
113
+ #: admin/ajax/check-license.php:39
114
+ msgid ""
115
+ "License key is empty or license key too long (license key is 32 characters "
116
+ "long)"
117
+ msgstr ""
118
+
119
+ #: admin/ajax/check-license.php:42
120
+ msgid "Your license has been successfully activated"
121
+ msgstr ""
122
+
123
+ #: admin/ajax/check-license.php:47
124
+ msgid "The license is deactivated"
125
+ msgstr ""
126
+
127
+ #: admin/ajax/check-license.php:51
128
+ msgid "The license has been updated"
129
+ msgstr ""
130
+
131
+ #: admin/ajax/check-license.php:55
132
+ msgid "Subscription success cancelled"
133
+ msgstr ""
134
+
135
+ #: admin/pages/about.php:45
136
+ msgid "About APT"
137
+ msgstr ""
138
+
139
+ #: admin/pages/about.php:46
140
+ msgid "About"
141
+ msgstr ""
142
+
143
+ #: admin/pages/generate.php:101
144
+ msgid "Generate featured images"
145
+ msgstr ""
146
+
147
+ #: admin/pages/license.php:91
148
+ msgid "License of APT"
149
+ msgstr ""
150
+
151
+ #: admin/pages/settings.php:46
152
+ msgid "Settings of APT"
153
+ msgstr ""
154
+
155
+ #: admin/pages/settings.php:47 admin/views/tab-settings.php:40
156
+ msgid "Settings"
157
+ msgstr ""
158
+
159
+ #: admin/pages/settings.php:100
160
+ msgid "Automatic set featured image on save"
161
+ msgstr ""
162
+
163
+ #: admin/pages/settings.php:102
164
+ msgid "Set the first image in a post as the featured image"
165
+ msgstr ""
166
+
167
+ #: admin/pages/settings.php:109 admin/pages/settings.php:111
168
+ msgid "Delete settings when removing the plugin"
169
+ msgstr ""
170
+
171
+ #: admin/pages/settings.php:118
172
+ msgid "Generate featured image from title"
173
+ msgstr ""
174
+
175
+ #: admin/pages/settings.php:120
176
+ msgid ""
177
+ "A featured image will be created automatically from the title on a colored "
178
+ "background"
179
+ msgstr ""
180
+
181
+ #: admin/pages/settings.php:141
182
+ msgid "Background settings"
183
+ msgstr ""
184
+
185
+ #: admin/pages/settings.php:153
186
+ msgid "Color"
187
+ msgstr ""
188
+
189
+ #: admin/pages/settings.php:157
190
+ msgid "Background type"
191
+ msgstr ""
192
+
193
+ #: admin/pages/settings.php:158
194
+ msgid "Select the background type for the featured image"
195
+ msgstr ""
196
+
197
+ #: admin/pages/settings.php:166
198
+ msgid "Background color for the image"
199
+ msgstr ""
200
+
201
+ #: admin/pages/settings.php:167
202
+ msgid "Set the background color for the featured image"
203
+ msgstr ""
204
+
205
+ #: admin/pages/settings.php:174
206
+ msgid "Select image"
207
+ msgstr ""
208
+
209
+ #: admin/pages/settings.php:175
210
+ msgid "Background image"
211
+ msgstr ""
212
+
213
+ #: admin/pages/settings.php:176
214
+ msgid "Set the background image. Only JPG or PNG"
215
+ msgstr ""
216
+
217
+ #: admin/pages/settings.php:186
218
+ msgid "JPEG"
219
+ msgstr ""
220
+
221
+ #: admin/pages/settings.php:187
222
+ msgid "PNG"
223
+ msgstr ""
224
+
225
+ #: admin/pages/settings.php:190
226
+ msgid "Image format"
227
+ msgstr ""
228
+
229
+ #: admin/pages/settings.php:191
230
+ msgid "Set format to save images"
231
+ msgstr ""
232
+
233
+ #: admin/pages/settings.php:196
234
+ msgid "Font settings"
235
+ msgstr ""
236
+
237
+ #: admin/pages/settings.php:208
238
+ msgid "Font name"
239
+ msgstr ""
240
+
241
+ #: admin/pages/settings.php:209
242
+ msgid "Select a font for the text in the featured image"
243
+ msgstr ""
244
+
245
+ #: admin/pages/settings.php:219
246
+ msgid "Font size"
247
+ msgstr ""
248
+
249
+ #: admin/pages/settings.php:220
250
+ msgid "Set the font size for the featured image"
251
+ msgstr ""
252
+
253
+ #: admin/pages/settings.php:226
254
+ msgid "Font color"
255
+ msgstr ""
256
+
257
+ #: admin/pages/settings.php:227
258
+ msgid "Set the font color for the featured image"
259
+ msgstr ""
260
+
261
+ #: admin/pages/settings.php:233
262
+ msgid "Text settings"
263
+ msgstr ""
264
+
265
+ #: admin/pages/settings.php:245
266
+ msgid "Text shadow"
267
+ msgstr ""
268
+
269
+ #: admin/pages/settings.php:246
270
+ msgid "Use text shadow?"
271
+ msgstr ""
272
+
273
+ #: admin/pages/settings.php:258
274
+ msgid "Shadow color"
275
+ msgstr ""
276
+
277
+ #: admin/pages/settings.php:259
278
+ msgid "Set the shadow color for the text"
279
+ msgstr ""
280
+
281
+ #: admin/pages/settings.php:267
282
+ msgid "No transform"
283
+ msgstr ""
284
+
285
+ #: admin/pages/settings.php:268
286
+ msgid "Uppercase"
287
+ msgstr ""
288
+
289
+ #: admin/pages/settings.php:269
290
+ msgid "Lowercase"
291
+ msgstr ""
292
+
293
+ #: admin/pages/settings.php:272
294
+ msgid "Text transform"
295
+ msgstr ""
296
+
297
+ #: admin/pages/settings.php:273
298
+ msgid "Select type of text transformation"
299
+ msgstr ""
300
+
301
+ #: admin/pages/settings.php:280
302
+ msgid "chars"
303
+ msgstr ""
304
+
305
+ #: admin/pages/settings.php:282
306
+ msgid "Text length"
307
+ msgstr ""
308
+
309
+ #: admin/pages/settings.php:283
310
+ msgid "Set the maximum text length"
311
+ msgstr ""
312
+
313
+ #: admin/pages/settings.php:292
314
+ msgid "Line spacing"
315
+ msgstr ""
316
+
317
+ #: admin/pages/settings.php:293
318
+ msgid "Set the line spacing"
319
+ msgstr ""
320
+
321
+ #: admin/pages/settings.php:299
322
+ msgid "Alignment"
323
+ msgstr ""
324
+
325
+ #: admin/pages/settings.php:311
326
+ msgid "Left"
327
+ msgstr ""
328
+
329
+ #: admin/pages/settings.php:312 admin/pages/settings.php:327
330
+ msgid "Center"
331
+ msgstr ""
332
+
333
+ #: admin/pages/settings.php:313
334
+ msgid "Right"
335
+ msgstr ""
336
+
337
+ #: admin/pages/settings.php:316
338
+ msgid "Horizontal text alignment"
339
+ msgstr ""
340
+
341
+ #: admin/pages/settings.php:317
342
+ msgid "Select how to horizontally align the text on the image"
343
+ msgstr ""
344
+
345
+ #: admin/pages/settings.php:326
346
+ msgid "Top"
347
+ msgstr ""
348
+
349
+ #: admin/pages/settings.php:328
350
+ msgid "Bottom"
351
+ msgstr ""
352
+
353
+ #: admin/pages/settings.php:331
354
+ msgid "Vertical text alignment"
355
+ msgstr ""
356
+
357
+ #: admin/pages/settings.php:332
358
+ msgid "Select how to vertically align the text on the image"
359
+ msgstr ""
360
+
361
+ #: admin/pages/settings.php:339
362
+ msgid "Padding"
363
+ msgstr ""
364
+
365
+ #: admin/pages/settings.php:350 admin/pages/settings.php:361
366
+ msgid "px"
367
+ msgstr ""
368
+
369
+ #: admin/pages/settings.php:352
370
+ msgid "Top/bottom text padding"
371
+ msgstr ""
372
+
373
+ #: admin/pages/settings.php:353
374
+ msgid "Padding at the top and bottom of the text"
375
+ msgstr ""
376
+
377
+ #: admin/pages/settings.php:363
378
+ msgid "Left/right text padding"
379
+ msgstr ""
380
+
381
+ #: admin/pages/settings.php:364
382
+ msgid "Padding at the left and right of the text"
383
+ msgstr ""
384
+
385
+ #: admin/pages/settings.php:371
386
+ msgid "Addition of text"
387
+ msgstr ""
388
+
389
+ #: admin/pages/settings.php:382
390
+ msgid "String before text"
391
+ msgstr ""
392
+
393
+ #: admin/pages/settings.php:383
394
+ msgid "Additional string before text. For a line break, use <b>[br]</b>"
395
+ msgstr ""
396
+
397
+ #: admin/pages/settings.php:392
398
+ msgid "String after text"
399
+ msgstr ""
400
+
401
+ #: admin/pages/settings.php:393
402
+ msgid "Additional string after text. For a line break, use <b>[br]</b>"
403
+ msgstr ""
404
+
405
+ #: admin/pages/settings.php:419
406
+ msgid "How to get google api key & custom search engine id"
407
+ msgstr ""
408
+
409
+ #: admin/pages/settings.php:436
410
+ msgid "API key for Google"
411
+ msgstr ""
412
+
413
+ #: admin/pages/settings.php:444
414
+ msgid "Google Custom Search Engine ID"
415
+ msgstr ""
416
+
417
+ #: admin/pages/settings.php:445
418
+ msgid "You can get API key after registration on the site"
419
+ msgstr ""
420
+
421
+ #: admin/views/tab-license.php:11
422
+ #, php-format
423
+ msgid "Activate %s"
424
+ msgstr ""
425
+
426
+ #: admin/views/tab-license.php:22
427
+ msgid "Upgrade to Premium"
428
+ msgstr ""
429
+
430
+ #: admin/views/tab-license.php:25
431
+ #, php-format
432
+ msgid "Your current license for %1$s:"
433
+ msgstr ""
434
+
435
+ #: admin/views/tab-license.php:31
436
+ msgid "Delete Key"
437
+ msgstr ""
438
+
439
+ #: admin/views/tab-license.php:35
440
+ msgid "Synchronization"
441
+ msgstr ""
442
+
443
+ #: admin/views/tab-license.php:54
444
+ msgid ""
445
+ "Public License is a GPLv2 compatible license allowing you to change and use "
446
+ "this version of the plugin for free. Please keep in mind this license covers "
447
+ "only free edition of the plugin. Premium versions are distributed with other "
448
+ "type of a license."
449
+ msgstr ""
450
+
451
+ #: admin/views/tab-license.php:58
452
+ msgid ""
453
+ "You use a paid subscription for the plugin updates. In case you don’t want "
454
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
455
+ "class=\"wapt-control-btn\" href=\"#\">cancel subscription</a>"
456
+ msgstr ""
457
+
458
+ #: admin/views/tab-license.php:64
459
+ msgid ""
460
+ "Your license has expired, please extend the license to get updates and "
461
+ "support."
462
+ msgstr ""
463
+
464
+ #: admin/views/tab-license.php:72
465
+ msgid "domain"
466
+ msgstr ""
467
+
468
+ #: admin/views/tab-license.php:76
469
+ msgid "plan"
470
+ msgstr ""
471
+
472
+ #: admin/views/tab-license.php:82
473
+ msgid "of"
474
+ msgstr ""
475
+
476
+ #: admin/views/tab-license.php:84
477
+ msgid "active sites"
478
+ msgstr ""
479
+
480
+ #: admin/views/tab-license.php:89
481
+ msgid "version"
482
+ msgstr ""
483
+
484
+ #: admin/views/tab-license.php:94
485
+ msgid "EXPIRED!"
486
+ msgstr ""
487
+
488
+ #: admin/views/tab-license.php:95
489
+ msgid "please update the key"
490
+ msgstr ""
491
+
492
+ #: admin/views/tab-license.php:105
493
+ msgid "day(s)"
494
+ msgstr ""
495
+
496
+ #: admin/views/tab-license.php:107
497
+ msgid "remained"
498
+ msgstr ""
499
+
500
+ #: admin/views/tab-license.php:118
501
+ msgid "Have a key to activate the premium version? Paste it here:"
502
+ msgstr ""
503
+
504
+ #: admin/views/tab-license.php:120
505
+ msgid "Have a key to activate the plugin? Paste it here:"
506
+ msgstr ""
507
+
508
+ #: admin/views/tab-license.php:126
509
+ msgid "Submit Key"
510
+ msgstr ""
511
+
512
+ #: admin/views/tab-license.php:134
513
+ #, php-format
514
+ msgid ""
515
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
516
+ "premium version and get the license key to activate it now!"
517
+ msgstr ""
518
+
519
+ #: admin/views/tab-license.php:138
520
+ #, php-format
521
+ msgid ""
522
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
523
+ "this page</a> and login using the e-mail address associated with your "
524
+ "purchase."
525
+ msgstr ""
526
+
527
+ #: admin/views/tab-main.php:2
528
+ msgid "Generate Featured images for posts"
529
+ msgstr ""
530
+
531
+ #: admin/views/tab-main.php:22
532
+ msgid "Generate Featured images"
533
+ msgstr ""
534
+
535
+ #: admin/views/tab-main.php:25
536
+ msgid "Delete Featured images"
537
+ msgstr ""
538
+
539
+ #: admin/views/tab-main.php:42
540
+ msgid ""
541
+ "Note: Thumbnails won't be generated for posts that already have post "
542
+ "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
543
+ msgstr ""
544
+
545
+ #: admin/views/tab-main.php:44
546
+ msgid "You must enable Javascript in order to proceed!"
547
+ msgstr ""
548
+
549
+ #: admin/views/tab-main.php:103 admin/views/tab-main.php:164
550
+ msgid "All done! Processed posts:"
551
+ msgstr ""
552
+
553
+ #: admin/views/tab-main.php:103
554
+ msgid "Set featured image in posts:"
555
+ msgstr ""
556
+
557
+ #: admin/views/tab-main.php:164
558
+ msgid "Delete featured image in posts:"
559
+ msgstr ""
560
+
561
+ #: admin/views/sources/google.php:40
562
+ msgid "No hits"
563
+ msgstr ""
564
+
565
+ #: admin/views/sources/google.php:156
566
+ msgid "Search..."
567
+ msgstr ""
568
+
569
+ #: admin/views/sources/google.php:158
570
+ msgid "Search"
571
+ msgstr ""
572
+
573
+ #: admin/views/sources/google.php:165
574
+ msgid "Prev"
575
+ msgstr ""
576
+
577
+ #: admin/views/sources/google.php:168
578
+ msgid "Next"
579
+ msgstr ""
580
+
581
+ #: admin/views/sources/google.php:177
582
+ msgid "API key is missing. Add it in APT settings"
583
+ msgstr ""
584
+
585
+ #. Description of the plugin
586
+ msgid ""
587
+ "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
588
+ "first image in post (or any custom post type) only if Post Thumbnail is not "
589
+ "set manually."
590
+ msgstr ""
591
+
592
+ #. URI of the plugin
593
+ msgid "https://cm-wp.com/apt"
594
+ msgstr ""
595
+
596
+ #. Author of the plugin
597
+ msgid "Creativemotion <support@cm-wp.com>"
598
+ msgstr ""
599
+
600
+ #. Author URI of the plugin
601
+ msgid "cm-wp.com"
602
+ msgstr ""
libs/factory/adverts/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Adverts_103\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -20,31 +20,31 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  exit;
21
  }
22
 
23
- if ( defined( 'FACTORY_ADVERTS_103_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
- define( 'FACTORY_ADVERTS_103_LOADED', true );
29
 
30
  # Устанавливаем версию модуля
31
- define( 'FACTORY_ADVERTS_103_VERSION', '1.0.3' );
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
- load_plugin_textdomain( 'wbcr_factory_adverts_103', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
35
 
36
  # Устанавливаем директорию модуля
37
- define( 'FACTORY_ADVERTS_103_DIR', dirname( __FILE__ ) );
38
 
39
  # Устанавливаем url модуля
40
- define( 'FACTORY_ADVERTS_103_URL', plugins_url( null, __FILE__ ) );
41
 
42
- require_once( FACTORY_ADVERTS_103_DIR . '/includes/class-rest-request.php' );
43
- require_once( FACTORY_ADVERTS_103_DIR . '/includes/class-base.php' );
44
 
45
  /**
46
- * @param Wbcr_Factory421_Plugin $plugin
47
  */
48
- add_action( 'wbcr_factory_adverts_103_plugin_created', function ( $plugin ) {
49
- $plugin->set_adverts_manager( "WBCR\Factory_Adverts_103\Base" );
50
  } );
1
  <?php
2
 
3
+ use WBCR\Factory_Adverts_106\Base;
4
 
5
  /**
6
  * Factory Adverts
20
  exit;
21
  }
22
 
23
+ if ( defined( 'FACTORY_ADVERTS_106_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
+ define( 'FACTORY_ADVERTS_106_LOADED', true );
29
 
30
  # Устанавливаем версию модуля
31
+ define( 'FACTORY_ADVERTS_106_VERSION', '1.0.6' );
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
+ load_plugin_textdomain( 'wbcr_factory_adverts_106', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
35
 
36
  # Устанавливаем директорию модуля
37
+ define( 'FACTORY_ADVERTS_106_DIR', dirname( __FILE__ ) );
38
 
39
  # Устанавливаем url модуля
40
+ define( 'FACTORY_ADVERTS_106_URL', plugins_url( null, __FILE__ ) );
41
 
42
+ require_once( FACTORY_ADVERTS_106_DIR . '/includes/class-rest-request.php' );
43
+ require_once( FACTORY_ADVERTS_106_DIR . '/includes/class-base.php' );
44
 
45
  /**
46
+ * @param Wbcr_Factory425_Plugin $plugin
47
  */
48
+ add_action( 'wbcr_factory_adverts_106_plugin_created', function ( $plugin ) {
49
+ $plugin->set_adverts_manager( "WBCR\Factory_Adverts_106\Base" );
50
  } );
libs/factory/adverts/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_103;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -28,7 +28,7 @@ class Base {
28
  *
29
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
30
  * @since 1.0.1
31
- * @var \Wbcr_Factory421_Plugin
32
  */
33
  private $plugin;
34
 
@@ -53,7 +53,7 @@ class Base {
53
  *
54
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
55
  * @since 1.0.1
56
- * @var \WBCR\Factory_Adverts_103\Creative_Motion_API
57
  */
58
  private $api;
59
 
@@ -82,9 +82,9 @@ class Base {
82
  *
83
  * @since 1.0.0 Added
84
  *
85
- * @param \Wbcr_Factory421_Plugin $plugin
86
  */
87
- public function __construct( \Wbcr_Factory421_Plugin $plugin, $settings ) {
88
  $this->plugin = $plugin;
89
 
90
  $this->settings = wp_parse_args( $settings, [
@@ -257,7 +257,7 @@ class Base {
257
  $content = $this->get_debug_message( 'dashboard_widget' );
258
  }
259
 
260
- require_once FACTORY_ADVERTS_103_DIR . '/includes/class-dashboard-widget.php';
261
  new Dashboard_Widget( $this->plugin, $content );
262
  }
263
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_106;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
28
  *
29
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
30
  * @since 1.0.1
31
+ * @var \Wbcr_Factory425_Plugin
32
  */
33
  private $plugin;
34
 
53
  *
54
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
55
  * @since 1.0.1
56
+ * @var \WBCR\Factory_Adverts_106\Creative_Motion_API
57
  */
58
  private $api;
59
 
82
  *
83
  * @since 1.0.0 Added
84
  *
85
+ * @param \Wbcr_Factory425_Plugin $plugin
86
  */
87
+ public function __construct( \Wbcr_Factory425_Plugin $plugin, $settings ) {
88
  $this->plugin = $plugin;
89
 
90
  $this->settings = wp_parse_args( $settings, [
257
  $content = $this->get_debug_message( 'dashboard_widget' );
258
  }
259
 
260
+ require_once FACTORY_ADVERTS_106_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_103;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -35,7 +35,7 @@ class Dashboard_Widget {
35
  *
36
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
37
  * @since 1.0.1
38
- * @var \Wbcr_Factory421_Plugin
39
  */
40
  private $plugin;
41
 
@@ -46,10 +46,10 @@ class Dashboard_Widget {
46
  *
47
  * @since 1.0.0 Added
48
  *
49
- * @param \Wbcr_Factory421_Plugin $plugin
50
  * @param string $content
51
  */
52
- public function __construct( \Wbcr_Factory421_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_106;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
35
  *
36
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
37
  * @since 1.0.1
38
+ * @var \Wbcr_Factory425_Plugin
39
  */
40
  private $plugin;
41
 
46
  *
47
  * @since 1.0.0 Added
48
  *
49
+ * @param \Wbcr_Factory425_Plugin $plugin
50
  * @param string $content
51
  */
52
+ public function __construct( \Wbcr_Factory425_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
libs/factory/adverts/includes/class-rest-request.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_103;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -65,7 +65,7 @@ class Creative_Motion_API {
65
  *
66
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
67
  * @since 1.0.1
68
- * @var \Wbcr_Factory421_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_Factory421_Plugin $plugin_name
81
  */
82
- public function __construct( \Wbcr_Factory421_Plugin $plugin ) {
83
  $this->plugin = $plugin;
84
  }
85
 
@@ -125,7 +125,7 @@ class Creative_Motion_API {
125
  return $this->do_api_request( $position );
126
  }
127
 
128
- $key = $this->plugin->getPrefix() . md5( $position . 'advert_transient_' );
129
 
130
  $cached = get_transient( $key );
131
 
@@ -133,7 +133,7 @@ class Creative_Motion_API {
133
  if ( isset( $cached['error_code'] ) && isset( $cached['error'] ) ) {
134
  return new \WP_Error( $cached['error_code'], $cached['error'] );
135
  }
136
-
137
  return $cached;
138
  }
139
 
@@ -147,8 +147,8 @@ class Creative_Motion_API {
147
 
148
  return $data;
149
  }
150
-
151
- set_transient( $key, $data, $data['expires'] );
152
 
153
  return $data;
154
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_106;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
65
  *
66
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
67
  * @since 1.0.1
68
+ * @var \Wbcr_Factory425_Plugin
69
  */
70
  private $plugin;
71
 
77
  *
78
  * @since 1.0.0 Added
79
  *
80
+ * @param \Wbcr_Factory425_Plugin $plugin_name
81
  */
82
+ public function __construct( \Wbcr_Factory425_Plugin $plugin ) {
83
  $this->plugin = $plugin;
84
  }
85
 
125
  return $this->do_api_request( $position );
126
  }
127
 
128
+ $key = $this->plugin->getPrefix() . md5( $position . 'adverts_transient_' );
129
 
130
  $cached = get_transient( $key );
131
 
133
  if ( isset( $cached['error_code'] ) && isset( $cached['error'] ) ) {
134
  return new \WP_Error( $cached['error_code'], $cached['error'] );
135
  }
136
+
137
  return $cached;
138
  }
139
 
147
 
148
  return $data;
149
  }
150
+
151
+ set_transient( $key, $data, self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS );
152
 
153
  return $data;
154
  }
libs/factory/adverts/langs/wbcr_factory_adverts_106-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_106-ru_RU.po ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: factory_forms\n"
4
+ "POT-Creation-Date: 2018-10-16 22:44+0300\n"
5
+ "PO-Revision-Date: 2018-10-16 22:45+0300\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: ru_RU\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+
20
+ #: includes/check-compatibility.php:80
21
+ msgid "warning"
22
+ msgstr "предупреждение"
23
+
24
+ #: includes/check-compatibility.php:82
25
+ #, php-format
26
+ msgid "The %s plugin has stopped."
27
+ msgstr "Работа плагина %s была остановлена."
28
+
29
+ #: includes/check-compatibility.php:83
30
+ msgid "Possible reasons:"
31
+ msgstr "Возможные причины:"
32
+
33
+ #: includes/check-compatibility.php:89
34
+ #, php-format
35
+ msgid "You need to update the PHP version to %s or higher!"
36
+ msgstr "Вам нужно обновить версию PHP до %s или выше!"
37
+
38
+ #: includes/check-compatibility.php:94
39
+ #, php-format
40
+ msgid "You need to update WordPress to %s or higher!"
41
+ msgstr "Вам нужно обновить WordPress до %s или выше!"
42
+
43
+ #: includes/functions.php:132
44
+ #, php-format
45
+ msgid ""
46
+ "%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead."
47
+ msgstr ""
48
+ "%1$s является <strong>устаревшим,</strong> начиная с версии %2$s в "
49
+ "Wordpress! Используйте %3$s."
50
+
51
+ #: includes/functions.php:134
52
+ #, php-format
53
+ msgid ""
54
+ "%1$s is <strong>deprecated</strong> since version %2$s with no alternative "
55
+ "available."
56
+ msgstr ""
57
+ "%1$s был вызван с параметром, который является <strong>устаревшими</strong> "
58
+ "начиная с версии %2$s , в настоящее время доступных альтернатив нет."
59
+
60
+ #: includes/plugin.class.php:202 includes/plugin.class.php:237
61
+ msgid ""
62
+ "You are trying to call this earlier than the plugin menu will be registered."
63
+ msgstr ""
64
+ "Вы пытаетесь вызвать это раньше, чем будет зарегистрировано меню плагина."
65
+
66
+ #: includes/plugin.class.php:220
67
+ msgid ""
68
+ "You are trying to get a link to a page that does not have multisite mode. "
69
+ "Clicking this link will lead the user to a non-existent page."
70
+ msgstr ""
71
+ "Вы пытаетесь получить ссылку на страницу, которая не имеет "
72
+ "многопользовательского режима. Щелчок по этой ссылке приведет пользователя "
73
+ "к несуществующей странице."
74
+
75
+ #: includes/plugin.class.php:222
76
+ msgid ""
77
+ "Trying to get a link to an unregistered page. You are trying to call this "
78
+ "earlier than the plugin menu will be registered."
79
+ msgstr ""
80
+ "Попытка получить ссылку на незарегистрированную страницу. Вы пытаетесь "
81
+ "вызвать это раньше, чем будет зарегистрировано меню плагина."
82
+
83
+
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-422 .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-422 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-422 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-422 .factory-accordion-item{display:none}.factory-bootstrap-422 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-422 .factory-accordion>h3.active:hover{cursor:default}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-426 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-426 .factory-accordion-item{display:none}.factory-bootstrap-426 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-426 .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-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .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-422 .btn-primary:disabled,.factory-bootstrap-422 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-422 .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-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .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-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-426 .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-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .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-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .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-422 .btn-primary:disabled,.factory-bootstrap-422 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-422 .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-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .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-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-426 .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-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .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-422 article,.factory-bootstrap-422 aside,.factory-bootstrap-422 details,.factory-bootstrap-422 figcaption,.factory-bootstrap-422 figure,.factory-bootstrap-422 footer,.factory-bootstrap-422 header,.factory-bootstrap-422 hgroup,.factory-bootstrap-422 main,.factory-bootstrap-422 nav,.factory-bootstrap-422 section,.factory-bootstrap-422 summary{display:block}.factory-bootstrap-422 audio,.factory-bootstrap-422 canvas,.factory-bootstrap-422 video{display:inline-block}.factory-bootstrap-422 audio:not([controls]){display:none;height:0}.factory-bootstrap-422 [hidden],.factory-bootstrap-422 template{display:none}.factory-bootstrap-422 body{margin:0}.factory-bootstrap-422 a{background:0 0}.factory-bootstrap-422 a:focus{outline:thin dotted}.factory-bootstrap-422 a:active,.factory-bootstrap-422 a:hover{outline:0}.factory-bootstrap-422 h1{margin:.67em 0}.factory-bootstrap-422 b,.factory-bootstrap-422 strong{font-weight:700}.factory-bootstrap-422 dfn{font-style:italic}.factory-bootstrap-422 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-422 mark{color:#000;background:#ff0}.factory-bootstrap-422 code,.factory-bootstrap-422 kbd,.factory-bootstrap-422 pre,.factory-bootstrap-422 samp{font-size:1em}.factory-bootstrap-422 pre{white-space:pre-wrap}.factory-bootstrap-422 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-422 sub,.factory-bootstrap-422 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-422 sup{top:-.5em}.factory-bootstrap-422 sub{bottom:-.25em}.factory-bootstrap-422 img{border:0}.factory-bootstrap-422 svg:not(:root){overflow:hidden}.factory-bootstrap-422 figure{margin:0}.factory-bootstrap-422 button,.factory-bootstrap-422 input,.factory-bootstrap-422 select,.factory-bootstrap-422 textarea{margin:0}.factory-bootstrap-422 button,.factory-bootstrap-422 select{text-transform:none}.factory-bootstrap-422 select{padding-right:4px!important}.factory-bootstrap-422 button,.factory-bootstrap-422 input[type=reset],.factory-bootstrap-422 input[type=submit],html .factory-bootstrap-422 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-422 button[disabled],html .factory-bootstrap-422 input[disabled]{cursor:default}.factory-bootstrap-422 input[type=checkbox],.factory-bootstrap-422 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-422 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-422 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-422 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-422 button::-moz-focus-inner,.factory-bootstrap-422 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-422 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-422 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-422 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-422 a,.factory-bootstrap-422 a:visited{text-decoration:underline}.factory-bootstrap-422 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-422 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-422 a[href^="javascript:"]:after,.factory-bootstrap-422 a[href^="#"]:after{content:""}.factory-bootstrap-422 blockquote,.factory-bootstrap-422 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-422 thead{display:table-header-group}.factory-bootstrap-422 img,.factory-bootstrap-422 tr{page-break-inside:avoid}.factory-bootstrap-422 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-422 h2,.factory-bootstrap-422 h3,.factory-bootstrap-422 p{orphans:3;widows:3}.factory-bootstrap-422 h2,.factory-bootstrap-422 h3{page-break-after:avoid}.factory-bootstrap-422 select{background:#fff!important}.factory-bootstrap-422 .navbar{display:none}.factory-bootstrap-422 .table td,.factory-bootstrap-422 .table th{background-color:#fff!important}.factory-bootstrap-422 .btn>.caret,.factory-bootstrap-422 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-422 .label{border:1px solid #000}.factory-bootstrap-422 .table{border-collapse:collapse!important}.factory-bootstrap-422 .table-bordered td,.factory-bootstrap-422 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-422 *,.factory-bootstrap-422 :after,.factory-bootstrap-422 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-422{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-422 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-422 button,.factory-bootstrap-422 input,.factory-bootstrap-422 select,.factory-bootstrap-422 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-422 img{vertical-align:middle}.factory-bootstrap-422 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-422 .img-rounded{border-radius:6px}.factory-bootstrap-422 .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-422 .img-circle{border-radius:50%}.factory-bootstrap-422 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-422 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-422 .h1,.factory-bootstrap-422 .h2,.factory-bootstrap-422 .h3,.factory-bootstrap-422 .h4,.factory-bootstrap-422 .h5,.factory-bootstrap-422 .h6,.factory-bootstrap-422 h1,.factory-bootstrap-422 h2,.factory-bootstrap-422 h3,.factory-bootstrap-422 h4,.factory-bootstrap-422 h5,.factory-bootstrap-422 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-422 .h1 .small,.factory-bootstrap-422 .h1 small,.factory-bootstrap-422 .h2 .small,.factory-bootstrap-422 .h2 small,.factory-bootstrap-422 .h3 .small,.factory-bootstrap-422 .h3 small,.factory-bootstrap-422 .h4 .small,.factory-bootstrap-422 .h4 small,.factory-bootstrap-422 .h5 .small,.factory-bootstrap-422 .h5 small,.factory-bootstrap-422 .h6 .small,.factory-bootstrap-422 .h6 small,.factory-bootstrap-422 h1 .small,.factory-bootstrap-422 h1 small,.factory-bootstrap-422 h2 .small,.factory-bootstrap-422 h2 small,.factory-bootstrap-422 h3 .small,.factory-bootstrap-422 h3 small,.factory-bootstrap-422 h4 .small,.factory-bootstrap-422 h4 small,.factory-bootstrap-422 h5 .small,.factory-bootstrap-422 h5 small,.factory-bootstrap-422 h6 .small,.factory-bootstrap-422 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-422 h1,.factory-bootstrap-422 h2,.factory-bootstrap-422 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-422 h1 .small,.factory-bootstrap-422 h1 small,.factory-bootstrap-422 h2 .small,.factory-bootstrap-422 h2 small,.factory-bootstrap-422 h3 .small,.factory-bootstrap-422 h3 small{font-size:65%}.factory-bootstrap-422 h4,.factory-bootstrap-422 h5,.factory-bootstrap-422 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-422 h4 .small,.factory-bootstrap-422 h4 small,.factory-bootstrap-422 h5 .small,.factory-bootstrap-422 h5 small,.factory-bootstrap-422 h6 .small,.factory-bootstrap-422 h6 small{font-size:75%}.factory-bootstrap-422 .h1,.factory-bootstrap-422 h1{font-size:36px}.factory-bootstrap-422 .h2,.factory-bootstrap-422 h2{font-size:30px}.factory-bootstrap-422 .h3,.factory-bootstrap-422 h3{font-size:24px}.factory-bootstrap-422 .h4,.factory-bootstrap-422 h4{font-size:18px}.factory-bootstrap-422 .h5,.factory-bootstrap-422 h5{font-size:14px}.factory-bootstrap-422 .h6,.factory-bootstrap-422 h6{font-size:12px}.factory-bootstrap-422 p{margin:0 0 10px}.factory-bootstrap-422 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-422 .small,.factory-bootstrap-422 small{font-size:85%}.factory-bootstrap-422 cite{font-style:normal}.factory-bootstrap-422 .text-muted{color:#999}.factory-bootstrap-422 .text-primary{color:#428bca}.factory-bootstrap-422 .text-primary:hover{color:#3071a9}.factory-bootstrap-422 .text-warning{color:#8a6d3b}.factory-bootstrap-422 .text-warning:hover{color:#66512c}.factory-bootstrap-422 .text-danger{color:#a94442}.factory-bootstrap-422 .text-danger:hover{color:#843534}.factory-bootstrap-422 .text-success{color:#3c763d}.factory-bootstrap-422 .text-success:hover{color:#2b542c}.factory-bootstrap-422 .text-info{color:#31708f}.factory-bootstrap-422 .text-info:hover{color:#245269}.factory-bootstrap-422 .text-left{text-align:left}.factory-bootstrap-422 .text-right{text-align:right}.factory-bootstrap-422 .text-center{text-align:center}.factory-bootstrap-422 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-422 ol,.factory-bootstrap-422 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-422 ol ol,.factory-bootstrap-422 ol ul,.factory-bootstrap-422 ul ol,.factory-bootstrap-422 ul ul{margin-bottom:0}.factory-bootstrap-422 .list-inline,.factory-bootstrap-422 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-422 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-422 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-422 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-422 dd,.factory-bootstrap-422 dt{line-height:1.428571429}.factory-bootstrap-422 dt{font-weight:700}.factory-bootstrap-422 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-422 abbr[data-original-title],.factory-bootstrap-422 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-422 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-422 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-422 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-422 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-422 blockquote .small,.factory-bootstrap-422 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-422 blockquote .small:before,.factory-bootstrap-422 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-422 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-422 blockquote.pull-right .small,.factory-bootstrap-422 blockquote.pull-right p,.factory-bootstrap-422 blockquote.pull-right small{text-align:right}.factory-bootstrap-422 blockquote.pull-right .small:before,.factory-bootstrap-422 blockquote.pull-right small:before{content:''}.factory-bootstrap-422 blockquote.pull-right .small:after,.factory-bootstrap-422 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-422 blockquote:after,.factory-bootstrap-422 blockquote:before{content:""}.factory-bootstrap-422 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-422 code,.factory-bootstrap-422 kbd,.factory-bootstrap-422 pre,.factory-bootstrap-422 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-422 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-422 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-422 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-422 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-422 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-422 .container:after,.factory-bootstrap-422 .container:before{display:table;content:" "}.factory-bootstrap-422 .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-422 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-422 .row:after,.factory-bootstrap-422 .row:before{display:table;content:" "}.factory-bootstrap-422 .row:after{clear:both}.factory-bootstrap-422 .col-lg-1,.factory-bootstrap-422 .col-lg-10,.factory-bootstrap-422 .col-lg-11,.factory-bootstrap-422 .col-lg-12,.factory-bootstrap-422 .col-lg-2,.factory-bootstrap-422 .col-lg-3,.factory-bootstrap-422 .col-lg-4,.factory-bootstrap-422 .col-lg-5,.factory-bootstrap-422 .col-lg-6,.factory-bootstrap-422 .col-lg-7,.factory-bootstrap-422 .col-lg-8,.factory-bootstrap-422 .col-lg-9,.factory-bootstrap-422 .col-md-1,.factory-bootstrap-422 .col-md-10,.factory-bootstrap-422 .col-md-11,.factory-bootstrap-422 .col-md-12,.factory-bootstrap-422 .col-md-2,.factory-bootstrap-422 .col-md-3,.factory-bootstrap-422 .col-md-4,.factory-bootstrap-422 .col-md-5,.factory-bootstrap-422 .col-md-6,.factory-bootstrap-422 .col-md-7,.factory-bootstrap-422 .col-md-8,.factory-bootstrap-422 .col-md-9,.factory-bootstrap-422 .col-sm-1,.factory-bootstrap-422 .col-sm-10,.factory-bootstrap-422 .col-sm-11,.factory-bootstrap-422 .col-sm-12,.factory-bootstrap-422 .col-sm-2,.factory-bootstrap-422 .col-sm-3,.factory-bootstrap-422 .col-sm-4,.factory-bootstrap-422 .col-sm-5,.factory-bootstrap-422 .col-sm-6,.factory-bootstrap-422 .col-sm-7,.factory-bootstrap-422 .col-sm-8,.factory-bootstrap-422 .col-sm-9,.factory-bootstrap-422 .col-xs-1,.factory-bootstrap-422 .col-xs-10,.factory-bootstrap-422 .col-xs-11,.factory-bootstrap-422 .col-xs-12,.factory-bootstrap-422 .col-xs-2,.factory-bootstrap-422 .col-xs-3,.factory-bootstrap-422 .col-xs-4,.factory-bootstrap-422 .col-xs-5,.factory-bootstrap-422 .col-xs-6,.factory-bootstrap-422 .col-xs-7,.factory-bootstrap-422 .col-xs-8,.factory-bootstrap-422 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-422 .col-xs-1,.factory-bootstrap-422 .col-xs-10,.factory-bootstrap-422 .col-xs-11,.factory-bootstrap-422 .col-xs-12,.factory-bootstrap-422 .col-xs-2,.factory-bootstrap-422 .col-xs-3,.factory-bootstrap-422 .col-xs-4,.factory-bootstrap-422 .col-xs-5,.factory-bootstrap-422 .col-xs-6,.factory-bootstrap-422 .col-xs-7,.factory-bootstrap-422 .col-xs-8,.factory-bootstrap-422 .col-xs-9{float:left}.factory-bootstrap-422 .col-xs-12{width:100%}.factory-bootstrap-422 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-422 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-422 .col-xs-9{width:75%}.factory-bootstrap-422 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-422 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-422 .col-xs-6{width:50%}.factory-bootstrap-422 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-422 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-422 .col-xs-3{width:25%}.factory-bootstrap-422 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-422 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-422 .col-xs-pull-12{right:100%}.factory-bootstrap-422 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-422 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-422 .col-xs-pull-9{right:75%}.factory-bootstrap-422 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-422 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-422 .col-xs-pull-6{right:50%}.factory-bootstrap-422 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-422 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-422 .col-xs-pull-3{right:25%}.factory-bootstrap-422 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-422 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-422 .col-xs-pull-0{right:0}.factory-bootstrap-422 .col-xs-push-12{left:100%}.factory-bootstrap-422 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-422 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-422 .col-xs-push-9{left:75%}.factory-bootstrap-422 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-422 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-422 .col-xs-push-6{left:50%}.factory-bootstrap-422 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-422 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-422 .col-xs-push-3{left:25%}.factory-bootstrap-422 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-422 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-422 .col-xs-push-0{left:0}.factory-bootstrap-422 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-422 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-422 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-422 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-422 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-422 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-422 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-422 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-422 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-422 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-422 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-422 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-422 .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-422 table{max-width:100%;background-color:transparent}.factory-bootstrap-422 th{text-align:left}.factory-bootstrap-422 .table{width:100%;margin-bottom:20px}.factory-bootstrap-422 .table>tbody>tr>td,.factory-bootstrap-422 .table>tbody>tr>th,.factory-bootstrap-422 .table>tfoot>tr>td,.factory-bootstrap-422 .table>tfoot>tr>th,.factory-bootstrap-422 .table>thead>tr>td,.factory-bootstrap-422 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-422 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-422 .table>caption+thead>tr:first-child>td,.factory-bootstrap-422 .table>caption+thead>tr:first-child>th,.factory-bootstrap-422 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-422 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-422 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-422 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-422 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-422 .table .table{background-color:#fff}.factory-bootstrap-422 .table-condensed>tbody>tr>td,.factory-bootstrap-422 .table-condensed>tbody>tr>th,.factory-bootstrap-422 .table-condensed>tfoot>tr>td,.factory-bootstrap-422 .table-condensed>tfoot>tr>th,.factory-bootstrap-422 .table-condensed>thead>tr>td,.factory-bootstrap-422 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-422 .table-bordered,.factory-bootstrap-422 .table-bordered>tbody>tr>td,.factory-bootstrap-422 .table-bordered>tbody>tr>th,.factory-bootstrap-422 .table-bordered>tfoot>tr>td,.factory-bootstrap-422 .table-bordered>tfoot>tr>th,.factory-bootstrap-422 .table-bordered>thead>tr>td,.factory-bootstrap-422 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-422 .table-bordered>thead>tr>td,.factory-bootstrap-422 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-422 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-422 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-422 .table-hover>tbody>tr:hover>td,.factory-bootstrap-422 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-422 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-422 table td[class*=col-],.factory-bootstrap-422 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-422 .table>tbody>.active>td,.factory-bootstrap-422 .table>tbody>.active>th,.factory-bootstrap-422 .table>tbody>tr>.active,.factory-bootstrap-422 .table>tfoot>.active>td,.factory-bootstrap-422 .table>tfoot>.active>th,.factory-bootstrap-422 .table>tfoot>tr>.active,.factory-bootstrap-422 .table>thead>.active>td,.factory-bootstrap-422 .table>thead>.active>th,.factory-bootstrap-422 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-422 .table-hover>tbody>.active:hover>td,.factory-bootstrap-422 .table-hover>tbody>.active:hover>th,.factory-bootstrap-422 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-422 .table>tbody>.success>td,.factory-bootstrap-422 .table>tbody>.success>th,.factory-bootstrap-422 .table>tbody>tr>.success,.factory-bootstrap-422 .table>tfoot>.success>td,.factory-bootstrap-422 .table>tfoot>.success>th,.factory-bootstrap-422 .table>tfoot>tr>.success,.factory-bootstrap-422 .table>thead>.success>td,.factory-bootstrap-422 .table>thead>.success>th,.factory-bootstrap-422 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-422 .table-hover>tbody>.success:hover>td,.factory-bootstrap-422 .table-hover>tbody>.success:hover>th,.factory-bootstrap-422 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-422 .table>tbody>.danger>td,.factory-bootstrap-422 .table>tbody>.danger>th,.factory-bootstrap-422 .table>tbody>tr>.danger,.factory-bootstrap-422 .table>tfoot>.danger>td,.factory-bootstrap-422 .table>tfoot>.danger>th,.factory-bootstrap-422 .table>tfoot>tr>.danger,.factory-bootstrap-422 .table>thead>.danger>td,.factory-bootstrap-422 .table>thead>.danger>th,.factory-bootstrap-422 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-422 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-422 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-422 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-422 .table>tbody>.warning>td,.factory-bootstrap-422 .table>tbody>.warning>th,.factory-bootstrap-422 .table>tbody>tr>.warning,.factory-bootstrap-422 .table>tfoot>.warning>td,.factory-bootstrap-422 .table>tfoot>.warning>th,.factory-bootstrap-422 .table>tfoot>tr>.warning,.factory-bootstrap-422 .table>thead>.warning>td,.factory-bootstrap-422 .table>thead>.warning>th,.factory-bootstrap-422 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-422 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-422 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-422 .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-422 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-422 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-422 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-422 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-422 input[type=checkbox],.factory-bootstrap-422 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-422 input[type=file]{display:block}.factory-bootstrap-422 select[multiple],.factory-bootstrap-422 select[size]{height:auto}.factory-bootstrap-422 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-422 input[type=checkbox]:focus,.factory-bootstrap-422 input[type=file]:focus,.factory-bootstrap-422 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-422 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-422 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-422 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-422 .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-422 .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-422 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-422 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-422 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-422 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-422 .form-control[disabled],.factory-bootstrap-422 .form-control[readonly],.factory-bootstrap-422 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-422 textarea.form-control{height:auto}.factory-bootstrap-422 .form-group{margin-bottom:15px}.factory-bootstrap-422 .checkbox,.factory-bootstrap-422 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-422 .checkbox label,.factory-bootstrap-422 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-422 .checkbox input[type=checkbox],.factory-bootstrap-422 .checkbox-inline input[type=checkbox],.factory-bootstrap-422 .radio input[type=radio],.factory-bootstrap-422 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-422 .checkbox+.checkbox,.factory-bootstrap-422 .radio+.radio{margin-top:-5px}.factory-bootstrap-422 .checkbox-inline,.factory-bootstrap-422 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-422 .checkbox-inline+.checkbox-inline,.factory-bootstrap-422 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-422 .checkbox-inline[disabled],.factory-bootstrap-422 .checkbox[disabled],.factory-bootstrap-422 .radio-inline[disabled],.factory-bootstrap-422 .radio[disabled],.factory-bootstrap-422 fieldset[disabled] .checkbox,.factory-bootstrap-422 fieldset[disabled] .checkbox-inline,.factory-bootstrap-422 fieldset[disabled] .radio,.factory-bootstrap-422 fieldset[disabled] .radio-inline,.factory-bootstrap-422 fieldset[disabled] input[type=checkbox],.factory-bootstrap-422 fieldset[disabled] input[type=radio],.factory-bootstrap-422 input[type=checkbox][disabled],.factory-bootstrap-422 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-422 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-422 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-422 textarea.input-sm{height:auto}.factory-bootstrap-422 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-422 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-422 textarea.input-lg{height:auto}.factory-bootstrap-422 .has-warning .checkbox,.factory-bootstrap-422 .has-warning .checkbox-inline,.factory-bootstrap-422 .has-warning .control-label,.factory-bootstrap-422 .has-warning .help-block,.factory-bootstrap-422 .has-warning .radio,.factory-bootstrap-422 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-422 .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-422 .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-422 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-422 .has-error .checkbox,.factory-bootstrap-422 .has-error .checkbox-inline,.factory-bootstrap-422 .has-error .control-label,.factory-bootstrap-422 .has-error .help-block,.factory-bootstrap-422 .has-error .radio,.factory-bootstrap-422 .has-error .radio-inline{color:#a94442}.factory-bootstrap-422 .controls{display:block}.factory-bootstrap-422 .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-422 .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-422 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-422 .has-success .checkbox,.factory-bootstrap-422 .has-success .checkbox-inline,.factory-bootstrap-422 .has-success .control-label,.factory-bootstrap-422 .has-success .help-block,.factory-bootstrap-422 .has-success .radio,.factory-bootstrap-422 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-422 .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-422 .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-422 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-422 .form-control-static{margin-bottom:0}.factory-bootstrap-422 .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-422 .form-horizontal .checkbox,.factory-bootstrap-422 .form-horizontal .checkbox-inline,.factory-bootstrap-422 .form-horizontal .control-label,.factory-bootstrap-422 .form-horizontal .radio,.factory-bootstrap-422 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-422 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-422 .form-horizontal .checkbox,.factory-bootstrap-422 .form-horizontal .radio{min-height:27px}.factory-bootstrap-422 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-422 .form-horizontal .form-group:after,.factory-bootstrap-422 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-422 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-422 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-422 .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-422 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-422 .btn{text-decoration:none}.factory-bootstrap-422 .btn:focus,.factory-bootstrap-422 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-422 .btn.disabled,.factory-bootstrap-422 .btn[disabled],.factory-bootstrap-422 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-422 .btn-default.active,.factory-bootstrap-422 .btn-default:active,.factory-bootstrap-422 .btn-default:focus,.factory-bootstrap-422 .btn-default:hover,.factory-bootstrap-422 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-422 .btn-default.active,.factory-bootstrap-422 .btn-default:active,.factory-bootstrap-422 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-422 .btn-default.disabled,.factory-bootstrap-422 .btn-default.disabled.active,.factory-bootstrap-422 .btn-default.disabled:active,.factory-bootstrap-422 .btn-default.disabled:focus,.factory-bootstrap-422 .btn-default.disabled:hover,.factory-bootstrap-422 .btn-default[disabled],.factory-bootstrap-422 .btn-default[disabled].active,.factory-bootstrap-422 .btn-default[disabled]:active,.factory-bootstrap-422 .btn-default[disabled]:focus,.factory-bootstrap-422 .btn-default[disabled]:hover,.factory-bootstrap-422 fieldset[disabled] .btn-default,.factory-bootstrap-422 fieldset[disabled] .btn-default.active,.factory-bootstrap-422 fieldset[disabled] .btn-default:active,.factory-bootstrap-422 fieldset[disabled] .btn-default:focus,.factory-bootstrap-422 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-422 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-422 .btn-primary.active,.factory-bootstrap-422 .btn-primary:active,.factory-bootstrap-422 .btn-primary:focus,.factory-bootstrap-422 .btn-primary:hover,.factory-bootstrap-422 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-422 .btn-primary.active,.factory-bootstrap-422 .btn-primary:active,.factory-bootstrap-422 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-422 .btn-primary.disabled,.factory-bootstrap-422 .btn-primary.disabled.active,.factory-bootstrap-422 .btn-primary.disabled:active,.factory-bootstrap-422 .btn-primary.disabled:focus,.factory-bootstrap-422 .btn-primary.disabled:hover,.factory-bootstrap-422 .btn-primary[disabled],.factory-bootstrap-422 .btn-primary[disabled].active,.factory-bootstrap-422 .btn-primary[disabled]:active,.factory-bootstrap-422 .btn-primary[disabled]:focus,.factory-bootstrap-422 .btn-primary[disabled]:hover,.factory-bootstrap-422 fieldset[disabled] .btn-primary,.factory-bootstrap-422 fieldset[disabled] .btn-primary.active,.factory-bootstrap-422 fieldset[disabled] .btn-primary:active,.factory-bootstrap-422 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-422 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-422 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-422 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-422 .btn-warning.active,.factory-bootstrap-422 .btn-warning:active,.factory-bootstrap-422 .btn-warning:focus,.factory-bootstrap-422 .btn-warning:hover,.factory-bootstrap-422 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-422 .btn-warning.active,.factory-bootstrap-422 .btn-warning:active,.factory-bootstrap-422 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-422 .btn-warning.disabled,.factory-bootstrap-422 .btn-warning.disabled.active,.factory-bootstrap-422 .btn-warning.disabled:active,.factory-bootstrap-422 .btn-warning.disabled:focus,.factory-bootstrap-422 .btn-warning.disabled:hover,.factory-bootstrap-422 .btn-warning[disabled],.factory-bootstrap-422 .btn-warning[disabled].active,.factory-bootstrap-422 .btn-warning[disabled]:active,.factory-bootstrap-422 .btn-warning[disabled]:focus,.factory-bootstrap-422 .btn-warning[disabled]:hover,.factory-bootstrap-422 fieldset[disabled] .btn-warning,.factory-bootstrap-422 fieldset[disabled] .btn-warning.active,.factory-bootstrap-422 fieldset[disabled] .btn-warning:active,.factory-bootstrap-422 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-422 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-422 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-422 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-422 .btn-success.active,.factory-bootstrap-422 .btn-success:active,.factory-bootstrap-422 .btn-success:focus,.factory-bootstrap-422 .btn-success:hover,.factory-bootstrap-422 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-422 .btn-success.active,.factory-bootstrap-422 .btn-success:active,.factory-bootstrap-422 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-422 .btn-success.disabled,.factory-bootstrap-422 .btn-success.disabled.active,.factory-bootstrap-422 .btn-success.disabled:active,.factory-bootstrap-422 .btn-success.disabled:focus,.factory-bootstrap-422 .btn-success.disabled:hover,.factory-bootstrap-422 .btn-success[disabled],.factory-bootstrap-422 .btn-success[disabled].active,.factory-bootstrap-422 .btn-success[disabled]:active,.factory-bootstrap-422 .btn-success[disabled]:focus,.factory-bootstrap-422 .btn-success[disabled]:hover,.factory-bootstrap-422 fieldset[disabled] .btn-success,.factory-bootstrap-422 fieldset[disabled] .btn-success.active,.factory-bootstrap-422 fieldset[disabled] .btn-success:active,.factory-bootstrap-422 fieldset[disabled] .btn-success:focus,.factory-bootstrap-422 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-422 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-422 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-422 .btn-info.active,.factory-bootstrap-422 .btn-info:active,.factory-bootstrap-422 .btn-info:focus,.factory-bootstrap-422 .btn-info:hover,.factory-bootstrap-422 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-422 .btn-info.active,.factory-bootstrap-422 .btn-info:active,.factory-bootstrap-422 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-422 .btn-info.disabled,.factory-bootstrap-422 .btn-info.disabled.active,.factory-bootstrap-422 .btn-info.disabled:active,.factory-bootstrap-422 .btn-info.disabled:focus,.factory-bootstrap-422 .btn-info.disabled:hover,.factory-bootstrap-422 .btn-info[disabled],.factory-bootstrap-422 .btn-info[disabled].active,.factory-bootstrap-422 .btn-info[disabled]:active,.factory-bootstrap-422 .btn-info[disabled]:focus,.factory-bootstrap-422 .btn-info[disabled]:hover,.factory-bootstrap-422 fieldset[disabled] .btn-info,.factory-bootstrap-422 fieldset[disabled] .btn-info.active,.factory-bootstrap-422 fieldset[disabled] .btn-info:active,.factory-bootstrap-422 fieldset[disabled] .btn-info:focus,.factory-bootstrap-422 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-422 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-422 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-422 .btn-link,.factory-bootstrap-422 .btn-link:active,.factory-bootstrap-422 .btn-link[disabled],.factory-bootstrap-422 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-422 .btn-link,.factory-bootstrap-422 .btn-link:active,.factory-bootstrap-422 .btn-link:focus,.factory-bootstrap-422 .btn-link:hover{border-color:transparent}.factory-bootstrap-422 .btn-link:focus,.factory-bootstrap-422 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-422 .btn-link[disabled]:focus,.factory-bootstrap-422 .btn-link[disabled]:hover,.factory-bootstrap-422 fieldset[disabled] .btn-link:focus,.factory-bootstrap-422 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-422 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-422 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-422 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-422 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-422 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-422 input[type=button].btn-block,.factory-bootstrap-422 input[type=reset].btn-block,.factory-bootstrap-422 input[type=submit].btn-block{width:100%}.factory-bootstrap-422 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-422 .fade.in{opacity:1}.factory-bootstrap-422 .collapse{display:none}.factory-bootstrap-422 .collapse.in{display:block}.factory-bootstrap-422 .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-422 .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-422 .glyphicon:empty{width:1em}.factory-bootstrap-422 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-422 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-422 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-422 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-422 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-422 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-422 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-422 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-422 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-422 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-422 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-422 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-422 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-422 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-422 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-422 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-422 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-422 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-422 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-422 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-422 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-422 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-422 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-422 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-422 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-422 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-422 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-422 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-422 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-422 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-422 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-422 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-422 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-422 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-422 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-422 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-422 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-422 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-422 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-422 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-422 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-422 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-422 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-422 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-422 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-422 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-422 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-422 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-422 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-422 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-422 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-422 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-422 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-422 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-422 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-422 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-422 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-422 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-422 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-422 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-422 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-422 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-422 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-422 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-422 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-422 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-422 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-422 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-422 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-422 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-422 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-422 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-422 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-422 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-422 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-422 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-422 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-422 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-422 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-422 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-422 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-422 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-422 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-422 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-422 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-422 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-422 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-422 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-422 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-422 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-422 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-422 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-422 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-422 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-422 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-422 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-422 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-422 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-422 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-422 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-422 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-422 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-422 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-422 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-422 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-422 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-422 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-422 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-422 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-422 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-422 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-422 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-422 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-422 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-422 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-422 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-422 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-422 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-422 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-422 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-422 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-422 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-422 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-422 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-422 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-422 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-422 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-422 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-422 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-422 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-422 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-422 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-422 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-422 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-422 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-422 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-422 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-422 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-422 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-422 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-422 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-422 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-422 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-422 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-422 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-422 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-422 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-422 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-422 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-422 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-422 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-422 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-422 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-422 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-422 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-422 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-422 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-422 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-422 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-422 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-422 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-422 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-422 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-422 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-422 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-422 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-422 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-422 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-422 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-422 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-422 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-422 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-422 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-422 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-422 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-422 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-422 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-422 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-422 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-422 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-422 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-422 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-422 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-422 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-422 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-422 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-422 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-422 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-422 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-422 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-422 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-422 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-422 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-422 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-422 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-422 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-422 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-422 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-422 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-422 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-422 .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-422 .dropdown{position:relative}.factory-bootstrap-422 .dropdown-toggle:focus{outline:0}.factory-bootstrap-422 .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-422 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-422 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-422 .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-422 .dropdown-menu>li>a:focus,.factory-bootstrap-422 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-422 .dropdown-menu>.active>a,.factory-bootstrap-422 .dropdown-menu>.active>a:focus,.factory-bootstrap-422 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-422 .dropdown-menu>.disabled>a,.factory-bootstrap-422 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-422 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-422 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-422 .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-422 .open>.dropdown-menu{display:block}.factory-bootstrap-422 .open>a{outline:0}.factory-bootstrap-422 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-422 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-422 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-422 .dropup .caret,.factory-bootstrap-422 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-422 .dropup .dropdown-menu,.factory-bootstrap-422 .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-422 .btn-group,.factory-bootstrap-422 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-422 .btn-group-vertical>.btn,.factory-bootstrap-422 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-422 .btn-group-vertical>.btn.active,.factory-bootstrap-422 .btn-group-vertical>.btn:active,.factory-bootstrap-422 .btn-group-vertical>.btn:focus,.factory-bootstrap-422 .btn-group-vertical>.btn:hover,.factory-bootstrap-422 .btn-group>.btn.active,.factory-bootstrap-422 .btn-group>.btn:active,.factory-bootstrap-422 .btn-group>.btn:focus,.factory-bootstrap-422 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-422 .btn-group-vertical>.btn:focus,.factory-bootstrap-422 .btn-group>.btn:focus{outline:0}.factory-bootstrap-422 .btn-group .btn+.btn,.factory-bootstrap-422 .btn-group .btn+.btn-group,.factory-bootstrap-422 .btn-group .btn-group+.btn,.factory-bootstrap-422 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-422 .btn-toolbar:after,.factory-bootstrap-422 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-422 .btn-toolbar:after{clear:both}.factory-bootstrap-422 .btn-toolbar .btn-group{float:left}.factory-bootstrap-422 .btn-toolbar>.btn+.btn,.factory-bootstrap-422 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-422 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-422 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-422 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-422 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-422 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-422 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-422 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-422 .btn-group>.btn-group{float:left}.factory-bootstrap-422 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-422 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-422 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-422 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-422 .btn-group .dropdown-toggle:active,.factory-bootstrap-422 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-422 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-422 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-422 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-422 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-422 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-422 .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-422 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-422 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-422 .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-422 .btn .caret{margin-left:0}.factory-bootstrap-422 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-422 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-422 .btn-group-vertical>.btn,.factory-bootstrap-422 .btn-group-vertical>.btn-group,.factory-bootstrap-422 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-422 .btn-group-vertical>.btn-group:after,.factory-bootstrap-422 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-422 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-422 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-422 .btn-group-vertical>.btn+.btn,.factory-bootstrap-422 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-422 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-422 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-422 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-422 .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-422 .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-422 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-422 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-422 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-422 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-422 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-422 .btn-group-justified>.btn,.factory-bootstrap-422 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-422 .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-422 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-422 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-422 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-422 .input-group-lg>.form-control,.factory-bootstrap-422 .input-group-lg>.input-group-addon,.factory-bootstrap-422 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-422 select.input-group-lg>.form-control,.factory-bootstrap-422 select.input-group-lg>.input-group-addon,.factory-bootstrap-422 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-422 textarea.input-group-lg>.form-control,.factory-bootstrap-422 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-422 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-422 .input-group-sm>.form-control,.factory-bootstrap-422 .input-group-sm>.input-group-addon,.factory-bootstrap-422 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-422 select.input-group-sm>.form-control,.factory-bootstrap-422 select.input-group-sm>.input-group-addon,.factory-bootstrap-422 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-422 textarea.input-group-sm>.form-control,.factory-bootstrap-422 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-422 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-422 .input-group .form-control,.factory-bootstrap-422 .input-group-addon,.factory-bootstrap-422 .input-group-btn{display:table-cell}.factory-bootstrap-422 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-422 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-422 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-422 .input-group-addon,.factory-bootstrap-422 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-422 .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-422 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-422 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-422 .input-group-addon input[type=checkbox],.factory-bootstrap-422 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-422 .input-group .form-control:first-child,.factory-bootstrap-422 .input-group-addon:first-child,.factory-bootstrap-422 .input-group-btn:first-child>.btn,.factory-bootstrap-422 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-422 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-422 .input-group-addon:first-child{border-right:0}.factory-bootstrap-422 .input-group .form-control:last-child,.factory-bootstrap-422 .input-group-addon:last-child,.factory-bootstrap-422 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-422 .input-group-btn:last-child>.btn,.factory-bootstrap-422 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-422 .input-group-addon:last-child{border-left:0}.factory-bootstrap-422 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-422 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-422 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-422 .input-group-btn>.btn{position:relative}.factory-bootstrap-422 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-422 .input-group-btn>.btn:active,.factory-bootstrap-422 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-422 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-422 .nav:after,.factory-bootstrap-422 .nav:before{display:table;content:" "}.factory-bootstrap-422 .nav:after{clear:both}.factory-bootstrap-422 .nav>li{position:relative;display:block}.factory-bootstrap-422 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-422 .nav>li>a:focus,.factory-bootstrap-422 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-422 .nav>li.disabled>a{color:#999}.factory-bootstrap-422 .nav>li.disabled>a:focus,.factory-bootstrap-422 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-422 .nav .open>a,.factory-bootstrap-422 .nav .open>a:focus,.factory-bootstrap-422 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-422 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-422 .nav>li>a>img{max-width:none}.factory-bootstrap-422 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-422 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-422 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-422 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-422 .nav-tabs>li.active>a,.factory-bootstrap-422 .nav-tabs>li.active>a:focus,.factory-bootstrap-422 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-422 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-422 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-422 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-422 .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-422 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-422 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-422 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-422 .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-422 .nav-pills>li{float:left}.factory-bootstrap-422 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-422 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-422 .nav-pills>li.active>a,.factory-bootstrap-422 .nav-pills>li.active>a:focus,.factory-bootstrap-422 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-422 .nav-stacked>li{float:none}.factory-bootstrap-422 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-422 .nav-justified{width:100%}.factory-bootstrap-422 .nav-justified>li{float:none}.factory-bootstrap-422 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-422 .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-422 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-422 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-422 .nav-tabs-justified>.active>a,.factory-bootstrap-422 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-422 .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-422 .tab-content>.tab-pane{display:none}.factory-bootstrap-422 .tab-content>.active{display:block}.factory-bootstrap-422 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-422 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-422 .navbar:after,.factory-bootstrap-422 .navbar:before{display:table;content:" "}.factory-bootstrap-422 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-422 .navbar-header:after,.factory-bootstrap-422 .navbar-header:before{display:table;content:" "}.factory-bootstrap-422 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-422 .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-422 .navbar-collapse:after,.factory-bootstrap-422 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-422 .navbar-collapse:after{clear:both}.factory-bootstrap-422 .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-422 .container>.navbar-collapse,.factory-bootstrap-422 .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-422 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-422 .navbar-fixed-bottom,.factory-bootstrap-422 .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-422 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-422 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-422 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-422 .navbar-brand:focus,.factory-bootstrap-422 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-422 .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-422 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-422 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-422 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-422 .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-422 .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-422 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-422 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-422 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-422 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-422 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-422 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-422 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-422 .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-422 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-422 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-422 .navbar-default .navbar-brand:focus,.factory-bootstrap-422 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-422 .navbar-default .navbar-nav>li>a,.factory-bootstrap-422 .navbar-default .navbar-text{color:#777}.factory-bootstrap-422 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-422 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-422 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-422 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-422 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-422 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-422 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-422 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-422 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-422 .navbar-default .navbar-toggle:focus,.factory-bootstrap-422 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-422 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-422 .navbar-default .navbar-collapse,.factory-bootstrap-422 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-422 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-422 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-422 .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-422 .navbar-default .navbar-link{color:#777}.factory-bootstrap-422 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-422 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-422 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-422 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-422 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-422 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-422 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-422 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-422 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-422 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-422 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-422 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-422 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-422 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-422 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-422 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-422 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-422 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-422 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-422 .navbar-inverse .navbar-collapse,.factory-bootstrap-422 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-422 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-422 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-422 .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-422 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-422 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-422 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-422 .breadcrumb>li{display:inline-block}.factory-bootstrap-422 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-422 .breadcrumb>.active{color:#999}.factory-bootstrap-422 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-422 .pagination>li{display:inline}.factory-bootstrap-422 .pagination>li>a,.factory-bootstrap-422 .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-422 .pagination>li:first-child>a,.factory-bootstrap-422 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-422 .pagination>li:last-child>a,.factory-bootstrap-422 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-422 .pagination>li>a:focus,.factory-bootstrap-422 .pagination>li>a:hover,.factory-bootstrap-422 .pagination>li>span:focus,.factory-bootstrap-422 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-422 .pagination>.disabled>a,.factory-bootstrap-422 .pagination>.disabled>a:focus,.factory-bootstrap-422 .pagination>.disabled>a:hover,.factory-bootstrap-422 .pagination>.disabled>span,.factory-bootstrap-422 .pagination>.disabled>span:focus,.factory-bootstrap-422 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-422 .pagination-lg>li>a,.factory-bootstrap-422 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-422 .pagination-lg>li:first-child>a,.factory-bootstrap-422 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-422 .pagination-lg>li:last-child>a,.factory-bootstrap-422 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-422 .pagination-sm>li>a,.factory-bootstrap-422 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-422 .pagination-sm>li:first-child>a,.factory-bootstrap-422 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-422 .pagination-sm>li:last-child>a,.factory-bootstrap-422 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-422 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-422 .pager:after,.factory-bootstrap-422 .pager:before{display:table;content:" "}.factory-bootstrap-422 .pager:after{clear:both}.factory-bootstrap-422 .pager li{display:inline}.factory-bootstrap-422 .pager li>a,.factory-bootstrap-422 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-422 .pager li>a:focus,.factory-bootstrap-422 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-422 .pager .next>a,.factory-bootstrap-422 .pager .next>span{float:right}.factory-bootstrap-422 .pager .previous>a,.factory-bootstrap-422 .pager .previous>span{float:left}.factory-bootstrap-422 .pager .disabled>a,.factory-bootstrap-422 .pager .disabled>a:focus,.factory-bootstrap-422 .pager .disabled>a:hover,.factory-bootstrap-422 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-422 .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-422 .label[href]:focus,.factory-bootstrap-422 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-422 .label:empty{display:none}.factory-bootstrap-422 .btn .label{position:relative;top:-1px}.factory-bootstrap-422 .label-default{background-color:#999}.factory-bootstrap-422 .label-default[href]:focus,.factory-bootstrap-422 .label-default[href]:hover{background-color:gray}.factory-bootstrap-422 .label-primary{background-color:#428bca}.factory-bootstrap-422 .label-primary[href]:focus,.factory-bootstrap-422 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-422 .label-success{background-color:#5cb85c}.factory-bootstrap-422 .label-success[href]:focus,.factory-bootstrap-422 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-422 .label-info{background-color:#5bc0de}.factory-bootstrap-422 .label-info[href]:focus,.factory-bootstrap-422 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-422 .label-warning{background-color:#f0ad4e}.factory-bootstrap-422 .label-warning[href]:focus,.factory-bootstrap-422 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-422 .label-danger{background-color:#d9534f}.factory-bootstrap-422 .label-danger[href]:focus,.factory-bootstrap-422 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-422 .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-422 .badge:empty{display:none}.factory-bootstrap-422 .btn .badge{position:relative;top:-1px}.factory-bootstrap-422 a.badge:focus,.factory-bootstrap-422 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-422 .nav-pills>.active>a>.badge,.factory-bootstrap-422 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-422 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-422 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-422 .jumbotron .h1,.factory-bootstrap-422 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-422 .jumbotron p{line-height:1.4}.factory-bootstrap-422 .container .jumbotron{border-radius:6px}.factory-bootstrap-422 .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-422 .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-422 .thumbnail a>img,.factory-bootstrap-422 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-422 a.thumbnail.active,.factory-bootstrap-422 a.thumbnail:focus,.factory-bootstrap-422 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-422 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-422 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-422 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-422 .alert .alert-link{font-weight:700}.factory-bootstrap-422 .alert>p,.factory-bootstrap-422 .alert>ul{margin-bottom:0}.factory-bootstrap-422 .alert>p+p{margin-top:5px}.factory-bootstrap-422 .alert-dismissable{padding-right:35px}.factory-bootstrap-422 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-422 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-422 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-422 .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-422 .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-422 .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-422 .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-422 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-422 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-422 .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-422 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-422 .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-422 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-422 .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-422 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-422 .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-422 .media,.factory-bootstrap-422 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-422 .media,.factory-bootstrap-422 .media .media{margin-top:15px}.factory-bootstrap-422 .media:first-child{margin-top:0}.factory-bootstrap-422 .media-object{display:block}.factory-bootstrap-422 .media-heading{margin:0 0 5px}.factory-bootstrap-422 .media>.pull-left{margin-right:10px}.factory-bootstrap-422 .media>.pull-right{margin-left:10px}.factory-bootstrap-422 .media-list{padding-left:0;list-style:none}.factory-bootstrap-422 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-422 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-422 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-422 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-422 .list-group-item>.badge{float:right}.factory-bootstrap-422 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-422 a.list-group-item{color:#555}.factory-bootstrap-422 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-422 a.list-group-item:focus,.factory-bootstrap-422 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-422 a.list-group-item.active,.factory-bootstrap-422 a.list-group-item.active:focus,.factory-bootstrap-422 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-422 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-422 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-422 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-422 a.list-group-item.active .list-group-item-text,.factory-bootstrap-422 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-422 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-422 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-422 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-422 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-422 .panel-body{padding:15px}.factory-bootstrap-422 .panel-body:after,.factory-bootstrap-422 .panel-body:before{display:table;content:" "}.factory-bootstrap-422 .panel-body:after{clear:both}.factory-bootstrap-422 .panel>.list-group{margin-bottom:0}.factory-bootstrap-422 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-422 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-422 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-422 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-422 .panel>.table,.factory-bootstrap-422 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-422 .panel>.panel-body+.table,.factory-bootstrap-422 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-422 .panel>.table>tbody:first-child td,.factory-bootstrap-422 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-422 .panel>.table-bordered,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-422 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-422 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-422 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-422 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-422 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-422 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-422 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-422 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-422 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-422 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-422 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-422 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-422 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-422 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-422 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-422 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-422 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-422 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-422 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-422 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-422 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-422 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-422 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-422 .panel-title>a{color:inherit}.factory-bootstrap-422 .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-422 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-422 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-422 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-422 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-422 .panel-group .panel-footer{border-top:0}.factory-bootstrap-422 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-422 .panel-default{border-color:#ddd}.factory-bootstrap-422 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-422 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-422 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-422 .panel-primary{border-color:#428bca}.factory-bootstrap-422 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-422 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-422 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-422 .panel-success{border-color:#d6e9c6}.factory-bootstrap-422 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-422 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-422 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-422 .panel-warning{border-color:#faebcc}.factory-bootstrap-422 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-422 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-422 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-422 .panel-danger{border-color:#ebccd1}.factory-bootstrap-422 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-422 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-422 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-422 .panel-info{border-color:#bce8f1}.factory-bootstrap-422 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-422 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-422 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-422 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-422 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-422 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-422 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-422 .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-422 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-422 .close:focus,.factory-bootstrap-422 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-422 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-422 .modal-open{overflow:hidden}.factory-bootstrap-422 .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-422 .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-422 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-422 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-422 .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-422 .modal-backdrop,.factory-bootstrap-422-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-422 .modal-backdrop.fade,.factory-bootstrap-422-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-422 .modal-backdrop.in,.factory-bootstrap-422-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-422 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-422 .modal-header .close{margin-top:-2px}.factory-bootstrap-422 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-422 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-422 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-422 .modal-footer:after,.factory-bootstrap-422 .modal-footer:before{display:table;content:" "}.factory-bootstrap-422 .modal-footer:after{clear:both}.factory-bootstrap-422 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-422 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-422 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-422 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-422 .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-422 .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-422 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-422 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-422 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-422 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-422 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-422 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-422 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-422 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-422 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-422 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-422 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-422 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-422 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-422 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-422 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-422 .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-422 .popover.top{margin-top:-10px}.factory-bootstrap-422 .popover.right{margin-left:10px}.factory-bootstrap-422 .popover.bottom{margin-top:10px}.factory-bootstrap-422 .popover.left{margin-left:-10px}.factory-bootstrap-422 .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-422 .popover-content{padding:9px 14px}.factory-bootstrap-422 .popover .arrow,.factory-bootstrap-422 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-422 .popover .arrow{border-width:11px}.factory-bootstrap-422 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-422 .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-422 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-422 .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-422 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-422 .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-422 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-422 .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-422 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-422 .carousel{position:relative}.factory-bootstrap-422 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-422 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-422 .carousel-inner>.item>a>img,.factory-bootstrap-422 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-422 .carousel-inner>.active,.factory-bootstrap-422 .carousel-inner>.next,.factory-bootstrap-422 .carousel-inner>.prev{display:block}.factory-bootstrap-422 .carousel-inner>.active{left:0}.factory-bootstrap-422 .carousel-inner>.next,.factory-bootstrap-422 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-422 .carousel-inner>.next{left:100%}.factory-bootstrap-422 .carousel-inner>.prev{left:-100%}.factory-bootstrap-422 .carousel-inner>.next.left,.factory-bootstrap-422 .carousel-inner>.prev.right{left:0}.factory-bootstrap-422 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-422 .carousel-inner>.active.right{left:100%}.factory-bootstrap-422 .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-422 .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-422 .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-422 .carousel-control:focus,.factory-bootstrap-422 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-422 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-422 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-422 .carousel-control .icon-next,.factory-bootstrap-422 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-422 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-422 .carousel-control .icon-prev{left:50%}.factory-bootstrap-422 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-422 .carousel-control .icon-next{right:50%}.factory-bootstrap-422 .carousel-control .icon-next,.factory-bootstrap-422 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-422 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-422 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-422 .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-422 .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-422 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-422 .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-422 .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-422 .clearfix:after,.factory-bootstrap-422 .clearfix:before{display:table;content:" "}.factory-bootstrap-422 .clearfix:after{clear:both}.factory-bootstrap-422 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-422 .pull-right{float:right!important}.factory-bootstrap-422 .pull-left{float:left!important}.factory-bootstrap-422 .hide{display:none!important}.factory-bootstrap-422 .show{display:block!important}.factory-bootstrap-422 .invisible{visibility:hidden}.factory-bootstrap-422 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-422 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-422 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-422 .visible-lg,.factory-bootstrap-422 .visible-md,.factory-bootstrap-422 .visible-sm,.factory-bootstrap-422 .visible-xs,.factory-bootstrap-422 td.visible-lg,.factory-bootstrap-422 td.visible-md,.factory-bootstrap-422 td.visible-sm,.factory-bootstrap-422 td.visible-xs,.factory-bootstrap-422 th.visible-lg,.factory-bootstrap-422 th.visible-md,.factory-bootstrap-422 th.visible-sm,.factory-bootstrap-422 th.visible-xs,.factory-bootstrap-422 tr.visible-lg,.factory-bootstrap-422 tr.visible-md,.factory-bootstrap-422 tr.visible-sm,.factory-bootstrap-422 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-422 .hidden-xs{display:block!important}.factory-bootstrap-422 table.hidden-xs{display:table}.factory-bootstrap-422 tr.hidden-xs{display:table-row!important}.factory-bootstrap-422 td.hidden-xs,.factory-bootstrap-422 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-422 .hidden-sm{display:block!important}.factory-bootstrap-422 table.hidden-sm{display:table}.factory-bootstrap-422 tr.hidden-sm{display:table-row!important}.factory-bootstrap-422 td.hidden-sm,.factory-bootstrap-422 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-422 .hidden-md{display:block!important}.factory-bootstrap-422 table.hidden-md{display:table}.factory-bootstrap-422 tr.hidden-md{display:table-row!important}.factory-bootstrap-422 td.hidden-md,.factory-bootstrap-422 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-422 .hidden-lg{display:block!important}.factory-bootstrap-422 table.hidden-lg{display:table}.factory-bootstrap-422 tr.hidden-lg{display:table-row!important}.factory-bootstrap-422 td.hidden-lg,.factory-bootstrap-422 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-422 .hidden-lg.hidden-xs,.factory-bootstrap-422 td.hidden-lg.hidden-xs,.factory-bootstrap-422 th.hidden-lg.hidden-xs,.factory-bootstrap-422 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-422 .hidden-lg.hidden-sm,.factory-bootstrap-422 td.hidden-lg.hidden-sm,.factory-bootstrap-422 th.hidden-lg.hidden-sm,.factory-bootstrap-422 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-422 .hidden-lg.hidden-md,.factory-bootstrap-422 td.hidden-lg.hidden-md,.factory-bootstrap-422 th.hidden-lg.hidden-md,.factory-bootstrap-422 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-422 .hidden-lg,.factory-bootstrap-422 td.hidden-lg,.factory-bootstrap-422 th.hidden-lg,.factory-bootstrap-422 tr.hidden-lg{display:none!important}}.factory-bootstrap-422 .visible-print,.factory-bootstrap-422 td.visible-print,.factory-bootstrap-422 th.visible-print,.factory-bootstrap-422 tr.visible-print{display:none!important}@media print{.factory-bootstrap-422 .visible-print{display:block!important}.factory-bootstrap-422 table.visible-print{display:table}.factory-bootstrap-422 tr.visible-print{display:table-row!important}.factory-bootstrap-422 td.visible-print,.factory-bootstrap-422 th.visible-print{display:table-cell!important}.factory-bootstrap-422 .hidden-print,.factory-bootstrap-422 td.hidden-print,.factory-bootstrap-422 th.hidden-print,.factory-bootstrap-422 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-422 .btn-danger,.factory-bootstrap-422 .btn-default,.factory-bootstrap-422 .btn-info,.factory-bootstrap-422 .btn-primary,.factory-bootstrap-422 .btn-success,.factory-bootstrap-422 .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-422 .btn-danger.active,.factory-bootstrap-422 .btn-danger:active,.factory-bootstrap-422 .btn-default.active,.factory-bootstrap-422 .btn-default:active,.factory-bootstrap-422 .btn-info.active,.factory-bootstrap-422 .btn-info:active,.factory-bootstrap-422 .btn-primary.active,.factory-bootstrap-422 .btn-primary:active,.factory-bootstrap-422 .btn-success.active,.factory-bootstrap-422 .btn-success:active,.factory-bootstrap-422 .btn-warning.active,.factory-bootstrap-422 .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-422 .btn.active,.factory-bootstrap-422 .btn:active{background-image:none}.factory-bootstrap-422 .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-422 .btn-default.active,.factory-bootstrap-422 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-422 .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-422 .btn-gold:focus,.factory-bootstrap-422 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-422 .btn-gold.active,.factory-bootstrap-422 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .btn-primary.active,.factory-bootstrap-422 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-422 .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-422 .btn-success:focus,.factory-bootstrap-422 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-422 .btn-success.active,.factory-bootstrap-422 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-422 .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-422 .btn-warning:focus,.factory-bootstrap-422 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-422 .btn-warning.active,.factory-bootstrap-422 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-422 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-422 .btn-danger.active,.factory-bootstrap-422 .btn-danger:active,.factory-bootstrap-422 .btn-danger:focus,.factory-bootstrap-422 .btn-danger:hover,.factory-bootstrap-422 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-422 .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-422 .btn-info:focus,.factory-bootstrap-422 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-422 .btn-info.active,.factory-bootstrap-422 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-422 .img-thumbnail,.factory-bootstrap-422 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-422 .dropdown-menu>li>a:focus,.factory-bootstrap-422 .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-422 .dropdown-menu>.active>a,.factory-bootstrap-422 .dropdown-menu>.active>a:focus,.factory-bootstrap-422 .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-422 .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-422 .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-422 .navbar-brand,.factory-bootstrap-422 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-422 .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-422 .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-422 .navbar-inverse .navbar-brand,.factory-bootstrap-422 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-422 .navbar-fixed-bottom,.factory-bootstrap-422 .navbar-fixed-top,.factory-bootstrap-422 .navbar-static-top{border-radius:0}.factory-bootstrap-422 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-422 .alert .actions{padding-top:10px}.factory-bootstrap-422 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-422 .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-422 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-422 .alert-normal,.factory-bootstrap-422 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-422 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-422 .alert-danger a:not(.btn),.factory-bootstrap-422 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .list-group-item.active,.factory-bootstrap-422 .list-group-item.active:focus,.factory-bootstrap-422 .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-422 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-422 .factory-hidden{display:none}.factory-bootstrap-422 .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-426 article,.factory-bootstrap-426 aside,.factory-bootstrap-426 details,.factory-bootstrap-426 figcaption,.factory-bootstrap-426 figure,.factory-bootstrap-426 footer,.factory-bootstrap-426 header,.factory-bootstrap-426 hgroup,.factory-bootstrap-426 main,.factory-bootstrap-426 nav,.factory-bootstrap-426 section,.factory-bootstrap-426 summary{display:block}.factory-bootstrap-426 audio,.factory-bootstrap-426 canvas,.factory-bootstrap-426 video{display:inline-block}.factory-bootstrap-426 audio:not([controls]){display:none;height:0}.factory-bootstrap-426 [hidden],.factory-bootstrap-426 template{display:none}.factory-bootstrap-426 body{margin:0}.factory-bootstrap-426 a{background:0 0}.factory-bootstrap-426 a:focus{outline:thin dotted}.factory-bootstrap-426 a:active,.factory-bootstrap-426 a:hover{outline:0}.factory-bootstrap-426 h1{margin:.67em 0}.factory-bootstrap-426 b,.factory-bootstrap-426 strong{font-weight:700}.factory-bootstrap-426 dfn{font-style:italic}.factory-bootstrap-426 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-426 mark{color:#000;background:#ff0}.factory-bootstrap-426 code,.factory-bootstrap-426 kbd,.factory-bootstrap-426 pre,.factory-bootstrap-426 samp{font-size:1em}.factory-bootstrap-426 pre{white-space:pre-wrap}.factory-bootstrap-426 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-426 sub,.factory-bootstrap-426 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-426 sup{top:-.5em}.factory-bootstrap-426 sub{bottom:-.25em}.factory-bootstrap-426 img{border:0}.factory-bootstrap-426 svg:not(:root){overflow:hidden}.factory-bootstrap-426 figure{margin:0}.factory-bootstrap-426 button,.factory-bootstrap-426 input,.factory-bootstrap-426 select,.factory-bootstrap-426 textarea{margin:0}.factory-bootstrap-426 button,.factory-bootstrap-426 select{text-transform:none}.factory-bootstrap-426 select{padding-right:4px!important}.factory-bootstrap-426 button,.factory-bootstrap-426 input[type=reset],.factory-bootstrap-426 input[type=submit],html .factory-bootstrap-426 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-426 button[disabled],html .factory-bootstrap-426 input[disabled]{cursor:default}.factory-bootstrap-426 input[type=checkbox],.factory-bootstrap-426 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-426 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-426 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-426 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-426 button::-moz-focus-inner,.factory-bootstrap-426 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-426 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-426 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-426 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-426 a,.factory-bootstrap-426 a:visited{text-decoration:underline}.factory-bootstrap-426 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-426 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-426 a[href^="javascript:"]:after,.factory-bootstrap-426 a[href^="#"]:after{content:""}.factory-bootstrap-426 blockquote,.factory-bootstrap-426 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-426 thead{display:table-header-group}.factory-bootstrap-426 img,.factory-bootstrap-426 tr{page-break-inside:avoid}.factory-bootstrap-426 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-426 h2,.factory-bootstrap-426 h3,.factory-bootstrap-426 p{orphans:3;widows:3}.factory-bootstrap-426 h2,.factory-bootstrap-426 h3{page-break-after:avoid}.factory-bootstrap-426 select{background:#fff!important}.factory-bootstrap-426 .navbar{display:none}.factory-bootstrap-426 .table td,.factory-bootstrap-426 .table th{background-color:#fff!important}.factory-bootstrap-426 .btn>.caret,.factory-bootstrap-426 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-426 .label{border:1px solid #000}.factory-bootstrap-426 .table{border-collapse:collapse!important}.factory-bootstrap-426 .table-bordered td,.factory-bootstrap-426 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-426 *,.factory-bootstrap-426 :after,.factory-bootstrap-426 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-426{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-426 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-426 button,.factory-bootstrap-426 input,.factory-bootstrap-426 select,.factory-bootstrap-426 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-426 img{vertical-align:middle}.factory-bootstrap-426 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-426 .img-rounded{border-radius:6px}.factory-bootstrap-426 .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-426 .img-circle{border-radius:50%}.factory-bootstrap-426 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-426 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-426 .h1,.factory-bootstrap-426 .h2,.factory-bootstrap-426 .h3,.factory-bootstrap-426 .h4,.factory-bootstrap-426 .h5,.factory-bootstrap-426 .h6,.factory-bootstrap-426 h1,.factory-bootstrap-426 h2,.factory-bootstrap-426 h3,.factory-bootstrap-426 h4,.factory-bootstrap-426 h5,.factory-bootstrap-426 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-426 .h1 .small,.factory-bootstrap-426 .h1 small,.factory-bootstrap-426 .h2 .small,.factory-bootstrap-426 .h2 small,.factory-bootstrap-426 .h3 .small,.factory-bootstrap-426 .h3 small,.factory-bootstrap-426 .h4 .small,.factory-bootstrap-426 .h4 small,.factory-bootstrap-426 .h5 .small,.factory-bootstrap-426 .h5 small,.factory-bootstrap-426 .h6 .small,.factory-bootstrap-426 .h6 small,.factory-bootstrap-426 h1 .small,.factory-bootstrap-426 h1 small,.factory-bootstrap-426 h2 .small,.factory-bootstrap-426 h2 small,.factory-bootstrap-426 h3 .small,.factory-bootstrap-426 h3 small,.factory-bootstrap-426 h4 .small,.factory-bootstrap-426 h4 small,.factory-bootstrap-426 h5 .small,.factory-bootstrap-426 h5 small,.factory-bootstrap-426 h6 .small,.factory-bootstrap-426 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-426 h1,.factory-bootstrap-426 h2,.factory-bootstrap-426 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-426 h1 .small,.factory-bootstrap-426 h1 small,.factory-bootstrap-426 h2 .small,.factory-bootstrap-426 h2 small,.factory-bootstrap-426 h3 .small,.factory-bootstrap-426 h3 small{font-size:65%}.factory-bootstrap-426 h4,.factory-bootstrap-426 h5,.factory-bootstrap-426 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-426 h4 .small,.factory-bootstrap-426 h4 small,.factory-bootstrap-426 h5 .small,.factory-bootstrap-426 h5 small,.factory-bootstrap-426 h6 .small,.factory-bootstrap-426 h6 small{font-size:75%}.factory-bootstrap-426 .h1,.factory-bootstrap-426 h1{font-size:36px}.factory-bootstrap-426 .h2,.factory-bootstrap-426 h2{font-size:30px}.factory-bootstrap-426 .h3,.factory-bootstrap-426 h3{font-size:24px}.factory-bootstrap-426 .h4,.factory-bootstrap-426 h4{font-size:18px}.factory-bootstrap-426 .h5,.factory-bootstrap-426 h5{font-size:14px}.factory-bootstrap-426 .h6,.factory-bootstrap-426 h6{font-size:12px}.factory-bootstrap-426 p{margin:0 0 10px}.factory-bootstrap-426 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-426 .small,.factory-bootstrap-426 small{font-size:85%}.factory-bootstrap-426 cite{font-style:normal}.factory-bootstrap-426 .text-muted{color:#999}.factory-bootstrap-426 .text-primary{color:#428bca}.factory-bootstrap-426 .text-primary:hover{color:#3071a9}.factory-bootstrap-426 .text-warning{color:#8a6d3b}.factory-bootstrap-426 .text-warning:hover{color:#66512c}.factory-bootstrap-426 .text-danger{color:#a94442}.factory-bootstrap-426 .text-danger:hover{color:#843534}.factory-bootstrap-426 .text-success{color:#3c763d}.factory-bootstrap-426 .text-success:hover{color:#2b542c}.factory-bootstrap-426 .text-info{color:#31708f}.factory-bootstrap-426 .text-info:hover{color:#245269}.factory-bootstrap-426 .text-left{text-align:left}.factory-bootstrap-426 .text-right{text-align:right}.factory-bootstrap-426 .text-center{text-align:center}.factory-bootstrap-426 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-426 ol,.factory-bootstrap-426 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-426 ol ol,.factory-bootstrap-426 ol ul,.factory-bootstrap-426 ul ol,.factory-bootstrap-426 ul ul{margin-bottom:0}.factory-bootstrap-426 .list-inline,.factory-bootstrap-426 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-426 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-426 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-426 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-426 dd,.factory-bootstrap-426 dt{line-height:1.428571429}.factory-bootstrap-426 dt{font-weight:700}.factory-bootstrap-426 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-426 abbr[data-original-title],.factory-bootstrap-426 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-426 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-426 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-426 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-426 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-426 blockquote .small,.factory-bootstrap-426 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-426 blockquote .small:before,.factory-bootstrap-426 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-426 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-426 blockquote.pull-right .small,.factory-bootstrap-426 blockquote.pull-right p,.factory-bootstrap-426 blockquote.pull-right small{text-align:right}.factory-bootstrap-426 blockquote.pull-right .small:before,.factory-bootstrap-426 blockquote.pull-right small:before{content:''}.factory-bootstrap-426 blockquote.pull-right .small:after,.factory-bootstrap-426 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-426 blockquote:after,.factory-bootstrap-426 blockquote:before{content:""}.factory-bootstrap-426 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-426 code,.factory-bootstrap-426 kbd,.factory-bootstrap-426 pre,.factory-bootstrap-426 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-426 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-426 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-426 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-426 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-426 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-426 .container:after,.factory-bootstrap-426 .container:before{display:table;content:" "}.factory-bootstrap-426 .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-426 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-426 .row:after,.factory-bootstrap-426 .row:before{display:table;content:" "}.factory-bootstrap-426 .row:after{clear:both}.factory-bootstrap-426 .col-lg-1,.factory-bootstrap-426 .col-lg-10,.factory-bootstrap-426 .col-lg-11,.factory-bootstrap-426 .col-lg-12,.factory-bootstrap-426 .col-lg-2,.factory-bootstrap-426 .col-lg-3,.factory-bootstrap-426 .col-lg-4,.factory-bootstrap-426 .col-lg-5,.factory-bootstrap-426 .col-lg-6,.factory-bootstrap-426 .col-lg-7,.factory-bootstrap-426 .col-lg-8,.factory-bootstrap-426 .col-lg-9,.factory-bootstrap-426 .col-md-1,.factory-bootstrap-426 .col-md-10,.factory-bootstrap-426 .col-md-11,.factory-bootstrap-426 .col-md-12,.factory-bootstrap-426 .col-md-2,.factory-bootstrap-426 .col-md-3,.factory-bootstrap-426 .col-md-4,.factory-bootstrap-426 .col-md-5,.factory-bootstrap-426 .col-md-6,.factory-bootstrap-426 .col-md-7,.factory-bootstrap-426 .col-md-8,.factory-bootstrap-426 .col-md-9,.factory-bootstrap-426 .col-sm-1,.factory-bootstrap-426 .col-sm-10,.factory-bootstrap-426 .col-sm-11,.factory-bootstrap-426 .col-sm-12,.factory-bootstrap-426 .col-sm-2,.factory-bootstrap-426 .col-sm-3,.factory-bootstrap-426 .col-sm-4,.factory-bootstrap-426 .col-sm-5,.factory-bootstrap-426 .col-sm-6,.factory-bootstrap-426 .col-sm-7,.factory-bootstrap-426 .col-sm-8,.factory-bootstrap-426 .col-sm-9,.factory-bootstrap-426 .col-xs-1,.factory-bootstrap-426 .col-xs-10,.factory-bootstrap-426 .col-xs-11,.factory-bootstrap-426 .col-xs-12,.factory-bootstrap-426 .col-xs-2,.factory-bootstrap-426 .col-xs-3,.factory-bootstrap-426 .col-xs-4,.factory-bootstrap-426 .col-xs-5,.factory-bootstrap-426 .col-xs-6,.factory-bootstrap-426 .col-xs-7,.factory-bootstrap-426 .col-xs-8,.factory-bootstrap-426 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-426 .col-xs-1,.factory-bootstrap-426 .col-xs-10,.factory-bootstrap-426 .col-xs-11,.factory-bootstrap-426 .col-xs-12,.factory-bootstrap-426 .col-xs-2,.factory-bootstrap-426 .col-xs-3,.factory-bootstrap-426 .col-xs-4,.factory-bootstrap-426 .col-xs-5,.factory-bootstrap-426 .col-xs-6,.factory-bootstrap-426 .col-xs-7,.factory-bootstrap-426 .col-xs-8,.factory-bootstrap-426 .col-xs-9{float:left}.factory-bootstrap-426 .col-xs-12{width:100%}.factory-bootstrap-426 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-426 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-426 .col-xs-9{width:75%}.factory-bootstrap-426 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-426 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-426 .col-xs-6{width:50%}.factory-bootstrap-426 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-426 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-426 .col-xs-3{width:25%}.factory-bootstrap-426 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-426 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-426 .col-xs-pull-12{right:100%}.factory-bootstrap-426 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-426 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-426 .col-xs-pull-9{right:75%}.factory-bootstrap-426 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-426 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-426 .col-xs-pull-6{right:50%}.factory-bootstrap-426 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-426 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-426 .col-xs-pull-3{right:25%}.factory-bootstrap-426 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-426 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-426 .col-xs-pull-0{right:0}.factory-bootstrap-426 .col-xs-push-12{left:100%}.factory-bootstrap-426 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-426 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-426 .col-xs-push-9{left:75%}.factory-bootstrap-426 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-426 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-426 .col-xs-push-6{left:50%}.factory-bootstrap-426 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-426 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-426 .col-xs-push-3{left:25%}.factory-bootstrap-426 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-426 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-426 .col-xs-push-0{left:0}.factory-bootstrap-426 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-426 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-426 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-426 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-426 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-426 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-426 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-426 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-426 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-426 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-426 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-426 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-426 .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-426 table{max-width:100%;background-color:transparent}.factory-bootstrap-426 th{text-align:left}.factory-bootstrap-426 .table{width:100%;margin-bottom:20px}.factory-bootstrap-426 .table>tbody>tr>td,.factory-bootstrap-426 .table>tbody>tr>th,.factory-bootstrap-426 .table>tfoot>tr>td,.factory-bootstrap-426 .table>tfoot>tr>th,.factory-bootstrap-426 .table>thead>tr>td,.factory-bootstrap-426 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-426 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-426 .table>caption+thead>tr:first-child>td,.factory-bootstrap-426 .table>caption+thead>tr:first-child>th,.factory-bootstrap-426 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-426 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-426 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-426 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-426 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-426 .table .table{background-color:#fff}.factory-bootstrap-426 .table-condensed>tbody>tr>td,.factory-bootstrap-426 .table-condensed>tbody>tr>th,.factory-bootstrap-426 .table-condensed>tfoot>tr>td,.factory-bootstrap-426 .table-condensed>tfoot>tr>th,.factory-bootstrap-426 .table-condensed>thead>tr>td,.factory-bootstrap-426 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-426 .table-bordered,.factory-bootstrap-426 .table-bordered>tbody>tr>td,.factory-bootstrap-426 .table-bordered>tbody>tr>th,.factory-bootstrap-426 .table-bordered>tfoot>tr>td,.factory-bootstrap-426 .table-bordered>tfoot>tr>th,.factory-bootstrap-426 .table-bordered>thead>tr>td,.factory-bootstrap-426 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-426 .table-bordered>thead>tr>td,.factory-bootstrap-426 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-426 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-426 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-426 .table-hover>tbody>tr:hover>td,.factory-bootstrap-426 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-426 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-426 table td[class*=col-],.factory-bootstrap-426 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-426 .table>tbody>.active>td,.factory-bootstrap-426 .table>tbody>.active>th,.factory-bootstrap-426 .table>tbody>tr>.active,.factory-bootstrap-426 .table>tfoot>.active>td,.factory-bootstrap-426 .table>tfoot>.active>th,.factory-bootstrap-426 .table>tfoot>tr>.active,.factory-bootstrap-426 .table>thead>.active>td,.factory-bootstrap-426 .table>thead>.active>th,.factory-bootstrap-426 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-426 .table-hover>tbody>.active:hover>td,.factory-bootstrap-426 .table-hover>tbody>.active:hover>th,.factory-bootstrap-426 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-426 .table>tbody>.success>td,.factory-bootstrap-426 .table>tbody>.success>th,.factory-bootstrap-426 .table>tbody>tr>.success,.factory-bootstrap-426 .table>tfoot>.success>td,.factory-bootstrap-426 .table>tfoot>.success>th,.factory-bootstrap-426 .table>tfoot>tr>.success,.factory-bootstrap-426 .table>thead>.success>td,.factory-bootstrap-426 .table>thead>.success>th,.factory-bootstrap-426 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-426 .table-hover>tbody>.success:hover>td,.factory-bootstrap-426 .table-hover>tbody>.success:hover>th,.factory-bootstrap-426 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-426 .table>tbody>.danger>td,.factory-bootstrap-426 .table>tbody>.danger>th,.factory-bootstrap-426 .table>tbody>tr>.danger,.factory-bootstrap-426 .table>tfoot>.danger>td,.factory-bootstrap-426 .table>tfoot>.danger>th,.factory-bootstrap-426 .table>tfoot>tr>.danger,.factory-bootstrap-426 .table>thead>.danger>td,.factory-bootstrap-426 .table>thead>.danger>th,.factory-bootstrap-426 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-426 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-426 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-426 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-426 .table>tbody>.warning>td,.factory-bootstrap-426 .table>tbody>.warning>th,.factory-bootstrap-426 .table>tbody>tr>.warning,.factory-bootstrap-426 .table>tfoot>.warning>td,.factory-bootstrap-426 .table>tfoot>.warning>th,.factory-bootstrap-426 .table>tfoot>tr>.warning,.factory-bootstrap-426 .table>thead>.warning>td,.factory-bootstrap-426 .table>thead>.warning>th,.factory-bootstrap-426 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-426 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-426 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-426 .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-426 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-426 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-426 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-426 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-426 input[type=checkbox],.factory-bootstrap-426 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-426 input[type=file]{display:block}.factory-bootstrap-426 select[multiple],.factory-bootstrap-426 select[size]{height:auto}.factory-bootstrap-426 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-426 input[type=checkbox]:focus,.factory-bootstrap-426 input[type=file]:focus,.factory-bootstrap-426 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-426 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-426 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-426 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-426 .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-426 .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-426 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-426 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-426 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-426 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-426 .form-control[disabled],.factory-bootstrap-426 .form-control[readonly],.factory-bootstrap-426 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-426 textarea.form-control{height:auto}.factory-bootstrap-426 .form-group{margin-bottom:15px}.factory-bootstrap-426 .checkbox,.factory-bootstrap-426 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-426 .checkbox label,.factory-bootstrap-426 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-426 .checkbox input[type=checkbox],.factory-bootstrap-426 .checkbox-inline input[type=checkbox],.factory-bootstrap-426 .radio input[type=radio],.factory-bootstrap-426 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-426 .checkbox+.checkbox,.factory-bootstrap-426 .radio+.radio{margin-top:-5px}.factory-bootstrap-426 .checkbox-inline,.factory-bootstrap-426 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-426 .checkbox-inline+.checkbox-inline,.factory-bootstrap-426 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-426 .checkbox-inline[disabled],.factory-bootstrap-426 .checkbox[disabled],.factory-bootstrap-426 .radio-inline[disabled],.factory-bootstrap-426 .radio[disabled],.factory-bootstrap-426 fieldset[disabled] .checkbox,.factory-bootstrap-426 fieldset[disabled] .checkbox-inline,.factory-bootstrap-426 fieldset[disabled] .radio,.factory-bootstrap-426 fieldset[disabled] .radio-inline,.factory-bootstrap-426 fieldset[disabled] input[type=checkbox],.factory-bootstrap-426 fieldset[disabled] input[type=radio],.factory-bootstrap-426 input[type=checkbox][disabled],.factory-bootstrap-426 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-426 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-426 textarea.input-sm{height:auto}.factory-bootstrap-426 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-426 textarea.input-lg{height:auto}.factory-bootstrap-426 .has-warning .checkbox,.factory-bootstrap-426 .has-warning .checkbox-inline,.factory-bootstrap-426 .has-warning .control-label,.factory-bootstrap-426 .has-warning .help-block,.factory-bootstrap-426 .has-warning .radio,.factory-bootstrap-426 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-426 .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-426 .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-426 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-426 .has-error .checkbox,.factory-bootstrap-426 .has-error .checkbox-inline,.factory-bootstrap-426 .has-error .control-label,.factory-bootstrap-426 .has-error .help-block,.factory-bootstrap-426 .has-error .radio,.factory-bootstrap-426 .has-error .radio-inline{color:#a94442}.factory-bootstrap-426 .controls{display:block}.factory-bootstrap-426 .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-426 .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-426 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-426 .has-success .checkbox,.factory-bootstrap-426 .has-success .checkbox-inline,.factory-bootstrap-426 .has-success .control-label,.factory-bootstrap-426 .has-success .help-block,.factory-bootstrap-426 .has-success .radio,.factory-bootstrap-426 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-426 .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-426 .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-426 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-426 .form-control-static{margin-bottom:0}.factory-bootstrap-426 .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-426 .form-horizontal .checkbox,.factory-bootstrap-426 .form-horizontal .checkbox-inline,.factory-bootstrap-426 .form-horizontal .control-label,.factory-bootstrap-426 .form-horizontal .radio,.factory-bootstrap-426 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-426 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-426 .form-horizontal .checkbox,.factory-bootstrap-426 .form-horizontal .radio{min-height:27px}.factory-bootstrap-426 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-426 .form-horizontal .form-group:after,.factory-bootstrap-426 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-426 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-426 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-426 .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-426 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-426 .btn{text-decoration:none}.factory-bootstrap-426 .btn:focus,.factory-bootstrap-426 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-426 .btn.disabled,.factory-bootstrap-426 .btn[disabled],.factory-bootstrap-426 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active,.factory-bootstrap-426 .btn-default:focus,.factory-bootstrap-426 .btn-default:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-426 .btn-default.disabled,.factory-bootstrap-426 .btn-default.disabled.active,.factory-bootstrap-426 .btn-default.disabled:active,.factory-bootstrap-426 .btn-default.disabled:focus,.factory-bootstrap-426 .btn-default.disabled:hover,.factory-bootstrap-426 .btn-default[disabled],.factory-bootstrap-426 .btn-default[disabled].active,.factory-bootstrap-426 .btn-default[disabled]:active,.factory-bootstrap-426 .btn-default[disabled]:focus,.factory-bootstrap-426 .btn-default[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-default,.factory-bootstrap-426 fieldset[disabled] .btn-default.active,.factory-bootstrap-426 fieldset[disabled] .btn-default:active,.factory-bootstrap-426 fieldset[disabled] .btn-default:focus,.factory-bootstrap-426 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-426 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active,.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-426 .btn-primary.disabled,.factory-bootstrap-426 .btn-primary.disabled.active,.factory-bootstrap-426 .btn-primary.disabled:active,.factory-bootstrap-426 .btn-primary.disabled:focus,.factory-bootstrap-426 .btn-primary.disabled:hover,.factory-bootstrap-426 .btn-primary[disabled],.factory-bootstrap-426 .btn-primary[disabled].active,.factory-bootstrap-426 .btn-primary[disabled]:active,.factory-bootstrap-426 .btn-primary[disabled]:focus,.factory-bootstrap-426 .btn-primary[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-primary,.factory-bootstrap-426 fieldset[disabled] .btn-primary.active,.factory-bootstrap-426 fieldset[disabled] .btn-primary:active,.factory-bootstrap-426 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-426 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-426 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-426 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .btn-warning:active,.factory-bootstrap-426 .btn-warning:focus,.factory-bootstrap-426 .btn-warning:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .btn-warning:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-426 .btn-warning.disabled,.factory-bootstrap-426 .btn-warning.disabled.active,.factory-bootstrap-426 .btn-warning.disabled:active,.factory-bootstrap-426 .btn-warning.disabled:focus,.factory-bootstrap-426 .btn-warning.disabled:hover,.factory-bootstrap-426 .btn-warning[disabled],.factory-bootstrap-426 .btn-warning[disabled].active,.factory-bootstrap-426 .btn-warning[disabled]:active,.factory-bootstrap-426 .btn-warning[disabled]:focus,.factory-bootstrap-426 .btn-warning[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-warning,.factory-bootstrap-426 fieldset[disabled] .btn-warning.active,.factory-bootstrap-426 fieldset[disabled] .btn-warning:active,.factory-bootstrap-426 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-426 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-426 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-426 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active,.factory-bootstrap-426 .btn-success:focus,.factory-bootstrap-426 .btn-success:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-426 .btn-success.disabled,.factory-bootstrap-426 .btn-success.disabled.active,.factory-bootstrap-426 .btn-success.disabled:active,.factory-bootstrap-426 .btn-success.disabled:focus,.factory-bootstrap-426 .btn-success.disabled:hover,.factory-bootstrap-426 .btn-success[disabled],.factory-bootstrap-426 .btn-success[disabled].active,.factory-bootstrap-426 .btn-success[disabled]:active,.factory-bootstrap-426 .btn-success[disabled]:focus,.factory-bootstrap-426 .btn-success[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-success,.factory-bootstrap-426 fieldset[disabled] .btn-success.active,.factory-bootstrap-426 fieldset[disabled] .btn-success:active,.factory-bootstrap-426 fieldset[disabled] .btn-success:focus,.factory-bootstrap-426 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-426 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-426 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active,.factory-bootstrap-426 .btn-info:focus,.factory-bootstrap-426 .btn-info:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-426 .btn-info.disabled,.factory-bootstrap-426 .btn-info.disabled.active,.factory-bootstrap-426 .btn-info.disabled:active,.factory-bootstrap-426 .btn-info.disabled:focus,.factory-bootstrap-426 .btn-info.disabled:hover,.factory-bootstrap-426 .btn-info[disabled],.factory-bootstrap-426 .btn-info[disabled].active,.factory-bootstrap-426 .btn-info[disabled]:active,.factory-bootstrap-426 .btn-info[disabled]:focus,.factory-bootstrap-426 .btn-info[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-info,.factory-bootstrap-426 fieldset[disabled] .btn-info.active,.factory-bootstrap-426 fieldset[disabled] .btn-info:active,.factory-bootstrap-426 fieldset[disabled] .btn-info:focus,.factory-bootstrap-426 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-426 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-426 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-426 .btn-link,.factory-bootstrap-426 .btn-link:active,.factory-bootstrap-426 .btn-link[disabled],.factory-bootstrap-426 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-426 .btn-link,.factory-bootstrap-426 .btn-link:active,.factory-bootstrap-426 .btn-link:focus,.factory-bootstrap-426 .btn-link:hover{border-color:transparent}.factory-bootstrap-426 .btn-link:focus,.factory-bootstrap-426 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-426 .btn-link[disabled]:focus,.factory-bootstrap-426 .btn-link[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-link:focus,.factory-bootstrap-426 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-426 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-426 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-426 input[type=button].btn-block,.factory-bootstrap-426 input[type=reset].btn-block,.factory-bootstrap-426 input[type=submit].btn-block{width:100%}.factory-bootstrap-426 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-426 .fade.in{opacity:1}.factory-bootstrap-426 .collapse{display:none}.factory-bootstrap-426 .collapse.in{display:block}.factory-bootstrap-426 .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-426 .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-426 .glyphicon:empty{width:1em}.factory-bootstrap-426 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-426 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-426 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-426 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-426 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-426 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-426 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-426 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-426 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-426 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-426 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-426 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-426 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-426 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-426 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-426 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-426 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-426 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-426 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-426 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-426 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-426 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-426 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-426 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-426 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-426 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-426 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-426 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-426 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-426 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-426 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-426 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-426 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-426 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-426 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-426 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-426 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-426 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-426 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-426 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-426 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-426 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-426 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-426 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-426 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-426 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-426 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-426 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-426 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-426 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-426 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-426 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-426 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-426 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-426 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-426 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-426 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-426 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-426 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-426 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-426 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-426 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-426 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-426 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-426 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-426 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-426 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-426 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-426 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-426 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-426 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-426 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-426 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-426 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-426 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-426 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-426 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-426 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-426 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-426 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-426 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-426 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-426 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-426 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-426 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-426 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-426 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-426 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-426 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-426 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-426 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-426 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-426 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-426 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-426 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-426 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-426 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-426 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-426 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-426 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-426 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-426 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-426 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-426 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-426 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-426 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-426 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-426 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-426 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-426 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-426 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-426 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-426 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-426 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-426 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-426 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-426 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-426 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-426 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-426 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-426 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-426 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-426 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-426 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-426 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-426 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-426 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-426 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-426 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-426 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-426 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-426 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-426 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-426 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-426 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-426 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-426 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-426 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-426 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-426 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-426 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-426 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-426 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-426 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-426 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-426 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-426 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-426 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-426 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-426 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-426 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-426 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-426 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-426 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-426 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-426 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-426 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-426 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-426 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-426 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-426 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-426 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-426 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-426 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-426 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-426 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-426 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-426 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-426 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-426 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-426 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-426 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-426 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-426 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-426 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-426 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-426 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-426 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-426 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-426 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-426 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-426 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-426 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-426 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-426 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-426 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-426 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-426 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-426 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-426 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-426 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-426 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-426 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-426 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-426 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-426 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-426 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-426 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-426 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-426 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-426 .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-426 .dropdown{position:relative}.factory-bootstrap-426 .dropdown-toggle:focus{outline:0}.factory-bootstrap-426 .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-426 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-426 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-426 .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-426 .dropdown-menu>li>a:focus,.factory-bootstrap-426 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-426 .dropdown-menu>.active>a,.factory-bootstrap-426 .dropdown-menu>.active>a:focus,.factory-bootstrap-426 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-426 .dropdown-menu>.disabled>a,.factory-bootstrap-426 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-426 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-426 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-426 .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-426 .open>.dropdown-menu{display:block}.factory-bootstrap-426 .open>a{outline:0}.factory-bootstrap-426 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-426 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-426 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-426 .dropup .caret,.factory-bootstrap-426 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-426 .dropup .dropdown-menu,.factory-bootstrap-426 .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-426 .btn-group,.factory-bootstrap-426 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-426 .btn-group-vertical>.btn,.factory-bootstrap-426 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-426 .btn-group-vertical>.btn.active,.factory-bootstrap-426 .btn-group-vertical>.btn:active,.factory-bootstrap-426 .btn-group-vertical>.btn:focus,.factory-bootstrap-426 .btn-group-vertical>.btn:hover,.factory-bootstrap-426 .btn-group>.btn.active,.factory-bootstrap-426 .btn-group>.btn:active,.factory-bootstrap-426 .btn-group>.btn:focus,.factory-bootstrap-426 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-426 .btn-group-vertical>.btn:focus,.factory-bootstrap-426 .btn-group>.btn:focus{outline:0}.factory-bootstrap-426 .btn-group .btn+.btn,.factory-bootstrap-426 .btn-group .btn+.btn-group,.factory-bootstrap-426 .btn-group .btn-group+.btn,.factory-bootstrap-426 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-426 .btn-toolbar:after,.factory-bootstrap-426 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-426 .btn-toolbar:after{clear:both}.factory-bootstrap-426 .btn-toolbar .btn-group{float:left}.factory-bootstrap-426 .btn-toolbar>.btn+.btn,.factory-bootstrap-426 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-426 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-426 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-426 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-426 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-426 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-426 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-426 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .btn-group>.btn-group{float:left}.factory-bootstrap-426 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-426 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-426 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-426 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .btn-group .dropdown-toggle:active,.factory-bootstrap-426 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-426 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-426 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-426 .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-426 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-426 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-426 .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-426 .btn .caret{margin-left:0}.factory-bootstrap-426 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-426 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-426 .btn-group-vertical>.btn,.factory-bootstrap-426 .btn-group-vertical>.btn-group,.factory-bootstrap-426 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-426 .btn-group-vertical>.btn-group:after,.factory-bootstrap-426 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-426 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-426 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-426 .btn-group-vertical>.btn+.btn,.factory-bootstrap-426 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-426 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-426 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-426 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-426 .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-426 .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-426 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-426 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-426 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-426 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-426 .btn-group-justified>.btn,.factory-bootstrap-426 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-426 .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-426 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-426 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-426 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-426 .input-group-lg>.form-control,.factory-bootstrap-426 .input-group-lg>.input-group-addon,.factory-bootstrap-426 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 select.input-group-lg>.form-control,.factory-bootstrap-426 select.input-group-lg>.input-group-addon,.factory-bootstrap-426 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-426 textarea.input-group-lg>.form-control,.factory-bootstrap-426 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-426 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-426 .input-group-sm>.form-control,.factory-bootstrap-426 .input-group-sm>.input-group-addon,.factory-bootstrap-426 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 select.input-group-sm>.form-control,.factory-bootstrap-426 select.input-group-sm>.input-group-addon,.factory-bootstrap-426 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-426 textarea.input-group-sm>.form-control,.factory-bootstrap-426 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-426 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-426 .input-group .form-control,.factory-bootstrap-426 .input-group-addon,.factory-bootstrap-426 .input-group-btn{display:table-cell}.factory-bootstrap-426 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-426 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-426 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-426 .input-group-addon,.factory-bootstrap-426 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-426 .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-426 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-426 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-426 .input-group-addon input[type=checkbox],.factory-bootstrap-426 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-426 .input-group .form-control:first-child,.factory-bootstrap-426 .input-group-addon:first-child,.factory-bootstrap-426 .input-group-btn:first-child>.btn,.factory-bootstrap-426 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-426 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-426 .input-group-addon:first-child{border-right:0}.factory-bootstrap-426 .input-group .form-control:last-child,.factory-bootstrap-426 .input-group-addon:last-child,.factory-bootstrap-426 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-426 .input-group-btn:last-child>.btn,.factory-bootstrap-426 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .input-group-addon:last-child{border-left:0}.factory-bootstrap-426 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-426 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-426 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-426 .input-group-btn>.btn{position:relative}.factory-bootstrap-426 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-426 .input-group-btn>.btn:active,.factory-bootstrap-426 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-426 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-426 .nav:after,.factory-bootstrap-426 .nav:before{display:table;content:" "}.factory-bootstrap-426 .nav:after{clear:both}.factory-bootstrap-426 .nav>li{position:relative;display:block}.factory-bootstrap-426 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-426 .nav>li>a:focus,.factory-bootstrap-426 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-426 .nav>li.disabled>a{color:#999}.factory-bootstrap-426 .nav>li.disabled>a:focus,.factory-bootstrap-426 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-426 .nav .open>a,.factory-bootstrap-426 .nav .open>a:focus,.factory-bootstrap-426 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-426 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-426 .nav>li>a>img{max-width:none}.factory-bootstrap-426 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-426 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-426 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-426 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-426 .nav-tabs>li.active>a,.factory-bootstrap-426 .nav-tabs>li.active>a:focus,.factory-bootstrap-426 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-426 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-426 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-426 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-426 .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-426 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-426 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-426 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-426 .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-426 .nav-pills>li{float:left}.factory-bootstrap-426 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-426 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-426 .nav-pills>li.active>a,.factory-bootstrap-426 .nav-pills>li.active>a:focus,.factory-bootstrap-426 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-426 .nav-stacked>li{float:none}.factory-bootstrap-426 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-426 .nav-justified{width:100%}.factory-bootstrap-426 .nav-justified>li{float:none}.factory-bootstrap-426 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-426 .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-426 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-426 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-426 .nav-tabs-justified>.active>a,.factory-bootstrap-426 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-426 .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-426 .tab-content>.tab-pane{display:none}.factory-bootstrap-426 .tab-content>.active{display:block}.factory-bootstrap-426 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-426 .navbar:after,.factory-bootstrap-426 .navbar:before{display:table;content:" "}.factory-bootstrap-426 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-426 .navbar-header:after,.factory-bootstrap-426 .navbar-header:before{display:table;content:" "}.factory-bootstrap-426 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-426 .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-426 .navbar-collapse:after,.factory-bootstrap-426 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-426 .navbar-collapse:after{clear:both}.factory-bootstrap-426 .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-426 .container>.navbar-collapse,.factory-bootstrap-426 .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-426 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-426 .navbar-fixed-bottom,.factory-bootstrap-426 .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-426 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-426 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-426 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-426 .navbar-brand:focus,.factory-bootstrap-426 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-426 .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-426 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-426 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-426 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-426 .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-426 .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-426 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-426 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-426 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-426 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-426 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-426 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-426 .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-426 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-426 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-426 .navbar-default .navbar-brand:focus,.factory-bootstrap-426 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-426 .navbar-default .navbar-nav>li>a,.factory-bootstrap-426 .navbar-default .navbar-text{color:#777}.factory-bootstrap-426 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-426 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-426 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-426 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-426 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-426 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-426 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-426 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-426 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-426 .navbar-default .navbar-toggle:focus,.factory-bootstrap-426 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-426 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-426 .navbar-default .navbar-collapse,.factory-bootstrap-426 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-426 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-426 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-426 .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-426 .navbar-default .navbar-link{color:#777}.factory-bootstrap-426 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-426 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-426 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-426 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-426 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-426 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-426 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-426 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-426 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-426 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-426 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-426 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-426 .navbar-inverse .navbar-collapse,.factory-bootstrap-426 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-426 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-426 .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-426 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-426 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-426 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-426 .breadcrumb>li{display:inline-block}.factory-bootstrap-426 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-426 .breadcrumb>.active{color:#999}.factory-bootstrap-426 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-426 .pagination>li{display:inline}.factory-bootstrap-426 .pagination>li>a,.factory-bootstrap-426 .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-426 .pagination>li:first-child>a,.factory-bootstrap-426 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-426 .pagination>li:last-child>a,.factory-bootstrap-426 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-426 .pagination>li>a:focus,.factory-bootstrap-426 .pagination>li>a:hover,.factory-bootstrap-426 .pagination>li>span:focus,.factory-bootstrap-426 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-426 .pagination>.disabled>a,.factory-bootstrap-426 .pagination>.disabled>a:focus,.factory-bootstrap-426 .pagination>.disabled>a:hover,.factory-bootstrap-426 .pagination>.disabled>span,.factory-bootstrap-426 .pagination>.disabled>span:focus,.factory-bootstrap-426 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-426 .pagination-lg>li>a,.factory-bootstrap-426 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-426 .pagination-lg>li:first-child>a,.factory-bootstrap-426 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-426 .pagination-lg>li:last-child>a,.factory-bootstrap-426 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-426 .pagination-sm>li>a,.factory-bootstrap-426 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-426 .pagination-sm>li:first-child>a,.factory-bootstrap-426 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-426 .pagination-sm>li:last-child>a,.factory-bootstrap-426 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-426 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-426 .pager:after,.factory-bootstrap-426 .pager:before{display:table;content:" "}.factory-bootstrap-426 .pager:after{clear:both}.factory-bootstrap-426 .pager li{display:inline}.factory-bootstrap-426 .pager li>a,.factory-bootstrap-426 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-426 .pager li>a:focus,.factory-bootstrap-426 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-426 .pager .next>a,.factory-bootstrap-426 .pager .next>span{float:right}.factory-bootstrap-426 .pager .previous>a,.factory-bootstrap-426 .pager .previous>span{float:left}.factory-bootstrap-426 .pager .disabled>a,.factory-bootstrap-426 .pager .disabled>a:focus,.factory-bootstrap-426 .pager .disabled>a:hover,.factory-bootstrap-426 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-426 .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-426 .label[href]:focus,.factory-bootstrap-426 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-426 .label:empty{display:none}.factory-bootstrap-426 .btn .label{position:relative;top:-1px}.factory-bootstrap-426 .label-default{background-color:#999}.factory-bootstrap-426 .label-default[href]:focus,.factory-bootstrap-426 .label-default[href]:hover{background-color:gray}.factory-bootstrap-426 .label-primary{background-color:#428bca}.factory-bootstrap-426 .label-primary[href]:focus,.factory-bootstrap-426 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-426 .label-success{background-color:#5cb85c}.factory-bootstrap-426 .label-success[href]:focus,.factory-bootstrap-426 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-426 .label-info{background-color:#5bc0de}.factory-bootstrap-426 .label-info[href]:focus,.factory-bootstrap-426 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-426 .label-warning{background-color:#f0ad4e}.factory-bootstrap-426 .label-warning[href]:focus,.factory-bootstrap-426 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-426 .label-danger{background-color:#d9534f}.factory-bootstrap-426 .label-danger[href]:focus,.factory-bootstrap-426 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-426 .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-426 .badge:empty{display:none}.factory-bootstrap-426 .btn .badge{position:relative;top:-1px}.factory-bootstrap-426 a.badge:focus,.factory-bootstrap-426 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-426 .nav-pills>.active>a>.badge,.factory-bootstrap-426 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-426 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-426 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-426 .jumbotron .h1,.factory-bootstrap-426 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-426 .jumbotron p{line-height:1.4}.factory-bootstrap-426 .container .jumbotron{border-radius:6px}.factory-bootstrap-426 .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-426 .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-426 .thumbnail a>img,.factory-bootstrap-426 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-426 a.thumbnail.active,.factory-bootstrap-426 a.thumbnail:focus,.factory-bootstrap-426 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-426 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-426 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-426 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-426 .alert .alert-link{font-weight:700}.factory-bootstrap-426 .alert>p,.factory-bootstrap-426 .alert>ul{margin-bottom:0}.factory-bootstrap-426 .alert>p+p{margin-top:5px}.factory-bootstrap-426 .alert-dismissable{padding-right:35px}.factory-bootstrap-426 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-426 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-426 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-426 .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-426 .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-426 .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-426 .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-426 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-426 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-426 .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-426 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-426 .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-426 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-426 .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-426 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-426 .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-426 .media,.factory-bootstrap-426 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-426 .media,.factory-bootstrap-426 .media .media{margin-top:15px}.factory-bootstrap-426 .media:first-child{margin-top:0}.factory-bootstrap-426 .media-object{display:block}.factory-bootstrap-426 .media-heading{margin:0 0 5px}.factory-bootstrap-426 .media>.pull-left{margin-right:10px}.factory-bootstrap-426 .media>.pull-right{margin-left:10px}.factory-bootstrap-426 .media-list{padding-left:0;list-style:none}.factory-bootstrap-426 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-426 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-426 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-426 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-426 .list-group-item>.badge{float:right}.factory-bootstrap-426 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-426 a.list-group-item{color:#555}.factory-bootstrap-426 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-426 a.list-group-item:focus,.factory-bootstrap-426 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-426 a.list-group-item.active,.factory-bootstrap-426 a.list-group-item.active:focus,.factory-bootstrap-426 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-426 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-426 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-426 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-426 a.list-group-item.active .list-group-item-text,.factory-bootstrap-426 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-426 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-426 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-426 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-426 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-426 .panel-body{padding:15px}.factory-bootstrap-426 .panel-body:after,.factory-bootstrap-426 .panel-body:before{display:table;content:" "}.factory-bootstrap-426 .panel-body:after{clear:both}.factory-bootstrap-426 .panel>.list-group{margin-bottom:0}.factory-bootstrap-426 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-426 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-426 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-426 .panel>.table,.factory-bootstrap-426 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-426 .panel>.panel-body+.table,.factory-bootstrap-426 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-426 .panel>.table>tbody:first-child td,.factory-bootstrap-426 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-426 .panel>.table-bordered,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-426 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-426 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-426 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-426 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-426 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-426 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-426 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-426 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-426 .panel-title>a{color:inherit}.factory-bootstrap-426 .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-426 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-426 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-426 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-426 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-426 .panel-group .panel-footer{border-top:0}.factory-bootstrap-426 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-426 .panel-default{border-color:#ddd}.factory-bootstrap-426 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-426 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-426 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-426 .panel-primary{border-color:#428bca}.factory-bootstrap-426 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-426 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-426 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-426 .panel-success{border-color:#d6e9c6}.factory-bootstrap-426 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-426 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-426 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-426 .panel-warning{border-color:#faebcc}.factory-bootstrap-426 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-426 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-426 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-426 .panel-danger{border-color:#ebccd1}.factory-bootstrap-426 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-426 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-426 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-426 .panel-info{border-color:#bce8f1}.factory-bootstrap-426 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-426 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-426 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-426 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-426 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-426 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-426 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-426 .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-426 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-426 .close:focus,.factory-bootstrap-426 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-426 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-426 .modal-open{overflow:hidden}.factory-bootstrap-426 .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-426 .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-426 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-426 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-426 .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-426 .modal-backdrop,.factory-bootstrap-426-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-426 .modal-backdrop.fade,.factory-bootstrap-426-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-426 .modal-backdrop.in,.factory-bootstrap-426-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-426 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-426 .modal-header .close{margin-top:-2px}.factory-bootstrap-426 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-426 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-426 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-426 .modal-footer:after,.factory-bootstrap-426 .modal-footer:before{display:table;content:" "}.factory-bootstrap-426 .modal-footer:after{clear:both}.factory-bootstrap-426 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-426 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-426 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-426 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-426 .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-426 .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-426 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-426 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-426 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-426 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-426 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-426 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-426 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-426 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-426 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-426 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-426 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-426 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-426 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-426 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-426 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-426 .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-426 .popover.top{margin-top:-10px}.factory-bootstrap-426 .popover.right{margin-left:10px}.factory-bootstrap-426 .popover.bottom{margin-top:10px}.factory-bootstrap-426 .popover.left{margin-left:-10px}.factory-bootstrap-426 .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-426 .popover-content{padding:9px 14px}.factory-bootstrap-426 .popover .arrow,.factory-bootstrap-426 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-426 .popover .arrow{border-width:11px}.factory-bootstrap-426 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-426 .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-426 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-426 .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-426 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-426 .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-426 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-426 .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-426 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-426 .carousel{position:relative}.factory-bootstrap-426 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-426 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-426 .carousel-inner>.item>a>img,.factory-bootstrap-426 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-426 .carousel-inner>.active,.factory-bootstrap-426 .carousel-inner>.next,.factory-bootstrap-426 .carousel-inner>.prev{display:block}.factory-bootstrap-426 .carousel-inner>.active{left:0}.factory-bootstrap-426 .carousel-inner>.next,.factory-bootstrap-426 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-426 .carousel-inner>.next{left:100%}.factory-bootstrap-426 .carousel-inner>.prev{left:-100%}.factory-bootstrap-426 .carousel-inner>.next.left,.factory-bootstrap-426 .carousel-inner>.prev.right{left:0}.factory-bootstrap-426 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-426 .carousel-inner>.active.right{left:100%}.factory-bootstrap-426 .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-426 .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-426 .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-426 .carousel-control:focus,.factory-bootstrap-426 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-426 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-426 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-426 .carousel-control .icon-next,.factory-bootstrap-426 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-426 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-426 .carousel-control .icon-prev{left:50%}.factory-bootstrap-426 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-426 .carousel-control .icon-next{right:50%}.factory-bootstrap-426 .carousel-control .icon-next,.factory-bootstrap-426 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-426 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-426 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-426 .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-426 .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-426 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-426 .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-426 .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-426 .clearfix:after,.factory-bootstrap-426 .clearfix:before{display:table;content:" "}.factory-bootstrap-426 .clearfix:after{clear:both}.factory-bootstrap-426 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-426 .pull-right{float:right!important}.factory-bootstrap-426 .pull-left{float:left!important}.factory-bootstrap-426 .hide{display:none!important}.factory-bootstrap-426 .show{display:block!important}.factory-bootstrap-426 .invisible{visibility:hidden}.factory-bootstrap-426 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-426 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-426 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-426 .visible-lg,.factory-bootstrap-426 .visible-md,.factory-bootstrap-426 .visible-sm,.factory-bootstrap-426 .visible-xs,.factory-bootstrap-426 td.visible-lg,.factory-bootstrap-426 td.visible-md,.factory-bootstrap-426 td.visible-sm,.factory-bootstrap-426 td.visible-xs,.factory-bootstrap-426 th.visible-lg,.factory-bootstrap-426 th.visible-md,.factory-bootstrap-426 th.visible-sm,.factory-bootstrap-426 th.visible-xs,.factory-bootstrap-426 tr.visible-lg,.factory-bootstrap-426 tr.visible-md,.factory-bootstrap-426 tr.visible-sm,.factory-bootstrap-426 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-426 .hidden-xs{display:block!important}.factory-bootstrap-426 table.hidden-xs{display:table}.factory-bootstrap-426 tr.hidden-xs{display:table-row!important}.factory-bootstrap-426 td.hidden-xs,.factory-bootstrap-426 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-426 .hidden-sm{display:block!important}.factory-bootstrap-426 table.hidden-sm{display:table}.factory-bootstrap-426 tr.hidden-sm{display:table-row!important}.factory-bootstrap-426 td.hidden-sm,.factory-bootstrap-426 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-426 .hidden-md{display:block!important}.factory-bootstrap-426 table.hidden-md{display:table}.factory-bootstrap-426 tr.hidden-md{display:table-row!important}.factory-bootstrap-426 td.hidden-md,.factory-bootstrap-426 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-426 .hidden-lg{display:block!important}.factory-bootstrap-426 table.hidden-lg{display:table}.factory-bootstrap-426 tr.hidden-lg{display:table-row!important}.factory-bootstrap-426 td.hidden-lg,.factory-bootstrap-426 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-426 .hidden-lg.hidden-xs,.factory-bootstrap-426 td.hidden-lg.hidden-xs,.factory-bootstrap-426 th.hidden-lg.hidden-xs,.factory-bootstrap-426 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-426 .hidden-lg.hidden-sm,.factory-bootstrap-426 td.hidden-lg.hidden-sm,.factory-bootstrap-426 th.hidden-lg.hidden-sm,.factory-bootstrap-426 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-426 .hidden-lg.hidden-md,.factory-bootstrap-426 td.hidden-lg.hidden-md,.factory-bootstrap-426 th.hidden-lg.hidden-md,.factory-bootstrap-426 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-426 .hidden-lg,.factory-bootstrap-426 td.hidden-lg,.factory-bootstrap-426 th.hidden-lg,.factory-bootstrap-426 tr.hidden-lg{display:none!important}}.factory-bootstrap-426 .visible-print,.factory-bootstrap-426 td.visible-print,.factory-bootstrap-426 th.visible-print,.factory-bootstrap-426 tr.visible-print{display:none!important}@media print{.factory-bootstrap-426 .visible-print{display:block!important}.factory-bootstrap-426 table.visible-print{display:table}.factory-bootstrap-426 tr.visible-print{display:table-row!important}.factory-bootstrap-426 td.visible-print,.factory-bootstrap-426 th.visible-print{display:table-cell!important}.factory-bootstrap-426 .hidden-print,.factory-bootstrap-426 td.hidden-print,.factory-bootstrap-426 th.hidden-print,.factory-bootstrap-426 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-426 .btn-danger,.factory-bootstrap-426 .btn-default,.factory-bootstrap-426 .btn-info,.factory-bootstrap-426 .btn-primary,.factory-bootstrap-426 .btn-success,.factory-bootstrap-426 .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-426 .btn-danger.active,.factory-bootstrap-426 .btn-danger:active,.factory-bootstrap-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active,.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active,.factory-bootstrap-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active,.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active,.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .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-426 .btn.active,.factory-bootstrap-426 .btn:active{background-image:none}.factory-bootstrap-426 .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-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-426 .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-426 .btn-gold:focus,.factory-bootstrap-426 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-426 .btn-gold.active,.factory-bootstrap-426 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-426 .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-426 .btn-success:focus,.factory-bootstrap-426 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-426 .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-426 .btn-warning:focus,.factory-bootstrap-426 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-426 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-426 .btn-danger.active,.factory-bootstrap-426 .btn-danger:active,.factory-bootstrap-426 .btn-danger:focus,.factory-bootstrap-426 .btn-danger:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-426 .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-426 .btn-info:focus,.factory-bootstrap-426 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-426 .img-thumbnail,.factory-bootstrap-426 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-426 .dropdown-menu>li>a:focus,.factory-bootstrap-426 .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-426 .dropdown-menu>.active>a,.factory-bootstrap-426 .dropdown-menu>.active>a:focus,.factory-bootstrap-426 .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-426 .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-426 .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-426 .navbar-brand,.factory-bootstrap-426 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-426 .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-426 .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-426 .navbar-inverse .navbar-brand,.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-426 .navbar-fixed-bottom,.factory-bootstrap-426 .navbar-fixed-top,.factory-bootstrap-426 .navbar-static-top{border-radius:0}.factory-bootstrap-426 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-426 .alert .actions{padding-top:10px}.factory-bootstrap-426 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-426 .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-426 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-426 .alert-normal,.factory-bootstrap-426 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-426 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-426 .alert-danger a:not(.btn),.factory-bootstrap-426 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .list-group-item.active,.factory-bootstrap-426 .list-group-item.active:focus,.factory-bootstrap-426 .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-426 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-426 .factory-hidden{display:none}.factory-bootstrap-426 .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-422 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-422 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-422 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-422 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-422 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-422 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-422 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-422 .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-422 .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-422 .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-422 .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-422 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-422 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-422 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-422 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-422 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-422 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-422 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-422 .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-422 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-422 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-422 .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-422 .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-422 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-422 .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-422 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-422 .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-422 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-422 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-422 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-422 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-422 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-422 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-422 .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-426 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-426 .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-426 .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-426 .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-426 .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-426 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-426 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-426 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-426 .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-426 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-426 .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-426 .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-426 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-426 .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-426 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-426 .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-426 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-426 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-426 .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-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .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-422 .btn-primary:disabled,.factory-bootstrap-422 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-422 .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-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .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-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-426 .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-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .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-422 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-422 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-422 .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-422 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-422 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-422 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-422 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-422 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-422 .factory-form-group legend+.control-group{margin-top:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-426 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-426 .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-426 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-426 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-426 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-426 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-426 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-426 .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-422 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-422 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-422 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-422 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-422 .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-422 .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-426 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-426 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-426 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-426 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-426 .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-426 .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-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .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-422 .btn-primary:disabled,.factory-bootstrap-422 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-422 .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-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .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-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-426 .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-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .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-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .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-422 .btn-primary:disabled,.factory-bootstrap-422 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-422 .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-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .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-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-426 .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-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .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-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .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-422 .btn-primary:disabled,.factory-bootstrap-422 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-422 .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-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .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-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-426 .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-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .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-422 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-422 .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-422 .btn-primary:focus,.factory-bootstrap-422 .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-422 .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-422 .btn-primary:disabled,.factory-bootstrap-422 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-422 .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-422 .pagination>.active>a,.factory-bootstrap-422 .pagination>.active>a:focus,.factory-bootstrap-422 .pagination>.active>a:hover,.factory-bootstrap-422 .pagination>.active>span,.factory-bootstrap-422 .pagination>.active>span:focus,.factory-bootstrap-422 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .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-426 .btn-primary:focus,.factory-bootstrap-426 .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-426 .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-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-426 .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-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .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-422 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-422 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-422 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-422 .nav-tabs a{text-decoration:none}.factory-bootstrap-422 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-422 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-422 .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-422 .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-422 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-422 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-422 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-422 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-422 .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-422 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-422 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-422 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-422 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-422 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-422 .factory-align-vertical .control-group textarea{width:90%}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-426 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-426 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-426 .nav-tabs a{text-decoration:none}.factory-bootstrap-426 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-426 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-426 .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-426 .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-426 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-426 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-426 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-426 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-426 .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-426 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-426 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-426 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-426 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-426 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-426 .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-422 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-422 .wp-editor-wrap .button,.factory-bootstrap-422 .wp-editor-wrap input,.factory-bootstrap-422 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-422 .switch-html,.factory-bootstrap-422 .switch-tmce{color:#777}.factory-bootstrap-422 .html-active .switch-html,.factory-bootstrap-422 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-422 .switch-html:hover,.factory-bootstrap-422 .switch-tmce:hover{color:#777}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-426 .wp-editor-wrap .button,.factory-bootstrap-426 .wp-editor-wrap input,.factory-bootstrap-426 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-426 .switch-html,.factory-bootstrap-426 .switch-tmce{color:#777}.factory-bootstrap-426 .html-active .switch-html,.factory-bootstrap-426 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-426 .switch-html:hover,.factory-bootstrap-426 .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-422 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-422 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-422 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-422 .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-422 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-422 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-426 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-426 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-426 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-426 .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-426 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-426 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-422 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-422 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-422 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-422 .iris-picker{margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-426 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-426 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-426 .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-422 .factory-color{position:relative}.factory-bootstrap-422 .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-422 .factory-color .factory-background,.factory-bootstrap-422 .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-422 .factory-color .factory-background{z-index:2;border-radius:3px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-color{position:relative}.factory-bootstrap-426 .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-426 .factory-color .factory-background,.factory-bootstrap-426 .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-426 .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-422 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-422 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-422 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-426 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-426 .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-422 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-422 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-422 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .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-422 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-422 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-422 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-422 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-426 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-426 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .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-426 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-426 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-426 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-426 .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-422 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-422 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-422 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-422 .iris-picker{margin-top:10px}.factory-bootstrap-422 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-422 .factory-font .chosen-results{max-height:150px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-426 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-426 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-426 .iris-picker{margin-top:10px}.factory-bootstrap-426 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-426 .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-422 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-422 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-422 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-422 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-422 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-422 .factory-list .factory-error-text,.factory-bootstrap-422 .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-422 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-422 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-422 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-422 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-422 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-422 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-426 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-426 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-426 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-426 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-426 .factory-list .factory-error-text,.factory-bootstrap-426 .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-426 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-426 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-426 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-426 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-426 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-426 .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-422 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-422 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-422 .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-422 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-422 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-422 .factory-mtextbox-add-item{display:block;margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-426 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-426 .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-426 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-426 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-426 .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-422 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-422 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-422 .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-422 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-422 .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-422 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-422 .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-422 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-422 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-422 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-422 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-422 .factory-pattern .factory-color,.factory-bootstrap-422 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-422 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-422 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-422 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-422 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-422 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-422 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-422 .factory-pattern .factory-patterns-item,.factory-bootstrap-422 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-422 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-422 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-422 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-422 .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-422 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-422 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-422 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-422 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-422 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-422 .factory-pattern .factory-change-color-btn{margin-left:5px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-426 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-426 .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-426 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-426 .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-426 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-426 .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-426 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-426 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-426 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-426 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-426 .factory-pattern .factory-color,.factory-bootstrap-426 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-426 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-426 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-426 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-426 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-426 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-426 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-426 .factory-pattern .factory-patterns-item,.factory-bootstrap-426 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-426 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-426 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-426 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-426 .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-426 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-426 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-426 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-426 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-426 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-426 .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-422 .factory-from-radio-label,.factory-bootstrap-422 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-422 .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-422 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-422 .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-422 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-422 .factory-radio-color{opacity:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-from-radio-label,.factory-bootstrap-426 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-426 .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-426 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-426 .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-426 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-426 .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-422 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-422 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-422 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-422 .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-422 .factory-tab .factory-more-link-hide:hover{color:#999}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-426 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-426 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-426 .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-426 .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-422 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-422 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-422 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-422 .factory-point,.factory-bootstrap-422 .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-422 .factory-point-color{border-radius:0}.factory-bootstrap-422 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-422 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-422 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-422 .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-422 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-422 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-422 .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-422 .factory-preset-gradient,.factory-bootstrap-422 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-422 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-422 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-422 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-422 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-422 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-422 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-422 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-422 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-422 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-426 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-426 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-426 .factory-point,.factory-bootstrap-426 .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-426 .factory-point-color{border-radius:0}.factory-bootstrap-426 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-426 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-426 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-426 .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-426 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-426 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-426 .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-426 .factory-preset-gradient,.factory-bootstrap-426 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-426 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-426 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-426 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-426 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-426 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-426 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-426 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-426 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-426 .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-422 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-422 .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-422 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-422 .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-422 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-422 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-422 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-422 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-422 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-422 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-422 .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-422 .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-422 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-422 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-422 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-422 .factory-paddings-editor .factory-side-left,.factory-bootstrap-422 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-422 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-422 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-426 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-426 .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-426 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-426 .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-426 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-426 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-426 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-426 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-426 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-426 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-426 .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-426 .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-426 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-426 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-426 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-426 .factory-paddings-editor .factory-side-left,.factory-bootstrap-426 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-426 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-426 .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.factoryBootstrap422_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-422 .factory-accordion").factoryBootstrap422_accordion()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";a.fn.factoryBootstrap426_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-426 .factory-accordion").factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap422_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-422 .factory-datetimepicker").factoryBootstrap422_DatetimePickerControl(),a(".factory-bootstrap-422 .factory-datetimepicker-range-0").factoryBootstrap422_DatetimePickerControl(),a(".factory-bootstrap-422 .factory-datetimepicker-range-1").factoryBootstrap422_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-422 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-422 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-422 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-422 .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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap426_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-426 .factory-datetimepicker").factoryBootstrap426_DatetimePickerControl(),a(".factory-bootstrap-426 .factory-datetimepicker-range-0").factoryBootstrap426_DatetimePickerControl(),a(".factory-bootstrap-426 .factory-datetimepicker-range-1").factoryBootstrap426_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-426 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-426 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-426 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-426 .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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_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-422-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.factoryBootstrap422_modal;a.fn.factoryBootstrap422_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.factoryBootstrap422_modal.Constructor=b,a.fn.factoryBootstrap422_modal.noConflict=function(){return a.fn.factoryBootstrap422_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.factoryBootstrap422_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-426-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.factoryBootstrap426_modal;a.fn.factoryBootstrap426_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.factoryBootstrap426_modal.Constructor=b,a.fn.factoryBootstrap426_modal.noConflict=function(){return a.fn.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-422 .factory-checkbox.factory-buttons-way").factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-checkbox.factory-buttons-way").factoryBootstrap426_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-422 .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-426 .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("factoryBootstrap422.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.factoryBootstrap422_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap422_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap422_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap422_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap422_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("factoryBootstrap422_colorControl",a.factoryBootstrap422.colorControl),a(".factory-bootstrap-422 .factory-color").factoryBootstrap422_colorControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap426.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.factoryBootstrap426_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap426_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap426_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap426_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap426_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("factoryBootstrap426_colorControl",a.factoryBootstrap426.colorControl),a(".factory-bootstrap-426 .factory-color").factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-422 .factory-dropdown-and-colors").factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-dropdown-and-colors").factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-422 .factory-dropdown").factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-dropdown").factoryBootstrap426_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("factoryBootstrap422.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("factoryBootstrap422_fontControl",a.factoryBootstrap422.fontControl),a(".factory-bootstrap-422 .factory-font").factoryBootstrap422_fontControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap426.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("factoryBootstrap426_fontControl",a.factoryBootstrap426.fontControl),a(".factory-bootstrap-426 .factory-font").factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-422 .factory-gradient").factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-gradient").factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-422 .factory-integer").factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-integer").factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_listControl.Constructor=b,a(function(){a(".factory-bootstrap-422 .factory-list").factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_listControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-list").factoryBootstrap426_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.factoryBootstrap422_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-422 .factory-multiple-textbox-group").factoryBootstrap422_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.factoryBootstrap426_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-426 .factory-multiple-textbox-group").factoryBootstrap426_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("factoryBootstrap422.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.factoryBootstrap422_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("factoryBootstrap422_patternControl",a.factoryBootstrap422.patternControl),a(".factory-bootstrap-422 .factory-pattern").factoryBootstrap422_patternControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap426.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.factoryBootstrap426_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("factoryBootstrap426_patternControl",a.factoryBootstrap426.patternControl),a(".factory-bootstrap-426 .factory-pattern").factoryBootstrap426_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="factoryBootstrap422_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-422 .factory-more-link").factoryBootstrap422_moreLink()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";var e="factoryBootstrap426_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-426 .factory-more-link").factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap422_iris("show"),this.$colorPicker.factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap426_iris("show"),this.$colorPicker.factoryBootstrap426_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.factoryBootstrap422_iris=!0,a.fn.factoryBootstrap422_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap422_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).factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap422_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.factoryBootstrap426_iris=!0,a.fn.factoryBootstrap426_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap426_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).factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap426_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.factoryBootstrap422_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.factoryBootstrap422_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-422 .factory-paddings-editor").factoryBootstrap422_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.factoryBootstrap426_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.factoryBootstrap426_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-paddings-editor").factoryBootstrap426_paddingsEditor()})}(jQuery);
libs/factory/bootstrap/boot.php CHANGED
@@ -19,27 +19,27 @@ if ( ! is_admin() ) {
19
  return;
20
  }
21
 
22
- if ( defined( 'FACTORY_BOOTSTRAP_422_LOADED' ) ) {
23
  return;
24
  }
25
 
26
- define( 'FACTORY_BOOTSTRAP_422_VERSION', '4.2.2' );
27
- define( 'FACTORY_BOOTSTRAP_422_LOADED', true );
28
 
29
  if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
30
  define( 'FACTORY_FLAT_ADMIN', true );
31
  }
32
 
33
- define( 'FACTORY_BOOTSTRAP_422_DIR', dirname( __FILE__ ) );
34
- define( 'FACTORY_BOOTSTRAP_422_URL', plugins_url( null, __FILE__ ) );
35
 
36
- require_once( FACTORY_BOOTSTRAP_422_DIR . '/includes/functions.php' );
37
 
38
  /**
39
- * @param Wbcr_Factory421_Plugin $plugin
40
  */
41
- add_action( 'wbcr_factory_bootstrap_422_plugin_created', function ( $plugin ) {
42
- $manager = new Wbcr_FactoryBootstrap422_Manager( $plugin );
43
  $plugin->setBootstap( $manager );
44
  } );
45
 
19
  return;
20
  }
21
 
22
+ if ( defined( 'FACTORY_BOOTSTRAP_426_LOADED' ) ) {
23
  return;
24
  }
25
 
26
+ define( 'FACTORY_BOOTSTRAP_426_VERSION', '4.2.6' );
27
+ define( 'FACTORY_BOOTSTRAP_426_LOADED', true );
28
 
29
  if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
30
  define( 'FACTORY_FLAT_ADMIN', true );
31
  }
32
 
33
+ define( 'FACTORY_BOOTSTRAP_426_DIR', dirname( __FILE__ ) );
34
+ define( 'FACTORY_BOOTSTRAP_426_URL', plugins_url( null, __FILE__ ) );
35
 
36
+ require_once( FACTORY_BOOTSTRAP_426_DIR . '/includes/functions.php' );
37
 
38
  /**
39
+ * @param Wbcr_Factory425_Plugin $plugin
40
  */
41
+ add_action( 'wbcr_factory_bootstrap_426_plugin_created', function ( $plugin ) {
42
+ $manager = new Wbcr_FactoryBootstrap426_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_FactoryBootstrap422_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
- * @var Wbcr_Factory421_Plugin
30
  */
31
  public $plugin;
32
 
@@ -51,7 +51,7 @@ class Wbcr_FactoryBootstrap422_Manager {
51
  *
52
  * @since 1.0.0
53
  */
54
- public function __construct( Wbcr_Factory421_Plugin $plugin ) {
55
  $this->plugin = $plugin;
56
 
57
  add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
@@ -111,8 +111,8 @@ class Wbcr_FactoryBootstrap422_Manager {
111
  */
112
  public function loadAssets( $hook ) {
113
 
114
- do_action( 'wbcr_factory_421_bootstrap_enqueue_scripts', $hook );
115
- do_action( 'wbcr_factory_421_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
116
 
117
  $dependencies = [];
118
  if ( ! empty( $this->scripts ) ) {
@@ -137,64 +137,14 @@ class Wbcr_FactoryBootstrap422_Manager {
137
  if ( ! empty( $this->styles ) ) {
138
  $this->enqueueScripts( $this->styles, 'css', $dependencies );
139
  }
140
-
141
- $user_id = get_current_user_id();
142
- $color_name = get_user_meta( $user_id, 'admin_color', true );
143
-
144
- if ( $color_name !== 'fresh' ) {
145
- if ( file_exists( FACTORY_BOOTSTRAP_422_DIR . '/assets/flat/css/bootstrap.' . $color_name . '.css' ) ) {
146
- wp_enqueue_style( 'wbcr-factory-bootstrap-422-colors', FACTORY_BOOTSTRAP_422_URL . '/assets/flat/css/bootstrap.' . $color_name . '.css' );
147
- }
148
- }
149
-
150
- if ( $color_name == 'light' ) {
151
- $primary_dark = '#037c9a';
152
- $primary_light = '#04a4cc';
153
- } else if ( $color_name == 'blue' ) {
154
- $primary_dark = '#d39323';
155
- $primary_light = '#e1a948';
156
- } else if ( $color_name == 'coffee' ) {
157
- $primary_dark = '#b78a66';
158
- $primary_light = '#c7a589';
159
- } else if ( $color_name == 'ectoplasm' ) {
160
- $primary_dark = '#839237';
161
- $primary_light = '#a3b745';
162
- } else if ( $color_name == 'ocean' ) {
163
- $primary_dark = '#80a583';
164
- $primary_light = '#9ebaa0';
165
- } else if ( $color_name == 'midnight' ) {
166
- $primary_dark = '#d02a21';
167
- $primary_light = '#e14d43';
168
- } else if ( $color_name == 'sunrise' ) {
169
- $primary_dark = '#c36822';
170
- $primary_light = '#dd823b';
171
- } else {
172
- $primary_dark = '#0074a2';
173
- $primary_light = '#2ea2cc';
174
- }
175
-
176
- ?>
177
- <script>
178
- if( !window.factory ) {
179
- window.factory = {};
180
- }
181
- if( !window.factory.factoryBootstrap422 ) {
182
- window.factory.factoryBootstrap422 = {};
183
- }
184
- window.factory.factoryBootstrap422.colors = {
185
- primaryDark: '<?php echo $primary_dark ?>',
186
- primaryLight: '<?php echo $primary_light ?>'
187
- };
188
- </script>
189
- <?php
190
  }
191
 
192
  /**
193
- * @param array $sripts
194
  * @param string $type
195
  * @param array $dependencies
196
  */
197
- protected function enqueueScripts( array $sripts, $type = 'js', array $dependencies ) {
198
 
199
  $is_first = true;
200
 
@@ -206,8 +156,8 @@ class Wbcr_FactoryBootstrap422_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_422_DIR . '/assets/cache/';
210
- $cache_dir_url = FACTORY_BOOTSTRAP_422_URL . '/assets/cache/';
211
 
212
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
213
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
@@ -231,10 +181,10 @@ class Wbcr_FactoryBootstrap422_Manager {
231
  }
232
 
233
  $concat_files = [];
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_422_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 +192,9 @@ class Wbcr_FactoryBootstrap422_Manager {
242
  }
243
  } else {
244
  if ( $type == 'js' ) {
245
- wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_422_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_422_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_FactoryBootstrap426_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
+ * @var Wbcr_Factory425_Plugin
30
  */
31
  public $plugin;
32
 
51
  *
52
  * @since 1.0.0
53
  */
54
+ public function __construct( Wbcr_Factory425_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_425_bootstrap_enqueue_scripts', $hook );
115
+ do_action( 'wbcr_factory_425_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
116
 
117
  $dependencies = [];
118
  if ( ! empty( $this->scripts ) ) {
137
  if ( ! empty( $this->styles ) ) {
138
  $this->enqueueScripts( $this->styles, 'css', $dependencies );
139
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  }
141
 
142
  /**
143
+ * @param array $scripts
144
  * @param string $type
145
  * @param array $dependencies
146
  */
147
+ protected function enqueueScripts( array $scripts, $type, array $dependencies ) {
148
 
149
  $is_first = true;
150
 
156
  $cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
157
 
158
  $cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
159
+ $cache_dir_path = FACTORY_BOOTSTRAP_426_DIR . '/assets/cache/';
160
+ $cache_dir_url = FACTORY_BOOTSTRAP_426_URL . '/assets/cache/';
161
 
162
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
163
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
181
  }
182
 
183
  $concat_files = [];
184
+ foreach ( $scripts as $script_to_load ) {
185
  $script_to_load = sanitize_text_field( $script_to_load );
186
  if ( $cache_enable && $cache_dir_exists ) {
187
+ $fname = FACTORY_BOOTSTRAP_426_DIR . "/assets/$type-min/$script_to_load.min." . $type;
188
  if ( file_exists( $fname ) ) {
189
  $f = @fopen( $fname, 'r' );
190
  $concat_files[] = @fread( $f, filesize( $fname ) );
192
  }
193
  } else {
194
  if ( $type == 'js' ) {
195
+ wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_426_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
196
  } else {
197
+ wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_426_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
198
  }
199
  $is_first = false;
200
  }
libs/factory/core/boot.php CHANGED
@@ -14,49 +14,49 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- if ( defined( 'FACTORY_421_LOADED' ) ) {
18
  return;
19
  }
20
 
21
- define( 'FACTORY_421_LOADED', true );
22
 
23
- define( 'FACTORY_421_VERSION', '4.2.1' );
24
 
25
- define( 'FACTORY_421_DIR', dirname( __FILE__ ) );
26
- define( 'FACTORY_421_URL', plugins_url( null, __FILE__ ) );
27
 
28
- load_plugin_textdomain( 'wbcr_factory_421', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
29
 
30
  #comp merge
31
- require_once( FACTORY_421_DIR . '/includes/functions.php' );
32
 
33
- require_once( FACTORY_421_DIR . '/includes/entities/class-factory-paths.php' );
34
- require_once( FACTORY_421_DIR . '/includes/entities/class-factory-support.php' );
35
 
36
- require_once( FACTORY_421_DIR . '/includes/class-factory-requests.php' );
37
- require_once( FACTORY_421_DIR . '/includes/class-factory-options.php' );
38
- require_once( FACTORY_421_DIR . '/includes/class-factory-plugin-base.php' );
39
- require_once( FACTORY_421_DIR . '/includes/class-factory-migrations.php' );
40
- require_once( FACTORY_421_DIR . '/includes/class-factory-notices.php' );
41
 
42
  // ASSETS
43
- require_once( FACTORY_421_DIR . '/includes/assets-managment/class-factory-assets-list.php' );
44
- require_once( FACTORY_421_DIR . '/includes/assets-managment/class-factory-script-list.php' );
45
- require_once( FACTORY_421_DIR . '/includes/assets-managment/class-factory-style-list.php' );
46
 
47
  // PREMIUM
48
- require_once( FACTORY_421_DIR . '/includes/premium/class-factory-license-interface.php' );
49
- require_once( FACTORY_421_DIR . '/includes/premium/class-factory-provider-abstract.php' );
50
- require_once( FACTORY_421_DIR . '/includes/premium/class-factory-manager.php' );
51
 
52
  // UPDATES
53
- require_once( FACTORY_421_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php' );
54
- require_once( FACTORY_421_DIR . '/includes/updates/repositories/class-factory-wordpress.php' );
55
- require_once( FACTORY_421_DIR . '/includes/updates/class-factory-upgrader.php' );
56
- require_once( FACTORY_421_DIR . '/includes/updates/class-factory-premium-upgrader.php' );
57
 
58
- require_once( FACTORY_421_DIR . '/includes/class-factory-plugin-abstract.php' );
59
 
60
- require_once( FACTORY_421_DIR . '/includes/activation/class-factory-activator.php' );
61
- require_once( FACTORY_421_DIR . '/includes/activation/class-factory-update.php' );
62
  #endcomp
14
  exit;
15
  }
16
 
17
+ if ( defined( 'FACTORY_425_LOADED' ) ) {
18
  return;
19
  }
20
 
21
+ define( 'FACTORY_425_LOADED', true );
22
 
23
+ define( 'FACTORY_425_VERSION', '4.2.5' );
24
 
25
+ define( 'FACTORY_425_DIR', dirname( __FILE__ ) );
26
+ define( 'FACTORY_425_URL', plugins_url( null, __FILE__ ) );
27
 
28
+ load_plugin_textdomain( 'wbcr_factory_425', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
29
 
30
  #comp merge
31
+ require_once( FACTORY_425_DIR . '/includes/functions.php' );
32
 
33
+ require_once( FACTORY_425_DIR . '/includes/entities/class-factory-paths.php' );
34
+ require_once( FACTORY_425_DIR . '/includes/entities/class-factory-support.php' );
35
 
36
+ require_once( FACTORY_425_DIR . '/includes/class-factory-requests.php' );
37
+ require_once( FACTORY_425_DIR . '/includes/class-factory-options.php' );
38
+ require_once( FACTORY_425_DIR . '/includes/class-factory-plugin-base.php' );
39
+ require_once( FACTORY_425_DIR . '/includes/class-factory-migrations.php' );
40
+ require_once( FACTORY_425_DIR . '/includes/class-factory-notices.php' );
41
 
42
  // ASSETS
43
+ require_once( FACTORY_425_DIR . '/includes/assets-managment/class-factory-assets-list.php' );
44
+ require_once( FACTORY_425_DIR . '/includes/assets-managment/class-factory-script-list.php' );
45
+ require_once( FACTORY_425_DIR . '/includes/assets-managment/class-factory-style-list.php' );
46
 
47
  // PREMIUM
48
+ require_once( FACTORY_425_DIR . '/includes/premium/class-factory-license-interface.php' );
49
+ require_once( FACTORY_425_DIR . '/includes/premium/class-factory-provider-abstract.php' );
50
+ require_once( FACTORY_425_DIR . '/includes/premium/class-factory-manager.php' );
51
 
52
  // UPDATES
53
+ require_once( FACTORY_425_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php' );
54
+ require_once( FACTORY_425_DIR . '/includes/updates/repositories/class-factory-wordpress.php' );
55
+ require_once( FACTORY_425_DIR . '/includes/updates/class-factory-upgrader.php' );
56
+ require_once( FACTORY_425_DIR . '/includes/updates/class-factory-premium-upgrader.php' );
57
 
58
+ require_once( FACTORY_425_DIR . '/includes/class-factory-plugin-abstract.php' );
59
 
60
+ require_once( FACTORY_425_DIR . '/includes/activation/class-factory-activator.php' );
61
+ require_once( FACTORY_425_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_Factory421_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
- * @var Wbcr_Factory421_Plugin
28
  */
29
  public $plugin;
30
 
31
- public function __construct( Wbcr_Factory421_Plugin $plugin ) {
32
  $this->plugin = $plugin;
33
  }
34
 
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_Factory425_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
+ * @var Wbcr_Factory425_Plugin
28
  */
29
  public $plugin;
30
 
31
+ public function __construct( Wbcr_Factory425_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_Factory421_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
- * @var Wbcr_Factory421_Plugin
29
  */
30
  var $plugin;
31
 
32
- public function __construct( Wbcr_Factory421_Plugin $plugin ) {
33
  $this->plugin = $plugin;
34
  }
35
 
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_Factory425_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
+ * @var Wbcr_Factory425_Plugin
29
  */
30
  var $plugin;
31
 
32
+ public function __construct( Wbcr_Factory425_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_Factory421_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
@@ -29,15 +29,15 @@ class Wbcr_Factory421_AssetsList {
29
  protected $default_place;
30
 
31
  /**
32
- * @var Wbcr_Factory421_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
- * @param Wbcr_Factory421_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
- public function __construct( Wbcr_Factory421_Plugin $plugin, $defaultIsFooter = true ) {
41
  $this->plugin = $plugin;
42
 
43
  if ( $defaultIsFooter ) {
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_Factory425_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
29
  protected $default_place;
30
 
31
  /**
32
+ * @var Wbcr_Factory425_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
+ * @param Wbcr_Factory425_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
+ public function __construct( Wbcr_Factory425_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_Factory421_ScriptList extends Wbcr_Factory421_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
@@ -149,7 +149,7 @@ class Wbcr_Factory421_ScriptList extends Wbcr_Factory421_AssetsList {
149
  * @param string $varname
150
  * @param string $data
151
  *
152
- * @return Wbcr_Factory421_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_Factory425_ScriptList extends Wbcr_Factory425_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
149
  * @param string $varname
150
  * @param string $data
151
  *
152
+ * @return Wbcr_Factory425_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_Factory421_StyleList extends Wbcr_Factory421_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory425_StyleList extends Wbcr_Factory425_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_421' ), $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_421' ), $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_425' ), $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_425' ), $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_421;
4
 
5
  use Exception;
6
- use Wbcr_Factory421_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -35,11 +35,11 @@ class Migrations {
35
  /**
36
  * Migrations constructor.
37
  *
38
- * @param Wbcr_Factory421_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
- public function __construct( Wbcr_Factory421_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
@@ -129,14 +129,14 @@ class Migrations {
129
  $fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
130
 
131
  $notice_text = $migration_error_text;
132
- $notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_421' ) . "</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_421' ) . '</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_421" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
- $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_421" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
- $notice_text .= __( "Current plugin version:", "wbcr_factory_421" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
- $notice_text .= __( "Need migration:", "wbcr_factory_421" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
- $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_421" ) . "</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_421' ) . '</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_421' ) );
509
  }
510
 
511
  $tokens = token_get_all( $phpCode );
1
  <?php
2
 
3
+ namespace WBCR\Factory_425;
4
 
5
  use Exception;
6
+ use Wbcr_Factory425_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
35
  /**
36
  * Migrations constructor.
37
  *
38
+ * @param Wbcr_Factory425_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
+ public function __construct( Wbcr_Factory425_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
129
  $fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
130
 
131
  $notice_text = $migration_error_text;
132
+ $notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_425' ) . "</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_425' ) . '</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_425" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
+ $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_425" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
+ $notice_text .= __( "Current plugin version:", "wbcr_factory_425" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
+ $notice_text .= __( "Need migration:", "wbcr_factory_425" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
+ $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_425" ) . "</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_425' ) . '</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_425' ) );
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_421;
4
 
5
- use Wbcr_Factory421_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_Factory421_Plugin
31
  */
32
  protected $plugin;
33
  /**
@@ -58,7 +58,7 @@ class Notices {
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
- * @param Wbcr_Factory421_Plugin $plugin
62
  */
63
  public function __construct( $plugin ) {
64
  //default notices
@@ -86,13 +86,13 @@ class Notices {
86
  /**
87
  * @since 2.1.2 - является устаревшим
88
  */
89
- $this->notices = wbcr_factory_421_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_421
96
  */
97
  $this->notices = apply_filters( 'wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName() );
98
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_425;
4
 
5
+ use Wbcr_Factory425_Plugin;
6
 
7
  // Exit if accessed directly
8
  if ( ! defined( 'ABSPATH' ) ) {
27
  class Notices {
28
 
29
  /**
30
+ * @var Wbcr_Factory425_Plugin
31
  */
32
  protected $plugin;
33
  /**
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
+ * @param Wbcr_Factory425_Plugin $plugin
62
  */
63
  public function __construct( $plugin ) {
64
  //default notices
86
  /**
87
  * @since 2.1.2 - является устаревшим
88
  */
89
+ $this->notices = wbcr_factory_425_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_425
96
  */
97
  $this->notices = apply_filters( 'wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName() );
98
 
libs/factory/core/includes/class-factory-options.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_421;
4
 
5
  // Exit if accessed directly
6
  use Exception;
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  }
11
 
12
  /**
13
- * Трейт используется для расширения базового класса плагина Wbcr_Factory421_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_425;
4
 
5
  // Exit if accessed directly
6
  use Exception;
10
  }
11
 
12
  /**
13
+ * Трейт используется для расширения базового класса плагина Wbcr_Factory425_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_Factory421_Plugin extends Wbcr_Factory421_Base {
28
 
29
  /**
30
- * Instance class Wbcr_Factory421_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
- * @var Wbcr_Factory421_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
- * @var \WBCR\Factory_421\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
- * @var Wbcr_FactoryBootstrap422_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
- * @var Wbcr_FactoryForms419_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
- * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory421_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
- * @var array[] Wbcr_Factory421_Activator
63
  */
64
  protected $activator_class = [];
65
 
@@ -86,27 +86,27 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
88
  * @since 4.1.9
89
- * @var WBCR\Factory_Adverts_103\Base
90
  */
91
  private $adverts;
92
 
93
  /**
94
  * Инициализирует компоненты фреймворка и плагина.
95
  *
96
- * @since 1.0.0
97
- *
98
- * @param array $data A set of plugin data.
99
  *
100
- * @param string $plugin_path A full path to the main plugin file.
101
  *
102
  * @throws Exception
 
 
103
  */
104
  public function __construct( $plugin_path, $data ) {
105
 
106
  parent::__construct( $plugin_path, $data );
107
 
108
- $this->request = new Wbcr_Factory421_Request();
109
- //$this->route = new Wbcr_Factory421_Route();
110
 
111
  // INIT PLUGIN FRAMEWORK MODULES
112
  // Framework modules should always be loaded first,
@@ -138,18 +138,18 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
138
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
139
  * скриптов, стилей) фреймворка.
140
  *
141
- * @param Wbcr_FactoryBootstrap422_Manager $bootstrap
142
  */
143
- public function setBootstap( Wbcr_FactoryBootstrap422_Manager $bootstrap ) {
144
  $this->bootstrap = $bootstrap;
145
  }
146
 
147
  /**
148
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
149
  *
150
- * @param Wbcr_FactoryForms419_Manager $forms
151
  */
152
- public function setForms( Wbcr_FactoryForms419_Manager $forms ) {
153
  $this->forms = $forms;
154
  }
155
 
@@ -171,14 +171,15 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
171
  * С помощью этого класса, мы проверяем валидность лицензий и получаем дополнительную информацию
172
  * о лицензии и ее покупателе. Класс используется в премиум менеджере.
173
  *
 
 
 
174
  * @since 4.1.6 - Добавлен
175
  *
176
- * @param string $name Имя провайдер
177
- * @param string $class_name Имя класса провайдера
178
  */
179
  public function set_license_provider( $name, $class_name ) {
180
- if ( ! isset( WBCR\Factory_421\Premium\Manager::$providers[ $name ] ) ) {
181
- WBCR\Factory_421\Premium\Manager::$providers[ $name ] = $class_name;
182
  }
183
  }
184
 
@@ -188,14 +189,15 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
188
  * С помощью этого класса мы реализиуем доставку и откат обновлений плагина, на сайт пользователя.
189
  * Скачиваение премиум версий происходит по защенному каналу. Класс используется в менеджере обновлений.
190
  *
 
 
 
191
  * @since 4.1.7 - Добавлен
192
  *
193
- * @param string $name Имя репозитория
194
- * @param string $class_name Имя класса репозитория
195
  */
196
  public function set_update_repository( $name, $class_name ) {
197
- if ( ! isset( WBCR\Factory_421\Updates\Upgrader::$repositories[ $name ] ) ) {
198
- WBCR\Factory_421\Updates\Upgrader::$repositories[ $name ] = $class_name;
199
  }
200
  }
201
 
@@ -205,9 +207,9 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
205
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
206
  * рекламных объявлений.
207
  *
208
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
209
  * @since 1.1
210
- * @return \WBCR\Factory_Adverts_103\Base
211
  */
212
  public function get_adverts_manager() {
213
  return $this->adverts;
@@ -217,37 +219,38 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
217
  * Устанавливает текстовый домен для плагина. Текстовый домен берется из заголовка входного
218
  * файла плагина.
219
  *
 
220
  * @since 4.0.8 - Добавлен
221
  *
222
  * @see https://codex.wordpress.org/I18n_for_WordPress_Developers
223
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/327828 - документация по входному файлу
224
  */
225
- public function set_text_domain() {
226
- if ( empty( $this->plugin_text_domain ) ) {
227
  return;
228
  }
229
 
230
- $locale = apply_filters( 'plugin_locale', is_admin() ? get_user_locale() : get_locale(), $this->plugin_text_domain );
231
 
232
- $mofile = $this->plugin_text_domain . '-' . $locale . '.mo';
233
 
234
- if ( ! load_textdomain( $this->plugin_text_domain, $this->paths->absolute . '/languages/' . $mofile ) ) {
235
- load_muplugin_textdomain( $this->plugin_text_domain );
236
  }
237
  }
238
 
239
  public function newScriptList() {
240
- return new Wbcr_Factory421_ScriptList( $this );
241
  }
242
 
243
  public function newStyleList() {
244
- return new Wbcr_Factory421_StyleList( $this );
245
  }
246
 
247
  /**
248
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
249
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
250
- * Wbcr_FactoryPages421_AdminPage, а затем регистрирует его через этот метод.
251
  * Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
252
  * pages.
253
  *
@@ -256,9 +259,9 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
256
  *
257
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
258
  *
259
- * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
260
- * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages421_AdminPage.
261
- * @param string $file_path Абсолютный путь к файлу с классом страницы.
262
  *
263
  * @throws Exception
264
  */
@@ -278,11 +281,11 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
278
  throw new Exception( 'A class with this name {' . $class_name . '} does not exist.' );
279
  }
280
 
281
- if ( ! class_exists( 'Wbcr_FactoryPages421' ) ) {
282
- throw new Exception( 'The factory_pages_421 module is not included.' );
283
  }
284
 
285
- Wbcr_FactoryPages421::register( $this, $class_name );
286
  }
287
 
288
  /**
@@ -291,9 +294,9 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
291
  * Wbcr_FactoryTypes000_Type, а затем регистрирует его через этот метод. Метод выполняет
292
  * подключение класса с новым типом записи и регистрирует его в модуле фреймворка types. *
293
  *
294
- * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Type_Name.
295
  * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryTypes000_Type.
296
- * @param string $file_path Абсолютный путь к файлу с классом страницы.
297
  *
298
  * @throws Exception
299
  * @deprecated 4.1.7 You cannot use it!
@@ -305,11 +308,11 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
305
  /**
306
  * Registers a class to activate the plugin.
307
  *
308
- * @since 1.0.0
309
- *
310
- * @param string $className class name of the plugin activator.
311
  *
312
  * @return void
 
 
313
  */
314
  public function registerActivation( $className ) {
315
  $this->activator_class[] = $className;
@@ -321,24 +324,24 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
321
  /**
322
  * It's invoked on plugin activation. Don't excite it directly.
323
  *
324
- * @since 1.0.0
325
  * @return void
 
326
  */
327
  public function activation_hook() {
328
 
329
  /**
330
  * @since 4.1.1 - change hook name
331
  */
332
- if ( apply_filters( "wbcr/factory_421/cancel_plugin_activation_{$this->plugin_name}", false ) ) {
333
  return;
334
  }
335
 
336
  /**
337
- * wbcr_factory_421_plugin_activation
338
  *
339
  * @since 4.1.1 - deprecated
340
  */
341
- wbcr_factory_421_do_action_deprecated( 'wbcr_factory_421_plugin_activation', [
342
  $this
343
  ], '4.1.1', "wbcr/factory/plugin_activation" );
344
 
@@ -347,7 +350,7 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
347
  *
348
  * @since 4.1.2 - deprecated
349
  */
350
- wbcr_factory_421_do_action_deprecated( 'wbcr/factory/plugin_activation', [
351
  $this
352
  ], '4.1.2', "wbcr/factory/before_plugin_activation" );
353
 
@@ -363,16 +366,16 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
363
  *
364
  * @since 4.1.2 - deprecated
365
  */
366
- wbcr_factory_421_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_421_plugin_activation_' . $this->plugin_name
372
  *
373
  * @since 4.1.1 - deprecated
374
  */
375
- wbcr_factory_421_do_action_deprecated( 'wbcr_factory_421_plugin_activation_' . $this->plugin_name, [
376
  $this
377
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
378
 
@@ -404,24 +407,24 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
404
  /**
405
  * It's invoked on plugin deactionvation. Don't excite it directly.
406
  *
407
- * @since 1.0.0
408
  * @return void
 
409
  */
410
  public function deactivation_hook() {
411
 
412
  /**
413
  * @since 4.1.1 - change hook name
414
  */
415
- if ( apply_filters( "wbcr/factory_421/cancel_plugin_deactivation_{$this->plugin_name}", false ) ) {
416
  return;
417
  }
418
 
419
  /**
420
- * wbcr_factory_421_plugin_deactivation
421
  *
422
  * @since 4.1.1 - deprecated
423
  */
424
- wbcr_factory_421_do_action_deprecated( 'wbcr_factory_421_plugin_deactivation', [
425
  $this
426
  ], '4.1.1', "wbcr/factory/plugin_deactivation" );
427
 
@@ -430,7 +433,7 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
430
  *
431
  * @since 4.1.2 - deprecated
432
  */
433
- wbcr_factory_421_do_action_deprecated( 'wbcr/factory/plugin_deactivation', [
434
  $this
435
  ], '4.1.2', "wbcr/factory/before_plugin_deactivation" );
436
 
@@ -442,11 +445,11 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
442
  do_action( 'wbcr/factory/plugin_deactivation', $this );
443
 
444
  /**
445
- * wbcr_factory_421_plugin_deactivation_ . $this->plugin_name
446
  *
447
  * @since 4.1.1 - deprecated
448
  */
449
- wbcr_factory_421_do_action_deprecated( 'wbcr_factory_421_plugin_deactivation_' . $this->plugin_name, [
450
  $this
451
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
452
 
@@ -455,7 +458,7 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
455
  *
456
  * @since 4.1.2 - deprecated
457
  */
458
- wbcr_factory_421_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,8 +495,8 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
492
  * @throws Exception
493
  */
494
  public function getPluginPageUrl( $page_id, $args = [] ) {
495
- if ( ! class_exists( 'Wbcr_FactoryPages421' ) ) {
496
- throw new Exception( 'The factory_pages_421 module is not included.' );
497
  }
498
 
499
  if ( ! is_admin() ) {
@@ -502,7 +505,7 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
502
  return null;
503
  }
504
 
505
- return Wbcr_FactoryPages421::getPageUrl( $this, $page_id, $args );
506
  }
507
 
508
  /**
@@ -544,14 +547,15 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
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 {
@@ -596,12 +600,12 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
596
  /**
597
  * @since 4.1.1 - deprecated
598
  */
599
- wbcr_factory_421_do_action_deprecated( 'wbcr_factory_421_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_421/modules_loaded-" . $this->plugin_name );
600
 
601
  /**
602
  * @since 4.1.1 - add
603
  */
604
- do_action( 'wbcr/factory_421/modules_loaded-' . $this->plugin_name );
605
  }
606
 
607
 
@@ -612,10 +616,22 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
612
  */
613
  private function register_plugin_hooks() {
614
 
615
- add_action( 'plugins_loaded', [ $this, 'set_text_domain' ] );
 
 
 
 
 
 
 
 
 
 
 
 
616
 
617
  if ( is_admin() ) {
618
- add_filter( 'wbcr_factory_421_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' ] );
@@ -625,37 +641,37 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
625
  /**
626
  * Инициализируем миграции плагина
627
  *
628
- * @since 4.1.1
629
  * @return void
630
  * @throws Exception
 
631
  */
632
  protected function init_plugin_migrations() {
633
- new WBCR\Factory_421\Migrations( $this );
634
  }
635
 
636
  /**
637
  * Инициализируем уведомления плагина
638
  *
639
- * @since 4.1.1
640
  * @return void
 
641
  */
642
  protected function init_plugin_notices() {
643
- new Wbcr\Factory_421\Notices( $this );
644
  }
645
 
646
  /**
647
  * Создает нового рабочего для проверки обновлений и апгрейда текущего плагина.
648
  *
649
- * @since 4.1.1
650
- *
651
  * @param array $data
652
  *
653
  * @return void
654
  * @throws Exception
 
 
655
  */
656
  protected function init_plugin_updates() {
657
  if ( $this->has_updates ) {
658
- new WBCR\Factory_421\Updates\Upgrader( $this );
659
  }
660
  }
661
 
@@ -666,8 +682,8 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
666
  * Дополнительно создает рабочего, чтобы совершить апгрейд до премиум версии
667
  * и запустить проверку обновлений для этого модуля.
668
  *
669
- * @since 4.1.1
670
  * @throws Exception
 
671
  */
672
  protected function init_plugin_premium_features() {
673
  if ( ! $this->has_premium || ! $this->license_settings ) {
@@ -677,11 +693,11 @@ abstract class Wbcr_Factory421_Plugin extends Wbcr_Factory421_Base {
677
  }
678
 
679
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
680
- $this->premium = WBCR\Factory_421\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_421\Updates\Premium_Upgrader( $this );
685
  }
686
  }
687
  }
24
  * @package factory-core
25
  *
26
  */
27
+ abstract class Wbcr_Factory425_Plugin extends Wbcr_Factory425_Base {
28
 
29
  /**
30
+ * Instance class Wbcr_Factory425_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
+ * @var Wbcr_Factory425_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
+ * @var \WBCR\Factory_425\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
+ * @var Wbcr_FactoryBootstrap426_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
+ * @var Wbcr_FactoryForms423_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
+ * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory425_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
+ * @var array[] Wbcr_Factory425_Activator
63
  */
64
  protected $activator_class = [];
65
 
86
  *
87
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
88
  * @since 4.1.9
89
+ * @var WBCR\Factory_Adverts_106\Base
90
  */
91
  private $adverts;
92
 
93
  /**
94
  * Инициализирует компоненты фреймворка и плагина.
95
  *
96
+ * @param array $data A set of plugin data.
 
 
97
  *
98
+ * @param string $plugin_path A full path to the main plugin file.
99
  *
100
  * @throws Exception
101
+ * @since 1.0.0
102
+ *
103
  */
104
  public function __construct( $plugin_path, $data ) {
105
 
106
  parent::__construct( $plugin_path, $data );
107
 
108
+ $this->request = new Wbcr_Factory425_Request();
109
+ //$this->route = new Wbcr_Factory425_Route();
110
 
111
  // INIT PLUGIN FRAMEWORK MODULES
112
  // Framework modules should always be loaded first,
138
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
139
  * скриптов, стилей) фреймворка.
140
  *
141
+ * @param Wbcr_FactoryBootstrap426_Manager $bootstrap
142
  */
143
+ public function setBootstap( Wbcr_FactoryBootstrap426_Manager $bootstrap ) {
144
  $this->bootstrap = $bootstrap;
145
  }
146
 
147
  /**
148
  * Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
149
  *
150
+ * @param Wbcr_FactoryForms423_Manager $forms
151
  */
152
+ public function setForms( Wbcr_FactoryForms423_Manager $forms ) {
153
  $this->forms = $forms;
154
  }
155
 
171
  * С помощью этого класса, мы проверяем валидность лицензий и получаем дополнительную информацию
172
  * о лицензии и ее покупателе. Класс используется в премиум менеджере.
173
  *
174
+ * @param string $name Имя провайдер
175
+ * @param string $class_name Имя класса провайдера
176
+ *
177
  * @since 4.1.6 - Добавлен
178
  *
 
 
179
  */
180
  public function set_license_provider( $name, $class_name ) {
181
+ if ( ! isset( WBCR\Factory_425\Premium\Manager::$providers[ $name ] ) ) {
182
+ WBCR\Factory_425\Premium\Manager::$providers[ $name ] = $class_name;
183
  }
184
  }
185
 
189
  * С помощью этого класса мы реализиуем доставку и откат обновлений плагина, на сайт пользователя.
190
  * Скачиваение премиум версий происходит по защенному каналу. Класс используется в менеджере обновлений.
191
  *
192
+ * @param string $name Имя репозитория
193
+ * @param string $class_name Имя класса репозитория
194
+ *
195
  * @since 4.1.7 - Добавлен
196
  *
 
 
197
  */
198
  public function set_update_repository( $name, $class_name ) {
199
+ if ( ! isset( WBCR\Factory_425\Updates\Upgrader::$repositories[ $name ] ) ) {
200
+ WBCR\Factory_425\Updates\Upgrader::$repositories[ $name ] = $class_name;
201
  }
202
  }
203
 
207
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
208
  * рекламных объявлений.
209
  *
210
+ * @return \WBCR\Factory_Adverts_106\Base
211
  * @since 1.1
212
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
213
  */
214
  public function get_adverts_manager() {
215
  return $this->adverts;
219
  * Устанавливает текстовый домен для плагина. Текстовый домен берется из заголовка входного
220
  * файла плагина.
221
  *
222
+ * @since 4.2.5 - Добавлены 2 аргумента $text_domain, $plugin_dir. Теперь protected
223
  * @since 4.0.8 - Добавлен
224
  *
225
  * @see https://codex.wordpress.org/I18n_for_WordPress_Developers
226
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/327828 - документация по входному файлу
227
  */
228
+ protected function set_text_domain( $text_domain, $plugin_dir ) {
229
+ if ( empty( $text_domain ) || empty( $plugin_dir ) ) {
230
  return;
231
  }
232
 
233
+ $locale = apply_filters( 'plugin_locale', is_admin() ? get_user_locale() : get_locale(), $text_domain );
234
 
235
+ $mofile = $text_domain . '-' . $locale . '.mo';
236
 
237
+ if ( ! load_textdomain( $text_domain, $plugin_dir . '/languages/' . $mofile ) ) {
238
+ load_muplugin_textdomain( $text_domain );
239
  }
240
  }
241
 
242
  public function newScriptList() {
243
+ return new Wbcr_Factory425_ScriptList( $this );
244
  }
245
 
246
  public function newStyleList() {
247
+ return new Wbcr_Factory425_StyleList( $this );
248
  }
249
 
250
  /**
251
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
252
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
253
+ * Wbcr_FactoryPages425_AdminPage, а затем регистрирует его через этот метод.
254
  * Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
255
  * pages.
256
  *
259
  *
260
  * @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
261
  *
262
+ * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
263
+ * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages425_AdminPage.
264
+ * @param string $file_path Абсолютный путь к файлу с классом страницы.
265
  *
266
  * @throws Exception
267
  */
281
  throw new Exception( 'A class with this name {' . $class_name . '} does not exist.' );
282
  }
283
 
284
+ if ( ! class_exists( 'Wbcr_FactoryPages425' ) ) {
285
+ throw new Exception( 'The factory_pages_425 module is not included.' );
286
  }
287
 
288
+ Wbcr_FactoryPages425::register( $this, $class_name );
289
  }
290
 
291
  /**
294
  * Wbcr_FactoryTypes000_Type, а затем регистрирует его через этот метод. Метод выполняет
295
  * подключение класса с новым типом записи и регистрирует его в модуле фреймворка types. *
296
  *
297
+ * @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Type_Name.
298
  * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryTypes000_Type.
299
+ * @param string $file_path Абсолютный путь к файлу с классом страницы.
300
  *
301
  * @throws Exception
302
  * @deprecated 4.1.7 You cannot use it!
308
  /**
309
  * Registers a class to activate the plugin.
310
  *
311
+ * @param string $className class name of the plugin activator.
 
 
312
  *
313
  * @return void
314
+ * @since 1.0.0
315
+ *
316
  */
317
  public function registerActivation( $className ) {
318
  $this->activator_class[] = $className;
324
  /**
325
  * It's invoked on plugin activation. Don't excite it directly.
326
  *
 
327
  * @return void
328
+ * @since 1.0.0
329
  */
330
  public function activation_hook() {
331
 
332
  /**
333
  * @since 4.1.1 - change hook name
334
  */
335
+ if ( apply_filters( "wbcr/factory_425/cancel_plugin_activation_{$this->plugin_name}", false ) ) {
336
  return;
337
  }
338
 
339
  /**
340
+ * wbcr_factory_425_plugin_activation
341
  *
342
  * @since 4.1.1 - deprecated
343
  */
344
+ wbcr_factory_425_do_action_deprecated( 'wbcr_factory_425_plugin_activation', [
345
  $this
346
  ], '4.1.1', "wbcr/factory/plugin_activation" );
347
 
350
  *
351
  * @since 4.1.2 - deprecated
352
  */
353
+ wbcr_factory_425_do_action_deprecated( 'wbcr/factory/plugin_activation', [
354
  $this
355
  ], '4.1.2', "wbcr/factory/before_plugin_activation" );
356
 
366
  *
367
  * @since 4.1.2 - deprecated
368
  */
369
+ wbcr_factory_425_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_activation", [
370
  $this
371
  ], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
372
 
373
  /**
374
+ * wbcr_factory_425_plugin_activation_' . $this->plugin_name
375
  *
376
  * @since 4.1.1 - deprecated
377
  */
378
+ wbcr_factory_425_do_action_deprecated( 'wbcr_factory_425_plugin_activation_' . $this->plugin_name, [
379
  $this
380
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
381
 
407
  /**
408
  * It's invoked on plugin deactionvation. Don't excite it directly.
409
  *
 
410
  * @return void
411
+ * @since 1.0.0
412
  */
413
  public function deactivation_hook() {
414
 
415
  /**
416
  * @since 4.1.1 - change hook name
417
  */
418
+ if ( apply_filters( "wbcr/factory_425/cancel_plugin_deactivation_{$this->plugin_name}", false ) ) {
419
  return;
420
  }
421
 
422
  /**
423
+ * wbcr_factory_425_plugin_deactivation
424
  *
425
  * @since 4.1.1 - deprecated
426
  */
427
+ wbcr_factory_425_do_action_deprecated( 'wbcr_factory_425_plugin_deactivation', [
428
  $this
429
  ], '4.1.1', "wbcr/factory/plugin_deactivation" );
430
 
433
  *
434
  * @since 4.1.2 - deprecated
435
  */
436
+ wbcr_factory_425_do_action_deprecated( 'wbcr/factory/plugin_deactivation', [
437
  $this
438
  ], '4.1.2', "wbcr/factory/before_plugin_deactivation" );
439
 
445
  do_action( 'wbcr/factory/plugin_deactivation', $this );
446
 
447
  /**
448
+ * wbcr_factory_425_plugin_deactivation_ . $this->plugin_name
449
  *
450
  * @since 4.1.1 - deprecated
451
  */
452
+ wbcr_factory_425_do_action_deprecated( 'wbcr_factory_425_plugin_deactivation_' . $this->plugin_name, [
453
  $this
454
  ], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
455
 
458
  *
459
  * @since 4.1.2 - deprecated
460
  */
461
+ wbcr_factory_425_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_deactivation", [
462
  $this
463
  ], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
464
 
495
  * @throws Exception
496
  */
497
  public function getPluginPageUrl( $page_id, $args = [] ) {
498
+ if ( ! class_exists( 'Wbcr_FactoryPages425' ) ) {
499
+ throw new Exception( 'The factory_pages_425 module is not included.' );
500
  }
501
 
502
  if ( ! is_admin() ) {
505
  return null;
506
  }
507
 
508
+ return Wbcr_FactoryPages425::getPageUrl( $this, $page_id, $args );
509
  }
510
 
511
  /**
547
  'plugin_dir' => constant( $prefix . 'PLUGIN_DIR' ),
548
  'plugin_url' => constant( $prefix . 'PLUGIN_URL' ),
549
  'plugin_base' => constant( $prefix . 'PLUGIN_BASE' ),
550
+ 'text_domain' => constant( $prefix . 'TEXT_DOMAIN' ),
551
  'plugin_version' => constant( $prefix . 'PLUGIN_VERSION' )
552
  ];
553
 
554
  /**
555
  * Оповещает внешние приложения, что компонент плагина был загружен
556
  *
557
+ * @param array $load_plugin_components Информация о загруженном компоненте
558
+ * @param string $plugin_name Имя плагина
559
  */
560
  do_action( "wbcr/factory/component_{$component_ID}_loaded", $this->loaded_plugin_components[ $component_ID ], $this->getPluginName() );
561
  } else {
600
  /**
601
  * @since 4.1.1 - deprecated
602
  */
603
+ wbcr_factory_425_do_action_deprecated( 'wbcr_factory_425_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_425/modules_loaded-" . $this->plugin_name );
604
 
605
  /**
606
  * @since 4.1.1 - add
607
  */
608
+ do_action( 'wbcr/factory_425/modules_loaded-' . $this->plugin_name );
609
  }
610
 
611
 
616
  */
617
  private function register_plugin_hooks() {
618
 
619
+ add_action( 'plugins_loaded', function () {
620
+ $this->set_text_domain( $this->plugin_text_domain, $this->paths->absolute );
621
+
622
+ if ( ! empty( $this->loaded_plugin_components ) ) {
623
+ foreach ( $this->loaded_plugin_components as $component ) {
624
+ if ( empty( $component['text_domain'] ) ) {
625
+ continue;
626
+ }
627
+
628
+ $this->set_text_domain( $component['text_domain'], $component['plugin_dir'] );
629
+ }
630
+ }
631
+ } );
632
 
633
  if ( is_admin() ) {
634
+ add_filter( 'wbcr_factory_425_core_admin_allow_multisite', '__return_true' );
635
 
636
  register_activation_hook( $this->get_paths()->main_file, [ $this, 'activation_hook' ] );
637
  register_deactivation_hook( $this->get_paths()->main_file, [ $this, 'deactivation_hook' ] );
641
  /**
642
  * Инициализируем миграции плагина
643
  *
 
644
  * @return void
645
  * @throws Exception
646
+ * @since 4.1.1
647
  */
648
  protected function init_plugin_migrations() {
649
+ new WBCR\Factory_425\Migrations( $this );
650
  }
651
 
652
  /**
653
  * Инициализируем уведомления плагина
654
  *
 
655
  * @return void
656
+ * @since 4.1.1
657
  */
658
  protected function init_plugin_notices() {
659
+ new Wbcr\Factory_425\Notices( $this );
660
  }
661
 
662
  /**
663
  * Создает нового рабочего для проверки обновлений и апгрейда текущего плагина.
664
  *
 
 
665
  * @param array $data
666
  *
667
  * @return void
668
  * @throws Exception
669
+ * @since 4.1.1
670
+ *
671
  */
672
  protected function init_plugin_updates() {
673
  if ( $this->has_updates ) {
674
+ new WBCR\Factory_425\Updates\Upgrader( $this );
675
  }
676
  }
677
 
682
  * Дополнительно создает рабочего, чтобы совершить апгрейд до премиум версии
683
  * и запустить проверку обновлений для этого модуля.
684
  *
 
685
  * @throws Exception
686
+ * @since 4.1.1
687
  */
688
  protected function init_plugin_premium_features() {
689
  if ( ! $this->has_premium || ! $this->license_settings ) {
693
  }
694
 
695
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
696
+ $this->premium = WBCR\Factory_425\Premium\Manager::instance( $this, $this->license_settings );
697
 
698
  // Подключаем премиум апгрейдер
699
  if ( isset( $this->license_settings['has_updates'] ) && $this->license_settings['has_updates'] ) {
700
+ new WBCR\Factory_425\Updates\Premium_Upgrader( $this );
701
  }
702
  }
703
  }
libs/factory/core/includes/class-factory-plugin-base.php CHANGED
@@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
5
  }
6
 
7
  /**
8
- * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory421_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_Factory421_Base {
21
 
22
- use WBCR\Factory_421\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
@@ -81,7 +81,7 @@ class Wbcr_Factory421_Base {
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
- * экземпляр класса \WBCR\Factory_421\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
@@ -127,7 +127,7 @@ class Wbcr_Factory421_Base {
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
- * WBCR\Factory_421\Premium\Provider > WBCR\Factory_Freemius_109\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
@@ -177,9 +177,9 @@ class Wbcr_Factory421_Base {
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
- [ 'libs/factory/bootstrap', 'factory_bootstrap_422', 'admin' ],
181
- [ 'libs/factory/forms', 'factory_forms_419', 'admin' ],
182
- [ 'libs/factory/pages', 'factory_pages_421', 'admin' ],
183
  ];
184
 
185
  /**
@@ -209,20 +209,20 @@ class Wbcr_Factory421_Base {
209
 
210
 
211
  /**
212
- * Экземпляр класса \WBCR\Factory_421\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
- * @var \WBCR\Factory_421\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
- * Экземпляр класса \WBCR\Factory_421\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
- * @var \WBCR\Factory_421\Entities\Paths
226
  */
227
  protected $paths;
228
 
@@ -270,8 +270,8 @@ class Wbcr_Factory421_Base {
270
  throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
271
  }
272
 
273
- $this->support = new \WBCR\Factory_421\Entities\Support( $this->support_details );
274
- $this->paths = new \WBCR\Factory_421\Entities\Paths( $plugin_file );
275
 
276
  // used only in the module 'updates'
277
  $this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
@@ -391,7 +391,7 @@ class Wbcr_Factory421_Base {
391
  * Проверяет, включен ли премиум для этого плагина или нет.
392
  *
393
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
394
- * См. Wbcr_Factory421_Base::has_premium
395
  */
396
  public function has_premium() {
397
  return $this->has_premium;
@@ -400,7 +400,7 @@ class Wbcr_Factory421_Base {
400
  /**
401
  * Позволяет получить заголовок плагина.
402
  *
403
- * @return string Возвращает заголовок плагина. См. Wbcr_Factory421_Base::plugin_title
404
  */
405
  public function getPluginTitle() {
406
  return $this->plugin_title;
@@ -409,7 +409,7 @@ class Wbcr_Factory421_Base {
409
  /**
410
  * Позволяет получить префикс плагина.
411
  *
412
- * @return string Возвращает префикс плагина.См. Wbcr_Factory421_Base::prefix
413
  */
414
  public function getPrefix() {
415
  return $this->prefix;
@@ -418,7 +418,7 @@ class Wbcr_Factory421_Base {
418
  /**
419
  * Позволяет получить имя плагина.
420
  *
421
- * @return string Возвращает имя плагина. См. Wbcr_Factory421_Base::plugin_name
422
  */
423
  public function getPluginName() {
424
  return $this->plugin_name;
@@ -427,7 +427,7 @@ class Wbcr_Factory421_Base {
427
  /**
428
  * Позволяет получить версию плагина.
429
  *
430
- * @return string Возвращает версию плагина. См. Wbcr_Factory421_Base::plugin_version
431
  */
432
  public function getPluginVersion() {
433
  return $this->plugin_version;
@@ -449,7 +449,7 @@ class Wbcr_Factory421_Base {
449
  * какие-то данные не описанные в интерфейсе этого плагина.
450
  *
451
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
452
- * Wbcr_Factory421_Base::plugin_data
453
  *
454
  * @return null
455
  */
@@ -462,18 +462,18 @@ class Wbcr_Factory421_Base {
462
  }
463
 
464
  /**
465
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_421\Entities\Support.
466
  *
467
- * @return \WBCR\Factory_421\Entities\Support
468
  */
469
  public function get_support() {
470
  return $this->support;
471
  }
472
 
473
  /**
474
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_421\Entities\Paths.
475
  *
476
- * @return \WBCR\Factory_421\Entities\Paths
477
  */
478
  public function get_paths() {
479
  return $this->paths;
@@ -482,7 +482,7 @@ class Wbcr_Factory421_Base {
482
  /**
483
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
484
  *
485
- * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory421_Base::plugin_data
486
  */
487
  public function getPluginInfo() {
488
  return (object) $this->plugin_data;
5
  }
6
 
7
  /**
8
+ * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory425_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_Factory425_Base {
21
 
22
+ use WBCR\Factory_425\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
+ * экземпляр класса \WBCR\Factory_425\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
+ * WBCR\Factory_425\Premium\Provider > WBCR\Factory_Freemius_113\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
+ [ 'libs/factory/bootstrap', 'factory_bootstrap_426', 'admin' ],
181
+ [ 'libs/factory/forms', 'factory_forms_423', 'admin' ],
182
+ [ 'libs/factory/pages', 'factory_pages_425', 'admin' ],
183
  ];
184
 
185
  /**
209
 
210
 
211
  /**
212
+ * Экземпляр класса \WBCR\Factory_425\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
+ * @var \WBCR\Factory_425\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
+ * Экземпляр класса \WBCR\Factory_425\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
+ * @var \WBCR\Factory_425\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_425\Entities\Support( $this->support_details );
274
+ $this->paths = new \WBCR\Factory_425\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_Factory425_Base::has_premium
395
  */
396
  public function has_premium() {
397
  return $this->has_premium;
400
  /**
401
  * Позволяет получить заголовок плагина.
402
  *
403
+ * @return string Возвращает заголовок плагина. См. Wbcr_Factory425_Base::plugin_title
404
  */
405
  public function getPluginTitle() {
406
  return $this->plugin_title;
409
  /**
410
  * Позволяет получить префикс плагина.
411
  *
412
+ * @return string Возвращает префикс плагина.См. Wbcr_Factory425_Base::prefix
413
  */
414
  public function getPrefix() {
415
  return $this->prefix;
418
  /**
419
  * Позволяет получить имя плагина.
420
  *
421
+ * @return string Возвращает имя плагина. См. Wbcr_Factory425_Base::plugin_name
422
  */
423
  public function getPluginName() {
424
  return $this->plugin_name;
427
  /**
428
  * Позволяет получить версию плагина.
429
  *
430
+ * @return string Возвращает версию плагина. См. Wbcr_Factory425_Base::plugin_version
431
  */
432
  public function getPluginVersion() {
433
  return $this->plugin_version;
449
  * какие-то данные не описанные в интерфейсе этого плагина.
450
  *
451
  * @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
452
+ * Wbcr_Factory425_Base::plugin_data
453
  *
454
  * @return null
455
  */
462
  }
463
 
464
  /**
465
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_425\Entities\Support.
466
  *
467
+ * @return \WBCR\Factory_425\Entities\Support
468
  */
469
  public function get_support() {
470
  return $this->support;
471
  }
472
 
473
  /**
474
+ * Предоставляет доступ к экземпляру класса \WBCR\Factory_425\Entities\Paths.
475
  *
476
+ * @return \WBCR\Factory_425\Entities\Paths
477
  */
478
  public function get_paths() {
479
  return $this->paths;
482
  /**
483
  * Позволяет получить сырые данные плагина в виде объекта StdClass.
484
  *
485
+ * @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory425_Base::plugin_data
486
  */
487
  public function getPluginInfo() {
488
  return (object) $this->plugin_data;
libs/factory/core/includes/class-factory-requests.php CHANGED
@@ -11,7 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
11
  * @package factory-core
12
  */
13
 
14
- class Wbcr_Factory421_Request {
15
 
16
  /**
17
  * @param null $param
11
  * @package factory-core
12
  */
13
 
14
+ class Wbcr_Factory425_Request {
15
 
16
  /**
17
  * @param null $param
libs/factory/core/includes/class-factory-requirements.php CHANGED
@@ -12,8 +12,8 @@
12
  * @since 4.0.9
13
  */
14
  // @formatter:off
15
- if ( ! class_exists( 'Wbcr_Factory421_Requirements' ) ) {
16
- class Wbcr_Factory421_Requirements {
17
 
18
  /**
19
  * Factory framework version
@@ -273,21 +273,21 @@ if ( ! class_exists( 'Wbcr_Factory421_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_421' ), $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_421' ), $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_421' ), $this->plugin_title );
291
  }
292
  }
293
  }
12
  * @since 4.0.9
13
  */
14
  // @formatter:off
15
+ if ( ! class_exists( 'Wbcr_Factory425_Requirements' ) ) {
16
+ class Wbcr_Factory425_Requirements {
17
 
18
  /**
19
  * Factory framework version
273
  * @return string
274
  */
275
  protected function get_php_incompat_text() {
276
+ return sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_425' ), $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_425' ), $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_425' ), $this->plugin_title );
291
  }
292
  }
293
  }
libs/factory/core/includes/entities/class-factory-paths.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_421\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\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_421\Entities;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit;
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\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_421_deprecated_hook()
57
  *
58
  */
59
- function wbcr_factory_421_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_421_deprecated_hook( $tag, $version, $replacement, $message );
67
 
68
  return apply_filters_ref_array( $tag, $args );
69
  }
@@ -89,7 +89,7 @@ function wbcr_factory_421_apply_filters_deprecated( $tag, $args, $version, $repl
89
  * @see _deprecated_hook()
90
  *
91
  */
92
- function wbcr_factory_421_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_421_do_action_deprecated( $tag, $args, $version, $replacem
98
  if ( ! has_action( $tag ) ) {
99
  return;
100
  }
101
- wbcr_factory_421_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_421_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_421_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_421_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_425_deprecated_hook()
57
  *
58
  */
59
+ function wbcr_factory_425_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_425_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_425_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_425_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_425_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_425_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_421\Premium\Interfaces;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\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_421\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory421_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_Factory421_Plugin
28
  */
29
  protected $plugin;
30
 
@@ -36,24 +36,24 @@ class Manager {
36
  /**
37
  * Manager constructor.
38
  *
39
- * @param Wbcr_Factory421_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
- public function __construct( Wbcr_Factory421_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
- * @param Wbcr_Factory421_Plugin $plugin
51
  * @param array $settings
52
  *
53
- * @return \WBCR\Factory_Freemius_109\Premium\Provider
54
  * @throws Exception
55
  */
56
- public static function instance( Wbcr_Factory421_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_109\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_421\Premium\Provider interface!" );
74
  }
75
 
76
  return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory425_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
24
  public static $providers;
25
 
26
  /**
27
+ * @var Wbcr_Factory425_Plugin
28
  */
29
  protected $plugin;
30
 
36
  /**
37
  * Manager constructor.
38
  *
39
+ * @param Wbcr_Factory425_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
+ public function __construct( Wbcr_Factory425_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
+ * @param Wbcr_Factory425_Plugin $plugin
51
  * @param array $settings
52
  *
53
+ * @return \WBCR\Factory_Freemius_113\Premium\Provider
54
  * @throws Exception
55
  */
56
+ public static function instance( Wbcr_Factory425_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_113\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_425\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_421\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory421_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_Factory421_Plugin
25
  */
26
  protected $plugin;
27
 
@@ -38,10 +38,10 @@ abstract class Provider {
38
  /**
39
  * Provider constructor.
40
  *
41
- * @param Wbcr_Factory421_Plugin $plugin
42
  * @param array $settings
43
  */
44
- public function __construct( Wbcr_Factory421_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
 
@@ -195,7 +195,7 @@ abstract class Provider {
195
  abstract public function get_billing_cycle();
196
 
197
  /**
198
- * @return \WBCR\Factory_421\Premium\Interfaces\License
199
  */
200
  abstract public function get_license();
201
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\Premium;
4
 
5
  use Exception;
6
+ use Wbcr_Factory425_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
21
  abstract class Provider {
22
 
23
  /**
24
+ * @var Wbcr_Factory425_Plugin
25
  */
26
  protected $plugin;
27
 
38
  /**
39
  * Provider constructor.
40
  *
41
+ * @param Wbcr_Factory425_Plugin $plugin
42
  * @param array $settings
43
  */
44
+ public function __construct( Wbcr_Factory425_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
 
195
  abstract public function get_billing_cycle();
196
 
197
  /**
198
+ * @return \WBCR\Factory_425\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_421\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
- use Wbcr_Factory421_Plugin;
9
- use Wbcr_FactoryPages421_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_Factory421_Plugin $plugin
43
  *
44
  * @throws Exception
45
  */
46
- public function __construct( Wbcr_Factory421_Plugin $plugin ) {
47
  parent::__construct( $plugin );
48
 
49
  $this->plugin_basename = null;
@@ -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_FactoryPages421_ImpressiveThemplate $obj
229
  *
230
- * @param Wbcr_Factory421_Plugin $plugin
231
  *
232
  * @return void
233
  */
@@ -342,20 +345,28 @@ class Premium_Upgrader extends Upgrader {
342
  <?php
343
  }
344
 
 
345
  /**
346
  * Обновляет данные о премиум пакете в базе данных, после обновления плагина.
347
  *
348
- * @since 4.1.1
349
- *
350
- * @param array $options
351
- *
352
- * @param WP_Upgrader $upgrader_object
353
  *
 
354
  * @throws Exception
355
  */
356
- public function upgrader_process_complete_hook( $upgrader_object, $options ) {
357
- if ( ! empty( $options ) && $options['action'] == 'update' && $options['type'] == 'plugin' ) {
358
- if ( is_array( $options['plugins'] ) && in_array( $this->plugin_basename, $options['plugins'] ) ) {
 
 
 
 
 
 
 
 
 
359
  $this->update_package_data();
360
  }
361
  }
@@ -424,7 +435,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 +766,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_421' ),
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_421' ),
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_421' ), $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_421' ), $activate_plugin_url, $cancel_license_url )
761
  ];
762
 
763
  if ( isset( $texts[ $type ] ) ) {
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
+ use Wbcr_Factory425_Plugin;
9
+ use Wbcr_FactoryPages425_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_Factory425_Plugin $plugin
43
  *
44
  * @throws Exception
45
  */
46
+ public function __construct( Wbcr_Factory425_Plugin $plugin ) {
47
  parent::__construct( $plugin );
48
 
49
  $this->plugin_basename = null;
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_FactoryPages425_ImpressiveThemplate $obj
232
  *
233
+ * @param Wbcr_Factory425_Plugin $plugin
234
  *
235
  * @return void
236
  */
345
  <?php
346
  }
347
 
348
+
349
  /**
350
  * Обновляет данные о премиум пакете в базе данных, после обновления плагина.
351
  *
352
+ * @param WP_Upgrader $wp_upgrader WP_Upgrader instance.
353
+ * @param array $hook_extra Array of bulk item update data.
 
 
 
354
  *
355
+ * @return void
356
  * @throws Exception
357
  */
358
+ public function upgrader_process_complete_hook( $upgrader_object, $hook_extra ) {
359
+ if ( ! empty( $hook_extra ) && $hook_extra['action'] == 'update' && $hook_extra['type'] == 'plugin' ) {
360
+
361
+ # if it isn't bulk upgrade
362
+ if ( isset( $hook_extra['plugin'] ) && $this->plugin_basename === $hook_extra['plugin'] ) {
363
+ $this->update_package_data();
364
+
365
+ return;
366
+ }
367
+
368
+ # if it is bulk upgrade
369
+ if ( is_array( $hook_extra['plugins'] ) && in_array( $this->plugin_basename, $hook_extra['plugins'] ) ) {
370
  $this->update_package_data();
371
  }
372
  }
435
  * @return string
436
  */
437
  protected function get_action_url( $action ) {
438
+ $args = [
439
+ 'wfactory_premium_updates_action' => $action,
440
+ 'wfactory_premium_updates_plugin' => $this->plugin_slug
441
+ ];
442
 
443
  return wp_nonce_url( $this->get_admin_url( $args ), "factory_premium_{$action}" );
444
  }
766
  $cancel_license_url = $this->get_action_url( 'cancel_license' );
767
 
768
  $texts = [
769
+ 'need_activate_license' => __( 'License activation required. A license is required to get premium plugin updates, as well as to get additional services.', 'wbcr_factory_425' ),
770
+ '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_425' ),
771
  'please_install_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
772
+ <a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_425' ), $upgrade_url, $cancel_license_url ),
773
  'please_activate_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
774
+ <a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_425' ), $activate_plugin_url, $cancel_license_url )
775
  ];
776
 
777
  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_421\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
- use Wbcr_Factory421_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_109\Updates\Freemius_Repository',
32
- * 'freemius' => '\WBCR\Factory_421\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
@@ -42,7 +42,7 @@ class Upgrader {
42
  protected $type = 'default';
43
 
44
  /**
45
- * @var Wbcr_Factory421_Plugin
46
  */
47
  protected $plugin;
48
 
@@ -90,13 +90,13 @@ class Upgrader {
90
  *
91
  * @since 4.1.1
92
  *
93
- * @param Wbcr_Factory421_Plugin $plugin
94
  * @param $args
95
  * @param bool $is_premium
96
  *
97
  * @throws Exception
98
  */
99
- public function __construct( Wbcr_Factory421_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_421\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_421\Updates\Repository interface!" );
291
  }
292
 
293
  return new self::$repositories[ $repository_name ]( $this->plugin );
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
+ use Wbcr_Factory425_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_113\Updates\Freemius_Repository',
32
+ * 'freemius' => '\WBCR\Factory_425\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
42
  protected $type = 'default';
43
 
44
  /**
45
+ * @var Wbcr_Factory425_Plugin
46
  */
47
  protected $plugin;
48
 
90
  *
91
  * @since 4.1.1
92
  *
93
+ * @param Wbcr_Factory425_Plugin $plugin
94
  * @param $args
95
  * @param bool $is_premium
96
  *
97
  * @throws Exception
98
  */
99
+ public function __construct( Wbcr_Factory425_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_425\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_425\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_421\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory421_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -23,17 +23,17 @@ abstract class Repository {
23
  protected $initialized = false;
24
 
25
  /**
26
- * @var Wbcr_Factory421_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
- * @param Wbcr_Factory421_Plugin $plugin
34
  * @param bool $is_premium
35
  */
36
- abstract public function __construct( Wbcr_Factory421_Plugin $plugin );
37
 
38
  /**
39
  * @return void
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory425_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
23
  protected $initialized = false;
24
 
25
  /**
26
+ * @var Wbcr_Factory425_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
+ * @param Wbcr_Factory425_Plugin $plugin
34
  * @param bool $is_premium
35
  */
36
+ abstract public function __construct( Wbcr_Factory425_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_421\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory421_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_Factory421_Plugin $plugin
24
  * @param bool $is_premium
25
  */
26
- public function __construct( Wbcr_Factory421_Plugin $plugin ) {
27
  $this->plugin = $plugin;
28
  }
29
 
1
  <?php
2
 
3
+ namespace WBCR\Factory_425\Updates;
4
 
5
  // Exit if accessed directly
6
+ use Wbcr_Factory425_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
20
  /**
21
  * Wordpress constructor.
22
  *
23
+ * @param Wbcr_Factory425_Plugin $plugin
24
  * @param bool $is_premium
25
  */
26
+ public function __construct( Wbcr_Factory425_Plugin $plugin ) {
27
  $this->plugin = $plugin;
28
  }
29
 
libs/factory/core/langs/wbcr_factory_425-ru_RU.mo ADDED
Binary file
libs/factory/core/langs/wbcr_factory_425-ru_RU.po ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: factory_forms\n"
4
+ "POT-Creation-Date: 2018-10-16 22:44+0300\n"
5
+ "PO-Revision-Date: 2018-10-16 22:45+0300\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: ru_RU\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+
20
+ #: includes/check-compatibility.php:80
21
+ msgid "warning"
22
+ msgstr "предупреждение"
23
+
24
+ #: includes/check-compatibility.php:82
25
+ #, php-format
26
+ msgid "The %s plugin has stopped."
27
+ msgstr "Работа плагина %s была остановлена."
28
+
29
+ #: includes/check-compatibility.php:83
30
+ msgid "Possible reasons:"
31
+ msgstr "Возможные причины:"
32
+
33
+ #: includes/check-compatibility.php:89
34
+ #, php-format
35
+ msgid "You need to update the PHP version to %s or higher!"
36
+ msgstr "Вам нужно обновить версию PHP до %s или выше!"
37
+
38
+ #: includes/check-compatibility.php:94
39
+ #, php-format
40
+ msgid "You need to update WordPress to %s or higher!"
41
+ msgstr "Вам нужно обновить WordPress до %s или выше!"
42
+
43
+ #: includes/functions.php:132
44
+ #, php-format
45
+ msgid ""
46
+ "%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead."
47
+ msgstr ""
48
+ "%1$s является <strong>устаревшим,</strong> начиная с версии %2$s в "
49
+ "Wordpress! Используйте %3$s."
50
+
51
+ #: includes/functions.php:134
52
+ #, php-format
53
+ msgid ""
54
+ "%1$s is <strong>deprecated</strong> since version %2$s with no alternative "
55
+ "available."
56
+ msgstr ""
57
+ "%1$s был вызван с параметром, который является <strong>устаревшими</strong> "
58
+ "начиная с версии %2$s , в настоящее время доступных альтернатив нет."
59
+
60
+ #: includes/plugin.class.php:202 includes/plugin.class.php:237
61
+ msgid ""
62
+ "You are trying to call this earlier than the plugin menu will be registered."
63
+ msgstr ""
64
+ "Вы пытаетесь вызвать это раньше, чем будет зарегистрировано меню плагина."
65
+
66
+ #: includes/plugin.class.php:220
67
+ msgid ""
68
+ "You are trying to get a link to a page that does not have multisite mode. "
69
+ "Clicking this link will lead the user to a non-existent page."
70
+ msgstr ""
71
+ "Вы пытаетесь получить ссылку на страницу, которая не имеет "
72
+ "многопользовательского режима. Щелчок по этой ссылке приведет пользователя "
73
+ "к несуществующей странице."
74
+
75
+ #: includes/plugin.class.php:222
76
+ msgid ""
77
+ "Trying to get a link to an unregistered page. You are trying to call this "
78
+ "earlier than the plugin menu will be registered."
79
+ msgstr ""
80
+ "Попытка получить ссылку на незарегистрированную страницу. Вы пытаетесь "
81
+ "вызвать это раньше, чем будет зарегистрировано меню плагина."
82
+
83
+ #~ msgid "On"
84
+ #~ msgstr "Вкл"
85
+
86
+ #~ msgid "Off"
87
+ #~ msgstr "Выкл"
88
+
89
+ #~ msgid "(use default website font)"
90
+ #~ msgstr "(шрифт сайта по умолчанию)"
91
+
92
+ #~ msgid "Sans Serif:"
93
+ #~ msgstr "Группа Sans Serif:"
94
+
95
+ #~ msgid "Serif:"
96
+ #~ msgstr "Группа Serif:"
97
+
98
+ #~ msgid "Monospaced:"
99
+ #~ msgstr "Группа Monospaced:"
100
+
101
+ #~ msgid "vertical"
102
+ #~ msgstr "вертикальный"
103
+
104
+ #~ msgid "horizontal"
105
+ #~ msgstr "горизонтальный"
106
+
107
+ #~ msgid "hide extra options"
108
+ #~ msgstr "скрыть дополнительные настроки"
109
+
110
+ #~ msgid "Select a side and move the slider to set up:"
111
+ #~ msgstr "Выберите сторону и переместите ползунок:"
112
+
113
+ #~ msgid "Change color"
114
+ #~ msgstr "Выбрать цвет"
115
+
116
+ #~ msgid "re-color"
117
+ #~ msgstr "Перекрасить"
118
+
119
+ #~ msgid "Select color:"
120
+ #~ msgstr "Выберите цвет:"
121
+
122
+ #~ msgid "Changing the color may takes a minute or more. Please be patient."
123
+ #~ msgstr ""
124
+ #~ "В некоторых случаях изменение цвета может занять около минуты. "
125
+ #~ "Пожалуйста, будьте терпеливы."
126
+
127
+ #~ msgid "Upload Pattern"
128
+ #~ msgstr "Добавить шаблон"
libs/factory/feedback/README.md ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Установка
2
+
3
+ Добавить в главный файл плагина в раздел Отладочных констант
4
+
5
+ ```php
6
+ //Включить режим отладки для модуля обратной связи. Если FACTORY_FEEDBACK_DEBUG true,
7
+ //то модуль обратной связи не будет отправлять данные о деактивации плагина
8
+ if ( ! defined( 'FACTORY_FEEDBACK_DEBUG' ) ) {
9
+ define( 'FACTORY_FEEDBACK_DEBUG', true );
10
+ }
11
+
12
+ //Остановить показ окна фидбэка для всех плагинов созданных на Factory фреймворке.
13
+ //Это может пригодиться, если есть проблемы с деактивацией плагина.
14
+ if ( ! defined( 'FACTORY_FEEDBACK_BLOCK' ) ) {
15
+ define( 'FACTORY_FEEDBACK_BLOCK', false );
16
+ }
17
+ ```
18
+
19
+ Добавить в раздел подключения модулей
20
+
21
+ ```php
22
+ array( 'libs/factory/feedback', 'factory_feedback_000', 'admin'), // Модуль для запроса обратной связи от пользователя
23
+ ```
libs/factory/feedback/assets/css/dialog-boxes.css ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .wbcr-factory-feedback-102-modal {
2
+ position: fixed;
3
+ overflow: auto;
4
+ height: 100%;
5
+ width: 100%;
6
+ top: 0;
7
+ z-index: 100000;
8
+ display: none;
9
+ background: rgba(0, 0, 0, 0.6)
10
+ }
11
+
12
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-dialog {
13
+ background: transparent;
14
+ position: absolute;
15
+ left: 50%;
16
+ margin-left: -298px;
17
+ padding-bottom: 30px;
18
+ top: -100%;
19
+ z-index: 100001;
20
+ width: 596px
21
+ }
22
+
23
+ @media (max-width: 650px) {
24
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-dialog {
25
+ margin-left: -50%;
26
+ box-sizing: border-box;
27
+ padding-left: 10px;
28
+ padding-right: 10px;
29
+ width: 100%
30
+ }
31
+
32
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-dialog .wbcr-factory-feedback-102-modal-panel > h3 > strong {
33
+ font-size: 1.3em
34
+ }
35
+ }
36
+
37
+ .wbcr-factory-feedback-102-modal.active {
38
+ display: block
39
+ }
40
+
41
+ .wbcr-factory-feedback-102-modal.active:before {
42
+ display: block
43
+ }
44
+
45
+ .wbcr-factory-feedback-102-modal.active .wbcr-factory-feedback-102-modal-dialog {
46
+ top: 10%
47
+ }
48
+
49
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-success .wbcr-factory-feedback-102-modal-header {
50
+ border-bottom-color: #46b450
51
+ }
52
+
53
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-success .wbcr-factory-feedback-102-modal-body {
54
+ background-color: #f7fff7
55
+ }
56
+
57
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-warn .wbcr-factory-feedback-102-modal-header {
58
+ border-bottom-color: #ffb900
59
+ }
60
+
61
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-warn .wbcr-factory-feedback-102-modal-body {
62
+ background-color: #fff8e5
63
+ }
64
+
65
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-error .wbcr-factory-feedback-102-modal-header {
66
+ border-bottom-color: #dc3232
67
+ }
68
+
69
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-error .wbcr-factory-feedback-102-modal-body {
70
+ background-color: #ffeaea
71
+ }
72
+
73
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-body, .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-footer {
74
+ border: 0;
75
+ background: #fefefe;
76
+ padding: 20px
77
+ }
78
+
79
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header {
80
+ border-bottom: #eeeeee solid 1px;
81
+ background: #fbfbfb;
82
+ padding: 15px 20px;
83
+ position: relative;
84
+ margin-bottom: -10px
85
+ }
86
+
87
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header h4 {
88
+ margin: 0;
89
+ padding: 0;
90
+ text-transform: uppercase;
91
+ font-size: 1.2em;
92
+ font-weight: bold;
93
+ color: #cacaca;
94
+ text-shadow: 1px 1px 1px #fff;
95
+ letter-spacing: 0.6px;
96
+ -webkit-font-smoothing: antialiased
97
+ }
98
+
99
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header .wbcr-factory-feedback-102-close {
100
+ position: absolute;
101
+ right: 10px;
102
+ top: 12px;
103
+ cursor: pointer;
104
+ color: #bbb;
105
+ -moz-border-radius: 20px;
106
+ -webkit-border-radius: 20px;
107
+ border-radius: 20px;
108
+ padding: 3px;
109
+ -moz-transition: all 0.2s ease-in-out;
110
+ -o-transition: all 0.2s ease-in-out;
111
+ -ms-transition: all 0.2s ease-in-out;
112
+ -webkit-transition: all 0.2s ease-in-out;
113
+ transition: all 0.2s ease-in-out
114
+ }
115
+
116
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header .wbcr-factory-feedback-102-close:hover {
117
+ color: #fff;
118
+ background: #aaa
119
+ }
120
+
121
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header .wbcr-factory-feedback-102-close .dashicons, .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header .wbcr-factory-feedback-102-close:hover .dashicons {
122
+ text-decoration: none
123
+ }
124
+
125
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-body {
126
+ border-bottom: 0
127
+ }
128
+
129
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-body p {
130
+ font-size: 14px
131
+ }
132
+
133
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-body h2 {
134
+ font-size: 20px;
135
+ line-height: 1.5em
136
+ }
137
+
138
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-body > div {
139
+ margin-top: 10px
140
+ }
141
+
142
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-body > div h2 {
143
+ font-weight: bold;
144
+ font-size: 20px;
145
+ margin-top: 0
146
+ }
147
+
148
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-footer {
149
+ border-top: #eeeeee solid 1px;
150
+ text-align: right
151
+ }
152
+
153
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-footer > .button {
154
+ margin: 0 7px
155
+ }
156
+
157
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-footer > .button:first-child {
158
+ margin: 0
159
+ }
160
+
161
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-panel > .notice.inline {
162
+ margin: 0;
163
+ display: none
164
+ }
165
+
166
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-panel:not(.active) {
167
+ display: none
168
+ }
169
+
170
+ .rtl .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header .wbcr-factory-feedback-102-close {
171
+ right: auto;
172
+ left: 20px
173
+ }
174
+
175
+ body.has-wbcr-factory-feedback-102-modal {
176
+ overflow: hidden
177
+ }
178
+
179
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .reason-input, .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .internal-message {
180
+ margin: 3px 0 3px 22px
181
+ }
182
+
183
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .reason-input input, .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .reason-input textarea, .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .internal-message input, .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .internal-message textarea {
184
+ width: 100%
185
+ }
186
+
187
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback li.reason.has-internal-message .internal-message {
188
+ border: 1px solid #ccc;
189
+ padding: 7px;
190
+ display: none
191
+ }
192
+
193
+ @media (max-width: 650px) {
194
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback li.reason li.reason {
195
+ margin-bottom: 10px
196
+ }
197
+
198
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback li.reason li.reason .reason-input, .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback li.reason li.reason .internal-message {
199
+ margin-left: 29px
200
+ }
201
+
202
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback li.reason li.reason label {
203
+ display: table
204
+ }
205
+
206
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback li.reason li.reason label > span {
207
+ display: table-cell;
208
+ font-size: 1.3em
209
+ }
210
+ }
211
+
212
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .wbcr-factory-feedback-102-anonymous-feedback-label {
213
+ float: left
214
+ }
215
+
216
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .wbcr-factory-feedback-102-modal-panel {
217
+ margin-top: 0 !important
218
+ }
219
+
220
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-deactivation-feedback .wbcr-factory-feedback-102-modal-panel h3 {
221
+ margin-top: 0;
222
+ line-height: 1.5em
223
+ }
224
+
225
+ #the-list .deactivate > .wbcr-factory-feedback-102-slug {
226
+ display: none
227
+ }
228
+
229
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-subscription-cancellation .wbcr-factory-feedback-102-price-increase-warning {
230
+ color: red;
231
+ font-weight: bold;
232
+ padding: 0 25px;
233
+ margin-bottom: 0
234
+ }
235
+
236
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-subscription-cancellation ul.subscription-actions label input {
237
+ float: left;
238
+ top: 5px;
239
+ position: relative
240
+ }
241
+
242
+ .rtl .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-subscription-cancellation ul.subscription-actions label input {
243
+ float: right
244
+ }
245
+
246
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-subscription-cancellation ul.subscription-actions label span {
247
+ display: block;
248
+ margin-left: 24px
249
+ }
250
+
251
+ .rtl .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-subscription-cancellation ul.subscription-actions label span {
252
+ margin-left: 0;
253
+ margin-right: 24px
254
+ }
255
+
256
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-activation .wbcr-factory-feedback-102-modal-body input.wbcr-factory-feedback-102-license-key {
257
+ width: 100%
258
+ }
259
+
260
+ .wbcr-factory-feedback-102-license-options-container table, .wbcr-factory-feedback-102-license-options-container table select, .wbcr-factory-feedback-102-license-options-container table .wbcr-factory-feedback-102-available-license-key {
261
+ width: 100%
262
+ }
263
+
264
+ .wbcr-factory-feedback-102-license-options-container table td:first-child {
265
+ width: 1%
266
+ }
267
+
268
+ .wbcr-factory-feedback-102-license-options-container table .wbcr-factory-feedback-102-other-license-key-container label {
269
+ position: relative;
270
+ top: 6px;
271
+ float: left;
272
+ margin-right: 5px
273
+ }
274
+
275
+ .wbcr-factory-feedback-102-license-options-container table .wbcr-factory-feedback-102-other-license-key-container div {
276
+ overflow: hidden;
277
+ width: auto;
278
+ height: 30px;
279
+ display: block;
280
+ top: 2px;
281
+ position: relative
282
+ }
283
+
284
+ .wbcr-factory-feedback-102-license-options-container table .wbcr-factory-feedback-102-other-license-key-container div input {
285
+ margin: 0
286
+ }
287
+
288
+ .wbcr-factory-feedback-102-sites-list-container td {
289
+ cursor: pointer
290
+ }
291
+
292
+ .wbcr-factory-feedback-102-multisite-options-container {
293
+ margin-top: 10px;
294
+ border: 1px solid #ccc;
295
+ padding: 5px
296
+ }
297
+
298
+ .wbcr-factory-feedback-102-multisite-options-container a {
299
+ text-decoration: none
300
+ }
301
+
302
+ .wbcr-factory-feedback-102-multisite-options-container a:focus {
303
+ box-shadow: none
304
+ }
305
+
306
+ .wbcr-factory-feedback-102-multisite-options-container a.selected {
307
+ font-weight: bold
308
+ }
309
+
310
+ .wbcr-factory-feedback-102-multisite-options-container.wbcr-factory-feedback-102-apply-on-all-sites {
311
+ border: 0 none;
312
+ padding: 0
313
+ }
314
+
315
+ .wbcr-factory-feedback-102-multisite-options-container.wbcr-factory-feedback-102-apply-on-all-sites .wbcr-factory-feedback-102-all-sites-options {
316
+ border-spacing: 0
317
+ }
318
+
319
+ .wbcr-factory-feedback-102-multisite-options-container.wbcr-factory-feedback-102-apply-on-all-sites .wbcr-factory-feedback-102-all-sites-options td:not(:first-child) {
320
+ display: none
321
+ }
322
+
323
+ .wbcr-factory-feedback-102-multisite-options-container .wbcr-factory-feedback-102-sites-list-container {
324
+ display: none;
325
+ overflow: auto
326
+ }
327
+
328
+ .wbcr-factory-feedback-102-multisite-options-container .wbcr-factory-feedback-102-sites-list-container table td {
329
+ border-top: 1px solid #ccc;
330
+ padding: 4px 2px
331
+ }
332
+
333
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend .email-address-container {
334
+ overflow: hidden;
335
+ padding-right: 2px
336
+ }
337
+
338
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend.wbcr-factory-feedback-102-freemium input.email-address {
339
+ width: 300px
340
+ }
341
+
342
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend.wbcr-factory-feedback-102-freemium label {
343
+ display: block;
344
+ margin-bottom: 10px
345
+ }
346
+
347
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend.wbcr-factory-feedback-102-premium input.email-address {
348
+ width: 100%
349
+ }
350
+
351
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend.wbcr-factory-feedback-102-premium .button-container {
352
+ float: right;
353
+ margin-left: 7px
354
+ }
355
+
356
+ @media (max-width: 650px) {
357
+ .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend.wbcr-factory-feedback-102-premium .button-container {
358
+ margin-top: 2px
359
+ }
360
+ }
361
+
362
+ .rtl .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend .wbcr-factory-feedback-102-modal-body .input-container > .email-address-container {
363
+ padding-left: 2px;
364
+ padding-right: 0
365
+ }
366
+
367
+ .rtl .wbcr-factory-feedback-102-modal.wbcr-factory-feedback-102-modal-license-key-resend .wbcr-factory-feedback-102-modal-body .button-container {
368
+ float: left;
369
+ margin-right: 7px;
370
+ margin-left: 0
371
+ }
372
+
373
+ a.show-license-resend-modal {
374
+ margin-top: 4px;
375
+ display: inline-block
376
+ }
377
+
378
+ .wbcr-factory-feedback-102-ajax-loader {
379
+ position: relative;
380
+ width: 170px;
381
+ height: 20px;
382
+ margin: auto
383
+ }
384
+
385
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar {
386
+ position: absolute;
387
+ top: 0;
388
+ background-color: #0074a3;
389
+ width: 20px;
390
+ height: 20px;
391
+ -webkit-animation-name: bounce_ajaxLoader;
392
+ -moz-animation-name: bounce_ajaxLoader;
393
+ -ms-animation-name: bounce_ajaxLoader;
394
+ -o-animation-name: bounce_ajaxLoader;
395
+ animation-name: bounce_ajaxLoader;
396
+ -webkit-animation-duration: 1.5s;
397
+ -moz-animation-duration: 1.5s;
398
+ -ms-animation-duration: 1.5s;
399
+ -o-animation-duration: 1.5s;
400
+ animation-duration: 1.5s;
401
+ animation-iteration-count: infinite;
402
+ -o-animation-iteration-count: infinite;
403
+ -ms-animation-iteration-count: infinite;
404
+ -webkit-animation-iteration-count: infinite;
405
+ -moz-animation-iteration-count: infinite;
406
+ -webkit-animation-direction: normal;
407
+ -moz-animation-direction: normal;
408
+ -ms-animation-direction: normal;
409
+ -o-animation-direction: normal;
410
+ animation-direction: normal;
411
+ -moz-transform: 0.3;
412
+ -o-transform: 0.3;
413
+ -ms-transform: 0.3;
414
+ -webkit-transform: 0.3;
415
+ transform: 0.3
416
+ }
417
+
418
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-1 {
419
+ left: 0px;
420
+ animation-delay: 0.6s;
421
+ -o-animation-delay: 0.6s;
422
+ -ms-animation-delay: 0.6s;
423
+ -webkit-animation-delay: 0.6s;
424
+ -moz-animation-delay: 0.6s
425
+ }
426
+
427
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-2 {
428
+ left: 19px;
429
+ animation-delay: 0.75s;
430
+ -o-animation-delay: 0.75s;
431
+ -ms-animation-delay: 0.75s;
432
+ -webkit-animation-delay: 0.75s;
433
+ -moz-animation-delay: 0.75s
434
+ }
435
+
436
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-3 {
437
+ left: 38px;
438
+ animation-delay: 0.9s;
439
+ -o-animation-delay: 0.9s;
440
+ -ms-animation-delay: 0.9s;
441
+ -webkit-animation-delay: 0.9s;
442
+ -moz-animation-delay: 0.9s
443
+ }
444
+
445
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-4 {
446
+ left: 57px;
447
+ animation-delay: 1.05s;
448
+ -o-animation-delay: 1.05s;
449
+ -ms-animation-delay: 1.05s;
450
+ -webkit-animation-delay: 1.05s;
451
+ -moz-animation-delay: 1.05s
452
+ }
453
+
454
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-5 {
455
+ left: 76px;
456
+ animation-delay: 1.2s;
457
+ -o-animation-delay: 1.2s;
458
+ -ms-animation-delay: 1.2s;
459
+ -webkit-animation-delay: 1.2s;
460
+ -moz-animation-delay: 1.2s
461
+ }
462
+
463
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-6 {
464
+ left: 95px;
465
+ animation-delay: 1.35s;
466
+ -o-animation-delay: 1.35s;
467
+ -ms-animation-delay: 1.35s;
468
+ -webkit-animation-delay: 1.35s;
469
+ -moz-animation-delay: 1.35s
470
+ }
471
+
472
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-7 {
473
+ left: 114px;
474
+ animation-delay: 1.5s;
475
+ -o-animation-delay: 1.5s;
476
+ -ms-animation-delay: 1.5s;
477
+ -webkit-animation-delay: 1.5s;
478
+ -moz-animation-delay: 1.5s
479
+ }
480
+
481
+ .wbcr-factory-feedback-102-ajax-loader .wbcr-factory-feedback-102-ajax-loader-bar-8 {
482
+ left: 133px;
483
+ animation-delay: 1.65s;
484
+ -o-animation-delay: 1.65s;
485
+ -ms-animation-delay: 1.65s;
486
+ -webkit-animation-delay: 1.65s;
487
+ -moz-animation-delay: 1.65s
488
+ }
489
+
490
+ @-moz-keyframes bounce_ajaxLoader {
491
+ 0% {
492
+ -moz-transform: scale(1);
493
+ -o-transform: scale(1);
494
+ -ms-transform: scale(1);
495
+ -webkit-transform: scale(1);
496
+ transform: scale(1);
497
+ background-color: #0074a3
498
+ }
499
+ 100% {
500
+ -moz-transform: scale(0.3);
501
+ -o-transform: scale(0.3);
502
+ -ms-transform: scale(0.3);
503
+ -webkit-transform: scale(0.3);
504
+ transform: scale(0.3);
505
+ background-color: #fff
506
+ }
507
+ }
508
+
509
+ @-ms-keyframes bounce_ajaxLoader {
510
+ 0% {
511
+ -moz-transform: scale(1);
512
+ -o-transform: scale(1);
513
+ -ms-transform: scale(1);
514
+ -webkit-transform: scale(1);
515
+ transform: scale(1);
516
+ background-color: #0074a3
517
+ }
518
+ 100% {
519
+ -moz-transform: scale(0.3);
520
+ -o-transform: scale(0.3);
521
+ -ms-transform: scale(0.3);
522
+ -webkit-transform: scale(0.3);
523
+ transform: scale(0.3);
524
+ background-color: #fff
525
+ }
526
+ }
527
+
528
+ @-o-keyframes bounce_ajaxLoader {
529
+ 0% {
530
+ -moz-transform: scale(1);
531
+ -o-transform: scale(1);
532
+ -ms-transform: scale(1);
533
+ -webkit-transform: scale(1);
534
+ transform: scale(1);
535
+ background-color: #0074a3
536
+ }
537
+ 100% {
538
+ -moz-transform: scale(0.3);
539
+ -o-transform: scale(0.3);
540
+ -ms-transform: scale(0.3);
541
+ -webkit-transform: scale(0.3);
542
+ transform: scale(0.3);
543
+ background-color: #fff
544
+ }
545
+ }
546
+
547
+ @-webkit-keyframes bounce_ajaxLoader {
548
+ 0% {
549
+ -moz-transform: scale(1);
550
+ -o-transform: scale(1);
551
+ -ms-transform: scale(1);
552
+ -webkit-transform: scale(1);
553
+ transform: scale(1);
554
+ background-color: #0074a3
555
+ }
556
+ 100% {
557
+ -moz-transform: scale(0.3);
558
+ -o-transform: scale(0.3);
559
+ -ms-transform: scale(0.3);
560
+ -webkit-transform: scale(0.3);
561
+ transform: scale(0.3);
562
+ background-color: #fff
563
+ }
564
+ }
565
+
566
+ @keyframes bounce_ajaxLoader {
567
+ 0% {
568
+ -moz-transform: scale(1);
569
+ -o-transform: scale(1);
570
+ -ms-transform: scale(1);
571
+ -webkit-transform: scale(1);
572
+ transform: scale(1);
573
+ background-color: #0074a3
574
+ }
575
+ 100% {
576
+ -moz-transform: scale(0.3);
577
+ -o-transform: scale(0.3);
578
+ -ms-transform: scale(0.3);
579
+ -webkit-transform: scale(0.3);
580
+ transform: scale(0.3);
581
+ background-color: #fff
582
+ }
583
+ }
584
+
585
+ .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form h2, .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons {
586
+ display: none
587
+ }
588
+
589
+ .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form input[type=password], .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form input[type=email], .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form input[type=text] {
590
+ -webkit-appearance: none;
591
+ padding: 10px 10px 5px 10px;
592
+ width: 300px;
593
+ max-width: 100%
594
+ }
595
+
596
+ .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form > div, .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form label, .wbcr-factory-feedback-102-modal-auto-install #request-filesystem-credentials-form fieldset {
597
+ width: 300px;
598
+ max-width: 100%;
599
+ margin: 0 auto;
600
+ display: block
601
+ }
602
+
603
+ .button-primary.warn {
604
+ box-shadow: 0 1px 0 #d2593c;
605
+ text-shadow: 0 -1px 1px #d2593c, 1px 0 1px #d2593c, 0 1px 1px #d2593c, -1px 0 1px #d2593c;
606
+ background: #f56a48;
607
+ border-color: #ec6544 #d2593c #d2593c
608
+ }
609
+
610
+ .button-primary.warn:hover {
611
+ background: #fd6d4a;
612
+ border-color: #d2593c
613
+ }
614
+
615
+ .button-primary.warn:focus {
616
+ box-shadow: 0 1px 0 #dd6041, 0 0 2px 1px #e4a796
617
+ }
618
+
619
+ .button-primary.warn:active {
620
+ background: #dd6041;
621
+ border-color: #d2593c;
622
+ box-shadow: inset 0 2px 0 #d2593c
623
+ }
624
+
625
+ .button-primary.warn.disabled {
626
+ color: #f5b3a1 !important;
627
+ background: #e76444 !important;
628
+ border-color: #d85e40 !important;
629
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) !important
630
+ }
631
+
632
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header {
633
+ background: black;
634
+ color: #fff;
635
+ }
636
+
637
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-header h4 {
638
+ text-shadow: none;
639
+ color: #fff;
640
+ }
641
+
642
+ .wbcr-factory-feedback-102-modal .wbcr-factory-feedback-102-modal-body {
643
+ padding-top: 35px;
644
+ }
645
+
646
+ .wbcr-factory-feedback-102-modal a.button-primary {
647
+ background-color: #9fbb1a !important;
648
+ color: #fff !important;
649
+ border: none !important;
650
+ box-shadow: none !important;
651
+ text-shadow: none !important;
652
+ height: 35px !important;
653
+ padding: 0 24px !important;
654
+ line-height: 35px;
655
+ width: auto !important;
656
+ border-radius: 0;
657
+ text-transform: uppercase;
658
+ letter-spacing: .5px;
659
+ font-family: Lato, sans-serif;
660
+ }
661
+
662
+ .wbcr-factory-feedback-102-modal a.button-secondary {
663
+ border: none !important;
664
+ box-shadow: none !important;
665
+ text-shadow: none !important;
666
+ height: 35px !important;
667
+ padding: 0 24px !important;
668
+ line-height: 35px;
669
+ width: auto !important;
670
+ border-radius: 0;
671
+ text-transform: uppercase;
672
+ letter-spacing: .5px;
673
+ font-family: Lato, sans-serif;
674
+ }
libs/factory/feedback/assets/js/deactivate-feedback.js ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($) {
2
+ 'use strict';
3
+
4
+ var redirectLink = '';
5
+ var plugin_slug = '';
6
+
7
+ $(window).load(function() {
8
+ var modal = $('#wbcr-factory-feedback-102-deactivate-form');
9
+ var deact_button = $('#the-list .deactivate > .plugin-slug').prev();
10
+ var deact_button_close = modal.find('a.button-close');
11
+ var selectedReasonID = false;
12
+
13
+ deact_button.click(function(event) {
14
+ event.preventDefault();
15
+ redirectLink = $(this).attr('href');
16
+ plugin_slug = $(this).next().attr('data-plugin');
17
+ modal.addClass('active');
18
+ });
19
+ deact_button_close.click(function(event) {
20
+ event.preventDefault();
21
+ modal.removeClass('active');
22
+ });
23
+
24
+ // If the user has clicked outside the window, cancel it.
25
+ modal.click(function(evt) {
26
+ var $target = $(evt.target);
27
+
28
+ // If the user has clicked anywhere in the modal dialog, just return.
29
+ if( $target.hasClass('wbcr-factory-feedback-102-modal-body') || $target.hasClass('wbcr-factory-feedback-102-modal-footer') ) {
30
+ return;
31
+ }
32
+
33
+ // If the user has not clicked the close button and the clicked element is inside the modal dialog, just
34
+ // return.
35
+ if(
36
+ !$target.hasClass('button-close') &&
37
+ ($target.parents('.wbcr-factory-feedback-102-modal-body').length > 0 || $target.parents('.wbcr-factory-feedback-102-modal-footer').length > 0)
38
+ ) {
39
+ return;
40
+ }
41
+
42
+ modal.removeClass('active');
43
+
44
+ return false;
45
+ });
46
+
47
+ // Если кликнуть на одну из радиокнопок, изменится текст кнопки
48
+ modal.on('click', 'input[type="radio"]', function(e) {
49
+ var $selectedReasonOption = $(this);
50
+ $selectedReasonOption.attr('checked');
51
+ var $target = $(e.target);
52
+ $target.attr('checked');
53
+
54
+ // If the selection has not changed, do not proceed.
55
+ if( selectedReasonID === $selectedReasonOption.val() ) {
56
+ return;
57
+ }
58
+
59
+ selectedReasonID = $selectedReasonOption.val();
60
+
61
+ var _parent = $(this).parents('li:first');
62
+
63
+ modal.find('.reason-input').remove();
64
+ modal.find('.internal-message').hide();
65
+ modal.find('.button-deactivate').html('Send');
66
+
67
+ if( _parent.hasClass('has-internal-message') ) {
68
+ _parent.find('.internal-message').show();
69
+ }
70
+
71
+ if( _parent.hasClass('has-input') ) {
72
+ var inputType = _parent.data('input-type'),
73
+ inputPlaceholder = _parent.data('input-placeholder'),
74
+ reasonInputHtml = '<div class="reason-input"><span class="message"></span>' + (('textfield' === inputType)
75
+ ? '<input type="text" maxlength="128" />'
76
+ : '<textarea rows="5" maxlength="128"></textarea>') + '</div>';
77
+
78
+ _parent.append($(reasonInputHtml));
79
+ _parent.find('input, textarea').attr('placeholder', inputPlaceholder).focus();
80
+ }
81
+ });
82
+
83
+ //-----------------------------------------------------------
84
+
85
+ modal.on('click', '.wbcr-factory-feedback-102-modal-footer .button', function(evt) {
86
+ evt.preventDefault();
87
+ if( $(this).hasClass('disabled') ) {
88
+ return;
89
+ }
90
+
91
+ var _parent = $(this).parents('.wbcr-factory-feedback-102-modal:first');
92
+ var _this = $(this);
93
+
94
+ if( _this.hasClass('allow-deactivate') ) {
95
+ var $radio = modal.find('input[type="radio"]:checked');
96
+
97
+ var $selected_reason = $radio.parents('li:first'),
98
+ $input = $selected_reason.find('textarea, input[type="text"]'),
99
+ userReason = (0 !== $input.length) ? $input.val().trim() : '';
100
+
101
+ if( '' === userReason ) {
102
+ //return;
103
+ }
104
+
105
+ if( $radio.val() ) {
106
+ $.ajax({
107
+ url: ajaxurl,
108
+ method: 'POST',
109
+ data: {
110
+ action: 'wbcr-factory-feedback-102-save',
111
+ plugin: plugin_slug,
112
+ reason_id: $radio.val(),
113
+ reason_more: userReason,
114
+ anonymous: modal.find('#wbcr-factory-feedback-102-anonymous-checkbox').is(':checked')
115
+ ? 1
116
+ : 0,
117
+ _wpnonce: modal.data('nonce')
118
+ },
119
+ beforeSend: function() {
120
+ _parent.find('.wbcr-factory-feedback-102-modal-footer .button').addClass('disabled');
121
+ _parent.find('.wbcr-factory-feedback-102-modal-footer .button-secondary').text('Processing...');
122
+ },
123
+ error: function() {
124
+ window.location.href = redirectLink;
125
+ },
126
+ complete: function(d, status) {
127
+ window.location.href = redirectLink;
128
+ }
129
+ });
130
+ } else {
131
+ window.location.href = redirectLink;
132
+ }
133
+ } else if( _this.hasClass('button-deactivate') ) {
134
+ // Change the Deactivate button's text and show the reasons panel.
135
+ _parent.find('.button-deactivate').addClass('allow-deactivate');
136
+ }
137
+ });
138
+ });
139
+
140
+ })(jQuery);
libs/factory/feedback/boot.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Factory Feedback
4
+ *
5
+ * @author Artem Prihodko <webtemyk@yandex.ru>
6
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
7
+ * @since 1.0.0
8
+ *
9
+ * @package factory-feedback
10
+ * @copyright (c) 2019, Webcraftic Ltd
11
+ *
12
+ * @version 1.0.0
13
+ */
14
+
15
+ // Exit if accessed directly
16
+ if ( ! defined( 'ABSPATH' ) ) {
17
+ exit;
18
+ }
19
+
20
+ if ( defined( 'FACTORY_FEEDBACK_102_LOADED' ) || ( defined( 'FACTORY_FEEDBACK_BLOCK' ) && FACTORY_FEEDBACK_BLOCK ) ) {
21
+ return;
22
+ }
23
+
24
+ # Устанавливаем константу, что модуль уже загружен
25
+ define( 'FACTORY_FEEDBACK_102_LOADED', true );
26
+
27
+ # Устанавливаем версию модуля
28
+ define( 'FACTORY_FEEDBACK_102_VERSION', '1.0.2' );
29
+
30
+ # Регистрируем текстовый домен, для интернализации интерфейса модуля
31
+ load_plugin_textdomain( 'wbcr_factory_feedback_102', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
32
+
33
+ # Устанавливаем директорию модуля
34
+ define( 'FACTORY_FEEDBACK_102_DIR', dirname( __FILE__ ) );
35
+
36
+ # Устанавливаем url модуля
37
+ define( 'FACTORY_FEEDBACK_102_URL', plugins_url( null, __FILE__ ) );
38
+
39
+ require_once( FACTORY_FEEDBACK_102_DIR . '/includes/class-base.php' );
40
+ require_once( FACTORY_FEEDBACK_102_DIR . '/includes/class-rest-request.php' );
41
+
42
+ /**
43
+ * @param Wbcr_Factory425_Plugin $plugin
44
+ */
45
+ add_action( 'wbcr_factory_feedback_102_plugin_created', function ( $plugin ) {
46
+ new WBCR\Factory_Feedback_102\Base( $plugin );
47
+ } );
libs/factory/feedback/includes/class-base.php ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WBCR\Factory_Feedback_102;
4
+
5
+ // Exit if accessed directly
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit;
8
+ }
9
+
10
+ /**
11
+ * Base class for feedback module.
12
+ *
13
+ * Предназначен для обратной связи с пользователями.
14
+ * В первой версии при деактивации плагина появляется всплывающее окно с небольшим опросом:
15
+ * "Почему вы деактивировали плагин?"
16
+ * Данные отправляются на сайт CreativeMotion
17
+ *
18
+ * @author Artem Prihodko <webtemyk@yandex.ru>
19
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
20
+ *
21
+ * @since 1.0.0 Added
22
+ * @package factory-feedback
23
+ * @copyright (c) 2019 Webcraftic Ltd
24
+ */
25
+ class Base {
26
+
27
+ /**
28
+ * Plugin instance this module interacts with
29
+ *
30
+ * @since 1.0.0 Added
31
+ * @var \Wbcr_Factory425_Plugin
32
+ */
33
+ private $plugin;
34
+
35
+ /**
36
+ * Экземпляр класса для работы API CreativeMotion
37
+ *
38
+ * @since 1.0.0
39
+ * @var \WBCR\Factory_Feedback_102\Creative_Motion_API
40
+ */
41
+ private $api;
42
+
43
+ /**
44
+ * Wbcr_Factory_Feedback constructor.
45
+ *
46
+ * @param \Wbcr_Factory425_Plugin $plugin
47
+ *
48
+ * @since 1.0.0 Added
49
+ *
50
+ */
51
+ public function __construct( \Wbcr_Factory425_Plugin $plugin ) {
52
+ $this->plugin = $plugin;
53
+
54
+ $this->api = new Creative_Motion_API( $this->plugin );
55
+
56
+ // Plugin hook for adding CSS and JS files required for this plugin
57
+ add_action( 'admin_enqueue_scripts', [ $this, 'admin_assets' ], 10, 1 );
58
+ add_action( 'admin_footer-plugins.php', [ $this, 'render_deactivate_form' ] );
59
+
60
+ if ( $this->plugin->isNetworkActive() ) {
61
+ add_filter( 'network_admin_plugin_action_links', [ $this, 'plugin_deactivate_action_link' ], 10, 2 );
62
+ } else {
63
+ add_filter( 'plugin_action_links', [ $this, 'plugin_deactivate_action_link' ], 10, 2 );
64
+ }
65
+
66
+ if ( wp_doing_ajax() ) {
67
+ add_action( 'wp_ajax_wbcr-factory-feedback-102-save', [ $this, 'send_feedback' ] );
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Enqueues module assets for work feedback popup.
73
+ *
74
+ * @param $hook_suffix
75
+ *
76
+ * @return void
77
+ * @since 1.0.0 Added
78
+ *
79
+ */
80
+ public function admin_assets( $hook_suffix ) {
81
+ if ( 'plugins.php' === $hook_suffix ) {
82
+ wp_enqueue_script( 'wbcr-factory-feedback-102-deactivate', FACTORY_FEEDBACK_102_URL . '/assets/js/deactivate-feedback.js', [ 'jquery' ], FACTORY_FEEDBACK_102_VERSION, true );
83
+ wp_enqueue_style( 'wbcr-factory-feedback-102-deactivate', FACTORY_FEEDBACK_102_URL . '/assets/css/dialog-boxes.css' );
84
+ }
85
+ }
86
+
87
+
88
+ /**
89
+ * Render html form in footer on the plugins page.
90
+ *
91
+ * @since 1.0.0 Added
92
+ */
93
+ public function render_deactivate_form() {
94
+ include FACTORY_FEEDBACK_102_DIR . "/views/deactivate-form.php";
95
+ }
96
+
97
+ /**
98
+ * Adds invisible element to action link to able to listen js events.
99
+ *
100
+ * @param array $actions Links array under plugin title
101
+ * @param string $plugin_file Plugin basename: plugin-name/plugin-name.php
102
+ *
103
+ * @return array Links array
104
+ * @since 1.0.0 Added
105
+ *
106
+ */
107
+ public function plugin_deactivate_action_link( $actions, $plugin_file ) {
108
+ if ( $plugin_file !== $this->plugin->get_paths()->basename ) {
109
+ return $actions;
110
+ }
111
+ $actions['deactivate'] .= '<i class="plugin-slug" data-plugin="' . $this->plugin->getPluginName() . '"></i>';
112
+
113
+ return $actions;
114
+ }
115
+
116
+ /**
117
+ *
118
+ * Ajax action sends request to remote server to register deactivation reason.
119
+ *
120
+ * @since 1.0.1 Refactoring, fixed minor bugs. Added new data attrs.
121
+ * @since 1.0.0 Added
122
+ */
123
+ public function send_feedback() {
124
+ global $wp_version;
125
+
126
+ if ( defined( 'FACTORY_FEEDBACK_DEBUG' ) && FACTORY_FEEDBACK_DEBUG ) {
127
+ return;
128
+ }
129
+
130
+ check_ajax_referer( 'wbcr_factory_send_feedback' );
131
+
132
+ if ( ! current_user_can( 'manage_options' ) || ( $this->plugin->plugin_slug !== $_POST['plugin'] ) ) {
133
+ wp_send_json_error( [ 'error_message' => "You haven't permissions for the action." ] );
134
+ }
135
+
136
+ if ( isset( $_POST['reason_id'] ) && isset( $_POST['reason_more'] ) ) {
137
+ $anonymous = $this->plugin->request->post( 'anonymous', 0, 'intval' );
138
+ $license_key = $this->plugin->premium->is_activate() ? $this->plugin->premium->get_license()->get_key() : '';
139
+
140
+ $data = [
141
+ 'uid' => md5( home_url() . get_bloginfo( 'admin_email' ) ),
142
+ 'plugin_name' => $this->plugin->getPluginName(),
143
+ 'plugin_title' => $this->plugin->getPluginTitle(),
144
+ 'site_url' => $anonymous ? '' : site_url(),
145
+ 'plugin_version' => $anonymous ? '' : $this->plugin->getPluginVersion(),
146
+ 'php_version' => $anonymous ? '' : phpversion(),
147
+ 'wp_version' => $anonymous ? '' : $wp_version,
148
+ 'license_key' => $anonymous ? '' : $license_key,
149
+ 'reason' => $this->plugin->request->post( 'reason_id', 0, 'intval' ),
150
+ 'reason_more' => $this->plugin->request->post( 'reason_more', '', true )
151
+ ];
152
+
153
+ $plugin = explode( '/', plugin_basename( __FILE__ ) )[0];
154
+
155
+ $response = $this->api->send_feedback( $plugin, $data );
156
+
157
+ wp_send_json_success();
158
+ }
159
+
160
+ wp_send_json_error( [ 'error_message' => '' ] );
161
+ }
162
+ }
libs/factory/feedback/includes/class-rest-request.php ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WBCR\Factory_Feedback_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 Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
16
+ * @author Artem Prihodko <webtemyk@yandex.ru>
17
+ *
18
+ * @since 1.0.0 Added
19
+ *
20
+ * @package factory-feedback
21
+ * @copyright (c) 2019 Webcraftic Ltd
22
+ */
23
+ class Creative_Motion_API {
24
+
25
+ /**
26
+ * Rest request url.
27
+ *
28
+ * Define rest request url for rest request to remote server.
29
+ *
30
+ * @since 1.2.1
31
+ */
32
+ //const SERVER_URL = 'http://antispam.loc';
33
+ const SERVER_URL = 'https://api.cm-wp.com';
34
+ /**
35
+ * Rest route path.
36
+ *
37
+ * Define rest route path for rest request.
38
+ *
39
+ * @since 1.0.0
40
+ */
41
+ const REST_ROUTE = '/feedback/v1/add';
42
+
43
+ /**
44
+ * Plugin instance this module interacts with
45
+ *
46
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
47
+ * @since 1.0.0
48
+ * @var \Wbcr_Factory425_Plugin
49
+ */
50
+ private $plugin;
51
+
52
+
53
+ /**
54
+ * Request constructor.
55
+ *
56
+ * Variable initialization.
57
+ *
58
+ * @since 1.0.0 Added
59
+ *
60
+ * @param \Wbcr_Factory425_Plugin $plugin_name
61
+ */
62
+ public function __construct( \Wbcr_Factory425_Plugin $plugin ) {
63
+ $this->plugin = $plugin;
64
+ }
65
+
66
+ /**
67
+ * Get adverts content.
68
+ *
69
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
70
+ * @since 1.0.0
71
+ *
72
+ * @param $position
73
+ *
74
+ * @return string|\WP_Error
75
+ */
76
+ public function send_feedback( $plugin, $data ) {
77
+ $resp = $this->do_api_request( $plugin, $data );
78
+
79
+ if ( is_wp_error( $resp ) ) {
80
+ return $resp;
81
+ }
82
+
83
+ return true;
84
+ }
85
+
86
+ /**
87
+ * Performs rest api request.
88
+ *
89
+ * @since 1.0.0
90
+ *
91
+ * @return mixed
92
+ */
93
+ private function do_api_request( $plugin, $data ) {
94
+ $default_result = [];
95
+ $data['plugin'] = $plugin;
96
+
97
+ $url = untrailingslashit( self::SERVER_URL ) . '/wp-json' . self::REST_ROUTE;
98
+ //$url = add_query_arg( $data, $url);
99
+
100
+ $response = wp_remote_post( $url, [ 'body' => $data ] );
101
+
102
+ $code = wp_remote_retrieve_response_code( $response );
103
+ $body = wp_remote_retrieve_body( $response );
104
+
105
+ $res_data = @json_decode( $body, true );
106
+
107
+ if ( is_wp_error( $response ) ) {
108
+ return $response;
109
+ }
110
+
111
+ if ( 200 !== $code ) {
112
+ return new \WP_Error( 'http_request_error', 'Failed request to the remote server. Code: ' . $code );
113
+ }
114
+
115
+ return wp_parse_args( $res_data, $default_result );
116
+ }
117
+ }
libs/factory/feedback/includes/index.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php
2
+ // Silence is golden.
libs/factory/feedback/index.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php
2
+ // Silence is golden.
libs/factory/feedback/views/deactivate-form.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="wbcr-factory-feedback-102-modal wbcr-factory-feedback-102-modal-deactivation-feedback no-confirmation-message" id="wbcr-factory-feedback-102-deactivate-form" data-nonce="<?php echo wp_create_nonce( 'wbcr_factory_send_feedback' ) ?>">
2
+ <div class="wbcr-factory-feedback-102-modal-dialog">
3
+ <div class="wbcr-factory-feedback-102-modal-header">
4
+ <h4><?php _e( 'Quick Feedback', 'wbcr_factory_feedback_102' ) ?></h4></div>
5
+ <div class="wbcr-factory-feedback-102-modal-body">
6
+ <div class="wbcr-factory-feedback-102-modal-panel active" data-panel-id="reasons">
7
+ <h3>
8
+ <strong><?php _e( 'If you have a moment, please let us know why you are deactivating', 'wbcr_factory_feedback_102' ) ?>
9
+ :</strong></h3>
10
+ <ul id="reasons-list">
11
+ <li class="reason has-input" data-input-type="textfield" data-input-placeholder="Название плагина">
12
+ <label>
13
+ <span>
14
+ <input type="radio" name="wbcr_factory_feedback_reason" value="2">
15
+ </span>
16
+ <span><?php _e( 'I found a better plugin', 'wbcr_factory_feedback_102' ) ?></span>
17
+ </label>
18
+ <div class="internal-message"></div>
19
+ </li>
20
+ <li class="reason" data-input-type="" data-input-placeholder="">
21
+ <label>
22
+ <span>
23
+ <input type="radio" name="wbcr_factory_feedback_reason" value="5">
24
+ </span>
25
+ <span><?php _e( 'The plugin suddenly stopped working', 'wbcr_factory_feedback_102' ) ?></span>
26
+ </label>
27
+ <div class="internal-message"></div>
28
+ </li>
29
+ <li class="reason" data-input-type="" data-input-placeholder="">
30
+ <label>
31
+ <span>
32
+ <input type="radio" name="wbcr_factory_feedback_reason" value="3">
33
+ </span>
34
+ <span><?php _e( 'I only needed the plugin for a short period', 'wbcr_factory_feedback_102' ) ?></span>
35
+ </label>
36
+ <div class="internal-message"></div>
37
+ </li>
38
+ <li class="reason" data-input-type="" data-input-placeholder="">
39
+ <label>
40
+ <span>
41
+ <input type="radio" name="wbcr_factory_feedback_reason" value="1">
42
+ </span>
43
+ <span><?php _e( 'I no longer need the plugin', 'wbcr_factory_feedback_102' ) ?></span>
44
+ </label>
45
+ <div class="internal-message"></div>
46
+ </li>
47
+ <li class="reason" data-input-type="" data-input-placeholder="">
48
+ <label>
49
+ <span>
50
+ <input type="radio" name="wbcr_factory_feedback_reason" value="4">
51
+ </span>
52
+ <span><?php _e( 'The plugin broke my site', 'wbcr_factory_feedback_102' ) ?></span>
53
+ </label>
54
+ <div class="internal-message"></div>
55
+ </li>
56
+ <li class="reason" data-input-type="" data-input-placeholder="">
57
+ <label>
58
+ <span>
59
+ <input type="radio" name="wbcr_factory_feedback_reason" value="15">
60
+ </span>
61
+ <span><?php _e( "It's a temporary deactivation. I'm just debugging an issue.", 'wbcr_factory_feedback_102' ) ?></span>
62
+ </label>
63
+ <div class="internal-message"></div>
64
+ </li>
65
+ <li class="reason has-input" data-input-type="textfield" data-input-placeholder="">
66
+ <label>
67
+ <span>
68
+ <input type="radio" name="wbcr_factory_feedback_reason" value="7">
69
+ </span>
70
+ <span><?php _e( 'Other', 'wbcr_factory_feedback_102' ) ?></span>
71
+ </label>
72
+ <div class="internal-message"></div>
73
+ </li>
74
+ </ul>
75
+ <p><?php _e( 'We will receive the following information from you: site address, php version, Wordpress version, version of our plugin, this will help us better understand the causes of the problem. If you don\'t want to send this data, click the "Anonymous" checkbox.', 'wbcr_factory_feedback_102' ) ?></p>
76
+ </div>
77
+ </div>
78
+ <div class="wbcr-factory-feedback-102-modal-footer">
79
+ <label for="wbcr-factory-feedback-102-anonymous-checkbox" class="wbcr-factory-feedback-102-anonymous-feedback-label" style="display: block;">
80
+ <input type="checkbox" id="wbcr-factory-feedback-102-anonymous-checkbox"> <?php _e( 'Anonymous feedback', 'wbcr_factory_feedback_102' ) ?>
81
+ </label>
82
+ <a href="#" class="button button-secondary button-deactivate allow-deactivate"><?php _e( 'Skip & Deactivate', 'wbcr_factory_feedback_102' ) ?></a>
83
+ <a href="#" class="button button-primary button-close"><?php _e( 'Cancel', 'wbcr_factory_feedback_102' ) ?></a>
84
+ </div>
85
+ </div>
86
+ </div>
libs/factory/forms/boot.php CHANGED
@@ -22,252 +22,252 @@ 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_419_LOADED' ) ) {
26
  return;
27
  }
28
 
29
- define( 'FACTORY_FORMS_419_LOADED', true );
30
 
31
- define( 'FACTORY_FORMS_419_VERSION', '4.1.9' );
32
 
33
  // absolute path and URL to the files and resources of the module.
34
- define( 'FACTORY_FORMS_419_DIR', dirname( __FILE__ ) );
35
- define( 'FACTORY_FORMS_419_URL', plugins_url( null, __FILE__ ) );
36
 
37
  #comp merge
38
- require_once( FACTORY_FORMS_419_DIR . '/includes/providers/value-provider.interface.php' );
39
- require_once( FACTORY_FORMS_419_DIR . '/includes/providers/meta-value-provider.class.php' );
40
- require_once( FACTORY_FORMS_419_DIR . '/includes/providers/options-value-provider.class.php' );
41
 
42
- require_once( FACTORY_FORMS_419_DIR . '/includes/form.class.php' );
43
  #endcomp
44
 
45
- load_plugin_textdomain( 'wbcr_factory_forms_419', 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_419_register_controls' hook
53
  *
54
  */
55
- if ( ! function_exists( 'wbcr_factory_forms_419_register_default_controls' ) ) {
56
-
57
  /**
58
- * @param Wbcr_Factory421_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
- function wbcr_factory_forms_419_register_default_controls( Wbcr_Factory421_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_419_DIR . '/includes/html-builder.class.php' );
69
- require_once( FACTORY_FORMS_419_DIR . '/includes/form-element.class.php' );
70
- require_once( FACTORY_FORMS_419_DIR . '/includes/control.class.php' );
71
- require_once( FACTORY_FORMS_419_DIR . '/includes/complex-control.class.php' );
72
- require_once( FACTORY_FORMS_419_DIR . '/includes/holder.class.php' );
73
- require_once( FACTORY_FORMS_419_DIR . '/includes/control-holder.class.php' );
74
- require_once( FACTORY_FORMS_419_DIR . '/includes/custom-element.class.php' );
75
- require_once( FACTORY_FORMS_419_DIR . '/includes/form-layout.class.php' );
76
-
77
  // registration of controls
78
  $plugin->forms->registerControls( [
79
  [
80
  'type' => 'checkbox',
81
- 'class' => 'Wbcr_FactoryForms419_CheckboxControl',
82
- 'include' => FACTORY_FORMS_419_DIR . '/controls/checkbox.php'
83
  ],
84
  [
85
  'type' => 'list',
86
- 'class' => 'Wbcr_FactoryForms419_ListControl',
87
- 'include' => FACTORY_FORMS_419_DIR . '/controls/list.php'
88
  ],
89
  [
90
  'type' => 'dropdown',
91
- 'class' => 'Wbcr_FactoryForms419_DropdownControl',
92
- 'include' => FACTORY_FORMS_419_DIR . '/controls/dropdown.php'
93
  ],
94
  [
95
  'type' => 'dropdown-and-colors',
96
- 'class' => 'Wbcr_FactoryForms419_DropdownAndColorsControl',
97
- 'include' => FACTORY_FORMS_419_DIR . '/controls/dropdown-and-colors.php'
98
  ],
99
  [
100
  'type' => 'hidden',
101
- 'class' => 'Wbcr_FactoryForms419_HiddenControl',
102
- 'include' => FACTORY_FORMS_419_DIR . '/controls/hidden.php'
103
  ],
104
  [
105
  'type' => 'hidden',
106
- 'class' => 'Wbcr_FactoryForms419_HiddenControl',
107
- 'include' => FACTORY_FORMS_419_DIR . '/controls/hidden.php'
108
  ],
109
  [
110
  'type' => 'radio',
111
- 'class' => 'Wbcr_FactoryForms419_RadioControl',
112
- 'include' => FACTORY_FORMS_419_DIR . '/controls/radio.php'
113
  ],
114
  [
115
  'type' => 'radio-colors',
116
- 'class' => 'Wbcr_FactoryForms419_RadioColorsControl',
117
- 'include' => FACTORY_FORMS_419_DIR . '/controls/radio-colors.php'
118
  ],
119
  [
120
  'type' => 'textarea',
121
- 'class' => 'Wbcr_FactoryForms419_TextareaControl',
122
- 'include' => FACTORY_FORMS_419_DIR . '/controls/textarea.php'
123
  ],
124
  [
125
  'type' => 'textbox',
126
- 'class' => 'Wbcr_FactoryForms419_TextboxControl',
127
- 'include' => FACTORY_FORMS_419_DIR . '/controls/textbox.php'
128
  ],
129
  [
130
  'type' => 'multiple-textbox',
131
- 'class' => 'Wbcr_FactoryForms419_MultipleTextboxControl',
132
- 'include' => FACTORY_FORMS_419_DIR . '/controls/multiple-textbox.php'
133
  ],
134
  [
135
  'type' => 'datetimepicker-range',
136
- 'class' => 'Wbcr_FactoryForms419_DatepickerRangeControl',
137
- 'include' => FACTORY_FORMS_419_DIR . '/controls/datepicker-range.php'
138
  ],
139
  [
140
  'type' => 'url',
141
- 'class' => 'Wbcr_FactoryForms419_UrlControl',
142
- 'include' => FACTORY_FORMS_419_DIR . '/controls/url.php'
143
  ],
144
  [
145
  'type' => 'wp-editor',
146
- 'class' => 'Wbcr_FactoryForms419_WpEditorControl',
147
- 'include' => FACTORY_FORMS_419_DIR . '/controls/wp-editor.php'
148
  ],
149
  [
150
  'type' => 'color',
151
- 'class' => 'Wbcr_FactoryForms419_ColorControl',
152
- 'include' => FACTORY_FORMS_419_DIR . '/controls/color.php'
153
  ],
154
  [
155
  'type' => 'color-and-opacity',
156
- 'class' => 'Wbcr_FactoryForms419_ColorAndOpacityControl',
157
- 'include' => FACTORY_FORMS_419_DIR . '/controls/color-and-opacity.php'
158
  ],
159
  [
160
  'type' => 'gradient',
161
- 'class' => 'Wbcr_FactoryForms419_GradientControl',
162
- 'include' => FACTORY_FORMS_419_DIR . '/controls/gradient.php'
163
  ],
164
  [
165
  'type' => 'font',
166
- 'class' => 'Wbcr_FactoryForms419_FontControl',
167
- 'include' => FACTORY_FORMS_419_DIR . '/controls/font.php'
168
  ],
169
  [
170
  'type' => 'google-font',
171
- 'class' => 'Wbcr_FactoryForms419_GoogleFontControl',
172
- 'include' => FACTORY_FORMS_419_DIR . '/controls/google-font.php'
173
  ],
174
  [
175
  'type' => 'pattern',
176
- 'class' => 'Wbcr_FactoryForms419_PatternControl',
177
- 'include' => FACTORY_FORMS_419_DIR . '/controls/pattern.php'
178
  ],
179
  [
180
  'type' => 'integer',
181
- 'class' => 'Wbcr_FactoryForms419_IntegerControl',
182
- 'include' => FACTORY_FORMS_419_DIR . '/controls/integer.php'
183
  ],
184
  [
185
  'type' => 'control-group',
186
- 'class' => 'Wbcr_FactoryForms419_ControlGroupHolder',
187
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/control-group.php'
188
  ],
189
  [
190
  'type' => 'paddings-editor',
191
- 'class' => 'Wbcr_FactoryForms419_PaddingsEditorControl',
192
- 'include' => FACTORY_FORMS_419_DIR . '/controls/paddings-editor.php'
193
  ],
194
  ] );
195
-
196
  // registration of control holders
197
  $plugin->forms->registerHolders( [
198
  [
199
  'type' => 'tab',
200
- 'class' => 'Wbcr_FactoryForms419_TabHolder',
201
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/tab.php'
202
  ],
203
  [
204
  'type' => 'tab-item',
205
- 'class' => 'Wbcr_FactoryForms419_TabItemHolder',
206
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/tab-item.php'
207
  ],
208
  [
209
  'type' => 'accordion',
210
- 'class' => 'Wbcr_FactoryForms419_AccordionHolder',
211
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/accordion.php'
212
  ],
213
  [
214
  'type' => 'accordion-item',
215
- 'class' => 'Wbcr_FactoryForms419_AccordionItemHolder',
216
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/accordion-item.php'
217
  ],
218
  [
219
  'type' => 'control-group',
220
- 'class' => 'Wbcr_FactoryForms419_ControlGroupHolder',
221
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/control-group.php'
222
  ],
223
  [
224
  'type' => 'control-group-item',
225
- 'class' => 'Wbcr_FactoryForms419_ControlGroupItem',
226
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/control-group-item.php'
227
  ],
228
  [
229
  'type' => 'form-group',
230
- 'class' => 'Wbcr_FactoryForms419_FormGroupHolder',
231
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/form-group.php'
232
  ],
233
  [
234
  'type' => 'more-link',
235
- 'class' => 'Wbcr_FactoryForms419_MoreLinkHolder',
236
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/more-link.php'
237
  ],
238
  [
239
  'type' => 'div',
240
- 'class' => 'Wbcr_FactoryForms419_DivHolder',
241
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/div.php'
242
  ],
243
  [
244
  'type' => 'columns',
245
- 'class' => 'Wbcr_FactoryForms419_ColumnsHolder',
246
- 'include' => FACTORY_FORMS_419_DIR . '/controls/holders/columns.php'
247
  ]
248
  ] );
249
-
250
  // registration custom form elements
251
  $plugin->forms->registerCustomElements( [
252
  [
253
  'type' => 'html',
254
- 'class' => 'Wbcr_FactoryForms419_Html',
255
- 'include' => FACTORY_FORMS_419_DIR . '/controls/customs/html.php',
256
  ],
257
  [
258
  'type' => 'separator',
259
- 'class' => 'Wbcr_FactoryForms419_Separator',
260
- 'include' => FACTORY_FORMS_419_DIR . '/controls/customs/separator.php',
261
  ],
262
  ] );
263
-
264
  // registration of form layouts
265
  $plugin->forms->registerFormLayout( [
266
  'name' => 'bootstrap-3',
267
- 'class' => 'Wbcr_FactoryForms419_Bootstrap3FormLayout',
268
- 'include' => FACTORY_FORMS_419_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
269
  ] );
270
  }
271
-
272
- add_action( 'wbcr_factory_forms_419_register_controls', 'wbcr_factory_forms_419_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_423_LOADED' ) ) {
26
  return;
27
  }
28
 
29
+ define( 'FACTORY_FORMS_423_LOADED', true );
30
 
31
+ define( 'FACTORY_FORMS_423_VERSION', '4.2.3' );
32
 
33
  // absolute path and URL to the files and resources of the module.
34
+ define( 'FACTORY_FORMS_423_DIR', dirname( __FILE__ ) );
35
+ define( 'FACTORY_FORMS_423_URL', plugins_url( null, __FILE__ ) );
36
 
37
  #comp merge
38
+ require_once( FACTORY_FORMS_423_DIR . '/includes/providers/value-provider.interface.php' );
39
+ require_once( FACTORY_FORMS_423_DIR . '/includes/providers/meta-value-provider.class.php' );
40
+ require_once( FACTORY_FORMS_423_DIR . '/includes/providers/options-value-provider.class.php' );
41
 
42
+ require_once( FACTORY_FORMS_423_DIR . '/includes/form.class.php' );
43
  #endcomp
44
 
45
+ load_plugin_textdomain( 'wbcr_factory_forms_423', 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_423_register_controls' hook
53
  *
54
  */
55
+ if ( ! function_exists( 'wbcr_factory_forms_423_register_default_controls' ) ) {
56
+
57
  /**
58
+ * @param Wbcr_Factory425_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
+ function wbcr_factory_forms_423_register_default_controls( Wbcr_Factory425_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_423_DIR . '/includes/html-builder.class.php' );
69
+ require_once( FACTORY_FORMS_423_DIR . '/includes/form-element.class.php' );
70
+ require_once( FACTORY_FORMS_423_DIR . '/includes/control.class.php' );
71
+ require_once( FACTORY_FORMS_423_DIR . '/includes/complex-control.class.php' );
72
+ require_once( FACTORY_FORMS_423_DIR . '/includes/holder.class.php' );
73
+ require_once( FACTORY_FORMS_423_DIR . '/includes/control-holder.class.php' );
74
+ require_once( FACTORY_FORMS_423_DIR . '/includes/custom-element.class.php' );
75
+ require_once( FACTORY_FORMS_423_DIR . '/includes/form-layout.class.php' );
76
+
77
  // registration of controls
78
  $plugin->forms->registerControls( [
79
  [
80
  'type' => 'checkbox',
81
+ 'class' => 'Wbcr_FactoryForms423_CheckboxControl',
82
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/checkbox.php'
83
  ],
84
  [
85
  'type' => 'list',
86
+ 'class' => 'Wbcr_FactoryForms423_ListControl',
87
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/list.php'
88
  ],
89
  [
90
  'type' => 'dropdown',
91
+ 'class' => 'Wbcr_FactoryForms423_DropdownControl',
92
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/dropdown.php'
93
  ],
94
  [
95
  'type' => 'dropdown-and-colors',
96
+ 'class' => 'Wbcr_FactoryForms423_DropdownAndColorsControl',
97
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/dropdown-and-colors.php'
98
  ],
99
  [
100
  'type' => 'hidden',
101
+ 'class' => 'Wbcr_FactoryForms423_HiddenControl',
102
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/hidden.php'
103
  ],
104
  [
105
  'type' => 'hidden',
106
+ 'class' => 'Wbcr_FactoryForms423_HiddenControl',
107
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/hidden.php'
108
  ],
109
  [
110
  'type' => 'radio',
111
+ 'class' => 'Wbcr_FactoryForms423_RadioControl',
112
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/radio.php'
113
  ],
114
  [
115
  'type' => 'radio-colors',
116
+ 'class' => 'Wbcr_FactoryForms423_RadioColorsControl',
117
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/radio-colors.php'
118
  ],
119
  [
120
  'type' => 'textarea',
121
+ 'class' => 'Wbcr_FactoryForms423_TextareaControl',
122
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/textarea.php'
123
  ],
124
  [
125
  'type' => 'textbox',
126
+ 'class' => 'Wbcr_FactoryForms423_TextboxControl',
127
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/textbox.php'
128
  ],
129
  [
130
  'type' => 'multiple-textbox',
131
+ 'class' => 'Wbcr_FactoryForms423_MultipleTextboxControl',
132
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/multiple-textbox.php'
133
  ],
134
  [
135
  'type' => 'datetimepicker-range',
136
+ 'class' => 'Wbcr_FactoryForms423_DatepickerRangeControl',
137
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/datepicker-range.php'
138
  ],
139
  [
140
  'type' => 'url',
141
+ 'class' => 'Wbcr_FactoryForms423_UrlControl',
142
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/url.php'
143
  ],
144
  [
145
  'type' => 'wp-editor',
146
+ 'class' => 'Wbcr_FactoryForms423_WpEditorControl',
147
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/wp-editor.php'
148
  ],
149
  [
150
  'type' => 'color',
151
+ 'class' => 'Wbcr_FactoryForms423_ColorControl',
152
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/color.php'
153
  ],
154
  [
155
  'type' => 'color-and-opacity',
156
+ 'class' => 'Wbcr_FactoryForms423_ColorAndOpacityControl',
157
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/color-and-opacity.php'
158
  ],
159
  [
160
  'type' => 'gradient',
161
+ 'class' => 'Wbcr_FactoryForms423_GradientControl',
162
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/gradient.php'
163
  ],
164
  [
165
  'type' => 'font',
166
+ 'class' => 'Wbcr_FactoryForms423_FontControl',
167
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/font.php'
168
  ],
169
  [
170
  'type' => 'google-font',
171
+ 'class' => 'Wbcr_FactoryForms423_GoogleFontControl',
172
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/google-font.php'
173
  ],
174
  [
175
  'type' => 'pattern',
176
+ 'class' => 'Wbcr_FactoryForms423_PatternControl',
177
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/pattern.php'
178
  ],
179
  [
180
  'type' => 'integer',
181
+ 'class' => 'Wbcr_FactoryForms423_IntegerControl',
182
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/integer.php'
183
  ],
184
  [
185
  'type' => 'control-group',
186
+ 'class' => 'Wbcr_FactoryForms423_ControlGroupHolder',
187
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/control-group.php'
188
  ],
189
  [
190
  'type' => 'paddings-editor',
191
+ 'class' => 'Wbcr_FactoryForms423_PaddingsEditorControl',
192
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/paddings-editor.php'
193
  ],
194
  ] );
195
+
196
  // registration of control holders
197
  $plugin->forms->registerHolders( [
198
  [
199
  'type' => 'tab',
200
+ 'class' => 'Wbcr_FactoryForms423_TabHolder',
201
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/tab.php'
202
  ],
203
  [
204
  'type' => 'tab-item',
205
+ 'class' => 'Wbcr_FactoryForms423_TabItemHolder',
206
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/tab-item.php'
207
  ],
208
  [
209
  'type' => 'accordion',
210
+ 'class' => 'Wbcr_FactoryForms423_AccordionHolder',
211
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/accordion.php'
212
  ],
213
  [
214
  'type' => 'accordion-item',
215
+ 'class' => 'Wbcr_FactoryForms423_AccordionItemHolder',
216
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/accordion-item.php'
217
  ],
218
  [
219
  'type' => 'control-group',
220
+ 'class' => 'Wbcr_FactoryForms423_ControlGroupHolder',
221
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/control-group.php'
222
  ],
223
  [
224
  'type' => 'control-group-item',
225
+ 'class' => 'Wbcr_FactoryForms423_ControlGroupItem',
226
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/control-group-item.php'
227
  ],
228
  [
229
  'type' => 'form-group',
230
+ 'class' => 'Wbcr_FactoryForms423_FormGroupHolder',
231
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/form-group.php'
232
  ],
233
  [
234
  'type' => 'more-link',
235
+ 'class' => 'Wbcr_FactoryForms423_MoreLinkHolder',
236
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/more-link.php'
237
  ],
238
  [
239
  'type' => 'div',
240
+ 'class' => 'Wbcr_FactoryForms423_DivHolder',
241
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/div.php'
242
  ],
243
  [
244
  'type' => 'columns',
245
+ 'class' => 'Wbcr_FactoryForms423_ColumnsHolder',
246
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/holders/columns.php'
247
  ]
248
  ] );
249
+
250
  // registration custom form elements
251
  $plugin->forms->registerCustomElements( [
252
  [
253
  'type' => 'html',
254
+ 'class' => 'Wbcr_FactoryForms423_Html',
255
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/customs/html.php',
256
  ],
257
  [
258
  'type' => 'separator',
259
+ 'class' => 'Wbcr_FactoryForms423_Separator',
260
+ 'include' => FACTORY_FORMS_423_DIR . '/controls/customs/separator.php',
261
  ],
262
  ] );
263
+
264
  // registration of form layouts
265
  $plugin->forms->registerFormLayout( [
266
  'name' => 'bootstrap-3',
267
+ 'class' => 'Wbcr_FactoryForms423_Bootstrap3FormLayout',
268
+ 'include' => FACTORY_FORMS_423_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
269
  ] );
270
  }
271
+
272
+ add_action( 'wbcr_factory_forms_423_register_controls', 'wbcr_factory_forms_423_register_default_controls' );
273
  }
libs/factory/forms/controls/checkbox.php CHANGED
@@ -20,9 +20,9 @@
20
  exit;
21
  }
22
 
23
- if( !class_exists('Wbcr_FactoryForms419_CheckboxControl') ) {
24
 
25
- class Wbcr_FactoryForms419_CheckboxControl extends Wbcr_FactoryForms419_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_419') ?></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_419') ?></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_FactoryForms423_CheckboxControl') ) {
24
 
25
+ class Wbcr_FactoryForms423_CheckboxControl extends Wbcr_FactoryForms423_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_423') ?></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_423') ?></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_FactoryForms419_ColorAndOpacityControl') ) {
24
  }
25
 
26
- class Wbcr_FactoryForms419_ColorAndOpacityControl extends Wbcr_FactoryForms419_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
@@ -57,8 +57,8 @@
57
  'way' => 'slider'
58
  ));
59
 
60
- $this->color = new Wbcr_FactoryForms419_ColorControl($options['color'], $form, $provider);
61
- $this->opacity = new Wbcr_FactoryForms419_IntegerControl($options['opacity'], $form, $provider);
62
 
63
  $this->innerControls = array($this->color, $this->opacity);
64
  }
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms423_ColorAndOpacityControl') ) {
24
  }
25
 
26
+ class Wbcr_FactoryForms423_ColorAndOpacityControl extends Wbcr_FactoryForms423_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
57
  'way' => 'slider'
58
  ));
59
 
60
+ $this->color = new Wbcr_FactoryForms423_ColorControl($options['color'], $form, $provider);
61
+ $this->opacity = new Wbcr_FactoryForms423_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_FactoryForms419_ColorControl') ) {
24
 
25
- class Wbcr_FactoryForms419_ColorControl extends Wbcr_FactoryForms419_Control {
26
 
27
  public $type = 'color';
28
 
20
  exit;
21
  }
22
 
23
+ if( !class_exists('Wbcr_FactoryForms423_ColorControl') ) {
24
 
25
+ class Wbcr_FactoryForms423_ColorControl extends Wbcr_FactoryForms423_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_FactoryForms419_Html') ) {
18
 
19
- class Wbcr_FactoryForms419_Html extends Wbcr_FactoryForms419_CustomElement {
20
 
21
  public $type = 'html';
22
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms423_Html') ) {
18
 
19
+ class Wbcr_FactoryForms423_Html extends Wbcr_FactoryForms423_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_FactoryForms419_Separator') ) {
18
- class Wbcr_FactoryForms419_Separator extends Wbcr_FactoryForms419_CustomElement {
19
 
20
  public $type = 'separator';
21
 
14
  exit;
15
  }
16
 
17
+ if( !class_exists('Wbcr_FactoryForms423_Separator') ) {
18
+ class Wbcr_FactoryForms423_Separator extends Wbcr_FactoryForms423_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_FactoryForms419_DatepickerRangeControl') ) {
33
 
34
- class Wbcr_FactoryForms419_DatepickerRangeControl extends Wbcr_FactoryForms419_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_FactoryForms419_TextboxControl($options['range_1'], $form, $provider);
69
- $this->range_2 = new Wbcr_FactoryForms419_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_FactoryForms423_DatepickerRangeControl') ) {
33
 
34
+ class Wbcr_FactoryForms423_DatepickerRangeControl extends Wbcr_FactoryForms423_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_FactoryForms423_TextboxControl($options['range_1'], $form, $provider);
69
+ $this->range_2 = new Wbcr_FactoryForms423_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 FactoryForms419_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 FactoryForms419_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_FactoryForms419_DropdownAndColorsControl') ) {
41
 
42
- class Wbcr_FactoryForms419_DropdownAndColorsControl extends Wbcr_FactoryForms419_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_FactoryForms419_DropdownControl($options['dropdown'], $form, $provider);
73
- $this->colors = new Wbcr_FactoryForms419_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 FactoryForms423_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 FactoryForms423_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_FactoryForms423_DropdownAndColorsControl') ) {
41
 
42
+ class Wbcr_FactoryForms423_DropdownAndColorsControl extends Wbcr_FactoryForms423_ComplexControl {
43
 
44
  public $type = 'dropdown-and-colors';
45
 
69
  'name' => $this->options['name'] . '__colors',
70
  ));
71
 
72
+ $this->dropdown = new Wbcr_FactoryForms423_DropdownControl($options['dropdown'], $form, $provider);
73
+ $this->colors = new Wbcr_FactoryForms423_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_FactoryForms419_DropdownControl' ) ) {
25
 
26
- class Wbcr_FactoryForms419_DropdownControl extends Wbcr_FactoryForms419_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_419' ) ) ?>'
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_419' ) );
272
 
273
  ?>
274
  <select <?php $this->attrs() ?>>
@@ -349,7 +349,7 @@
349
  }
350
 
351
  $value = isset( $i
21
  exit;
22
  }
23
 
24
+ if ( ! class_exists( 'Wbcr_FactoryForms423_DropdownControl' ) ) {
25
 
26
+ class Wbcr_FactoryForms423_DropdownControl extends Wbcr_FactoryForms423_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_423' ) ) ?>'
127
  };
128
  </script>
129
  <?php
268
  }
269
 
270
  $is_empty = $this->isAjax() || empty( $items );
271
+ $empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_423' ) );
272
 
273
  ?>
274
  <select <?php $this->attrs() ?>>
349
  }
350
 
351
  $value = isset( $i