Instagram Slider Widget - Version 1.7.13

Version Description

  • Fixed: Unable to save widget settings
Download this release

Release Info

Developer webtemyk
Plugin Icon 128x128 Instagram Slider Widget
Version 1.7.13
Comparing to
See all releases

Code changes from version 1.6.3 to 1.7.13

Files changed (119) hide show
  1. admin/ajax/check-license.php +70 -67
  2. admin/assets/css/component.css +249 -0
  3. admin/assets/css/jr-insta-admin.css +535 -67
  4. admin/assets/css/license-manager.css +530 -427
  5. admin/assets/img/bg2.png +0 -0
  6. admin/assets/img/bg22.png +0 -0
  7. admin/assets/img/demo/1.png +0 -0
  8. admin/assets/img/demo/1.svg +25 -0
  9. admin/assets/img/demo/2.png +0 -0
  10. admin/assets/img/demo/2.svg +41 -0
  11. admin/assets/img/demo/3.png +0 -0
  12. admin/assets/img/demo/3.svg +29 -0
  13. admin/assets/img/demo/4.png +0 -0
  14. admin/assets/img/demo/4.svg +61 -0
  15. admin/assets/img/demo/5.png +0 -0
  16. admin/assets/img/demo/5.svg +41 -0
  17. admin/assets/img/demo/6.png +0 -0
  18. admin/assets/img/demo/6.svg +45 -0
  19. admin/assets/img/fb-icon-button.png +0 -0
  20. admin/assets/img/fb-icon.png +0 -0
  21. admin/assets/img/insta-icon.png +0 -0
  22. admin/assets/img/spinner.svg +26 -0
  23. admin/assets/img/youtube-icon.png +0 -0
  24. admin/assets/js/cbpFWTabs.js +72 -0
  25. admin/assets/js/jr-insta-admin.js +517 -189
  26. admin/assets/js/tinymce_button.js +40 -40
  27. admin/class-wis-activation.php +2 -2
  28. admin/class-wis-page.php +11 -6
  29. admin/pages/Licenses.php +86 -0
  30. admin/pages/about.php +4 -4
  31. admin/pages/components.php +99 -0
  32. admin/pages/license.php +20 -15
  33. admin/pages/settings.php +72 -29
  34. admin/pages/widgets.php +127 -8
  35. admin/views/facebook.php +94 -0
  36. admin/views/instagram.php +193 -0
  37. admin/views/tab-about.php +105 -36
  38. admin/views/tab-addon_licenses.php +69 -0
  39. admin/views/tab-components.php +68 -0
  40. admin/views/tab-license.php +85 -85
  41. admin/views/tab-licenses.php +45 -0
  42. admin/views/tab-settings.php +44 -97
  43. admin/views/tab-showcase-license.php +147 -0
  44. admin/views/tab-widgets.php +77 -34
  45. admin/views/youtube.php +1 -0
  46. assets/css/instag-slider.css +566 -147
  47. assets/css/jr-insta.css +154 -0
  48. assets/css/wis-header.css +48 -38
  49. assets/image.png +0 -0
  50. assets/img/icon.png +0 -0
  51. assets/img/spinner.svg +26 -0
  52. assets/js/jr-insta.js +7 -0
  53. html_templates/facebook_slider_template.php +15 -0
  54. html_templates/feed_header_template.php +6 -6
  55. includes/class-wis-plugin.php +110 -40
  56. includes/class-wis_facebook_slider.php +488 -0
  57. includes/class-wis_instagram_slider.php +1579 -706
  58. includes/class.wis_social.php +75 -0
  59. includes/demo_widgets.php +391 -0
  60. includes/socials/class.wis_facebook.php +280 -0
  61. includes/socials/class.wis_youtube.php +0 -0
  62. instaram_slider.php +83 -38
  63. languages/instagram-slider-widget-en_US.po +628 -628
  64. languages/instagram-slider-widget-ru_RU.po +644 -644
  65. languages/instagram-slider-widget.pot +629 -629
  66. {vendor → libs/factory/adverts/assets}/index.php +0 -0
  67. libs/factory/adverts/assets/js/index.php +2 -0
  68. libs/factory/adverts/assets/js/script.js +13 -0
  69. libs/factory/adverts/boot.php +14 -14
  70. libs/factory/adverts/includes/class-adverts-base.php +261 -0
  71. libs/factory/adverts/includes/class-adverts-dashboard-widget.php +107 -0
  72. libs/factory/adverts/includes/class-adverts-rest-request.php +180 -0
  73. libs/factory/adverts/includes/class-base.php +6 -6
  74. libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
  75. libs/factory/adverts/includes/class-rest-request.php +65 -45
  76. libs/factory/adverts/langs/wbcr_factory_adverts_102-ru_RU.mo +0 -0
  77. libs/factory/adverts/langs/wbcr_factory_adverts_102-ru_RU.po +83 -0
  78. libs/factory/adverts/langs/wbcr_factory_adverts_105-ru_RU.mo +0 -0
  79. libs/factory/adverts/langs/wbcr_factory_adverts_105-ru_RU.po +83 -0
  80. libs/factory/adverts/langs/wbcr_factory_adverts_107-ru_RU.mo +0 -0
  81. libs/factory/adverts/langs/wbcr_factory_adverts_107-ru_RU.po +83 -0
  82. libs/factory/adverts/langs/wbcr_factory_adverts_108-ru_RU.mo +0 -0
  83. libs/factory/adverts/langs/wbcr_factory_adverts_108-ru_RU.po +83 -0
  84. libs/factory/adverts/langs/wbcr_factory_adverts_109-ru_RU.mo +0 -0
  85. libs/factory/adverts/langs/wbcr_factory_adverts_109-ru_RU.po +83 -0
  86. libs/factory/adverts/langs/wbcr_factory_adverts_114-ru_RU.mo +0 -0
  87. libs/factory/adverts/langs/wbcr_factory_adverts_114-ru_RU.po +83 -0
  88. libs/factory/adverts/readme.txt +98 -0
  89. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
  90. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
  91. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
  92. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
  93. libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +1 -1
  94. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
  95. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
  96. libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +1 -1
  97. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
  98. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
  99. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
  100. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
  101. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
  102. libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +1 -1
  103. libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +1 -1
  104. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
  105. libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +1 -1
  106. libs/factory/bootstrap/assets/css-min/control.color.min.css +1 -1
  107. libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +1 -1
  108. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
  109. libs/factory/bootstrap/assets/css-min/control.fonts.min.css +1 -1
  110. libs/factory/bootstrap/assets/css-min/control.list.min.css +1 -1
  111. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
  112. libs/factory/bootstrap/assets/css-min/control.pattern.min.css +1 -1
  113. libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +1 -1
  114. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
  115. libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +1 -1
  116. libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +1 -1
  117. libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +1 -1
  118. libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +1 -1
  119. libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +1 -1
admin/ajax/check-license.php CHANGED
@@ -1,87 +1,90 @@
1
  <?php
2
- /**
3
- * Ajax plugin check licensing
4
- * @author Webcraftic <wordpress.webraftic@gmail.com>
5
- * @copyright (c) 2017 Webraftic Ltd
6
- * @version 1.0
7
- */
8
 
9
- // Exit if accessed directly
10
- if( !defined('ABSPATH') ) {
11
- exit;
12
- }
13
 
14
- /**
15
- * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
16
- *
17
- * @since 1.4.0
18
- */
19
- function wis_check_license()
20
- {
21
- check_admin_referer('license');
22
-
23
- $action = WIS_Plugin::app()->request->post('license_action', false, true);
24
- $license_key = WIS_Plugin::app()->request->post('licensekey', null);
25
-
26
- if( empty($action) || !in_array($action, array('activate', 'deactivate', 'sync', 'unsubscribe')) ) {
27
- wp_send_json_error(array('error_message' => __('Licensing action not passed or this action is prohibited!', 'instagram-slider-widget')));
28
- die();
29
- }
30
 
31
- $licensing = WIS_Plugin::app()->premium;
 
32
 
33
- $result = null;
34
- $success_message = '';
 
 
35
 
36
- switch( $action ) {
37
- case 'activate':
38
- if( empty($license_key) || strlen($license_key) > 32 ) {
39
- wp_send_json_error(array('error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'instagram-slider-widget')));
40
- } else {
41
- $result = $licensing->activate($license_key);
42
- $success_message = __('Your license has been successfully activated', 'instagram-slider-widget');
43
- }
44
- break;
45
- case 'deactivate':
46
- $result = $licensing->deactivate();
47
- $success_message = __('The license is deactivated', 'instagram-slider-widget');
48
- break;
49
- case 'sync':
50
- $result = $licensing->sync();
51
- $success_message = __('The license has been updated', 'instagram-slider-widget');
52
- break;
53
- case 'unsubscribe':
54
- $result = $licensing->cancel_paid_subscription();
55
- $success_message = __('Subscription success cancelled', 'instagram-slider-widget');
56
- break;
57
- }
58
 
59
- if( is_wp_error($result) ) {
 
60
 
61
- /**
62
- * Экшен выполняет, когда проверка лицензии вернула ошибку
63
- * @param string $action
64
- * @param string $license_key
65
- * @since 1.4.0
66
- */
67
- add_action('wbcr/isw/check_license_error', $action, $license_key);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
- wp_send_json_error(array('error_message' => $result->get_error_message()));
70
- die();
71
- }
72
 
73
  /**
74
- * Экшен выполняет, когда проверка лицензии успешно завершена
 
75
  * @param string $action
76
  * @param string $license_key
 
77
  * @since 1.4.0
78
  */
79
- add_action('wbcr/isw/check_license_success', $action, $license_key);
80
-
81
- wp_send_json_success(array('message' => $success_message));
82
 
 
83
  die();
84
  }
85
 
86
- add_action('wp_ajax_wis_check_license', 'wis_check_license');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
1
  <?php
2
+ /**
3
+ * Ajax plugin check licensing
4
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
5
+ * @copyright (c) 2017 Webraftic Ltd
6
+ * @version 1.0
7
+ */
8
 
9
+ // Exit if accessed directly
10
+ if ( ! defined( 'ABSPATH' ) ) {
11
+ exit;
12
+ }
13
 
14
+ /**
15
+ * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
16
+ *
17
+ * @since 1.4.0
18
+ */
19
+ function wis_check_license() {
20
+ check_admin_referer( 'license' );
 
 
 
 
 
 
 
 
 
21
 
22
+ $action = WIS_Plugin::app()->request->post( 'license_action', false, true );
23
+ $license_key = WIS_Plugin::app()->request->post( 'licensekey', null );
24
 
25
+ if ( empty( $action ) || ! in_array( $action, array( 'activate', 'deactivate', 'sync', 'unsubscribe' ) ) ) {
26
+ wp_send_json_error( array( 'error_message' => __( 'Licensing action not passed or this action is prohibited!', 'instagram-slider-widget' ) ) );
27
+ die();
28
+ }
29
 
30
+ $licensing = WIS_Plugin::app()->premium;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
+ $result = null;
33
+ $success_message = '';
34
 
35
+ switch ( $action ) {
36
+ case 'activate':
37
+ if ( empty( $license_key ) || strlen( $license_key ) > 32 ) {
38
+ wp_send_json_error( array( 'error_message' => __( 'License key is empty or license key too long (license key is 32 characters long)', 'instagram-slider-widget' ) ) );
39
+ } else {
40
+ $result = $licensing->activate( $license_key );
41
+ $success_message = __( 'Your license has been successfully activated', 'instagram-slider-widget' );
42
+ }
43
+ break;
44
+ case 'deactivate':
45
+ $result = $licensing->deactivate();
46
+ $success_message = __( 'The license is deactivated', 'instagram-slider-widget' );
47
+ break;
48
+ case 'sync':
49
+ $result = $licensing->sync();
50
+ $success_message = __( 'The license has been updated', 'instagram-slider-widget' );
51
+ break;
52
+ case 'unsubscribe':
53
+ $result = $licensing->cancel_paid_subscription();
54
+ $success_message = __( 'Subscription success cancelled', 'instagram-slider-widget' );
55
+ break;
56
+ }
57
 
58
+ if ( is_wp_error( $result ) ) {
 
 
59
 
60
  /**
61
+ * Экшен выполняет, когда проверка лицензии вернула ошибку
62
+ *
63
  * @param string $action
64
  * @param string $license_key
65
+ *
66
  * @since 1.4.0
67
  */
68
+ add_action( 'wbcr/isw/check_license_error', $action, $license_key );
 
 
69
 
70
+ wp_send_json_error( array( 'error_message' => $result->get_error_message() ) );
71
  die();
72
  }
73
 
74
+ /**
75
+ * Экшен выполняет, когда проверка лицензии успешно завершена
76
+ *
77
+ * @param string $action
78
+ * @param string $license_key
79
+ *
80
+ * @since 1.4.0
81
+ */
82
+ add_action( 'wbcr/isw/check_license_success', $action, $license_key );
83
+
84
+ wp_send_json_success( array( 'message' => $success_message ) );
85
+
86
+ die();
87
+ }
88
+
89
+ add_action( 'wp_ajax_wis_check_license', 'wis_check_license' );
90
 
admin/assets/css/component.css ADDED
@@ -0,0 +1,249 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #wpcontent
2
+ {
3
+ padding-left: 0 !important;
4
+ background-color: white !important;
5
+ }
6
+
7
+ #wpbody-content
8
+ {
9
+ /*height: 100vh;*/
10
+ }
11
+
12
+ a:active, a:focus
13
+ {
14
+ outline: none !important;
15
+ box-shadow: none !important;
16
+ }
17
+
18
+ .wis-container
19
+ {
20
+ /*padding: 0px 30px 0px 10px;*/
21
+ padding: 1px 0 0 0;
22
+ background-color: #ffffff;
23
+ }
24
+
25
+ .tabs
26
+ {
27
+ position: relative;
28
+ width: 100%;
29
+ overflow: hidden;
30
+ margin: 1em 0 2em;
31
+ font-weight: 400;
32
+ }
33
+
34
+ /* Nav */
35
+ .tabs nav
36
+ {
37
+ text-align: left;
38
+ margin-bottom: -4px;
39
+ }
40
+
41
+ .tabs nav ul
42
+ {
43
+ padding: 0;
44
+ margin: 0;
45
+ list-style: none;
46
+ display: inline-block;
47
+ margin-left: 25px;
48
+ }
49
+
50
+ .tabs nav ul li
51
+ {
52
+ border: 1px solid #becbd2;
53
+ border-bottom: none;
54
+ border-top-left-radius: 10px;
55
+ border-top-right-radius: 10px;
56
+ border-bottom-right-radius: 0px;
57
+ border-bottom-left-radius: 0px;
58
+ margin: 0 0.25em;
59
+ display: block;
60
+ float: left;
61
+ position: relative;
62
+ width: 20em;
63
+ background-color: #f1f1f1;
64
+ }
65
+
66
+ .tabs nav ul li:hover
67
+ {
68
+ background-color: white;
69
+ }
70
+
71
+ .tabs nav li.tab-current
72
+ {
73
+ border: 1px solid #47a3da;
74
+ box-shadow: inset 0px 5px 4px -3px #ff7600;
75
+ border-top-left-radius: 10px;
76
+ border-top-right-radius: 10px;
77
+ border-bottom-right-radius: 0px;
78
+ border-bottom-left-radius: 0px;
79
+ border-bottom: none;
80
+ z-index: 100;
81
+ background-color: white;
82
+ }
83
+
84
+ .tabs nav li.tab-current:before,
85
+ .tabs nav li.tab-current:after
86
+ {
87
+ content: '';
88
+ position: absolute;
89
+ height: 1px;
90
+ right: 100%;
91
+ bottom: 0;
92
+ width: 1000px;
93
+ background: #47a3da;
94
+ }
95
+
96
+ .tabs nav li.tab-current:after
97
+ {
98
+ right: auto;
99
+ left: 100%;
100
+ width: 4000px;
101
+ }
102
+
103
+ .tabs nav a
104
+ {
105
+ color: #becbd2;
106
+ display: block;
107
+ font-size: 1.45em;
108
+ line-height: 2.5;
109
+ padding: 0 1.25em;
110
+ white-space: nowrap;
111
+ }
112
+
113
+ .tabs nav a:hover
114
+ {
115
+ color: #768e9d;
116
+ }
117
+
118
+ .tabs nav li.tab-current a
119
+ {
120
+ color: #47a3da;
121
+ font-weight: bold;
122
+ outline: none !important;
123
+ }
124
+
125
+ /* Icons */
126
+ .tabs nav a:before
127
+ {
128
+ display: inline-block;
129
+ vertical-align: middle;
130
+ text-transform: none;
131
+ font-weight: normal;
132
+ font-variant: normal;
133
+ line-height: 1;
134
+ speak: none;
135
+ -webkit-font-smoothing: antialiased;
136
+ margin: -0.25em 0.4em 0 0;
137
+ }
138
+
139
+ .icon-instagram:before
140
+ {
141
+ content: url(../img/insta-icon.png);
142
+ }
143
+
144
+ .icon-facebook:before
145
+ {
146
+ content: url(../img/fb-icon.png);
147
+ }
148
+
149
+ .icon-youtube:before
150
+ {
151
+ content: url(../img/youtube-icon.png);
152
+ }
153
+
154
+
155
+ /* Content */
156
+ .content
157
+ {
158
+ border-bottom: 1px solid #47a3da;
159
+ border-top: 0;
160
+ background-color: white;
161
+ padding: 30px;
162
+ height: 100vh;
163
+ }
164
+
165
+ .content section
166
+ {
167
+
168
+ margin: 0 auto;
169
+ }
170
+
171
+ .content section:before,
172
+ .content section:after
173
+ {
174
+ content: '';
175
+ display: table;
176
+ }
177
+
178
+ .content section:after
179
+ {
180
+ clear: both;
181
+ }
182
+
183
+ /* Fallback example */
184
+ .no-js .content section
185
+ {
186
+ display: block;
187
+ padding-bottom: 2em;
188
+ border-bottom: 1px solid #47a3da;
189
+ }
190
+
191
+ .content section.content-current
192
+ {
193
+ display: block;
194
+ }
195
+
196
+ /* Example media queries */
197
+
198
+ @media screen and (max-width: 52.375em)
199
+ {
200
+ .tabs nav a span
201
+ {
202
+ display: none;
203
+ }
204
+
205
+ .tabs nav a:before
206
+ {
207
+ margin-right: 0;
208
+ }
209
+ }
210
+
211
+ @media screen and (max-width: 32em)
212
+ {
213
+ .tabs nav ul,
214
+ .tabs nav ul li a
215
+ {
216
+ width: 100%;
217
+ padding: 0;
218
+ }
219
+
220
+ .tabs nav ul li
221
+ {
222
+ width: 20%;
223
+ width: calc(20% + 1px);
224
+ margin: 0 0 0 -1px;
225
+ }
226
+
227
+ .tabs nav ul li:last-child
228
+ {
229
+ border-right: none;
230
+ }
231
+ }
232
+
233
+ .tabs nav li a
234
+ {
235
+ color: #0073aa;
236
+ text-decoration: none;
237
+ outline: none !important;
238
+ }
239
+
240
+ .tabs nav li a:hover
241
+ {
242
+ font-weight: bold;
243
+ }
244
+
245
+ p.info
246
+ {
247
+ text-align: center;
248
+ padding: 20px;
249
+ }
admin/assets/css/jr-insta-admin.css CHANGED
@@ -1,100 +1,568 @@
1
- .jr-container .donate { padding: 5px 15px 10px; display: inline-block; position: relative; color: #000; background: #ffd751; -webkit-border-radius: 5px; border-radius: 5px; border: 1px solid #b4b4b4; font-weight: bold; font-size: 14px; text-decoration: none; }
2
- .jr-container .donate a { outline: 0; cursor: pointer }
3
- .jr-container .donate span:before { color: #ce1f00; font: 400 20px/1 dashicons; font-family: dashicons; font-size: 24px; font-style: normal; font-variant: normal; font-weight: 400; font-stretch: normal; line-height: 1; content: '\f487'; position: relative; display: inline-block; top: 4px; margin-right: 4px; }
4
- .jr-container .pressthis a, .jr-container .pressthis-bookmarklet a,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  .jr-container .pressthis a:active, .jr-container .pressthis-bookmarklet a:active,
6
  .jr-container .pressthis a:focus, .jr-container .pressthis-bookmarklet a:focus,
7
- .jr-container .pressthis a:hover, .jr-container .pressthis-bookmarklet a:hover { cursor: pointer; background: #53b5d9; border: 1px solid #0074a2; color: #ffffff; font-weight: bold }
8
- .jr-container .jr_insta_error { border-left: 4px solid #dd3d36; -moz-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1); -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1); box-shadow: 0 1px 1px 0 rgba(0,0,0,.1); padding: 5px 12px; }
9
- .jr-container .jr-radio { margin-right: 20px }
10
- .jr-container .jr-search-for-container { display: block; margin-bottom: 7px; }
11
- .jr-container .jr-seach-for { width: 90px; display: inline-block; vertical-align: middle }
12
-
13
- .jr-container .jr-advanced { text-decoration: none; border: none }
14
- .jr-container .jr-advanced:focus { outline: 0; border: none; box-shadow:none }
15
-
16
- .jr-container .jr-advanced-input div { border: 1px solid #cfcfcf; padding: 10px; margin: 25px 0 0; }
17
- .jr-container .jr-advanced-input .jr-advanced-title{ margin: -22px 0 0 0; background-color: white; width: 160px; padding: 3px 10px; border: 1px solid #cfcfcf; }
18
- .jr-container .jr-description { color: #777; font-size: smaller; clear:both; display:block; margin-top: 5px;}
19
- .jr-container .jr-description.hide-media-library, .jr-container .jr-description.hide-instagram { display: none }
20
-
21
- .jr-container .switch { position: relative; display: inline-block; margin-left: 5px; width: 45px; height: 24px; }
22
- .jr-container .switch input {display:none;}
23
- .jr-container .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: .4s; transition: .4s; }
24
- .jr-container .slider:before { position: absolute; content: ""; height: 22px; width: 22px; left: 0px; bottom: 0px; border: 1px solid #e5e5e5; background-color: white; -webkit-transition: .4s; transition: .4s; }
25
- .jr-container input:checked + .slider { background-color: #0085ba; }
26
- .jr-container input:focus + .slider { box-shadow: 0 0 1px #0085ba; }
27
- .jr-container input:checked + .slider:before { -webkit-transform: translateX(22px); -ms-transform: translateX(22px); transform: translateX(22px); }
28
- .jr-container .slider.round { border-radius: 34px; }
29
- .jr-container .slider.round:before { border-radius: 50%; }
30
- .jr-container .donate-buttons { text-align: center }
31
- .jr-container .donate-button-link { cursor: pointer }
32
-
33
- .wis-btn-instagram-account
34
- {
35
- padding: 0 24px 0 120px;
36
- height: 44px;
37
- line-height: 44px;
38
- text-transform: uppercase;
39
- color: rgba(255,255,255,0.8)!important;
40
- text-decoration: none;
41
- border-radius: 5px;
42
- transition: all .5s ease-in-out;
43
- font-weight: 600;
44
- display: inline-block;
45
- background: #408bd1 url(../img/instagram_bg.png) no-repeat 16px 13.5px !important;
46
- background-size: auto 20px !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  .btn-instagram-account-disabled
49
  {
50
- opacity: 0.5;
51
  }
52
 
53
  .instagram-account-pro
54
  {
55
- padding: 5px;
56
  }
57
 
58
  .wis-spinner
59
  {
60
- background: url(../img/spinner.gif) no-repeat;
61
- background-size: 20px 20px;
62
- display: inline-block;
63
- visibility: hidden;
64
- float: right;
65
- vertical-align: middle;
66
- opacity: 0.7;
67
- filter: alpha(opacity=70);
68
- width: 20px;
69
- height: 20px;
70
- margin: 4px 10px 0;
71
  }
 
72
  .wis-table > tbody > tr > td
73
  {
74
- background-color: white;
75
  }
 
76
  .wis-table > thead > tr > th
77
  {
78
- font-weight: bold;
79
- background-color: #e8e8e8;
80
  }
 
81
  .wis-text-token
82
  {
83
- background: transparent !important;
84
- border: 0 !important;
85
- box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.00) !important;
86
  }
 
87
  .wis-help-text
88
  {
89
- font-size: 16px;
90
- margin: 10px 0px 0px 10px;
91
  }
 
92
  .wis-help-text p
93
  {
94
- font-size: 14px;
95
  }
96
 
97
  i.wis-shortcode-icon
98
  {
99
- background: url(../img/wis_icon.png) center no-repeat;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  }
1
+ .jr-container .donate
2
+ {
3
+ padding: 5px 15px 10px;
4
+ display: inline-block;
5
+ position: relative;
6
+ color: #000;
7
+ background: #ffd751;
8
+ -webkit-border-radius: 5px;
9
+ border-radius: 5px;
10
+ border: 1px solid #b4b4b4;
11
+ font-weight: bold;
12
+ font-size: 14px;
13
+ text-decoration: none;
14
+ }
15
+
16
+ .jr-container .donate a
17
+ {
18
+ outline: 0;
19
+ cursor: pointer
20
+ }
21
+
22
+ .jr-container .donate span:before
23
+ {
24
+ color: #ce1f00;
25
+ font: 400 20px/1 dashicons;
26
+ font-family: dashicons;
27
+ font-size: 24px;
28
+ font-style: normal;
29
+ font-variant: normal;
30
+ font-weight: 400;
31
+ font-stretch: normal;
32
+ line-height: 1;
33
+ content: '\f487';
34
+ position: relative;
35
+ display: inline-block;
36
+ top: 4px;
37
+ margin-right: 4px;
38
+ }
39
+
40
+ .jr-container .pressthis a, .jr-container .pressthis-bookmarklet a,
41
  .jr-container .pressthis a:active, .jr-container .pressthis-bookmarklet a:active,
42
  .jr-container .pressthis a:focus, .jr-container .pressthis-bookmarklet a:focus,
43
+ .jr-container .pressthis a:hover, .jr-container .pressthis-bookmarklet a:hover
44
+ {
45
+ cursor: pointer;
46
+ background: #53b5d9;
47
+ border: 1px solid #0074a2;
48
+ color: #ffffff;
49
+ font-weight: bold
50
+ }
51
+
52
+ .jr-container .jr_insta_error
53
+ {
54
+ border-left: 4px solid #dd3d36;
55
+ -moz-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
56
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
57
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
58
+ padding: 5px 12px;
59
+ }
60
+
61
+ .jr-container .jr-radio
62
+ {
63
+ margin-right: 20px
64
+ }
65
+
66
+ .jr-container .jr-search-for-container
67
+ {
68
+ display: block;
69
+ margin-bottom: 7px;
70
+ }
71
+
72
+ .jr-container .jr-seach-for
73
+ {
74
+ width: 90px;
75
+ display: inline-block;
76
+ vertical-align: middle
77
+ }
78
+
79
+ .jr-container .jr-advanced
80
+ {
81
+ text-decoration: none;
82
+ border: none
83
+ }
84
+
85
+ .jr-container .jr-advanced:focus
86
+ {
87
+ outline: 0;
88
+ border: none;
89
+ box-shadow: none
90
+ }
91
+
92
+ .jr-container .jr-advanced-input div
93
+ {
94
+ border: 1px solid #cfcfcf;
95
+ padding: 10px;
96
+ margin: 25px 0 0;
97
+ }
98
+
99
+ .jr-container .jr-advanced-input .jr-advanced-title
100
+ {
101
+ margin: -22px 0 0 0;
102
+ background-color: white;
103
+ width: 160px;
104
+ padding: 3px 10px;
105
+ border: 1px solid #cfcfcf;
106
+ }
107
+
108
+ .jr-container .jr-description
109
+ {
110
+ color: #777;
111
+ font-size: smaller;
112
+ clear: both;
113
+ display: block;
114
+ margin-top: 5px;
115
+ }
116
+
117
+ .jr-container .jr-description.hide-media-library, .jr-container .jr-description.hide-instagram
118
+ {
119
+ display: none
120
+ }
121
+
122
+ .jr-container .switch
123
+ {
124
+ position: relative;
125
+ display: inline-block;
126
+ margin-left: 5px;
127
+ width: 45px;
128
+ height: 24px;
129
+ }
130
+
131
+ .jr-container .switch input
132
+ {
133
+ display: none;
134
  }
135
+
136
+ .jr-container .slider
137
+ {
138
+ position: absolute;
139
+ cursor: pointer;
140
+ top: 0;
141
+ left: 0;
142
+ right: 0;
143
+ bottom: 0;
144
+ background-color: #ccc;
145
+ -webkit-transition: .4s;
146
+ transition: .4s;
147
+ }
148
+
149
+ .jr-container .slider:before
150
+ {
151
+ position: absolute;
152
+ content: "";
153
+ height: 22px;
154
+ width: 22px;
155
+ left: 0px;
156
+ bottom: 0px;
157
+ border: 1px solid #e5e5e5;
158
+ background-color: white;
159
+ -webkit-transition: .4s;
160
+ transition: .4s;
161
+ }
162
+
163
+ .jr-container input:checked + .slider
164
+ {
165
+ background-color: #0085ba;
166
+ }
167
+
168
+ .jr-container input:focus + .slider
169
+ {
170
+ box-shadow: 0 0 1px #0085ba;
171
+ }
172
+
173
+ .jr-container input:checked + .slider:before
174
+ {
175
+ -webkit-transform: translateX(22px);
176
+ -ms-transform: translateX(22px);
177
+ transform: translateX(22px);
178
+ }
179
+
180
+ .jr-container .slider.round
181
+ {
182
+ border-radius: 34px;
183
+ }
184
+
185
+ .jr-container .slider.round:before
186
+ {
187
+ border-radius: 50%;
188
+ }
189
+
190
+ .jr-container .donate-buttons
191
+ {
192
+ text-align: center
193
+ }
194
+
195
+ .jr-container .donate-button-link
196
+ {
197
+ cursor: pointer
198
+ }
199
+
200
+ .wis-btn-instagram-account, .wis-btn-instagram-account-disabled
201
+ {
202
+ padding: 0 24px 0 120px;
203
+ height: 44px;
204
+ line-height: 44px;
205
+ text-transform: uppercase;
206
+ color: rgba(255, 255, 255, 0.8) !important;
207
+ text-decoration: none;
208
+ border-radius: 5px;
209
+ transition: all .5s ease-in-out;
210
+ font-weight: 600;
211
+ display: inline-block;
212
+ background: #4267B2 url(../img/instagram_bg.png) no-repeat 16px 13.5px !important;
213
+ background-size: auto 20px !important;
214
+ }
215
+
216
+ .wis-btn-facebook-account
217
+ {
218
+ padding: 0 30px 0 60px;
219
+ height: 44px;
220
+ line-height: 44px;
221
+ text-transform: uppercase;
222
+ color: rgba(255, 255, 255, 0.8) !important;
223
+ text-decoration: none;
224
+ border-radius: 5px;
225
+ transition: all .5s ease-in-out;
226
+ font-weight: 600;
227
+ display: inline-block;
228
+ background: #1879f2 url(../img/fb-icon-button.png) no-repeat 15px center !important;
229
+ background-size: auto 25px !important;
230
+ /*background: #1879f2 url(../img/fb-icon-button.png) no-repeat 15px 10px !important;*/
231
+ /*background-size: auto 25px !important;*/
232
+ }
233
+
234
+ .wis-not-working
235
+ {
236
+ padding-left: 10px;
237
+ font-size: 16px;
238
+ }
239
+
240
+ #wis-add-token
241
+ {
242
+ margin-top: 10px;
243
+ background-color: white;
244
+ padding: 20px;
245
+ border: 1px solid #ccd0d4;
246
+ border-radius: 5px;
247
+ }
248
+
249
+ #wis-add-token p
250
+ {
251
+ padding-top: 5px;
252
+ }
253
+
254
  .btn-instagram-account-disabled
255
  {
256
+ opacity: 0.5;
257
  }
258
 
259
  .instagram-account-pro
260
  {
261
+ padding: 5px;
262
  }
263
 
264
  .wis-spinner
265
  {
266
+ background: url(../img/spinner.gif) no-repeat;
267
+ background-size: 20px 20px;
268
+ display: inline-block;
269
+ visibility: hidden;
270
+ float: right;
271
+ vertical-align: middle;
272
+ opacity: 0.7;
273
+ filter: alpha(opacity=70);
274
+ width: 20px;
275
+ height: 20px;
276
+ margin: 4px 10px 0;
277
  }
278
+
279
  .wis-table > tbody > tr > td
280
  {
281
+ background-color: white;
282
  }
283
+
284
  .wis-table > thead > tr > th
285
  {
286
+ font-weight: bold;
287
+ background-color: #e8e8e8;
288
  }
289
+
290
  .wis-text-token
291
  {
292
+ background: transparent !important;
293
+ border: 0 !important;
294
+ box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.00) !important;
295
  }
296
+
297
  .wis-help-text
298
  {
299
+ font-size: 16px;
300
+ margin: 10px 0px 0px 10px;
301
  }
302
+
303
  .wis-help-text p
304
  {
305
+ font-size: 16px;
306
  }
307
 
308
  i.wis-shortcode-icon
309
  {
310
+ background: url(../img/wis_icon.png) center no-repeat;
311
+ }
312
+
313
+ /* MODAL popup*/
314
+ .wis_accounts_modal
315
+ {
316
+ position: fixed;
317
+ top: 50%;
318
+ left: 50%;
319
+ transform: translate(-50%, -50%);
320
+ width: 400px;
321
+ max-width: 100%;
322
+ height: 400px;
323
+ max-height: 100%;
324
+ z-index: 1010;
325
+ display: block;
326
+ overflow-y: auto;
327
+ overflow-x: hidden;
328
+ background-color: white;
329
+ border: 1px solid #32323280;
330
+ border-radius: 10px;
331
+ -webkit-box-shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.5);
332
+ -moz-box-shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.5);
333
+ box-shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.5);
334
+ }
335
+
336
+ #wis_add_account_modal
337
+ {
338
+ height: 230px !important;
339
+ }
340
+
341
+ .wis_closed
342
+ {
343
+ display: none !important;
344
+ }
345
+
346
+ .wis_modal_content
347
+ {
348
+ position: initial;
349
+ top: 0;
350
+ left: 0;
351
+ width: auto;
352
+ height: auto;
353
+ padding: 15px 20px 15px 20px;
354
+ overflow-y: auto;
355
+ overflow-x: hidden;
356
+ text-align: center;
357
+ }
358
+
359
+ .wis_modal_header
360
+ {
361
+ position: initial;
362
+ top: 0;
363
+ left: 0;
364
+ width: auto;
365
+ height: 20px;
366
+ padding: 15px 20px 25px 20px;
367
+ overflow: hidden;
368
+ text-align: left;
369
+ font-weight: bold;
370
+ font-size: 14px;
371
+
372
+ }
373
+
374
+ .wis_modal_overlay
375
+ {
376
+ z-index: 1000;
377
+ position: fixed;
378
+ top: 0;
379
+ left: 0;
380
+ width: 100%;
381
+ height: 100%;
382
+ background-color: rgba(0, 0, 0, 0.5);
383
+ }
384
+
385
+ .wis-overlay-spinner
386
+ {
387
+ background: url(../img/spinner.svg) no-repeat;
388
+ background-size: 100px 100px;
389
+ vertical-align: middle;
390
+ transform: translate(-50%, -50%);
391
+ left: 50%;
392
+ top: 50%;
393
+ width: 100px;
394
+ height: 100px;
395
+ position: fixed;
396
+ visibility: hidden;
397
+ z-index: 1001;
398
+ }
399
+
400
+ .is-active
401
+ {
402
+ visibility: visible !important;
403
+ }
404
+
405
+ .wis-row
406
+ {
407
+ width: 95%;
408
+ min-width: 1120px;
409
+ display: flex;
410
+ }
411
+
412
+ .wis-col-1
413
+ {
414
+ float: left;
415
+ width: 20%;
416
+ }
417
+
418
+ .wis-col-2
419
+ {
420
+ float: left;
421
+ width: 80%;
422
+ }
423
+
424
+ .wis-col-full
425
+ {
426
+ float: left;
427
+ width: 100%;
428
+ }
429
+
430
+ .wis-row-style
431
+ {
432
+ padding: 10px;
433
+ cursor: pointer;
434
+ text-align: center;
435
+ }
436
+
437
+ .wis-col1-style
438
+ {
439
+ text-align: center;
440
+ vertical-align: middle;
441
+ }
442
+
443
+ .wis-col-full-style
444
+ {
445
+ height: 50px;
446
+ font-weight: bold;
447
+ font-size: 14px;
448
+ padding-left: 5px;
449
+ text-align: center;
450
+ vertical-align: middle;
451
+ }
452
+
453
+ .wis-col1-style img
454
+ {
455
+ border: 1px solid #dadada;
456
+ border-radius: 10px;
457
+ vertical-align: middle;
458
+ }
459
+
460
+ .wis-col2-style
461
+ {
462
+ font-weight: bold;
463
+ font-size: 14px;
464
+ padding-left: 5px;
465
+ }
466
+
467
+ .wis-col2-style p
468
+ {
469
+ vertical-align: middle;
470
+ }
471
+
472
+ .wis-page-title
473
+ {
474
+ text-align: center;
475
+ padding: 10px 0;
476
+ }
477
+
478
+ .wis-page-title h1
479
+ {
480
+ vertical-align: middle;
481
+ color: #000000;
482
+ text-shadow: 1px 1px 1px #ccc;
483
+ }
484
+
485
+ .wis-div-added
486
+ {
487
+ display: inline-block;
488
+ background-color: #d3dec1;
489
+ border: 1px solid green;
490
+ border-radius: 5px;
491
+ text-align: center;
492
+ word-break: break-word;
493
+ width: 100px;
494
+ float: right;
495
+ font-size: 12px;
496
+ line-height: 1.1;
497
+ padding: 5px 0px;
498
+ }
499
+
500
+ .wis-widgets-container
501
+ {
502
+ padding: 20px 0 0 0;
503
+ /*margin-right: 20px;*/
504
+ }
505
+
506
+ .wis-col-16
507
+ {
508
+ float: left;
509
+ width: 16.66666666%;
510
+ }
511
+
512
+ .wis-demo-widgets
513
+ {
514
+ width: auto;
515
+ padding: 15px;
516
+ margin: 0 20px 20px 0;
517
+ background: #fafafa;
518
+ color: #23282d;
519
+ border: 1px solid #ccd0d4;
520
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
521
+ }
522
+
523
+ .wis-demo-widgets .wis-demo-widefat
524
+ {
525
+ color: black;
526
+ font-family: monospace;
527
+ text-align: center;
528
+ }
529
+
530
+ .wis-demo-shortcode
531
+ {
532
+ margin: 10px 0 10px 0;
533
+ text-align: center;
534
+ }
535
+
536
+ .wis-demo-shortcode p
537
+ {
538
+ margin: 0 !important;
539
+ padding: 0 10px 10px 10px !important;
540
+ }
541
+
542
+ .wis-demo-shortcode input
543
+ {
544
+ padding: 0 !important;
545
+ width: 95%;
546
+ font-size: 12px;
547
+ }
548
+
549
+ .wis-demo-shortcode span.wis_demo_pro:after
550
+ {
551
+ display: inline-block;
552
+ position: relative;
553
+ content: 'PRO';
554
+ background: #ff5722;
555
+ border-radius: 4px;
556
+ color: #fff;
557
+ font-size: 10px;
558
+ line-height: 1;
559
+ font-style: normal;
560
+ padding: 4px 6px;
561
+ margin-left: 4px;
562
+ vertical-align: top;
563
+ top: 0;
564
+ left: 0;
565
+ right: auto;
566
+ z-index: 11;
567
+ cursor: pointer;
568
  }
admin/assets/css/license-manager.css CHANGED
@@ -1,659 +1,762 @@
1
 
2
- .not-visible-in-manager {
3
- display: none;
 
4
  }
5
 
6
  /**
7
  * Global License Message
8
  */
9
- .global-license-message {
10
- width: 600px;
11
- margin: auto;
12
- /*margin-top: 100px;*/
13
- font-size: 14px;
14
- line-height: 170%;
 
15
  }
16
 
17
- .global-license-message h2, .global-license-message h3 {
18
- padding: 0px;
19
- margin: 5px 0;
 
20
  }
21
 
22
- .onp-page-wrap {
23
- max-width: 720px;
24
- margin: auto;
25
- margin-top: 40px;
26
- font-size: 14px;
27
- line-height: 170%;
 
28
  }
29
 
30
- .onp-container {
31
- border: 0px;
32
- padding: 0px;
33
- border-radius: 5px;
34
- background: rgb(255, 255, 255) !important;
35
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
36
- -moz-box-sizing: border-box;
37
- box-sizing: border-box;
 
38
  }
39
 
40
- #license-manager .onp-container {
41
- background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* FF3.6+ */
42
- background: -webkit-gradient(linear, left top, left bottom, color-stop(63%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(246, 246, 246, 1))); /* Chrome,Safari4+ */
43
- background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Chrome10+,Safari5.1+ */
44
- background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Opera 11.10+ */
45
- background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* IE10+ */
46
- background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* W3C */
47
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6', GradientType=0); /* IE6-9 */
 
48
  }
49
 
50
- .onp-container h2 {
51
- margin: 0px;
52
- padding: 0px;
 
53
  }
54
 
55
- .onp-container p {
56
- margin: 0 0 2px 0;
57
- padding: 0px;
58
- line-height: 170%;
 
59
  }
60
 
61
- .btn-uppercase {
62
- font-size: 12px;
63
- letter-spacing: 1px;
64
- text-transform: uppercase;
65
- text-decoration: none;
 
66
  }
67
 
68
- .btn-uppercase *[class^=icon] {
69
- position: relative;
70
- top: -1px;
71
- left: -1px;
 
72
  }
73
 
74
- .onp-page-wrap .license-message {
75
- margin-bottom: 20px;
76
- overflow: hidden;
 
77
  }
78
 
79
- .onp-page-wrap .license-message .alert {
80
- margin: 0px;
 
81
  }
82
 
83
- .onp-page-wrap .license-message strong {
84
- display: block;
85
- margin-bottom: 0px;
 
86
  }
87
 
88
- .onp-page-wrap .license-message p {
89
- margin: 1px 0 1px 0;
90
- padding: 0px;
 
91
  }
92
 
93
- .onp-page-wrap .license-message a {
94
- font-weight: bold;
 
95
  }
96
 
97
- .license-message .alert-warning-icon {
98
- padding-left: 60px;
99
- background-image: url("../img/warning.png");
100
- background-position: 15px 11px;
101
- background-repeat: no-repeat;
 
102
  }
103
 
104
- #onp-hide-license-manager {
105
- position: absolute;
106
- top: 2px;
107
- right: 15px;
108
- font-size: 12px;
109
- color: #777;
110
- font-weight: bold;
 
111
  }
112
 
113
- #onp-hide-license-manager:hover {
114
- text-decoration: none;
 
115
  }
116
 
117
  #onp-hide-license-manager,
118
  #onp-hide-license-manager:focus,
119
- #onp-hide-license-manager:hover {
120
- outline: none;
121
- border: 0px;
122
- box-shadow: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  }
124
 
125
- #onp-hide-license-manager .fa {
126
- margin-right: 5px;
 
 
 
 
 
127
  }
128
 
129
- #license-manager .license-details-wrap {
130
- border: 1px solid #e9e9e9;
131
- padding: 0px;
132
- border-radius: 5px;
133
-
134
- background: rgb(255, 255, 255); /* Old browsers */
135
- background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* FF3.6+ */
136
- background: -webkit-gradient(linear, left top, left bottom, color-stop(63%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(246, 246, 246, 1))); /* Chrome,Safari4+ */
137
- background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Chrome10+,Safari5.1+ */
138
- background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Opera 11.10+ */
139
- background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* IE10+ */
140
- background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* W3C */
141
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6', GradientType=0); /* IE6-9 */
142
-
143
- box-shadow: 0px 2px 1px #c9c9c9;
144
- }
145
-
146
- #license-manager .activate-trial-hint {
147
- background-color: #f8f8f8;
148
- padding: 10px 20px;
149
- position: relative;
150
- -moz-box-sizing: content-box;
151
- box-sizing: content-box;
152
- }
153
-
154
- #license-manager .activate-error-hint {
155
- background-color: #fb7976;
156
- color: #f5f5f5;
157
- text-shadow: none;
158
- padding: 2px 9px;
159
- width: 100%;
160
- position: relative;
161
- margin-left: -9px;
162
- -moz-box-sizing: content-box;
163
- box-sizing: content-box;
164
  }
165
 
166
- #license-manager .license-details {
167
- padding: 20px;
168
- padding-bottom: 0px;
169
- -webkit-border-top-left-radius: 5px;
170
- -webkit-border-top-right-radius: 5px;
171
- -moz-border-radius-topleft: 5px;
172
- -moz-border-radius-topright: 5px;
173
- border-top-left-radius: 5px;
174
- border-top-right-radius: 5px;
 
175
 
176
- position: relative;
177
- z-index: 10;
178
  }
179
 
180
- #license-manager .license-key-identity {
181
- font-style: italic;
182
- position: relative;
183
- top: -6px;
 
184
  }
185
 
186
- #license-manager .license-key-identity code {
187
- display: inline-block;
188
- padding: 2px 5px;
189
- font-size: 16px;
 
190
  }
191
 
192
- #license-manager .license-key-description {
193
- font-size: 12px;
 
194
  }
195
 
196
- #license-manager .license-delete-button {
197
- float: right;
198
- text-decoration: none;
199
- position: relative;
200
- top: -7px;
201
- left: 10px;
 
202
  }
203
 
204
- #license-manager .license-synchronization-button {
205
- float: right;
206
- text-decoration: none;
207
- position: relative;
208
- top: -7px;
209
- left: 4px;
 
210
  }
211
 
212
- #license-manager .license-details-block {
213
- padding: 28px 35px 15px 35px;
214
- margin-left: -35px;
215
- width: 100%;
216
- position: relative;
217
- margin-top: 20px;
 
218
 
219
- background: #fff;
220
- border: 0px;
221
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
222
- color: #333;
223
 
224
- border-radius: 5px;
225
 
226
- -webkit-box-sizing: content-box;
227
- -moz-box-sizing: content-box;
228
- box-sizing: content-box;
229
  }
230
 
231
- #license-manager .license-details-block p + p {
232
- margin-top: 10px;
 
233
  }
234
 
235
- #license-manager .license-details-block a {
236
- font-weight: bold;
 
237
  }
238
 
239
- #license-manager .license-details-block.trial-details-block {
240
- background: #ffdede;
 
241
 
242
- border: 0;
243
- box-shadow: 0 0 7px #cf4944;
244
- color: #a04342;
245
- text-shadow: 1px 1px 2px #fff2f2;
246
  }
247
 
248
- #license-manager .license-details-block.trial-details-block a {
249
- color: #a04342;
 
250
  }
251
 
252
- #license-manager .license-details-block.paid-details-block {
253
- border: 0;
254
- box-shadow: 0 0 7px #b8823b;
255
- color: #8a6d3b;
256
- background: #fcf8e3;
 
257
  }
258
 
259
- #license-manager .license-details-block.paid-details-block a {
260
- color: #7a4c00;
 
261
  }
262
 
263
- #license-manager .license-details-block.gift-details-block {
264
- background: #DFF0D8;
265
- border: 1px solid #D6E9C6;
266
- box-shadow: 0px 0px 5px #D6E9C6;
267
- color: #468847;
 
268
  }
269
 
270
- #license-manager .license-details-block.gift-details-block a {
271
- color: #468847;
 
272
  }
273
 
274
- #license-manager .license-params {
275
- margin-top: 15px;
276
- position: relative;
277
- left: -2px;
 
278
  }
279
 
280
- #license-manager .license-value {
281
- display: block;
282
- font-size: 16px;
283
- font-weight: bold;
 
284
  }
285
 
286
- #license-manager .license-value small {
287
- font-weight: normal;
 
288
  }
289
 
290
- #license-manager .license-value-name {
291
- display: block;
292
- font-size: 12px;
 
293
  }
294
 
295
- #license-manager .license-param {
296
- white-space: nowrap;
297
- line-height: 130%;
298
- padding: 10px 0 10px 35px;
299
- vertical-align: top;
 
300
  }
301
 
302
- #license-manager .license-param-domain {
303
- padding-left: 65px;
304
- background: url('../img/free-license-chip.png') -3px 0px no-repeat;
 
305
  }
306
 
307
- #license-manager .trial-details-block .license-param-domain {
308
- background: url('../img/trial-license-chip.png') -3px 0px no-repeat;
 
309
  }
310
 
311
- #license-manager .paid-details-block .license-param-domain {
312
- background: url('../img/paid-license-chip.png') -3px 0px no-repeat;
 
313
  }
314
 
315
- #license-manager .license-details-block h3 {
316
- padding: 0;
317
- font-size: 22px;
318
- margin: 0 0 16px 0;
319
- color: #8a6d3b;
320
- font-weight: 500;
 
321
  }
322
 
323
- #license-manager .license-details-block a {
324
- color: #a04342;
 
325
  }
326
 
327
- #license-manager .license-input {
 
328
 
329
- padding: 20px;
330
- -webkit-border-bottom-right-radius: 5px;
331
- -webkit-border-bottom-left-radius: 5px;
332
- -moz-border-radius-bottomright: 5px;
333
- -moz-border-radius-bottomleft: 5px;
334
- border-bottom-right-radius: 5px;
335
- border-bottom-left-radius: 5px;
336
  }
337
 
338
- #license-manager .license-input .btn {
339
- text-decoration: none;
 
340
  }
341
 
342
- #license-manager .license-key-wrap {
343
- padding-right: 110px;
 
344
  }
345
 
346
- #license-key {
347
- width: 100%;
348
- position: relative;
349
- font-size: 18px;
350
- line-height: 20px;
351
- top: -1px;
352
- height: 36px;
353
- color: #000;
 
354
  }
355
 
356
- #license-submit {
357
- float: right;
358
- padding: 7px 14px 6px 14px;
 
359
  }
360
 
361
- #plugin-update-block {
362
- padding-top: 10px;
363
- font-size: 10px;
364
- color: #666;
365
- max-width: 700px;
366
- margin: auto;
 
367
  }
368
 
369
- #plugin-update-block a {
370
- color: #000;
 
371
  }
372
 
373
- .purchase-premium {
374
- float: right;
375
- position: relative;
376
- top: -11px;
377
- left: 8px;
378
- text-decoration: none;
379
- font-weight: bold;
380
- background: #fffaea;
381
- padding: 0px;
382
- border-radius: 4px;
383
- outline: none;
384
- margin-top: 4px;
385
- box-shadow: 0 0 8px #fddf67;
 
386
  }
387
 
388
- .purchase-premium .fa {
389
- position: relative;
390
- margin-right: 3px;
391
- margin-left: 3px;
 
392
  }
393
 
394
  /*
395
  * Manual Trial Activation
396
  */
397
- #trial-manual .onp-container {
398
- padding: 20px;
399
- overflow: hidden;
 
400
  }
401
 
402
- #trial-manual ul {
403
- margin: 0px;
404
- padding: 0px;
405
- margin-top: 10px;
 
406
  }
407
 
408
- #trial-manual ul li {
409
- margin-bottom: 10px;
 
410
  }
411
 
412
- #trial-manual .license-reponse-code {
413
- width: 100%;
414
- height: 150px;
415
- margin-top: 5px;
 
416
  }
417
 
418
  /*
419
  * Manual Key Activation
420
  */
421
- #activate-key-manual .onp-container {
422
- padding: 20px;
423
- overflow: hidden;
 
424
  }
425
 
426
- #activate-key-manual ul {
427
- margin: 0px;
428
- padding: 0px;
429
- margin-top: 10px;
 
430
  }
431
 
432
- #activate-key-manual ul li {
433
- margin-bottom: 10px;
 
434
  }
435
 
436
- #activate-key-manual .license-reponse-code {
437
- width: 100%;
438
- height: 150px;
439
- margin-top: 5px;
 
440
  }
441
 
442
  /**
443
  * FAQ
444
  */
445
 
446
- #faq-block {
447
- border-top: 1px solid #d7d7d7;
 
448
 
449
- margin-top: 20px;
450
- width: 100%;
451
 
452
- padding: 10px 20px;
453
- position: relative;
454
  }
455
 
456
- #faq-block .faq-header {
457
- border-bottom: 1px dotted #333;
458
- display: inline-block;
459
- cursor: pointer;
460
- font-weight: bold;
461
- line-height: 16px;
462
- font-size: 13px;
463
- color: #333;
 
464
  }
465
 
466
- #faq-block .faq-header:hover {
467
- border-bottom: 0px;
 
468
  }
469
 
470
- #faq-block .faq-header:focus, #faq-block .faq-header:active {
471
- outline: 0;
 
472
  }
473
 
474
- #faq-block li > div {
475
- display: none;
 
476
  }
477
 
478
- #faq-block p {
479
- margin: 6px 0 10px 0;
480
- font-size: 13px;
481
- line-height: 170%;
 
482
  }
483
 
484
- #open-faq {
485
- color: #000 !important;
486
- text-decoration: none;
487
- border-bottom: 1px dotted #000;
488
- margin-left: 4px;
 
489
  }
490
 
491
- #open-faq:hover {
492
- border-bottom: 0px;
 
493
  }
494
 
495
- .gray-link, .gray-link a {
496
- color: #666666 !important;
 
497
  }
498
 
499
  /**
500
  * A form to create a customer account
501
  */
502
 
503
- .onp-single-block .onp-header {
504
- text-align: center;
505
- padding: 10px;
 
506
  }
507
 
508
- .onp-single-block .onp-header h4 {
509
- font-size: 26px;
510
- line-height: 130%;
 
511
  }
512
 
513
- .onp-single-block .onp-container {
514
- padding: 50px 60px;
515
- border: 1px solid #bbb;
516
- position: relative;
 
517
  }
518
 
519
- .onp-single-block .onp-container .onp-container-header {
520
- margin-bottom: 20px;
 
521
  }
522
 
523
- .onp-single-block .onp-container .onp-container-header h4 {
524
- color: #000;
525
- margin: 0px;
526
- font-size: 20px;
 
527
  }
528
 
529
- .onp-single-block .onp-container .onp-container-header .onp-key-info {
530
- color: #666;
 
531
  }
532
 
533
- .onp-single-block .onp-container .onp-container-header .onp-key-info .fa {
534
- color: #777;
 
535
  }
536
 
537
- .onp-single-block .onp-container .onp-container-header .onp-icon {
538
- position: absolute;
539
- top: 30px;
540
- right: 30px;
 
541
  }
542
 
543
  .onp-single-block .onp-container p,
544
- .onp-single-block .onp-container li {
545
- color: #333;
546
- font-size: 14px;
 
547
  }
548
 
549
- .onp-single-block .onp-container p + p {
550
- margin-top: 15px;
 
551
  }
552
 
553
- .onp-single-block .onp-container .onp-form {
554
- text-align: left;
555
- padding: 10px 0 0 0;
 
556
  }
557
 
558
- .onp-single-block #email {
559
- font-size: 26px;
560
- line-height: 26px;
561
- height: 50px;
 
562
  }
563
 
564
- .onp-single-block .checkbox {
565
- padding-left: 25px;
566
- color: #999;
567
- font-style: italic;
 
568
  }
569
 
570
- .onp-single-block .checkbox input {
571
- margin-left: -25px;
 
572
  }
573
 
574
- .onp-single-block .onp-actions {
575
- padding-top: 20px;
 
576
  }
577
 
578
- .onp-single-block .onp-actions .btn-primary {
579
- margin-right: 15px;
 
580
  }
581
 
582
- .onp-single-block .onp-actions a.onp-cancel {
583
- text-decoration: none;
584
- color: #111;
 
585
  }
586
 
587
- .onp-single-block .onp-actions a.onp-cancel:hover {
588
- text-decoration: none;
589
- border-bottom: 1px solid #111;
590
- background-color: #f9f9f9;
 
591
  }
592
 
593
- .onp-single-block .onp-benefits {
594
- padding-left: 25px;
595
- margin-top: 15px;
596
- list-style: initial;
 
597
  }
598
 
599
- .onp-single-block .onp-login-details {
 
600
 
601
  }
602
 
603
- .onp-single-block .onp-text-seporator {
604
- border-top: 1px solid #eee;
605
- margin: 30px 0;
 
606
  }
607
 
608
- #create-account .onp-container {
609
- background: #fff url("../img/create-account-bg.png") no-repeat 370px 230px !important;
 
610
  }
611
 
612
- #account-created .onp-step {
613
- overflow: hidden;
 
614
  }
615
 
616
- #account-created .onp-steps {
617
- padding: 25px 0 20px 10px;
 
618
  }
619
 
620
- #account-created .onp-step + .onp-step {
621
- margin-top: 20px;
 
622
  }
623
 
624
- #account-created .onp-step .onp-num {
625
- font-size: 25px;
626
- line-height: 40px;
627
- background-color: #f5f5f5;
628
- width: 40px;
629
- height: 40px;
630
- display: inline-block;
631
- border-radius: 7px;
632
- text-align: center;
633
- -moz-box-sizing: border-box;
634
- box-sizing: border-box;
635
- margin-right: 10px;
636
- vertical-align: middle;
637
- font-weight: bolder;
638
- font-family: Arial, sans-serif;
 
639
  }
640
 
641
- #account-created .onp-step .onp-desc {
642
- width: 490px;
643
- display: inline-block;
644
- vertical-align: middle;
645
- line-height: 150%;
 
646
  }
647
 
648
- #finish .onp-container {
649
- background: #fff url("../img/finish.png") no-repeat 0 -90px !important;
650
- padding-left: 260px;
651
- min-height: 250px;
 
652
 
653
- border-bottom: 3px solid #ccc;
654
  }
655
 
656
- .wis-loader {
657
- float: right;
658
- width: 32px;
 
659
  }
1
 
2
+ .not-visible-in-manager
3
+ {
4
+ display: none;
5
  }
6
 
7
  /**
8
  * Global License Message
9
  */
10
+ .global-license-message
11
+ {
12
+ width: 600px;
13
+ margin: auto;
14
+ /*margin-top: 100px;*/
15
+ font-size: 14px;
16
+ line-height: 170%;
17
  }
18
 
19
+ .global-license-message h2, .global-license-message h3
20
+ {
21
+ padding: 0px;
22
+ margin: 5px 0;
23
  }
24
 
25
+ .onp-page-wrap
26
+ {
27
+ max-width: 70%;
28
+ margin: auto;
29
+ margin-top: 40px;
30
+ font-size: 14px;
31
+ line-height: 170%;
32
  }
33
 
34
+ .onp-container
35
+ {
36
+ border: 0px;
37
+ padding: 0px;
38
+ border-radius: 5px;
39
+ background: rgb(255, 255, 255) !important;
40
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
41
+ -moz-box-sizing: border-box;
42
+ box-sizing: border-box;
43
  }
44
 
45
+ #license-manager .onp-container
46
+ {
47
+ background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* FF3.6+ */
48
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(63%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(246, 246, 246, 1))); /* Chrome,Safari4+ */
49
+ background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Chrome10+,Safari5.1+ */
50
+ background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Opera 11.10+ */
51
+ background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* IE10+ */
52
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* W3C */
53
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6', GradientType=0); /* IE6-9 */
54
  }
55
 
56
+ .onp-container h2
57
+ {
58
+ margin: 0px;
59
+ padding: 0px;
60
  }
61
 
62
+ .onp-container p
63
+ {
64
+ margin: 0 0 2px 0;
65
+ padding: 0px;
66
+ line-height: 170%;
67
  }
68
 
69
+ .btn-uppercase
70
+ {
71
+ font-size: 12px;
72
+ letter-spacing: 1px;
73
+ text-transform: uppercase;
74
+ text-decoration: none;
75
  }
76
 
77
+ .btn-uppercase *[class^=icon]
78
+ {
79
+ position: relative;
80
+ top: -1px;
81
+ left: -1px;
82
  }
83
 
84
+ .onp-page-wrap .license-message
85
+ {
86
+ margin-bottom: 20px;
87
+ overflow: hidden;
88
  }
89
 
90
+ .onp-page-wrap .license-message .alert
91
+ {
92
+ margin: 0px;
93
  }
94
 
95
+ .onp-page-wrap .license-message strong
96
+ {
97
+ display: block;
98
+ margin-bottom: 0px;
99
  }
100
 
101
+ .onp-page-wrap .license-message p
102
+ {
103
+ margin: 1px 0 1px 0;
104
+ padding: 0px;
105
  }
106
 
107
+ .onp-page-wrap .license-message a
108
+ {
109
+ font-weight: bold;
110
  }
111
 
112
+ .license-message .alert-warning-icon
113
+ {
114
+ padding-left: 60px;
115
+ background-image: url("../img/warning.png");
116
+ background-position: 15px 11px;
117
+ background-repeat: no-repeat;
118
  }
119
 
120
+ #onp-hide-license-manager
121
+ {
122
+ position: absolute;
123
+ top: 2px;
124
+ right: 15px;
125
+ font-size: 12px;
126
+ color: #777;
127
+ font-weight: bold;
128
  }
129
 
130
+ #onp-hide-license-manager:hover
131
+ {
132
+ text-decoration: none;
133
  }
134
 
135
  #onp-hide-license-manager,
136
  #onp-hide-license-manager:focus,
137
+ #onp-hide-license-manager:hover
138
+ {
139
+ outline: none;
140
+ border: 0px;
141
+ box-shadow: none;
142
+ }
143
+
144
+ #onp-hide-license-manager .fa
145
+ {
146
+ margin-right: 5px;
147
+ }
148
+
149
+ #license-manager .license-details-wrap
150
+ {
151
+ border: 1px solid #e9e9e9;
152
+ padding: 0px;
153
+ border-radius: 5px;
154
+
155
+ background: rgb(255, 255, 255); /* Old browsers */
156
+ background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* FF3.6+ */
157
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(63%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(246, 246, 246, 1))); /* Chrome,Safari4+ */
158
+ background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Chrome10+,Safari5.1+ */
159
+ background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* Opera 11.10+ */
160
+ background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* IE10+ */
161
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%); /* W3C */
162
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6', GradientType=0); /* IE6-9 */
163
+
164
+ box-shadow: 0px 2px 1px #c9c9c9;
165
  }
166
 
167
+ #license-manager .activate-trial-hint
168
+ {
169
+ background-color: #f8f8f8;
170
+ padding: 10px 20px;
171
+ position: relative;
172
+ -moz-box-sizing: content-box;
173
+ box-sizing: content-box;
174
  }
175
 
176
+ #license-manager .activate-error-hint
177
+ {
178
+ background-color: #fb7976;
179
+ color: #f5f5f5;
180
+ text-shadow: none;
181
+ padding: 2px 9px;
182
+ width: 100%;
183
+ position: relative;
184
+ margin-left: -9px;
185
+ -moz-box-sizing: content-box;
186
+ box-sizing: content-box;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
 
189
+ #license-manager .license-details
190
+ {
191
+ padding: 20px;
192
+ padding-bottom: 0px;
193
+ -webkit-border-top-left-radius: 5px;
194
+ -webkit-border-top-right-radius: 5px;
195
+ -moz-border-radius-topleft: 5px;
196
+ -moz-border-radius-topright: 5px;
197
+ border-top-left-radius: 5px;
198
+ border-top-right-radius: 5px;
199
 
200
+ position: relative;
201
+ z-index: 10;
202
  }
203
 
204
+ #license-manager .license-key-identity
205
+ {
206
+ font-style: italic;
207
+ position: relative;
208
+ top: -6px;
209
  }
210
 
211
+ #license-manager .license-key-identity code
212
+ {
213
+ display: inline-block;
214
+ padding: 2px 5px;
215
+ font-size: 16px;
216
  }
217
 
218
+ #license-manager .license-key-description
219
+ {
220
+ font-size: 12px;
221
  }
222
 
223
+ #license-manager .license-delete-button
224
+ {
225
+ float: right;
226
+ text-decoration: none;
227
+ position: relative;
228
+ top: -7px;
229
+ left: 10px;
230
  }
231
 
232
+ #license-manager .license-synchronization-button
233
+ {
234
+ float: right;
235
+ text-decoration: none;
236
+ position: relative;
237
+ top: -7px;
238
+ left: 4px;
239
  }
240
 
241
+ #license-manager .license-details-block
242
+ {
243
+ padding: 28px 35px 15px 35px;
244
+ margin-left: -35px;
245
+ width: 100%;
246
+ position: relative;
247
+ margin-top: 20px;
248
 
249
+ background: #fff;
250
+ border: 0px;
251
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
252
+ color: #333;
253
 
254
+ border-radius: 5px;
255
 
256
+ -webkit-box-sizing: content-box;
257
+ -moz-box-sizing: content-box;
258
+ box-sizing: content-box;
259
  }
260
 
261
+ #license-manager .license-details-block p + p
262
+ {
263
+ margin-top: 10px;
264
  }
265
 
266
+ #license-manager .license-details-block a
267
+ {
268
+ font-weight: bold;
269
  }
270
 
271
+ #license-manager .license-details-block.trial-details-block
272
+ {
273
+ background: #ffdede;
274
 
275
+ border: 0;
276
+ box-shadow: 0 0 7px #cf4944;
277
+ color: #a04342;
278
+ text-shadow: 1px 1px 2px #fff2f2;
279
  }
280
 
281
+ #license-manager .license-details-block.trial-details-block a
282
+ {
283
+ color: #a04342;
284
  }
285
 
286
+ #license-manager .license-details-block.paid-details-block
287
+ {
288
+ border: 0;
289
+ box-shadow: 0 0 7px #b8823b;
290
+ color: #8a6d3b;
291
+ background: #fcf8e3;
292
  }
293
 
294
+ #license-manager .license-details-block.paid-details-block a
295
+ {
296
+ color: #7a4c00;
297
  }
298
 
299
+ #license-manager .license-details-block.gift-details-block
300
+ {
301
+ background: #DFF0D8;
302
+ border: 1px solid #D6E9C6;
303
+ box-shadow: 0px 0px 5px #D6E9C6;
304
+ color: #468847;
305
  }
306
 
307
+ #license-manager .license-details-block.gift-details-block a
308
+ {
309
+ color: #468847;
310
  }
311
 
312
+ #license-manager .license-params
313
+ {
314
+ margin-top: 15px;
315
+ position: relative;
316
+ left: -2px;
317
  }
318
 
319
+ #license-manager .license-value
320
+ {
321
+ display: block;
322
+ font-size: 16px;
323
+ font-weight: bold;
324
  }
325
 
326
+ #license-manager .license-value small
327
+ {
328
+ font-weight: normal;
329
  }
330
 
331
+ #license-manager .license-value-name
332
+ {
333
+ display: block;
334
+ font-size: 12px;
335
  }
336
 
337
+ #license-manager .license-param
338
+ {
339
+ white-space: nowrap;
340
+ line-height: 130%;
341
+ padding: 10px 0 10px 35px;
342
+ vertical-align: top;
343
  }
344
 
345
+ #license-manager .license-param-domain
346
+ {
347
+ padding-left: 65px;
348
+ background: url('../img/free-license-chip.png') -3px 0px no-repeat;
349
  }
350
 
351
+ #license-manager .trial-details-block .license-param-domain
352
+ {
353
+ background: url('../img/trial-license-chip.png') -3px 0px no-repeat;
354
  }
355
 
356
+ #license-manager .paid-details-block .license-param-domain
357
+ {
358
+ background: url('../img/paid-license-chip.png') -3px 0px no-repeat;
359
  }
360
 
361
+ #license-manager .license-details-block h3
362
+ {
363
+ padding: 0;
364
+ font-size: 22px;
365
+ margin: 0 0 16px 0;
366
+ color: #8a6d3b;
367
+ font-weight: 500;
368
  }
369
 
370
+ #license-manager .license-details-block a
371
+ {
372
+ color: #a04342;
373
  }
374
 
375
+ #license-manager .license-input
376
+ {
377
 
378
+ padding: 20px;
379
+ -webkit-border-bottom-right-radius: 5px;
380
+ -webkit-border-bottom-left-radius: 5px;
381
+ -moz-border-radius-bottomright: 5px;
382
+ -moz-border-radius-bottomleft: 5px;
383
+ border-bottom-right-radius: 5px;
384
+ border-bottom-left-radius: 5px;
385
  }
386
 
387
+ #license-manager .license-input .btn
388
+ {
389
+ text-decoration: none;
390
  }
391
 
392
+ #license-manager .license-key-wrap
393
+ {
394
+ padding-right: 110px;
395
  }
396
 
397
+ #license-key
398
+ {
399
+ width: 100%;
400
+ position: relative;
401
+ font-size: 18px;
402
+ line-height: 20px;
403
+ top: -1px;
404
+ height: 36px;
405
+ color: #000;
406
  }
407
 
408
+ #license-submit
409
+ {
410
+ float: right;
411
+ padding: 7px 14px 6px 14px;
412
  }
413
 
414
+ #plugin-update-block
415
+ {
416
+ padding-top: 10px;
417
+ font-size: 10px;
418
+ color: #666;
419
+ max-width: 700px;
420
+ margin: auto;
421
  }
422
 
423
+ #plugin-update-block a
424
+ {
425
+ color: #000;
426
  }
427
 
428
+ .purchase-premium
429
+ {
430
+ float: right;
431
+ position: relative;
432
+ top: -11px;
433
+ left: 8px;
434
+ text-decoration: none;
435
+ font-weight: bold;
436
+ background: #fffaea;
437
+ padding: 0px;
438
+ border-radius: 4px;
439
+ outline: none;
440
+ margin-top: 4px;
441
+ box-shadow: 0 0 8px #fddf67;
442
  }
443
 
444
+ .purchase-premium .fa
445
+ {
446
+ position: relative;
447
+ margin-right: 3px;
448
+ margin-left: 3px;
449
  }
450
 
451
  /*
452
  * Manual Trial Activation
453
  */
454
+ #trial-manual .onp-container
455
+ {
456
+ padding: 20px;
457
+ overflow: hidden;
458
  }
459
 
460
+ #trial-manual ul
461
+ {
462
+ margin: 0px;
463
+ padding: 0px;
464
+ margin-top: 10px;
465
  }
466
 
467
+ #trial-manual ul li
468
+ {
469
+ margin-bottom: 10px;
470
  }
471
 
472
+ #trial-manual .license-reponse-code
473
+ {
474
+ width: 100%;
475
+ height: 150px;
476
+ margin-top: 5px;
477
  }
478
 
479
  /*
480
  * Manual Key Activation
481
  */
482
+ #activate-key-manual .onp-container
483
+ {
484
+ padding: 20px;
485
+ overflow: hidden;
486
  }
487
 
488
+ #activate-key-manual ul
489
+ {
490
+ margin: 0px;
491
+ padding: 0px;
492
+ margin-top: 10px;
493
  }
494
 
495
+ #activate-key-manual ul li
496
+ {
497
+ margin-bottom: 10px;
498
  }
499
 
500
+ #activate-key-manual .license-reponse-code
501
+ {
502
+ width: 100%;
503
+ height: 150px;
504
+ margin-top: 5px;
505
  }
506
 
507
  /**
508
  * FAQ
509
  */
510
 
511
+ #faq-block
512
+ {
513
+ border-top: 1px solid #d7d7d7;
514
 
515
+ margin-top: 20px;
516
+ width: 100%;
517
 
518
+ padding: 10px 20px;
519
+ position: relative;
520
  }
521
 
522
+ #faq-block .faq-header
523
+ {
524
+ border-bottom: 1px dotted #333;
525
+ display: inline-block;
526
+ cursor: pointer;
527
+ font-weight: bold;
528
+ line-height: 16px;
529
+ font-size: 13px;
530
+ color: #333;
531
  }
532
 
533
+ #faq-block .faq-header:hover
534
+ {
535
+ border-bottom: 0px;
536
  }
537
 
538
+ #faq-block .faq-header:focus, #faq-block .faq-header:active
539
+ {
540
+ outline: 0;
541
  }
542
 
543
+ #faq-block li > div
544
+ {
545
+ display: none;
546
  }
547
 
548
+ #faq-block p
549
+ {
550
+ margin: 6px 0 10px 0;
551
+ font-size: 13px;
552
+ line-height: 170%;
553
  }
554
 
555
+ #open-faq
556
+ {
557
+ color: #000 !important;
558
+ text-decoration: none;
559
+ border-bottom: 1px dotted #000;
560
+ margin-left: 4px;
561
  }
562
 
563
+ #open-faq:hover
564
+ {
565
+ border-bottom: 0px;
566
  }
567
 
568
+ .gray-link, .gray-link a
569
+ {
570
+ color: #666666 !important;
571
  }
572
 
573
  /**
574
  * A form to create a customer account
575
  */
576
 
577
+ .onp-single-block .onp-header
578
+ {
579
+ text-align: center;
580
+ padding: 10px;
581
  }
582
 
583
+ .onp-single-block .onp-header h4
584
+ {
585
+ font-size: 26px;
586
+ line-height: 130%;
587
  }
588
 
589
+ .onp-single-block .onp-container
590
+ {
591
+ padding: 50px 60px;
592
+ border: 1px solid #bbb;
593
+ position: relative;
594
  }
595
 
596
+ .onp-single-block .onp-container .onp-container-header
597
+ {
598
+ margin-bottom: 20px;
599
  }
600
 
601
+ .onp-single-block .onp-container .onp-container-header h4
602
+ {
603
+ color: #000;
604
+ margin: 0px;
605
+ font-size: 20px;
606
  }
607
 
608
+ .onp-single-block .onp-container .onp-container-header .onp-key-info
609
+ {
610
+ color: #666;
611
  }
612
 
613
+ .onp-single-block .onp-container .onp-container-header .onp-key-info .fa
614
+ {
615
+ color: #777;
616
  }
617
 
618
+ .onp-single-block .onp-container .onp-container-header .onp-icon
619
+ {
620
+ position: absolute;
621
+ top: 30px;
622
+ right: 30px;
623
  }
624
 
625
  .onp-single-block .onp-container p,
626
+ .onp-single-block .onp-container li
627
+ {
628
+ color: #333;
629
+ font-size: 14px;
630
  }
631
 
632
+ .onp-single-block .onp-container p + p
633
+ {
634
+ margin-top: 15px;
635
  }
636
 
637
+ .onp-single-block .onp-container .onp-form
638
+ {
639
+ text-align: left;
640
+ padding: 10px 0 0 0;
641
  }
642
 
643
+ .onp-single-block #email
644
+ {
645
+ font-size: 26px;
646
+ line-height: 26px;
647
+ height: 50px;
648
  }
649
 
650
+ .onp-single-block .checkbox
651
+ {
652
+ padding-left: 25px;
653
+ color: #999;
654
+ font-style: italic;
655
  }
656
 
657
+ .onp-single-block .checkbox input
658
+ {
659
+ margin-left: -25px;
660
  }
661
 
662
+ .onp-single-block .onp-actions
663
+ {
664
+ padding-top: 20px;
665
  }
666
 
667
+ .onp-single-block .onp-actions .btn-primary
668
+ {
669
+ margin-right: 15px;
670
  }
671
 
672
+ .onp-single-block .onp-actions a.onp-cancel
673
+ {
674
+ text-decoration: none;
675
+ color: #111;
676
  }
677
 
678
+ .onp-single-block .onp-actions a.onp-cancel:hover
679
+ {
680
+ text-decoration: none;
681
+ border-bottom: 1px solid #111;
682
+ background-color: #f9f9f9;
683
  }
684
 
685
+ .onp-single-block .onp-benefits
686
+ {
687
+ padding-left: 25px;
688
+ margin-top: 15px;
689
+ list-style: initial;
690
  }
691
 
692
+ .onp-single-block .onp-login-details
693
+ {
694
 
695
  }
696
 
697
+ .onp-single-block .onp-text-seporator
698
+ {
699
+ border-top: 1px solid #eee;
700
+ margin: 30px 0;
701
  }
702
 
703
+ #create-account .onp-container
704
+ {
705
+ background: #fff url("../img/create-account-bg.png") no-repeat 370px 230px !important;
706
  }
707
 
708
+ #account-created .onp-step
709
+ {
710
+ overflow: hidden;
711
  }
712
 
713
+ #account-created .onp-steps
714
+ {
715
+ padding: 25px 0 20px 10px;
716
  }
717
 
718
+ #account-created .onp-step + .onp-step
719
+ {
720
+ margin-top: 20px;
721
  }
722
 
723
+ #account-created .onp-step .onp-num
724
+ {
725
+ font-size: 25px;
726
+ line-height: 40px;
727
+ background-color: #f5f5f5;
728
+ width: 40px;
729
+ height: 40px;
730
+ display: inline-block;
731
+ border-radius: 7px;
732
+ text-align: center;
733
+ -moz-box-sizing: border-box;
734
+ box-sizing: border-box;
735
+ margin-right: 10px;
736
+ vertical-align: middle;
737
+ font-weight: bolder;
738
+ font-family: Arial, sans-serif;
739
  }
740
 
741
+ #account-created .onp-step .onp-desc
742
+ {
743
+ width: 490px;
744
+ display: inline-block;
745
+ vertical-align: middle;
746
+ line-height: 150%;
747
  }
748
 
749
+ #finish .onp-container
750
+ {
751
+ background: #fff url("../img/finish.png") no-repeat 0 -90px !important;
752
+ padding-left: 260px;
753
+ min-height: 250px;
754
 
755
+ border-bottom: 3px solid #ccc;
756
  }
757
 
758
+ .wis-loader
759
+ {
760
+ float: right;
761
+ width: 32px;
762
  }
admin/assets/img/bg2.png ADDED
Binary file
admin/assets/img/bg22.png ADDED
Binary file
admin/assets/img/demo/1.png ADDED
Binary file
admin/assets/img/demo/1.svg ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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="155.000000pt" height="250.000000pt" viewBox="0 0 1500.000000 2235.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+ <g transform="translate(0.000000,2235.000000) scale(0.100000,-0.100000)"
9
+ fill="#6927bf" stroke="none">
10
+ <path d="M2625 21085 c-322 -59 -563 -315 -606 -644 -44 -331 162 -665 481
11
+ -782 449 -163 924 127 991 606 15 109 1 231 -40 345 -123 336 -477 540 -826
12
+ 475z"/>
13
+ <path d="M4040 20695 l0 -225 1630 0 1630 0 0 225 0 225 -1630 0 -1630 0 0
14
+ -225z"/>
15
+ <path d="M4040 20125 l0 -225 915 0 915 0 0 225 0 225 -915 0 -915 0 0 -225z"/>
16
+ <path d="M1970 13730 l0 -5450 5465 0 5465 0 0 5450 0 5450 -5465 0 -5465 0 0
17
+ -5450z"/>
18
+ <path d="M1950 7835 l0 -205 905 0 905 0 0 205 0 205 -905 0 -905 0 0 -205z"/>
19
+ <path d="M11100 7835 l0 -205 910 0 910 0 0 205 0 205 -910 0 -910 0 0 -205z"/>
20
+ <path d="M1950 6995 l0 -205 5475 0 5475 0 0 205 0 205 -5475 0 -5475 0 0
21
+ -205z"/>
22
+ <path d="M1950 6255 l0 -205 2860 0 2860 0 0 205 0 205 -2860 0 -2860 0 0
23
+ -205z"/>
24
+ </g>
25
+ </svg>
admin/assets/img/demo/2.png ADDED
Binary file
admin/assets/img/demo/2.svg ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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="155.000000pt" height="250.000000pt" viewBox="0 0 1500.000000 2235.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+ <g transform="translate(0.000000,2235.000000) scale(0.100000,-0.100000)"
9
+ fill="#6927bf" stroke="none">
10
+ <path d="M2625 21085 c-322 -59 -563 -315 -606 -644 -44 -331 162 -665 481
11
+ -782 449 -163 924 127 991 606 15 109 1 231 -40 345 -123 336 -477 540 -826
12
+ 475z"/>
13
+ <path d="M4040 20695 l0 -225 1630 0 1630 0 0 225 0 225 -1630 0 -1630 0 0
14
+ -225z"/>
15
+ <path d="M4040 20125 l0 -225 915 0 915 0 0 225 0 225 -915 0 -915 0 0 -225z"/>
16
+ <path d="M2000 16465 l0 -2695 2690 0 2690 0 0 2695 0 2695 -2690 0 -2690 0 0
17
+ -2695z"/>
18
+ <path d="M7590 17815 l0 -1345 1260 0 1260 0 0 1345 0 1345 -1260 0 -1260 0 0
19
+ -1345z"/>
20
+ <path d="M10290 17815 l0 -1345 1350 0 1350 0 0 1345 0 1345 -1350 0 -1350 0
21
+ 0 -1345z"/>
22
+ <path d="M7590 13665 l0 -2655 2700 0 2700 0 0 2655 0 2655 -2700 0 -2700 0 0
23
+ -2655z"/>
24
+ <path d="M2000 12300 l0 -1290 1340 0 1340 0 0 1290 0 1290 -1340 0 -1340 0 0
25
+ -1290z"/>
26
+ <path d="M4860 12300 l0 -1290 1260 0 1260 0 0 1290 0 1290 -1260 0 -1260 0 0
27
+ -1290z"/>
28
+ <path d="M2000 8235 l0 -2595 2690 0 2690 0 0 2595 0 2595 -2690 0 -2690 0 0
29
+ -2595z"/>
30
+ <path d="M7590 9585 l0 -1245 1260 0 1260 0 0 1245 0 1245 -1260 0 -1260 0 0
31
+ -1245z"/>
32
+ <path d="M10290 9585 l0 -1245 1350 0 1350 0 0 1245 0 1245 -1350 0 -1350 0 0
33
+ -1245z"/>
34
+ <path d="M7590 5475 l0 -2655 2700 0 2700 0 0 2655 0 2655 -2700 0 -2700 0 0
35
+ -2655z"/>
36
+ <path d="M2000 4170 l0 -1350 1325 0 1325 0 0 1350 0 1350 -1325 0 -1325 0 0
37
+ -1350z"/>
38
+ <path d="M4830 4170 l0 -1350 1275 0 1275 0 0 1350 0 1350 -1275 0 -1275 0 0
39
+ -1350z"/>
40
+ </g>
41
+ </svg>
admin/assets/img/demo/3.png ADDED
Binary file
admin/assets/img/demo/3.svg ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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="155.000000pt" height="250.000000pt" viewBox="0 0 1500.000000 2235.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+ <g transform="translate(0.000000,2235.000000) scale(0.100000,-0.100000)"
9
+ fill="#6927bf" stroke="none">
10
+ <path d="M2725 21165 c-322 -59 -563 -315 -606 -644 -44 -331 162 -665 481
11
+ -782 449 -163 924 127 991 606 15 109 1 231 -40 345 -123 336 -477 540 -826
12
+ 475z"/>
13
+ <path d="M4140 20775 l0 -225 1630 0 1630 0 0 225 0 225 -1630 0 -1630 0 0
14
+ -225z"/>
15
+ <path d="M4140 20205 l0 -225 915 0 915 0 0 225 0 225 -915 0 -915 0 0 -225z"/>
16
+ <path d="M2110 16465 l0 -2695 2695 0 2695 0 0 2695 0 2695 -2695 0 -2695 0 0
17
+ -2695z"/>
18
+ <path d="M7920 16465 l0 -2695 2655 0 2655 0 0 2695 0 2695 -2655 0 -2655 0 0
19
+ -2695z"/>
20
+ <path d="M2110 10705 l0 -2625 2695 0 2695 0 0 2625 0 2625 -2695 0 -2695 0 0
21
+ -2625z"/>
22
+ <path d="M7920 10705 l0 -2625 2655 0 2655 0 0 2625 0 2625 -2655 0 -2655 0 0
23
+ -2625z"/>
24
+ <path d="M2110 4975 l0 -2695 2695 0 2695 0 0 2695 0 2695 -2695 0 -2695 0 0
25
+ -2695z"/>
26
+ <path d="M7920 4975 l0 -2695 2655 0 2655 0 0 2695 0 2695 -2655 0 -2655 0 0
27
+ -2695z"/>
28
+ </g>
29
+ </svg>
admin/assets/img/demo/4.png ADDED
Binary file
admin/assets/img/demo/4.svg ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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="155.000000pt" height="250.000000pt" viewBox="0 0 1500.000000 2235.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+ <g transform="translate(0.000000,2235.000000) scale(0.100000,-0.100000)"
9
+ fill="#6927bf" stroke="none">
10
+ <path d="M2485 21165 c-322 -59 -563 -315 -606 -644 -44 -331 162 -665 481
11
+ -782 449 -163 924 127 991 606 15 109 1 231 -40 345 -123 336 -477 540 -826
12
+ 475z"/>
13
+ <path d="M3900 20775 l0 -225 1630 0 1630 0 0 225 0 225 -1630 0 -1630 0 0
14
+ -225z"/>
15
+ <path d="M3900 20205 l0 -225 915 0 915 0 0 225 0 225 -915 0 -915 0 0 -225z"/>
16
+ <path d="M1920 17260 l0 -1900 1860 0 1860 0 0 1900 0 1900 -1860 0 -1860 0 0
17
+ -1900z"/>
18
+ <path d="M5880 17260 l0 -1900 1830 0 1830 0 0 1900 0 1900 -1830 0 -1830 0 0
19
+ -1900z"/>
20
+ <path d="M9750 17260 l0 -1900 1875 0 1875 0 0 1900 0 1900 -1875 0 -1875 0 0
21
+ -1900z"/>
22
+ <path d="M2010 15125 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
23
+ <path d="M5940 15125 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
24
+ <path d="M9880 15085 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
25
+ <path d="M2010 14905 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
26
+ <path d="M5940 14905 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
27
+ <path d="M9880 14865 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
28
+ <path d="M2010 14685 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
29
+ <path d="M9880 14645 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
30
+ <path d="M5880 12810 l0 -1860 1830 0 1830 0 0 1860 0 1860 -1830 0 -1830 0 0
31
+ -1860z"/>
32
+ <path d="M9880 14425 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
33
+ <path d="M1920 12585 l0 -1875 1860 0 1860 0 0 1875 0 1875 -1860 0 -1860 0 0
34
+ -1875z"/>
35
+ <path d="M9750 12180 l0 -1890 1875 0 1875 0 0 1890 0 1890 -1875 0 -1875 0 0
36
+ -1890z"/>
37
+ <path d="M5920 10725 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
38
+ <path d="M5920 10505 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
39
+ <path d="M5920 10285 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
40
+ <path d="M5920 10065 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
41
+ <path d="M9860 10055 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
42
+ <path d="M9860 9835 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
43
+ <path d="M1920 7935 l0 -1875 1860 0 1860 0 0 1875 0 1875 -1860 0 -1860 0 0
44
+ -1875z"/>
45
+ <path d="M9860 9615 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
46
+ <path d="M9860 9395 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
47
+ <path d="M5880 7560 l0 -1860 1830 0 1830 0 0 1860 0 1860 -1830 0 -1830 0 0
48
+ -1860z"/>
49
+ <path d="M9750 7050 l0 -1860 1875 0 1875 0 0 1860 0 1860 -1875 0 -1875 0 0
50
+ -1860z"/>
51
+ <path d="M2000 5795 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
52
+ <path d="M2000 5575 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
53
+ <path d="M5940 5375 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
54
+ <path d="M2000 5355 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
55
+ <path d="M5940 5155 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
56
+ <path d="M2000 5135 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
57
+ <path d="M5940 4935 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
58
+ <path d="M9860 4885 l0 -45 1780 0 1780 0 0 45 0 45 -1780 0 -1780 0 0 -45z"/>
59
+ <path d="M9860 4665 l0 -45 1000 0 1000 0 0 45 0 45 -1000 0 -1000 0 0 -45z"/>
60
+ </g>
61
+ </svg>
admin/assets/img/demo/5.png ADDED
Binary file
admin/assets/img/demo/5.svg ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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="155.000000pt" height="250.000000pt" viewBox="0 0 1500.000000 2235.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+ <g transform="translate(0.000000,2235.000000) scale(0.100000,-0.100000)"
9
+ fill="#6927bf" stroke="none">
10
+ <path d="M1885 21165 c-322 -59 -563 -315 -606 -644 -44 -331 162 -665 481
11
+ -782 449 -163 924 127 991 606 15 109 1 231 -40 345 -123 336 -477 540 -826
12
+ 475z"/>
13
+ <path d="M3300 20775 l0 -225 1630 0 1630 0 0 225 0 225 -1630 0 -1630 0 0
14
+ -225z"/>
15
+ <path d="M3300 20205 l0 -225 915 0 915 0 0 225 0 225 -915 0 -915 0 0 -225z"/>
16
+ <path d="M1270 17610 l0 -1550 1545 0 1545 0 0 1550 0 1550 -1545 0 -1545 0 0
17
+ -1550z"/>
18
+ <path d="M4420 17610 l0 -1550 1570 0 1570 0 0 1550 0 1550 -1570 0 -1570 0 0
19
+ -1550z"/>
20
+ <path d="M7620 17610 l0 -1550 1560 0 1560 0 0 1550 0 1550 -1560 0 -1560 0 0
21
+ -1550z"/>
22
+ <path d="M10800 17610 l0 -1550 1545 0 1545 0 0 1550 0 1550 -1545 0 -1545 0
23
+ 0 -1550z"/>
24
+ <path d="M1270 14425 l0 -1585 1545 0 1545 0 0 1585 0 1585 -1545 0 -1545 0 0
25
+ -1585z"/>
26
+ <path d="M4420 14425 l0 -1585 1570 0 1570 0 0 1585 0 1585 -1570 0 -1570 0 0
27
+ -1585z"/>
28
+ <path d="M7620 14425 l0 -1585 1560 0 1560 0 0 1585 0 1585 -1560 0 -1560 0 0
29
+ -1585z"/>
30
+ <path d="M10800 14425 l0 -1585 1545 0 1545 0 0 1585 0 1585 -1545 0 -1545 0
31
+ 0 -1585z"/>
32
+ <path d="M1270 11225 l0 -1565 1545 0 1545 0 0 1565 0 1565 -1545 0 -1545 0 0
33
+ -1565z"/>
34
+ <path d="M4420 11225 l0 -1565 1570 0 1570 0 0 1565 0 1565 -1570 0 -1570 0 0
35
+ -1565z"/>
36
+ <path d="M7620 11225 l0 -1565 1560 0 1560 0 0 1565 0 1565 -1560 0 -1560 0 0
37
+ -1565z"/>
38
+ <path d="M10800 11225 l0 -1565 1545 0 1545 0 0 1565 0 1565 -1545 0 -1545 0
39
+ 0 -1565z"/>
40
+ </g>
41
+ </svg>
admin/assets/img/demo/6.png ADDED
Binary file
admin/assets/img/demo/6.svg ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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="155.000000pt" height="250.000000pt" viewBox="0 0 1500.000000 2235.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+ <g transform="translate(0.000000,2235.000000) scale(0.100000,-0.100000)"
9
+ fill="#6927bf" stroke="none">
10
+ <path d="M2445 21085 c-322 -59 -563 -315 -606 -644 -44 -331 162 -665 481
11
+ -782 449 -163 924 127 991 606 15 109 1 231 -40 345 -123 336 -477 540 -826
12
+ 475z"/>
13
+ <path d="M3860 20695 l0 -225 1630 0 1630 0 0 225 0 225 -1630 0 -1630 0 0
14
+ -225z"/>
15
+ <path d="M3860 20125 l0 -225 915 0 915 0 0 225 0 225 -915 0 -915 0 0 -225z"/>
16
+ <path d="M1830 17755 l0 -1405 1425 0 1425 0 0 1405 0 1405 -1425 0 -1425 0 0
17
+ -1405z"/>
18
+ <path d="M4830 17755 l0 -1405 1375 0 1375 0 0 1405 0 1405 -1375 0 -1375 0 0
19
+ -1405z"/>
20
+ <path d="M7720 16315 l0 -2845 2885 0 2885 0 0 2845 0 2845 -2885 0 -2885 0 0
21
+ -2845z"/>
22
+ <path d="M1830 14820 l0 -1350 1425 0 1425 0 0 1350 0 1350 -1425 0 -1425 0 0
23
+ -1350z"/>
24
+ <path d="M4830 14820 l0 -1350 1375 0 1375 0 0 1350 0 1350 -1375 0 -1375 0 0
25
+ -1350z"/>
26
+ <path d="M1830 11925 l0 -1395 1425 0 1425 0 0 1395 0 1395 -1425 0 -1425 0 0
27
+ -1395z"/>
28
+ <path d="M4830 11925 l0 -1395 1375 0 1375 0 0 1395 0 1395 -1375 0 -1375 0 0
29
+ -1395z"/>
30
+ <path d="M7720 11925 l0 -1395 1375 0 1375 0 0 1395 0 1395 -1375 0 -1375 0 0
31
+ -1395z"/>
32
+ <path d="M10620 11925 l0 -1395 1435 0 1435 0 0 1395 0 1395 -1435 0 -1435 0
33
+ 0 -1395z"/>
34
+ <path d="M1830 7540 l0 -2840 2875 0 2875 0 0 2840 0 2840 -2875 0 -2875 0 0
35
+ -2840z"/>
36
+ <path d="M7720 9015 l0 -1365 1375 0 1375 0 0 1365 0 1365 -1375 0 -1375 0 0
37
+ -1365z"/>
38
+ <path d="M10620 9015 l0 -1365 1435 0 1435 0 0 1365 0 1365 -1435 0 -1435 0 0
39
+ -1365z"/>
40
+ <path d="M7720 6085 l0 -1385 1375 0 1375 0 0 1385 0 1385 -1375 0 -1375 0 0
41
+ -1385z"/>
42
+ <path d="M10620 6085 l0 -1385 1435 0 1435 0 0 1385 0 1385 -1435 0 -1435 0 0
43
+ -1385z"/>
44
+ </g>
45
+ </svg>
admin/assets/img/fb-icon-button.png ADDED
Binary file
admin/assets/img/fb-icon.png ADDED
Binary file
admin/assets/img/insta-icon.png ADDED
Binary file
admin/assets/img/spinner.svg ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
3
+ xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="128px" height="128px" viewBox="0 0 128 128"
4
+ xml:space="preserve"><g><circle cx="16" cy="64" r="16" fill="#000000" fill-opacity="1"/><circle cx="16" cy="64"
5
+ r="16"
6
+ fill="#555555"
7
+ fill-opacity="0.67"
8
+ transform="rotate(45,64,64)"/><circle
9
+ cx="16" cy="64" r="16" fill="#949494" fill-opacity="0.42" transform="rotate(90,64,64)"/><circle cx="16" cy="64"
10
+ r="16"
11
+ fill="#cccccc"
12
+ fill-opacity="0.2"
13
+ transform="rotate(135,64,64)"/><circle
14
+ cx="16" cy="64" r="16" fill="#e1e1e1" fill-opacity="0.12" transform="rotate(180,64,64)"/><circle cx="16" cy="64"
15
+ r="16"
16
+ fill="#e1e1e1"
17
+ fill-opacity="0.12"
18
+ transform="rotate(225,64,64)"/><circle
19
+ cx="16" cy="64" r="16" fill="#e1e1e1" fill-opacity="0.12" transform="rotate(270,64,64)"/><circle cx="16" cy="64"
20
+ r="16"
21
+ fill="#e1e1e1"
22
+ fill-opacity="0.12"
23
+ transform="rotate(315,64,64)"/><animateTransform
24
+ attributeName="transform" type="rotate"
25
+ values="0 64 64;315 64 64;270 64 64;225 64 64;180 64 64;135 64 64;90 64 64;45 64 64" calcMode="discrete"
26
+ dur="720ms" repeatCount="indefinite"></animateTransform></g></svg>
admin/assets/img/youtube-icon.png ADDED
Binary file
admin/assets/js/cbpFWTabs.js ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * cbpFWTabs.js v1.0.0
3
+ * http://www.codrops.com
4
+ *
5
+ * Licensed under the MIT license.
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ *
8
+ * Copyright 2014, Codrops
9
+ * http://www.codrops.com
10
+ */
11
+ ;(function (window) {
12
+
13
+ 'use strict';
14
+
15
+ function extend(a, b) {
16
+ for (var key in b) {
17
+ if (b.hasOwnProperty(key)) {
18
+ a[key] = b[key];
19
+ }
20
+ }
21
+ return a;
22
+ }
23
+
24
+ function CBPFWTabs(el, options) {
25
+ this.el = el;
26
+ this.options = extend({}, this.options);
27
+ extend(this.options, options);
28
+ this._init();
29
+ }
30
+
31
+ CBPFWTabs.prototype.options = {
32
+ start: 0
33
+ };
34
+
35
+ CBPFWTabs.prototype._init = function () {
36
+ // tabs elemes
37
+ this.tabs = [].slice.call(this.el.querySelectorAll('nav > ul > li'));
38
+ // content items
39
+ this.items = [].slice.call(this.el.querySelectorAll('.content > section'));
40
+ // current index
41
+ this.current = -1;
42
+ // show current content item
43
+ this._show();
44
+ // init events
45
+ this._initEvents();
46
+ };
47
+
48
+ CBPFWTabs.prototype._initEvents = function () {
49
+ var self = this;
50
+ this.tabs.forEach(function (tab, idx) {
51
+ tab.addEventListener('click', function (ev) {
52
+ ev.preventDefault();
53
+ self._show(idx);
54
+ });
55
+ });
56
+ };
57
+
58
+ CBPFWTabs.prototype._show = function (idx) {
59
+ if (this.current >= 0) {
60
+ this.tabs[this.current].className = '';
61
+ this.items[this.current].className = '';
62
+ }
63
+ // change current
64
+ this.current = idx != undefined ? idx : this.options.start >= 0 && this.options.start < this.items.length ? this.options.start : 0;
65
+ this.tabs[this.current].className = 'tab-current';
66
+ this.items[this.current].className = 'content-current';
67
+ };
68
+
69
+ // add to global namespace
70
+ window.CBPFWTabs = CBPFWTabs;
71
+
72
+ })(window);
admin/assets/js/jr-insta-admin.js CHANGED
@@ -1,191 +1,519 @@
1
- (function($) {
2
-
3
- $(document).ready(function($){
4
-
5
- // Hide Custom Url if image link is not set to custom url
6
- $('body').on('change', '.jr-container select[id$="images_link"]', function(e){
7
- var images_link = $(this);
8
- if ( images_link.val() != 'custom_url' ) {
9
- images_link.closest('.jr-container').find('input[id$="custom_url"]').val('').parent().animate({opacity: 'hide' , height: 'hide'}, 200);
10
- } else {
11
- images_link.closest('.jr-container').find('input[id$="custom_url"]').parent().animate({opacity: 'show' , height: 'show'}, 200);
12
- }
13
- });
14
-
15
- // Modify options based on template selections
16
- $('body').on('change', '.jr-container select[id$="template"]', function(e){
17
- var template = $(this);
18
- if ( template.val() == 'thumbs' || template.val() == 'thumbs-no-border' ) {
19
- template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'hide' , height: 'hide'}, 200);
20
- template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
21
- } else {
22
- template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'show' , height: 'show'}, 200);
23
- template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
24
- }
25
- if( template.val() != 'masonry') {
26
- template.closest('.jr-container').find('.masonry_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
27
- template.closest('.jr-container').find('.masonry_notice').animate({opacity: 'hide' , height: 'hide'}, 200);
28
- } else {
29
- template.closest('.jr-container').find('.masonry_settings').animate({opacity: 'show' , height: 'show'}, 200);
30
- template.closest('.jr-container').find('.masonry_notice').animate({opacity: 'show' , height: 'show'}, 200);
31
- }
32
- if( template.val() != 'slick_slider') {
33
- template.closest('.jr-container').find('.slick_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
34
- } else {
35
- template.closest('.jr-container').find('.slick_settings').animate({opacity: 'show' , height: 'show'}, 200);
36
- }
37
- if( template.val() != 'highlight') {
38
- template.closest('.jr-container').find('.highlight_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
39
- } else {
40
- template.closest('.jr-container').find('.highlight_settings').animate({opacity: 'show' , height: 'show'}, 200);
41
- }
42
- if( template.val() != 'slider' && template.val() != 'slider-overlay') {
43
- template.closest('.jr-container').find('.slider_normal_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
44
- } else {
45
- template.closest('.jr-container').find('.slider_normal_settings').animate({opacity: 'show' , height: 'show'}, 200);
46
- }
47
- if( template.val() == 'highlight' || template.val() == 'slick_slider' || template.val() == 'thumbs' || template.val() == 'thumbs-no-border'){
48
- template.closest('.jr-container').find('.words_in_caption').animate({opacity: 'hide' , height: 'hide'}, 200);
49
- } else {
50
- template.closest('.jr-container').find('.words_in_caption').animate({opacity: 'show' , height: 'show'}, 200);
51
- }
52
- });
53
-
54
- // Modfiy options when search for is changed
55
- $('body').on('change', '.jr-container input:radio[id$="search_for"]', function(e){
56
- var search_for = $(this);
57
- if ( search_for.val() === 'hashtag' ) {
58
- search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
59
- search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
60
- search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
61
- search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
62
- search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
63
- search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
64
- search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
65
- $('#img_to_show').animate({opacity: 'hide' , height: 'hide'}, 200);
66
-
67
-
68
- } else if(search_for.val() === 'username') {
69
- search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
70
- search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'show' , height: 'show'}, 200);
71
- search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
72
- search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
73
- search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'show' , height: 'show'}, 200);
74
- search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
75
- search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
76
- $('#img_to_show').animate({opacity: 'hide' , height: 'hide'}, 200);
77
-
78
- } else if(search_for.val() === 'account') {
79
- search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
80
- search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
81
- search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
82
- search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
83
- search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
84
- search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
85
- search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
86
- $('#img_to_show').animate({opacity: 'show' , height: 'show'}, 200);
87
-
88
- }
89
- });
90
-
91
- // Hide blocked images if not checked attachments
92
- $('body').on('change', '.jr-container [id$="attachment"]:checkbox', function(e){
93
- var attachment = $(this);
94
- if ( this.checked ) {
95
- attachment.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
96
- attachment.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
97
- } else {
98
- attachment.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
99
- attachment.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
100
- }
101
- });
102
-
103
- // Toggle advanced options
104
- $('body').on('click', '.jr-advanced', function(e){
105
- e.preventDefault();
106
- var advanced_container = $(this).parent().next();
107
-
108
- if ( advanced_container.is(':hidden') ) {
109
- $(this).html('[ - Close ]');
110
- } else {
111
- $(this).html('[ + Open ]');
112
- }
113
- advanced_container.toggle();
114
- });
115
-
116
- // Remove blocked images with ajax
117
- $('body').on('click', '.jr-container .jr-delete-instagram-dupes', function(e){
118
- e.preventDefault();
119
- var $this = $(this),
120
- username = $(this).data("username"),
121
- ajaxNonce = $(this).closest('.jr-container').find('input[name=delete_insta_dupes_nonce]').val();
122
-
123
- $.ajax({
124
- type: 'POST',
125
- url: ajaxurl,
126
- data: {
127
- action: 'jr_delete_insta_dupes',
128
- username : username,
129
- _ajax_nonce: ajaxNonce
130
- },
131
- beforeSend: function () {
132
- $this.prop('disabled', true);
133
- $this.closest('.jr-container').find('.jr-spinner').addClass( 'spinner' ).css({'visibility':'visible','float':'none'});
134
- },
135
- success: function(data, textStatus, XMLHttpRequest) {
136
- $this.closest('.jr-container').find('.deleted-dupes-info').text( 'Removed Duplicates: '+ data.deleted);
137
- },
138
- complete: function () {
139
- $this.prop('disabled', false);
140
- $this.closest('.jr-container').find('.jr-spinner').addClass( 'spinner' ).css({'visibility':'hidden','float':'none'});
141
- },
142
- error: function(XMLHttpRequest, textStatus, errorThrown) {
143
- //console.log(XMLHttpRequest.responseText);
144
- }
145
- });
146
- });
147
- // Delete account with ajax
148
- $('.wis-delete-account').on('click', function (e) {
149
- e.preventDefault();
150
-
151
- var c = confirm(wis.remove_account);
152
-
153
- if (!c) {
154
- return false;
155
- }
156
-
157
- var $item = $(this),
158
- $tr = $item.closest('tr'),
159
- $spinner = $('#wis-delete-spinner');
160
-
161
- $.ajax({
162
- url: ajaxurl,
163
- type: 'post',
164
- data: {
165
- action: 'wis_delete_account',
166
- item_id: $item.data('item_id'),
167
- _ajax_nonce: wis.nonce
168
- },
169
- beforeSend: function () {
170
- $spinner.addClass('is-active');
171
- },
172
- success: function (response) {
173
- if (response.success) {
174
- $tr.fadeOut();
175
- window.location.reload();
176
- } else {
177
- alert(response.data);
178
- }
179
- },
180
- complete: function () {
181
- $spinner.removeClass('is-active');
182
- },
183
- error: function (jqXHR, textStatus) {
184
- console.log(textStatus);
185
- }
186
- });
187
-
188
- });
189
- }); // Document Ready
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
 
191
  })(jQuery);
1
+ (function ($) {
2
+
3
+ $(document).ready(function ($) {
4
+
5
+ var template = $('.jr-container select[id$="template"]')
6
+ if (template.val() == 'thumbs' || template.val() == 'thumbs-no-border' || template.val() == 'slider' || template.val() == 'slider-overlay') {
7
+ template.closest('.jr-container').find('select[id$="images_link"] option[value="popup"]').animate({
8
+ opacity: 'hide',
9
+ height: 'hide'
10
+ }, 200);
11
+
12
+ //window.image_link_val = template.closest('.jr-container').find('select[id$="images_link"]').val();
13
+ //template.closest('.jr-container').find('select[id$="images_link"]').val("image_link");
14
+ } else {
15
+ template.closest('.jr-container').find('select[id$="images_link"] option[value="popup"]').animate({
16
+ opacity: 'show',
17
+ height: 'show'
18
+ }, 200);
19
+ //template.closest('.jr-container').find('select[id$="images_link"]').val(window.image_link_val);
20
+ }
21
+
22
+ // Hide Custom Url if image link is not set to custom url
23
+ $('body').on('change', '.jr-container select[id$="images_link"]', function (e) {
24
+ var images_link = $(this);
25
+ if (images_link.val() != 'custom_url') {
26
+ images_link.closest('.jr-container').find('input[id$="custom_url"]').val('').parent().animate({
27
+ opacity: 'hide',
28
+ height: 'hide'
29
+ }, 200);
30
+ } else {
31
+ images_link.closest('.jr-container').find('input[id$="custom_url"]').parent().animate({
32
+ opacity: 'show',
33
+ height: 'show'
34
+ }, 200);
35
+ }
36
+ });
37
+
38
+ $('body').on('change', '.jr-container input[id$="keep_ratio"]', function (e) {
39
+ var keep_ratio = $(this);
40
+ if (keep_ratio.is(":checked")){
41
+ keep_ratio.closest('.jr-container').find('.slick_img_size').animate({
42
+ opacity: 'show',
43
+ height: 'show'
44
+ }, 200);
45
+ } else {
46
+ keep_ratio.closest('.jr-container').find('.slick_img_size').animate({
47
+ opacity: 'hide',
48
+ height: 'hide'
49
+ }, 200);
50
+ }
51
+ });
52
+
53
+ // Modify options based on template selections
54
+ $('body').on('change', '.jr-container select[id$="template"]', function (e) {
55
+ var template = $(this);
56
+ if (template.val() == 'thumbs' || template.val() == 'thumbs-no-border') {
57
+ template.closest('.jr-container').find('.jr-slider-options').animate({
58
+ opacity: 'hide',
59
+ height: 'hide'
60
+ }, 200);
61
+ template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({
62
+ opacity: 'show',
63
+ height: 'show'
64
+ }, 200);
65
+ } else {
66
+ template.closest('.jr-container').find('.jr-slider-options').animate({
67
+ opacity: 'show',
68
+ height: 'show'
69
+ }, 200);
70
+ template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({
71
+ opacity: 'hide',
72
+ height: 'hide'
73
+ }, 200);
74
+ }
75
+ if (template.val() != 'masonry') {
76
+ template.closest('.jr-container').find('.masonry_settings').animate({
77
+ opacity: 'hide',
78
+ height: 'hide'
79
+ }, 200);
80
+ template.closest('.jr-container').find('.masonry_notice').animate({
81
+ opacity: 'hide',
82
+ height: 'hide'
83
+ }, 200);
84
+ } else {
85
+ template.closest('.jr-container').find('.masonry_settings').animate({
86
+ opacity: 'show',
87
+ height: 'show'
88
+ }, 200);
89
+ template.closest('.jr-container').find('.masonry_notice').animate({
90
+ opacity: 'show',
91
+ height: 'show'
92
+ }, 200);
93
+ }
94
+ if (template.val() != 'slick_slider') {
95
+ template.closest('.jr-container').find('.slick_settings').animate({
96
+ opacity: 'hide',
97
+ height: 'hide'
98
+ }, 200);
99
+ } else {
100
+ template.closest('.jr-container').find('.slick_settings').animate({
101
+ opacity: 'show',
102
+ height: 'show'
103
+ }, 200);
104
+ }
105
+ if (template.val() != 'highlight') {
106
+ template.closest('.jr-container').find('.highlight_settings').animate({
107
+ opacity: 'hide',
108
+ height: 'hide'
109
+ }, 200);
110
+ } else {
111
+ template.closest('.jr-container').find('.highlight_settings').animate({
112
+ opacity: 'show',
113
+ height: 'show'
114
+ }, 200);
115
+ }
116
+
117
+ if (template.val() != 'showcase'){
118
+ template.closest('.jr-container').find('.shopifeed_settings').animate({
119
+ opacity: 'hide',
120
+ height: 'hide'
121
+ }, 200);
122
+ $('.isw-linkto').animate({
123
+ opacity: 'show',
124
+ height: 'show'
125
+ }, 200);
126
+ } else {
127
+ template.closest('.jr-container').find('.shopifeed_settings').animate({
128
+ opacity: 'show',
129
+ height: 'show'
130
+ }, 200);
131
+ $('.isw-linkto').animate({
132
+ opacity: 'hide',
133
+ height: 'hide'
134
+ }, 200);
135
+ }
136
+
137
+ if (template.val() != 'slider' && template.val() != 'slider-overlay') {
138
+ template.closest('.jr-container').find('.slider_normal_settings').animate({
139
+ opacity: 'hide',
140
+ height: 'hide'
141
+ }, 200);
142
+ } else {
143
+ template.closest('.jr-container').find('.slider_normal_settings').animate({
144
+ opacity: 'show',
145
+ height: 'show'
146
+ }, 200);
147
+ }
148
+ if (template.val() == 'highlight' || template.val() == 'slick_slider' || template.val() == 'thumbs' || template.val() == 'thumbs-no-border') {
149
+ template.closest('.jr-container').find('.words_in_caption').animate({
150
+ opacity: 'hide',
151
+ height: 'hide'
152
+ }, 200);
153
+ } else {
154
+ template.closest('.jr-container').find('.words_in_caption').animate({
155
+ opacity: 'show',
156
+ height: 'show'
157
+ }, 200);
158
+ }
159
+
160
+ if (template.val() == 'thumbs' || template.val() == 'thumbs-no-border' || template.val() == 'slider' || template.val() == 'slider-overlay') {
161
+ template.closest('.jr-container').find('select[id$="images_link"] option[value="popup"]').animate({
162
+ opacity: 'hide',
163
+ height: 'hide'
164
+ }, 200);
165
+
166
+ window.image_link_val = template.closest('.jr-container').find('select[id$="images_link"]').val();
167
+ //template.closest('.jr-container').find('select[id$="images_link"]').val("image_link");
168
+ } else {
169
+ template.closest('.jr-container').find('select[id$="images_link"] option[value="popup"]').animate({
170
+ opacity: 'show',
171
+ height: 'show'
172
+ }, 200);
173
+ //template.closest('.jr-container').find('select[id$="images_link"]').val(window.image_link_val);
174
+ }
175
+ });
176
+
177
+ // Modfiy options when search for is changed
178
+ $('body').on('change', '.jr-container input:radio[id$="search_for"]', function (e) {
179
+ var search_for = $(this);
180
+ if (search_for.val() === 'hashtag') {
181
+ search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({
182
+ opacity: 'hide',
183
+ height: 'hide'
184
+ }, 200);
185
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({
186
+ opacity: 'hide',
187
+ height: 'hide'
188
+ }, 200);
189
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({
190
+ opacity: 'hide',
191
+ height: 'hide'
192
+ }, 200);
193
+ //search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
194
+ search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({
195
+ opacity: 'hide',
196
+ height: 'hide'
197
+ }, 200);
198
+ search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({
199
+ opacity: 'show',
200
+ height: 'show'
201
+ }, 200);
202
+ search_for.closest('.jr-container').find('input[id$="blocked_words"]').closest('p').animate({
203
+ opacity: 'hide',
204
+ height: 'hide'
205
+ }, 200);
206
+ search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({
207
+ opacity: 'hide',
208
+ height: 'hide'
209
+ }, 200);
210
+ $('#img_to_show').animate({opacity: 'hide', height: 'hide'}, 200);
211
+
212
+
213
+ } else if (search_for.val() === 'username') {
214
+ search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({
215
+ opacity: 'show',
216
+ height: 'show'
217
+ }, 200);
218
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({
219
+ opacity: 'show',
220
+ height: 'show'
221
+ }, 200);
222
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({
223
+ opacity: 'show',
224
+ height: 'show'
225
+ }, 200);
226
+ //search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
227
+ search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({
228
+ opacity: 'show',
229
+ height: 'show'
230
+ }, 200);
231
+ search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({
232
+ opacity: 'hide',
233
+ height: 'hide'
234
+ }, 200);
235
+ search_for.closest('.jr-container').find('input[id$="blocked_words"]').closest('p').animate({
236
+ opacity: 'show',
237
+ height: 'show'
238
+ }, 200);
239
+ search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({
240
+ opacity: 'show',
241
+ height: 'show'
242
+ }, 200);
243
+ $('#img_to_show').animate({opacity: 'hide', height: 'hide'}, 200);
244
+
245
+ } else if (search_for.val() === 'account') {
246
+ search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({
247
+ opacity: 'hide',
248
+ height: 'hide'
249
+ }, 200);
250
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({
251
+ opacity: 'hide',
252
+ height: 'hide'
253
+ }, 200);
254
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({
255
+ opacity: 'hide',
256
+ height: 'hide'
257
+ }, 200);
258
+ //search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
259
+ search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({
260
+ opacity: 'hide',
261
+ height: 'hide'
262
+ }, 200);
263
+ search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({
264
+ opacity: 'hide',
265
+ height: 'hide'
266
+ }, 200);
267
+ search_for.closest('.jr-container').find('input[id$="blocked_words"]').closest('p').animate({
268
+ opacity: 'show',
269
+ height: 'show'
270
+ }, 200);
271
+ search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({
272
+ opacity: 'hide',
273
+ height: 'hide'
274
+ }, 200);
275
+ search_for.closest('.jr-container').find('select[id$="orderby"] option[value="popular-ASC"]').animate({
276
+ opacity: 'hide',
277
+ height: 'hide'
278
+ }, 200);
279
+ search_for.closest('.jr-container').find('select[id$="orderby"] option[value="popular-DESC"]').animate({
280
+ opacity: 'hide',
281
+ height: 'hide'
282
+ }, 200);
283
+ $('#img_to_show').animate({opacity: 'show', height: 'show'}, 200);
284
+
285
+ } else if (search_for.val() === 'account_business') {
286
+ search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({
287
+ opacity: 'hide',
288
+ height: 'hide'
289
+ }, 200);
290
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({
291
+ opacity: 'hide',
292
+ height: 'hide'
293
+ }, 200);
294
+ search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({
295
+ opacity: 'hide',
296
+ height: 'hide'
297
+ }, 200);
298
+ //search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
299
+ search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({
300
+ opacity: 'hide',
301
+ height: 'hide'
302
+ }, 200);
303
+ search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({
304
+ opacity: 'hide',
305
+ height: 'hide'
306
+ }, 200);
307
+ search_for.closest('.jr-container').find('input[id$="blocked_words"]').closest('p').animate({
308
+ opacity: 'show',
309
+ height: 'show'
310
+ }, 200);
311
+ search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({
312
+ opacity: 'show',
313
+ height: 'show'
314
+ }, 200);
315
+ search_for.closest('.jr-container').find('select[id$="orderby"] option[value="popular-ASC"]').animate({
316
+ opacity: 'show',
317
+ height: 'show'
318
+ }, 200);
319
+ search_for.closest('.jr-container').find('select[id$="orderby"] option[value="popular-DESC"]').animate({
320
+ opacity: 'show',
321
+ height: 'show'
322
+ }, 200);
323
+ $('#img_to_show').animate({opacity: 'show', height: 'show'}, 200);
324
+
325
+ }
326
+ });
327
+
328
+ // Hide blocked images if not checked attachments
329
+ $('body').on('change', '.jr-container [id$="attachment"]:checkbox', function (e) {
330
+ var attachment = $(this);
331
+ if (this.checked) {
332
+ attachment.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({
333
+ opacity: 'show',
334
+ height: 'show'
335
+ }, 200);
336
+ //attachment.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
337
+ } else {
338
+ attachment.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({
339
+ opacity: 'hide',
340
+ height: 'hide'
341
+ }, 200);
342
+ //attachment.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
343
+ }
344
+ });
345
+
346
+ // Toggle advanced options
347
+ $('body').on('click', '.jr-advanced', function (e) {
348
+ e.preventDefault();
349
+ var advanced_container = $(this).parent().next();
350
+
351
+ if (advanced_container.is(':hidden')) {
352
+ $(this).html('[ - Close ]');
353
+ } else {
354
+ $(this).html('[ + Open ]');
355
+ }
356
+ advanced_container.toggle();
357
+ });
358
+
359
+ // Remove blocked images with ajax
360
+ $('body').on('click', '.jr-container .jr-delete-instagram-dupes', function (e) {
361
+ e.preventDefault();
362
+ var $this = $(this),
363
+ username = $(this).data("username"),
364
+ ajaxNonce = $(this).closest('.jr-container').find('input[name=delete_insta_dupes_nonce]').val();
365
+
366
+ $.ajax({
367
+ type: 'POST',
368
+ url: ajaxurl,
369
+ data: {
370
+ action: 'jr_delete_insta_dupes',
371
+ username: username,
372
+ _ajax_nonce: ajaxNonce
373
+ },
374
+ beforeSend: function () {
375
+ $this.prop('disabled', true);
376
+ $this.closest('.jr-container').find('.jr-spinner').addClass('spinner').css({
377
+ 'visibility': 'visible',
378
+ 'float': 'none'
379
+ });
380
+ },
381
+ success: function (data, textStatus, XMLHttpRequest) {
382
+ $this.closest('.jr-container').find('.deleted-dupes-info').text('Removed Duplicates: ' + data.deleted);
383
+ },
384
+ complete: function () {
385
+ $this.prop('disabled', false);
386
+ $this.closest('.jr-container').find('.jr-spinner').addClass('spinner').css({
387
+ 'visibility': 'hidden',
388
+ 'float': 'none'
389
+ });
390
+ },
391
+ error: function (XMLHttpRequest, textStatus, errorThrown) {
392
+ //console.log(XMLHttpRequest.responseText);
393
+ }
394
+ });
395
+ });
396
+ // Delete account with ajax
397
+ $('.wis-delete-account').on('click', function (e) {
398
+ e.preventDefault();
399
+
400
+ var c = confirm(wis.remove_account);
401
+
402
+ if (!c) {
403
+ return false;
404
+ }
405
+
406
+ var $item = $(this),
407
+ $tr = $item.closest('tr'),
408
+ $spinner = $('#wis-delete-spinner-' + $item.data('item_id'));
409
+
410
+ $.ajax({
411
+ url: ajaxurl,
412
+ type: 'post',
413
+ data: {
414
+ action: 'wis_delete_account',
415
+ item_id: $item.data('item_id'),
416
+ is_business: $item.data('is_business'),
417
+ _ajax_nonce: wis.nonce
418
+ },
419
+ beforeSend: function () {
420
+ $spinner.addClass('is-active');
421
+ },
422
+ success: function (response) {
423
+ if (response.success) {
424
+ $tr.fadeOut();
425
+ //window.location.reload();
426
+ } else {
427
+ alert(response.data);
428
+ }
429
+ },
430
+ complete: function () {
431
+ $spinner.removeClass('is-active');
432
+ },
433
+ error: function (jqXHR, textStatus) {
434
+ console.log(textStatus);
435
+ }
436
+ });
437
+ });
438
+
439
+ $('.wis-not-working').on('click', function (e) {
440
+ e.preventDefault();
441
+ $('#wis-add-token').animate({opacity: 'show', height: 'show'}, 200)
442
+ });
443
+
444
+ /*
445
+ * FACEBOOK API modal
446
+ */
447
+
448
+ var modal = jQuery('#wis_accounts_modal');
449
+ var modalOverlay = jQuery('#wis_modal_overlay');
450
+ var spinOverlay = jQuery('.wis-overlay-spinner');
451
+
452
+ modalOverlay.on("click", function () {
453
+ var conf = confirm("You haven't finished adding an account. Are you sure you want to close the window?");
454
+ if (conf) {
455
+ modal.toggleClass("wis_closed");
456
+ modalOverlay.toggleClass("wis_closed");
457
+ spinOverlay.toggleClass("is-active");
458
+ }
459
+ });
460
+
461
+ //BUSINESS INSTAGRAM
462
+ jQuery('.wis_modal_content #wis-instagram-row').on('click', function (e) {
463
+ modal.toggleClass("wis_closed");
464
+ spinOverlay.addClass('is-active');
465
+ //modalOverlay.toggleClass("wis_closed");
466
+ wis_account = $(this).attr('data-account');
467
+ jQuery.post(ajaxurl, {
468
+ action: 'wis_add_account_by_token',
469
+ account: wis_account,
470
+ _ajax_nonce: add_account_nonce.nonce
471
+ }).done(function (html) {
472
+ console.log(html);
473
+ window.location.reload();
474
+ });
475
+ });
476
+
477
+ //FACEBOOK
478
+ jQuery('.wis_modal_content #wis-facebook-row').on('click', function (e) {
479
+ modal.toggleClass("wis_closed");
480
+ spinOverlay.addClass('is-active');
481
+ //modalOverlay.toggleClass("wis_closed");
482
+ wis_account = $(this).attr('data-account');
483
+ jQuery.post(ajaxurl, {
484
+ action: 'wis_add_facebook_page_by_token',
485
+ account: wis_account,
486
+ _ajax_nonce: add_account_nonce.nonce
487
+ }).done(function (html) {
488
+ window.location.reload();
489
+ });
490
+ });
491
+
492
+ /*
493
+ * Chose API to add account
494
+ * */
495
+ var modal2 = jQuery('#wis_add_account_modal');
496
+ var modal2Overlay = jQuery('#wis_add_account_modal_overlay');
497
+
498
+ modal2Overlay.on("click", function () {
499
+ var conf = confirm("You haven't finished adding an account. Are you sure you want to close the window?");
500
+ if (conf) {
501
+ modal2.toggleClass("wis_closed");
502
+ modal2Overlay.toggleClass("wis_closed");
503
+ }
504
+ });
505
+
506
+ jQuery('#wis-add-account-button .wis-btn-instagram-account').on('click', function (e) {
507
+ e.preventDefault();
508
+ modal2.removeClass('wis_closed');
509
+ modal2Overlay.removeClass('wis_closed');
510
+ });
511
+
512
+ jQuery('span.wis_demo_pro').on('click', function (e) {
513
+ e.preventDefault();
514
+ window.open('https://cm-wp.com/instagram-slider-widget/pricing/', '_blank');
515
+ });
516
+
517
+ }); // Document Ready
518
 
519
  })(jQuery);
admin/assets/js/tinymce_button.js CHANGED
@@ -1,41 +1,41 @@
1
- (function($) {
2
- $(document).on('tinymce-editor-setup', function(event, editor) {
3
-
4
- if( void 0 === wis_shortcodes ) {
5
- console.log('Unknown error (wis).');
6
- return;
7
- }
8
-
9
- if( $.isEmptyObject(wis_shortcodes) ) {
10
- return;
11
- }
12
-
13
- editor.settings.toolbar1 += ',wis_insert_button';
14
-
15
- var menu = [];
16
-
17
- $.each(wis_shortcodes, function(index, item) {
18
- menu.push({
19
- text: item.title,
20
- value: item.id,
21
- onclick: function() {
22
- var selected_content = editor.selection.getContent();
23
-
24
- if( '' === selected_content ) {
25
- editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
26
- } else {
27
- editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
28
- }
29
- }
30
- });
31
- });
32
-
33
- editor.addButton('wis_insert_button', {
34
- title: 'WIS',
35
- type: 'menubutton',
36
- icon: 'icon wis-shortcode-icon',
37
- menu: menu
38
- });
39
-
40
- });
41
  })(jQuery);
1
+ (function ($) {
2
+ $(document).on('tinymce-editor-setup', function (event, editor) {
3
+
4
+ if (void 0 === wis_shortcodes) {
5
+ console.log('Unknown error (wis).');
6
+ return;
7
+ }
8
+
9
+ if ($.isEmptyObject(wis_shortcodes)) {
10
+ return;
11
+ }
12
+
13
+ editor.settings.toolbar1 += ',wis_insert_button';
14
+
15
+ var menu = [];
16
+
17
+ $.each(wis_shortcodes, function (index, item) {
18
+ menu.push({
19
+ text: item.title,
20
+ value: item.id,
21
+ onclick: function () {
22
+ var selected_content = editor.selection.getContent();
23
+
24
+ if ('' === selected_content) {
25
+ editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
26
+ } else {
27
+ editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
28
+ }
29
+ }
30
+ });
31
+ });
32
+
33
+ editor.addButton('wis_insert_button', {
34
+ title: 'WIS',
35
+ type: 'menubutton',
36
+ icon: 'icon wis-shortcode-icon',
37
+ menu: menu
38
+ });
39
+
40
+ });
41
  })(jQuery);
admin/class-wis-activation.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_Factory422_Activator
8
  *
9
  * @version 1.0.1
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WIS_Activation extends Wbcr_Factory422_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_Factory436_Activator
8
  *
9
  * @version 1.0.1
10
  */
14
  exit;
15
  }
16
 
17
+ class WIS_Activation extends Wbcr_Factory436_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
admin/class-wis-page.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_FactoryPages422_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WIS_Page extends Wbcr_FactoryPages422_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
@@ -28,10 +28,15 @@ class WIS_Page extends Wbcr_FactoryPages422_AdminPage {
28
  * Render and return content of the template.
29
  * /admin/views/tab-{$template_name}.php
30
  *
 
 
 
31
  * @return mixed Content of the page
32
  */
33
- public function render ($name = '') {
34
- if($name == '') $name = $this->template_name;
 
 
35
  ob_start();
36
  if ( is_callable( $name ) ) {
37
  echo call_user_func( $name );
@@ -47,6 +52,7 @@ class WIS_Page extends Wbcr_FactoryPages422_AdminPage {
47
  if ( ! is_file( $path ) ) {
48
  return '';
49
  }
 
50
  include $path;
51
  $content = ob_get_contents();
52
  ob_end_clean();
@@ -57,8 +63,7 @@ class WIS_Page extends Wbcr_FactoryPages422_AdminPage {
57
  /**
58
  * Show rendered template - $template_name
59
  */
60
- public function indexAction()
61
- {
62
  echo $this->render();
63
  }
64
 
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_FactoryPages435_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
14
  exit;
15
  }
16
 
17
+ class WIS_Page extends Wbcr_FactoryPages435_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
28
  * Render and return content of the template.
29
  * /admin/views/tab-{$template_name}.php
30
  *
31
+ * @param string $name
32
+ * @param array $args
33
+ *
34
  * @return mixed Content of the page
35
  */
36
+ public function render( $name = '', $args = [] ) {
37
+ if ( $name == '' ) {
38
+ $name = $this->template_name;
39
+ }
40
  ob_start();
41
  if ( is_callable( $name ) ) {
42
  echo call_user_func( $name );
52
  if ( ! is_file( $path ) ) {
53
  return '';
54
  }
55
+ extract( $args );
56
  include $path;
57
  $content = ob_get_contents();
58
  ob_end_clean();
63
  /**
64
  * Show rendered template - $template_name
65
  */
66
+ public function indexAction() {
 
67
  echo $this->render();
68
  }
69
 
admin/pages/Licenses.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class Licenses
5
+ *
6
+ * Отображает страницу, где расположена плитка с лицензиями как плагина, так и его компонентов
7
+ */
8
+ class Licenses extends WIS_Page
9
+ {
10
+
11
+ /**
12
+ * {@inheritdoc}
13
+ */
14
+ public $type = "page";
15
+
16
+ /**
17
+ * {@inheritdoc}
18
+ */
19
+ public $page_menu_dashicon = 'dashicons-admin-network';
20
+
21
+ /**
22
+ * {@inheritdoc}
23
+ */
24
+ public $show_right_sidebar_in_options = false;
25
+
26
+ /**
27
+ * {@inheritdoc}
28
+ */
29
+ public $page_menu_position = 0;
30
+
31
+ /**
32
+ * {@inheritdoc}
33
+ */
34
+ public $available_for_multisite = true;
35
+
36
+ /**
37
+ * @var string Name of the paid plan.
38
+ */
39
+ public $plan_name;
40
+
41
+ /**
42
+ * {@inheritdoc}
43
+ * @param WIS_Plugin $plugin
44
+ */
45
+ public function __construct( $plugin ) {
46
+ $this->plugin = $plugin;
47
+
48
+ parent::__construct( $plugin );
49
+
50
+ $this->id = 'licenses';
51
+ $this->menu_title = '<span style="color:#f18500">' . __( 'Licenses', 'instagram-slider-widget' ) . '</span>';
52
+ $this->page_title = __( 'Licenses', 'instagram-slider-widget' );
53
+ $this->template_name = "licenses";
54
+ $this->menu_target = "widgets-" . $plugin->getPluginName();
55
+ $this->capabilitiy = "manage_options";
56
+ }
57
+
58
+ public function indexAction()
59
+ {
60
+
61
+ $licenses = [
62
+ [
63
+ 'name' => 'instagram_slider_widget',
64
+ 'title' => __('Social Slider Widget', 'instagram-slider-widget'),
65
+ 'license_url' => 'license-wisw',
66
+ 'icon' => 'https://ps.w.org/instagram-slider-widget/assets/icon-256x256.png',
67
+ 'description' => __('DISPLAY INSTAGRAM FEEDS IN WIDGETS, POSTS, PAGES, OR ANYWHERE ELSE USING SHORTCODES.', 'instagram-slider-widget'),
68
+ ],
69
+ ];
70
+
71
+ if(defined('SPFD_PLUGIN_DIR')){
72
+ array_push($licenses, [
73
+ 'name' => 'shopifeed',
74
+ 'title' => __('Shopifeed', 'instagram-slider-widget'),
75
+ 'license_url' => 'shopifeed-license-isws',
76
+ 'icon' => WIS_PLUGIN_URL . '/assets/img/icon.png',
77
+ 'description' => __('CREATE YOUR ONLINE STORE FROM INSTAGRAM', 'instagram-slider-widget'),
78
+ ]);
79
+ }
80
+
81
+
82
+
83
+ echo $this->render('licenses', ['licenses' => $licenses]);
84
+ }
85
+
86
+ }
admin/pages/about.php CHANGED
@@ -38,10 +38,10 @@ class WIS_AboutPage extends WIS_Page {
38
  * @param WIS_Plugin $plugin
39
  */
40
  public function __construct( $plugin ) {
41
- $this->id = "about";
42
- $this->menu_target= "widgets-".$plugin->getPluginName();
43
- $this->page_title = __( 'About Social Slider Widget', 'instagram-slider-widget' );
44
- $this->menu_title = __( 'About', 'instagram-slider-widget' );
45
  $this->template_name = "about";
46
 
47
  parent::__construct( $plugin );
38
  * @param WIS_Plugin $plugin
39
  */
40
  public function __construct( $plugin ) {
41
+ $this->id = "about";
42
+ $this->menu_target = "widgets-" . $plugin->getPluginName();
43
+ $this->page_title = __( 'About Social Slider Widget', 'instagram-slider-widget' );
44
+ $this->menu_title = __( 'About', 'instagram-slider-widget' );
45
  $this->template_name = "about";
46
 
47
  parent::__construct( $plugin );
admin/pages/components.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Exit if accessed directly
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+
8
+ /**
9
+ * Class WAPT_License_Page is used as template to display form to active premium functionality.
10
+ *
11
+ * @since 2.0.7
12
+ */
13
+ class WIS_ComponentsPage extends WIS_Page {
14
+
15
+ /**
16
+ * {@inheritdoc}
17
+ */
18
+ public $type = "page";
19
+
20
+ /**
21
+ * {@inheritdoc}
22
+ */
23
+ public $page_menu_dashicon = 'dashicons-admin-network';
24
+
25
+ /**
26
+ * {@inheritdoc}
27
+ */
28
+ public $show_right_sidebar_in_options = false;
29
+
30
+ /**
31
+ * {@inheritdoc}
32
+ */
33
+ public $page_menu_position = 0;
34
+
35
+ /**
36
+ * {@inheritdoc}
37
+ */
38
+ public $available_for_multisite = true;
39
+
40
+ /**
41
+ * @var string Name of the paid plan.
42
+ */
43
+ public $plan_name;
44
+
45
+
46
+ /**
47
+ * {@inheritdoc}
48
+ * @param WIS_Plugin $plugin
49
+ */
50
+ public function __construct( $plugin ) {
51
+ $this->plugin = $plugin;
52
+
53
+ parent::__construct( $plugin );
54
+
55
+ $this->id = 'components';
56
+ $this->menu_title = '<span style="color:#f18500">' . __( 'Components', 'instagram-slider-widget' ) . '</span>';
57
+ $this->page_title = __( 'Components', 'instagram-slider-widget' );
58
+ $this->template_name = "components";
59
+ $this->menu_target = "widgets-" . $plugin->getPluginName();
60
+ $this->capabilitiy = "manage_options";
61
+ }
62
+
63
+ public function indexAction()
64
+ {
65
+
66
+ $components = [
67
+ [
68
+ 'name' => 'tiktok_feed',
69
+ 'title' => __('TikTok Feed', 'instagram-slider-widget'),
70
+ 'url' => 'https://wordpress.org/plugins/cm-tiktok-feed/',
71
+ 'type' => 'internal',
72
+ 'build' => 'free',
73
+ 'component_const' => 'WTIK_PLUGIN_ACTIVE',
74
+ 'base_path' => 'tiktok-feed/tiktok-feed.php',
75
+ 'slug' => 'cm-tiktok-feed/cm-tiktok-feed.php',
76
+ 'icon' => 'https://ps.w.org/cm-tiktok-feed/assets/icon-256x256.png',
77
+ 'description' => __('DISPLAY TIKTOK IN WIDGETS, POSTS, PAGES, OR ANYWHERE ELSE USING SHORTCODES.', 'instagram-slider-widget'),
78
+ 'settings_url' => admin_url('admin.php?page=widgets-wtiktok')
79
+ ],
80
+ [
81
+ 'name' => 'shopifeed',
82
+ 'title' => __('Shopifeed', 'instagram-slider-widget'),
83
+ 'url' => 'https://cm-wp.com/instagram-slider-widget/shopifeed',
84
+ 'type' => 'internal',
85
+ 'build' => 'premium',
86
+ 'component_const' => 'SPFD_PLUGIN_ACTIVE',
87
+ 'base_path' => 'shopifeed/shopifeed.php',
88
+ 'slug' => '',
89
+ 'icon' => WIS_PLUGIN_URL . '/assets/img/icon.png',
90
+ 'description' => __('CREATE YOUR ONLINE STORE FROM INSTAGRAM', 'instagram-slider-widget'),
91
+ 'settings_url' => admin_url('admin.php?page=widgets-wisw')
92
+ ]
93
+
94
+ ];
95
+
96
+ echo $this->render('components', ['components' => $components]);
97
+ }
98
+
99
+ }
admin/pages/license.php CHANGED
@@ -17,6 +17,11 @@ class WIS_LicensePage extends WIS_Page {
17
  */
18
  public $type = "page";
19
 
 
 
 
 
 
20
  /**
21
  * {@inheritdoc}
22
  */
@@ -52,7 +57,7 @@ class WIS_LicensePage extends WIS_Page {
52
 
53
  /**
54
  * @since 2.0.7
55
- * @var \WBCR\Factory_422\Premium\Provider
56
  */
57
  protected $premium;
58
 
@@ -70,7 +75,7 @@ class WIS_LicensePage extends WIS_Page {
70
 
71
  /**
72
  * @since 2.0.7
73
- * @var \WBCR\Factory_422\Premium\Interfaces\License
74
  */
75
  protected $premium_license;
76
 
@@ -81,17 +86,17 @@ class WIS_LicensePage extends WIS_Page {
81
  * {@inheritdoc}
82
  * @param WIS_Plugin $plugin
83
  */
84
- public function __construct ( $plugin ) {
85
  $this->plugin = $plugin;
86
 
87
  parent::__construct( $plugin );
88
 
89
- $this->id = 'license';
90
- $this->menu_title = '<span style="color:#f18500">'.__( 'License', 'instagram-slider-widget' ).'</span>';
91
- $this->page_title = __( 'License of Social Slider Widget', 'instagram-slider-widget' );
92
  $this->template_name = "license";
93
- $this->menu_target= "widgets-".$plugin->getPluginName();
94
- $this->capabilitiy = "manage_options";
95
 
96
  $this->premium = WIS_Plugin::app()->premium;
97
  $this->is_premium = $this->premium->is_activate();
@@ -103,7 +108,7 @@ class WIS_LicensePage extends WIS_Page {
103
  /**
104
  * [MAGIC] Magic method that configures assets for a page.
105
  */
106
- public function assets ( $scripts, $styles ) {
107
  parent::assets( $scripts, $styles );
108
 
109
  $this->styles->add( WIS_PLUGIN_URL . '/admin/assets/css/license-manager.css' );
@@ -122,14 +127,14 @@ class WIS_LicensePage extends WIS_Page {
122
  *
123
  * @return string Before content.
124
  */
125
- protected function get_plan_description () {
126
  return '';
127
  }
128
 
129
  /**
130
  * @return string
131
  */
132
- protected function get_hidden_license_key () {
133
  if ( ! $this->is_premium ) {
134
  return '';
135
  }
@@ -140,7 +145,7 @@ class WIS_LicensePage extends WIS_Page {
140
  /**
141
  * @return string
142
  */
143
- protected function get_plan () {
144
  if ( ! $this->is_premium ) {
145
  return 'free';
146
  }
@@ -151,14 +156,14 @@ class WIS_LicensePage extends WIS_Page {
151
  /**
152
  * @return mixed
153
  */
154
- protected function get_expiration_days () {
155
  return $this->premium_license->get_expiration_time( 'days' );
156
  }
157
 
158
  /**
159
  * @return string
160
  */
161
- protected function get_billing_cycle_readable () {
162
  if ( ! $this->is_premium ) {
163
  return '';
164
  }
@@ -184,7 +189,7 @@ class WIS_LicensePage extends WIS_Page {
184
  *
185
  * @return string
186
  */
187
- protected function get_license_type () {
188
  if ( ! $this->is_premium ) {
189
  return 'free';
190
  }
17
  */
18
  public $type = "page";
19
 
20
+ /**
21
+ * @var bool
22
+ */
23
+ public $internal = true;
24
+
25
  /**
26
  * {@inheritdoc}
27
  */
57
 
58
  /**
59
  * @since 2.0.7
60
+ * @var \WBCR\Factory_436\Premium\Provider
61
  */
62
  protected $premium;
63
 
75
 
76
  /**
77
  * @since 2.0.7
78
+ * @var \WBCR\Factory_436\Premium\Interfaces\License
79
  */
80
  protected $premium_license;
81
 
86
  * {@inheritdoc}
87
  * @param WIS_Plugin $plugin
88
  */
89
+ public function __construct( $plugin ) {
90
  $this->plugin = $plugin;
91
 
92
  parent::__construct( $plugin );
93
 
94
+ $this->id = 'license';
95
+ $this->menu_title = '<span style="color:#f18500">' . __( 'License', 'instagram-slider-widget' ) . '</span>';
96
+ $this->page_title = __( 'License of Social Slider Widget', 'instagram-slider-widget' );
97
  $this->template_name = "license";
98
+ $this->menu_target = "widgets-" . $plugin->getPluginName();
99
+ $this->capabilitiy = "manage_options";
100
 
101
  $this->premium = WIS_Plugin::app()->premium;
102
  $this->is_premium = $this->premium->is_activate();
108
  /**
109
  * [MAGIC] Magic method that configures assets for a page.
110
  */
111
+ public function assets( $scripts, $styles ) {
112
  parent::assets( $scripts, $styles );
113
 
114
  $this->styles->add( WIS_PLUGIN_URL . '/admin/assets/css/license-manager.css' );
127
  *
128
  * @return string Before content.
129
  */
130
+ protected function get_plan_description() {
131
  return '';
132
  }
133
 
134
  /**
135
  * @return string
136
  */
137
+ protected function get_hidden_license_key() {
138
  if ( ! $this->is_premium ) {
139
  return '';
140
  }
145
  /**
146
  * @return string
147
  */
148
+ protected function get_plan() {
149
  if ( ! $this->is_premium ) {
150
  return 'free';
151
  }
156
  /**
157
  * @return mixed
158
  */
159
+ protected function get_expiration_days() {
160
  return $this->premium_license->get_expiration_time( 'days' );
161
  }
162
 
163
  /**
164
  * @return string
165
  */
166
+ protected function get_billing_cycle_readable() {
167
  if ( ! $this->is_premium ) {
168
  return '';
169
  }
189
  *
190
  * @return string
191
  */
192
+ protected function get_license_type() {
193
  if ( ! $this->is_premium ) {
194
  return 'free';
195
  }
admin/pages/settings.php CHANGED
@@ -27,7 +27,7 @@ class WIS_SettingsPage extends WIS_Page {
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
- * @see FactoryPages422_AdminPage
31
  *
32
  * @var string
33
  */
@@ -103,12 +103,12 @@ class WIS_SettingsPage extends WIS_Page {
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
- $this->id = "settings";
107
- $this->page_title = __( 'Settings of Social Slider Widget', 'instagram-slider-widget' );
108
- $this->menu_title = __( 'Settings', 'instagram-slider-widget' );
109
- $this->menu_target= "widgets-".$plugin->getPluginName();
110
- $this->menu_icon = '~/admin/assets/img/wis.png';
111
- $this->capabilitiy = "manage_options";
112
  $this->template_name = "settings";
113
 
114
  parent::__construct( $plugin );
@@ -134,29 +134,72 @@ class WIS_SettingsPage extends WIS_Page {
134
  }
135
 
136
  public function indexAction() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
138
- ?>
139
- <script>
140
- var hash = document.location.hash;
141
- var token = hash.split('=')[1];
142
- if("string" == typeof token)
143
- {
144
- jQuery('#wis-spinner').addClass('is-active');
145
- jQuery('#wis-spinner').css('visibility','visible');
146
-
147
- jQuery.post ( ajaxurl, {
148
- action: 'add_account_by_token',
149
- token: token,
150
- _ajax_nonce: '<?php echo wp_create_nonce("addAccountByToken"); ?>',
151
- }).done( function( html ) {
152
- document.location.hash = "";
153
- window.location.reload();
154
- });
155
- // $(document).ready(function(){
156
- // });
157
- }
158
- </script>
159
- <?php
160
  parent::indexAction();
161
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  }
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
+ * @see FactoryPages435_AdminPage
31
  *
32
  * @var string
33
  */
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
+ $this->id = "settings";
107
+ $this->page_title = __( 'Settings of Social Slider Widget', 'instagram-slider-widget' );
108
+ $this->menu_title = __( 'Settings', 'instagram-slider-widget' );
109
+ $this->menu_target = "widgets-" . $plugin->getPluginName();
110
+ $this->menu_icon = '~/admin/assets/img/wis.png';
111
+ $this->capabilitiy = "manage_options";
112
  $this->template_name = "settings";
113
 
114
  parent::__construct( $plugin );
134
  }
135
 
136
  public function indexAction() {
137
+ wp_enqueue_style( 'wis-tabs-style', WIS_PLUGIN_URL . '/admin/assets/css/component.css', array(), WIS_PLUGIN_VERSION );
138
+ if ( isset( $_GET['tab'] ) && ! empty( $_GET['tab'] ) ) {
139
+ switch ( $_GET['tab'] ) {
140
+ case "instagram":
141
+ $this->instagram();
142
+ break;
143
+ case "facebook":
144
+ WIS_FacebookSlider::app()->FACEBOOK->tabAction();
145
+ break;
146
+ case "youtube":
147
+ $this->youtube();
148
+ break;
149
+ }
150
+ } else {
151
+ $this->instagram();
152
+ }
153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  parent::indexAction();
155
  }
156
+
157
+ /**
158
+ * Логика на вкладке Инстаграма
159
+ */
160
+ public function instagram() {
161
+ if ( isset( $_GET['type'] ) && $_GET['type'] == 'business' ) {
162
+ if ( isset( $_GET['token_error'] ) ) {
163
+ echo '<div class="notice notice-error"><p>' . $_GET['token_error'] . '</p></div>';
164
+ $_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'token_error' ) );
165
+ } else {
166
+ if ( isset( $_GET['access_token'] ) ) {
167
+ $token = $_GET['access_token'];
168
+ $result = WIS_InstagramSlider::app()->update_account_profiles( $token, true );
169
+ $_SERVER['REQUEST_URI'] = remove_query_arg( 'access_token' );
170
+ ?>
171
+ <div id="wis_accounts_modal" class="wis_accounts_modal">
172
+ <div class="wis_modal_header">
173
+ Choose Account:
174
+ </div>
175
+ <div class="wis_modal_content">
176
+ <?php echo $result[0]; ?>
177
+ </div>
178
+ </div>
179
+ <div id="wis_modal_overlay" class="wis_modal_overlay"></div>
180
+ <span class="wis-overlay-spinner is-active">&nbsp;</span>
181
+ <?php
182
+ }
183
+ }
184
+ } else {
185
+ if ( isset( $_GET['token_error'] ) ) {
186
+ echo '<div class="notice notice-error"><p>' . $_GET['token_error'] . '</p></div>';
187
+ $_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'token_error' ) );
188
+ } else {
189
+ if ( isset( $_GET['access_token'] ) ) {
190
+ $token = $_GET['access_token'];
191
+ $result = WIS_InstagramSlider::app()->update_account_profiles( $token );
192
+ $_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'access_token' ) );
193
+ }
194
+ }
195
+ }
196
+ }
197
+
198
+ /**
199
+ * Логика на вкладке Ютуба
200
+ */
201
+ public function youtube() {
202
+ //require_once WIS_PLUGIN_DIR . '/includes/socials/class.wis_youtube.php';
203
+ }
204
+
205
  }
admin/pages/widgets.php CHANGED
@@ -27,7 +27,7 @@ class WIS_WidgetsPage extends WIS_Page {
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
- * @see FactoryPages422_AdminPage
31
  *
32
  * @var string
33
  */
@@ -103,16 +103,17 @@ class WIS_WidgetsPage extends WIS_Page {
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
- $this->id = "widgets";
107
- $this->page_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
108
- $this->menu_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
109
- $this->menu_sub_title = __( 'Widgets', 'instagram-slider-widget' );;
110
- $this->menu_icon = '~/admin/assets/img/wis.png';
111
- $this->capabilitiy = "manage_options";
112
- $this->template_name = "widgets";
113
 
114
  parent::__construct( $plugin );
115
 
 
116
  $this->plugin = $plugin;
117
  }
118
 
@@ -125,4 +126,122 @@ class WIS_WidgetsPage extends WIS_Page {
125
  }
126
 
127
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  }
27
  * Mainly used to navigate between pages.
28
  *
29
  * @since 1.0.0
30
+ * @see FactoryPages435_AdminPage
31
  *
32
  * @var string
33
  */
103
  * @param WIS_Plugin $plugin
104
  */
105
  public function __construct( $plugin ) {
106
+ $this->id = "widgets";
107
+ $this->page_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
108
+ $this->menu_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
109
+ $this->menu_sub_title = __( 'Widgets', 'instagram-slider-widget' );
110
+ $this->menu_icon = '~/admin/assets/img/wis.png';
111
+ $this->capabilitiy = "manage_options";
112
+ $this->template_name = "widgets";
113
 
114
  parent::__construct( $plugin );
115
 
116
+ add_filter( 'dynamic_sidebar_params', [ $this, 'pro_stick_on_premium_widgets' ] );
117
  $this->plugin = $plugin;
118
  }
119
 
126
  }
127
 
128
  }
129
+
130
+ /**
131
+ * @param $params
132
+ */
133
+ public function pro_stick_on_premium_widgets( $params ) {
134
+ return $params;
135
+ }
136
+
137
+ /**
138
+ * @inheritDoc
139
+ */
140
+ public function indexAction() {
141
+ $sidebars_widgets = get_option( 'sidebars_widgets', [] );
142
+ $insta_widgets = get_option( 'widget_jr_insta_slider', [] );
143
+ $demo_widgets = include( WIS_PLUGIN_DIR . "/includes/demo_widgets.php" );
144
+ $account = $this->get_current_account();
145
+
146
+ if ( isset( $_GET['do'] ) && $_GET['do'] == 'add_demo' ) {
147
+ if ( isset( $sidebars_widgets['jr-insta-shortcodes'] ) && ! empty( $account ) ) {
148
+ $next_id = $this->get_next_widget_id( $insta_widgets );
149
+
150
+ foreach ( $demo_widgets as $demo_widget ) {
151
+ $insta_widgets[ $next_id ] = $demo_widget;
152
+ $insta_widgets[ $next_id ]['search_for'] = $account['type'];
153
+ $insta_widgets[ $next_id ][ $account['type'] ] = $account['username'];
154
+ $sidebars_widgets['jr-insta-shortcodes'][] = "jr_insta_slider-{$next_id}";
155
+ $next_id ++;
156
+ }
157
+ update_option( 'sidebars_widgets', $sidebars_widgets );
158
+ update_option( 'widget_jr_insta_slider', $insta_widgets );
159
+ }
160
+
161
+ $_SERVER['REQUEST_URI'] = remove_query_arg( 'do' );
162
+ wp_redirect( $_SERVER['REQUEST_URI'] );
163
+ }
164
+
165
+ /*************************/
166
+ ob_start();
167
+ require_once ABSPATH . "wp-admin/includes/widgets.php";
168
+ $sidebars_widgets = wp_get_sidebars_widgets();
169
+ global $wp_registered_widgets, $wp_registered_sidebars;
170
+ $isset_widgets = false;
171
+ wp_nonce_field( 'save-sidebar-widgets', '_wpnonce_widgets' );
172
+ if ( ! empty( $sidebars_widgets ) ) {
173
+ foreach ( $sidebars_widgets as $key => $sidebar ) {
174
+ foreach ( $sidebar as $widget ) {
175
+ if ( strstr( $widget, 'jr_insta_slider' ) ) {
176
+ wp_list_widget_controls( $key, $wp_registered_sidebars[ $key ]['name'] );
177
+ $isset_widgets = true;
178
+ break;
179
+ }
180
+ }
181
+ }
182
+ }
183
+ if ( ! $isset_widgets ) {
184
+ echo "<h2>" . sprintf( __( "You don't have any Social Slider widgets. Go to the Wordpress <a href='%1s'>Widgets</a> page and add it.", 'instagram-slider-widget' ), admin_url( 'widgets.php' ) ) . "</h2>";
185
+ }
186
+ $widgets = ob_get_contents();
187
+ ob_end_clean();
188
+
189
+ $data = [
190
+ 'content' => $widgets,
191
+ 'insta_widgets' => $insta_widgets,
192
+ 'demo_widgets' => $demo_widgets,
193
+ ];
194
+ echo $this->render( '', $data );
195
+ }
196
+
197
+ /**
198
+ * @param $widgets
199
+ *
200
+ * @return int
201
+ */
202
+ public function get_next_widget_id( $widgets ) {
203
+ $i = 0;
204
+ foreach ( $widgets as $key => $widget ) {
205
+ if ( $key !== '_multiwidget' ) {
206
+ $i = $key;
207
+ }
208
+ }
209
+
210
+ return ++ $i;
211
+ }
212
+
213
+ /**
214
+ *
215
+ * @return array
216
+ */
217
+ public function get_current_account() {
218
+ $accounts = WIS_Plugin::app()->getOption( 'account_profiles' );
219
+ $accounts_new = WIS_Plugin::app()->getOption( 'account_profiles_new' );
220
+ $result = array();
221
+
222
+ if ( is_array( $accounts_new ) && ! empty( $accounts_new ) ) {
223
+ $key = $this->wis_array_key_first( $accounts_new );
224
+ $result['type'] = 'account_business';
225
+ $result['username'] = $accounts_new[ $key ]['username'];
226
+
227
+ } else if ( is_array( $accounts ) && ! empty( $accounts ) ) {
228
+ $key = $this->wis_array_key_first( $accounts );
229
+ $result['type'] = 'account';
230
+ $result['username'] = $accounts[ $key ]['username'];
231
+ }
232
+
233
+ return $result;
234
+ }
235
+
236
+ /**
237
+ *
238
+ * @return string|int
239
+ */
240
+ public function wis_array_key_first( $array ) {
241
+ foreach ( $array as $key => $item ) {
242
+ return $key;
243
+ }
244
+
245
+ return '';
246
+ }
247
  }
admin/views/facebook.php ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $args = array(
3
+ "app_id" => WIS_FACEBOOK_CLIENT_ID,
4
+ "state" => $current_url
5
+ );
6
+ $autorize_url = "https://instagram.cm-wp.com/facebook/?" . http_build_query( $args );
7
+ $accounts = WIS_Plugin::app()->getPopulateOption( WIS_FACEBOOK_ACCOUNT_PROFILES_OPTION_NAME, array() );
8
+ ?>
9
+ <div class="factory-bootstrap-436 factory-fontawesome-000">
10
+ <div class="row">
11
+ <div class="col-md-9">
12
+ <div class="row">
13
+ <div class="col-md-12">
14
+ <div id="wis-add-account-button" class="">
15
+ <?php
16
+ if ( count( $accounts ) && ! WIS_Plugin::app()->is_premium() ) : ?>
17
+ <span class="wis-btn-facebook-account btn-instagram-account-disabled">
18
+ <?php _e( 'Add Account', 'instagram-slider-widget' ) ?></span>
19
+ <span class="instagram-account-pro"><?php echo sprintf( __( "More accounts in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), WIS_Plugin::app()->get_support()->get_pricing_url( true, "wis_settings" ) ); ?></span>
20
+ <?php else: ?>
21
+ <a class="wis-btn-facebook-account" target="_self" href="<?php echo $autorize_url; ?>"
22
+ title="Add Account">
23
+ <?php _e( 'Add Account', 'instagram-slider-widget' ) ?>
24
+ </a>
25
+ <span style="float: none; margin-top: 0;" class="spinner" id="wis-spinner"> </span>
26
+ <?php endif; ?>
27
+ </div>
28
+ <div class="wis-help-text"><?php echo sprintf( __( "After adding an account, go to the <a href='%s'>widget settings</a> and change the \"Search Facebook for\" setting to Account", 'instagram-slider-widget' ), admin_url( 'widgets.php' ) ) ?></div>
29
+ <?php
30
+ if ( count( $accounts ) ) :
31
+ ?>
32
+ <br>
33
+ <table class="widefat wis-table">
34
+ <thead>
35
+ <tr>
36
+ <th><?php echo __( 'Image', 'instagram-slider-widget' ); ?></th>
37
+ <th><?php echo __( 'ID', 'instagram-slider-widget' ); ?></th>
38
+ <th><?php echo __( 'Name', 'instagram-slider-widget' ); ?></th>
39
+ <th><?php echo __( 'Token', 'instagram-slider-widget' ); ?></th>
40
+ <th><?php echo __( 'Action', 'instagram-slider-widget' ); ?></th>
41
+ </tr>
42
+ </thead>
43
+ <tbody>
44
+ <?php
45
+ foreach ( $accounts as $profile_info ) {
46
+ $image = $profile_info['picture']['data']['url'];
47
+ $fullname = $profile_info['name'];
48
+ ?>
49
+ <tr>
50
+ <td class="profile-picture">
51
+ <img src="<?php echo esc_url( $image ); ?>"
52
+ width="30"/>
53
+ </td>
54
+ <td><?php echo esc_attr( $profile_info['id'] ); ?></td>
55
+ <td>
56
+ <a href="https://www.facebook.com/<?php echo esc_html( $profile_info['username'] ); ?>"><?php echo esc_html( $profile_info['name'] ); ?></a>
57
+ </td>
58
+ <td>
59
+ <input id="<?php echo esc_attr( $profile_info['id'] ); ?>-access-token"
60
+ type="text"
61
+ value="<?php echo esc_attr( $profile_info['token'] ); ?>"
62
+ class="wis-text-token" readonly/>
63
+ </td>
64
+ <td>
65
+ <a href="#"
66
+ data-item_id="<?php echo esc_attr( $profile_info['id'] ); ?>"
67
+ class="btn btn-danger wis-delete-account">
68
+ <span class="dashicons dashicons-trash"></span><?php echo __( 'Delete', 'instagram-slider-widget' ); ?>
69
+ </a>
70
+ <span class="spinner"
71
+ id="wis-delete-spinner-<?php echo esc_attr( $profile_info['id'] ); ?>"></span>
72
+ </td>
73
+ </tr>
74
+ <?php
75
+ }
76
+ ?>
77
+ </tbody>
78
+ </table>
79
+ <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
80
+ <?php endif; ?>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ <div class="col-md-3">
85
+ <div id="wis-dashboard-widget" class="wis-right-widget">
86
+ <?php
87
+ if ( ! WIS_Plugin::app()->is_premium() ) {
88
+ WIS_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar' );
89
+ }
90
+ ?>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </div>
admin/views/instagram.php ADDED
@@ -0,0 +1,193 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $args = array(
3
+ "client_id" => WIS_INSTAGRAM_CLIENT_ID,
4
+ "redirect_uri" => "https://instagram.cm-wp.com/basic-api",
5
+ "scope" => "user_profile,user_media",
6
+ "response_type" => "code",
7
+ "state" => $current_url,
8
+ );
9
+ $autorize_url_instagram = "https://api.instagram.com/oauth/authorize?" . http_build_query( $args );
10
+
11
+ $args = array(
12
+ "app_id" => WIS_FACEBOOK_CLIENT_ID,
13
+ "state" => $current_url . '&type=business'
14
+ );
15
+ $autorize_url_business = "https://instagram.cm-wp.com/api/?" . http_build_query( $args );
16
+
17
+
18
+ $accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles', array() );
19
+ $accounts_business = WIS_Plugin::app()->getPopulateOption( 'account_profiles_new', array() );
20
+ $count_accounts = count( $accounts ) + count( $accounts_business );
21
+ ?>
22
+ <div class="factory-bootstrap-436 factory-fontawesome-000">
23
+ <div class="row">
24
+ <div class="col-md-9">
25
+ <div class="row">
26
+ <div class="col-md-12">
27
+ <div id="wis-add-account-button" class="">
28
+ <?php
29
+ if ( $count_accounts >= 1 && ! WIS_Plugin::app()->is_premium() ) : ?>
30
+ <span class="wis-btn-instagram-account-disabled btn-instagram-account-disabled">
31
+ <?php _e( 'Add Account', 'instagram-slider-widget' ) ?></span>
32
+ <span class="instagram-account-pro"><?php echo sprintf( __( "More accounts in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), WIS_Plugin::app()->get_support()->get_pricing_url( true, "wis_settings" ) ); ?></span>
33
+ <?php else: ?>
34
+ <a class="wis-btn-instagram-account" target="_self" href="#" title="Add Account">
35
+ <?php _e( 'Add Account', 'instagram-slider-widget' ) ?>
36
+ </a>
37
+ <span style="float: none; margin-top: 0;" class="spinner" id="wis-spinner"> </span>
38
+ <?php endif; ?>
39
+ <!--<a class="wis-not-working" target="_blank" href="#">Button not working?</a>-->
40
+ </div>
41
+ <div id="wis-add-token" style="display: none;">
42
+ <form action="<?php echo admin_url( 'admin.php' ); ?>" method="GET">
43
+ <input type="hidden" id="page" name="page" value="settings-wisw">
44
+ Access token <input type="text" id="wis-manual-token" name="access_token" size="60">
45
+ <input type="submit" class="button button-primary button-large" value="Add account">
46
+ <a class="" target="_blank" href="https://instagram.cm-wp.com/get-token/">Get access
47
+ token</a>
48
+ <span class="spinner" id="wis-add-token-spinner"></span>
49
+ </form>
50
+ </div>
51
+ <div class="wis-help-text"><?php echo sprintf( __( "After adding an account, go to the <a href='%s'>widget settings</a> and change the \"Search Instagram for\" setting to Account or Business Account", 'instagram-slider-widget' ), admin_url( 'widgets.php' ) ) ?></div>
52
+ <!-- Personal accounts -->
53
+ <?php
54
+ if ( count( $accounts ) ) :
55
+ ?>
56
+ <h3>Personal Accounts</h3>
57
+ <table class="widefat wis-table wis-personal-status">
58
+ <thead>
59
+ <tr>
60
+ <th><?php echo __( 'ID', 'instagram-slider-widget' ); ?></th>
61
+ <th><?php echo __( 'User', 'instagram-slider-widget' ); ?></th>
62
+ <th><?php echo __( 'Token', 'instagram-slider-widget' ); ?></th>
63
+ <th style="width: 256px"><?php echo __( 'Action', 'instagram-slider-widget' ); ?></th>
64
+ </tr>
65
+ </thead>
66
+ <tbody>
67
+ <?php
68
+ foreach ( $accounts as $profile_info ) {
69
+ ?>
70
+ <tr>
71
+ <td><?php echo esc_attr( $profile_info['id'] ); ?></td>
72
+ <td>
73
+ <a href="https://www.instagram.com/<?php echo esc_html( $profile_info['username'] ); ?>">@<?php echo esc_html( $profile_info['username'] ); ?></a>
74
+ </td>
75
+ <td>
76
+ <input id="<?php echo esc_attr( $profile_info['id'] ); ?>-access-token"
77
+ type="text"
78
+ value="<?php echo esc_attr( $profile_info['token'] ); ?>"
79
+ class="wis-text-token" readonly/>
80
+ </td>
81
+ <td>
82
+ <a href="#"
83
+ data-item_id="<?php echo ! empty( $profile_info['id'] ) ? $profile_info['id'] : 0; ?>"
84
+ data-is_business="0"
85
+ class="btn btn-danger wis-delete-account">
86
+ <span class="dashicons dashicons-trash"></span><?php echo __( 'Delete', 'instagram-slider-widget' ); ?>
87
+ </a>
88
+ <span class="spinner"
89
+ id="wis-delete-spinner-<?php echo ! empty( $profile_info['id'] ) ? $profile_info['id'] : 0; ?>"></span>
90
+ <?php
91
+ if ( isset( $_GET['access_token'] ) && $_GET['access_token'] === $profile_info['token'] ) {
92
+ ?><span class="wis-div-added">Successfully connected</span><?php
93
+ }
94
+ ?>
95
+ </td>
96
+ </tr>
97
+ <?php
98
+ }
99
+ ?>
100
+ </tbody>
101
+ </table>
102
+ <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
103
+ <?php endif; ?>
104
+ <!-- Business accounts -->
105
+ <?php
106
+ if ( count( $accounts_business ) ) :
107
+ ?>
108
+ <h3>Business Accounts</h3>
109
+ <table class="widefat wis-table wis-business-status">
110
+ <thead>
111
+ <tr>
112
+ <th><?php echo __( 'Image', 'instagram-slider-widget' ); ?></th>
113
+ <th><?php echo __( 'ID', 'instagram-slider-widget' ); ?></th>
114
+ <th><?php echo __( 'User', 'instagram-slider-widget' ); ?></th>
115
+ <th><?php echo __( 'Name', 'instagram-slider-widget' ); ?></th>
116
+ <th><?php echo __( 'Token', 'instagram-slider-widget' ); ?></th>
117
+ <th><?php echo __( 'Action', 'instagram-slider-widget' ); ?></th>
118
+ </tr>
119
+ </thead>
120
+ <tbody>
121
+ <?php
122
+ foreach ( $accounts_business as $profile_info ) {
123
+ $image = $profile_info['profile_picture_url'];
124
+ $fullname = $profile_info['name'];
125
+ ?>
126
+ <tr>
127
+ <td class="profile-picture">
128
+ <img src="<?php echo esc_url( $image ); ?>"
129
+ width="30"/>
130
+ </td>
131
+ <td><?php echo esc_attr( $profile_info['id'] ); ?></td>
132
+ <td>
133
+ <a href="https://www.instagram.com/<?php echo esc_html( $profile_info['username'] ); ?>">@<?php echo esc_html( $profile_info['username'] ); ?></a>
134
+ </td>
135
+ <td><?php echo esc_html( $fullname ); ?></td>
136
+ <td>
137
+ <input id="<?php echo esc_attr( $profile_info['id'] ); ?>-access-token"
138
+ type="text"
139
+ value="<?php echo esc_attr( $profile_info['token'] ); ?>"
140
+ class="wis-text-token" readonly/>
141
+ </td>
142
+ <td>
143
+ <a href="#"
144
+ data-item_id="<?php echo ! empty( $profile_info['id'] ) ? $profile_info['id'] : 0; ?>"
145
+ data-is_business="1"
146
+ class="btn btn-danger wis-delete-account">
147
+ <span class="dashicons dashicons-trash"></span><?php echo __( 'Delete', 'instagram-slider-widget' ); ?>
148
+ </a>
149
+ <span class="spinner"
150
+ id="wis-delete-spinner-<?php echo esc_attr( $profile_info['id'] ); ?>"></span>
151
+ <span class="wis-div-added" style="display: none;">Successfully connected</span>
152
+ </td>
153
+ </tr>
154
+ <?php
155
+ }
156
+ ?>
157
+ </tbody>
158
+ </table>
159
+ <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
160
+ <?php endif; ?>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ <div class="col-md-3">
165
+ <div id="wis-dashboard-widget" class="wis-right-widget">
166
+ <?php
167
+ if ( ! WIS_Plugin::app()->is_premium() ) {
168
+ WIS_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar' );
169
+ }
170
+ ?>
171
+ </div>
172
+ </div>
173
+
174
+ <div id="wis_add_account_modal" class="wis_accounts_modal wis_closed">
175
+ <div class="wis_modal_header">
176
+ Select type of account
177
+ </div>
178
+ <div class="wis_modal_content">
179
+
180
+ <div class='wis-row-style'>
181
+ <a href="<?php echo $autorize_url_instagram; ?>" class='wis-btn-instagram-account'>Personal
182
+ account</a>
183
+ </div>
184
+ <div class='wis-row-style'>
185
+ <a href="<?php echo $autorize_url_business; ?>" class='wis-btn-facebook-account'>Business
186
+ account</a>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ <div id="wis_add_account_modal_overlay" class="wis_modal_overlay wis_closed"></div>
191
+
192
+ </div>
193
+ </div>
admin/views/tab-about.php CHANGED
@@ -1,11 +1,13 @@
1
  <style>
2
- .wis-section-wrapper {
 
3
  width: auto;
4
  margin-top: 10px;
5
  margin-right: 15px;
6
  }
7
 
8
- .wis-section {
 
9
  padding: 20px 29px 0px 29px;
10
  }
11
 
@@ -13,19 +15,23 @@
13
  {
14
  width: 100%;
15
  }
 
16
  .wis-section-thin
17
  {
18
  padding: 5px 0px 5px 0px;
19
  }
 
20
  .wis-section-thin .subheader
21
  {
22
  font-style: italic;
23
  }
 
24
  .wis-section-wrapper h1
25
  {
26
  text-transform: uppercase;
27
  color: whitesmoke;
28
  }
 
29
  .wis-section-wrapper h2
30
  {
31
  text-transform: uppercase;
@@ -37,6 +43,7 @@
37
  border-radius: 10px;
38
  margin: 10px 0px 0px 10px;
39
  }
 
40
  .wis-section-img
41
  {
42
  text-align: center;
@@ -44,11 +51,12 @@
44
 
45
  .black-background
46
  {
47
- background-color: rgba(0,0,0,0.8);
48
  color: whitesmoke;
49
  }
50
 
51
- .wis-section {
 
52
  display: -webkit-box;
53
  display: -webkit-flex;
54
  display: -ms-flexbox;
@@ -64,7 +72,8 @@
64
  align-items: center;
65
  }
66
 
67
- .wis-section-intro {
 
68
  background-image: url('<?php echo WIS_PLUGIN_URL;?>/admin/assets/img/fon.jpg');
69
  background-position: bottom center;
70
  background-size: cover;
@@ -73,7 +82,8 @@
73
  text-align: center;
74
  }
75
 
76
- .wis-section-intro .container h2 {
 
77
  font-size: 61px;
78
  font-weight: 500;
79
  text-transform: uppercase;
@@ -82,7 +92,8 @@
82
  text-align: center;
83
  }
84
 
85
- .wis-section-intro .container p {
 
86
  margin-bottom: 1.6em;
87
  color: #fffcfc;
88
  font-family: "Arial", Sans-serif;
@@ -91,24 +102,29 @@
91
  letter-spacing: 1.1px;
92
  }
93
 
94
- .wis-section-changelog h4 {
 
95
  font-size: 1.3333333333333rem;
96
  }
97
 
98
  .wis-section-changelog p,
99
- .wis-section-changelog ul > li {
 
100
  font-size: 15px;
101
  }
102
 
103
- .wis-section-changelog ul {
 
104
  list-style: inherit;
105
  margin-left: 40px;
106
  width: 100%;
107
  }
108
 
109
- #wpfooter {
 
110
  position: relative !important;
111
  }
 
112
  .center-section
113
  {
114
  text-align: center;
@@ -127,12 +143,22 @@
127
  <div>
128
  <h2><?php echo __( 'FEATURES', 'instagram-slider-widget' ); ?></h2>
129
  <ul>
130
- <li>Super easy to set up. Just create a widget with the necessary settings and add it anywhere on your website using shortcodes.</li>
131
- <li>Show Instagram feeds on your website without authorization. Just enter a username and see the result (make sure to check the Instagram limitations on showing feeds without authorization).</li>
132
- <li>Show Instagram feeds on your website without authorization using hashtags (make sure to check the Instagram limitations on showing feeds without authorization).</li>
133
- <li>Authorize several Instagram accounts and show multiple feeds simultaneously with no limitations.</li>
 
 
 
 
 
 
 
 
134
  <li>Fully responsive for mobile devices. Great view on any screen size and width.</li>
135
- <li>Flexible layout settings. Customize the size, the number of images and columns, image spacing and much more!</li>
 
 
136
  <li>Show thumbnails, medium or full-size images from your Instagram feed</li>
137
  <li>Customize the display order by date, popularity or random.</li>
138
  <li>Show or hide the account title.</li>
@@ -141,7 +167,9 @@
141
  </div>
142
  </section>
143
  <section class="wis-section-thin center-section">
144
- <iframe width="720" height="405" src="https://www.youtube.com/embed/7EQirSL0xm4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
 
145
  </section>
146
  <section class="wis-section wis-section-changelog">
147
  <div class="container">
@@ -149,10 +177,19 @@
149
  <h2><?php echo __( 'BENEFITS', 'instagram-slider-widget' ); ?></h2>
150
  <ul>
151
  <li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
152
- <li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload them on Instagram, and your website visitors will know about it instantly.</li>
153
- <li>A new way of posting news. Flexible settings for widget display templates give your content a seamless and attractive view on any website design.</li>
154
- <li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care of the rest.</li>
155
- <li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on your website; no need to authorize on Instagram or handle tokens. And you can authorize your account in one click!</li>
 
 
 
 
 
 
 
 
 
156
  </ul>
157
  </div>
158
  </div>
@@ -161,36 +198,57 @@
161
  <div class="container">
162
  <div>
163
  <h2><?php echo __( 'PRO VERSION', 'instagram-slider-widget' ); ?></h2>
164
- <p>To maintain the free version and provide prompt, effective & free support, we offer the Pro version.</p>
 
165
  <p>In the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a>, you can:</p>
166
  <ul>
167
  <li>
168
- Authorize several accounts and display multiple feeds simultaneously (fully compatible with Instagram December 11, 2018, API changes)
 
169
  <br>
170
- <div class="wis-section-img"><img width="672" height="226" src="https://cm-wp.com/wp-content/uploads/2019/11/pic1.jpg" alt=""></div>
 
 
171
  </li>
172
  <li>
173
  Display how many likes and comments each post has
174
  <br>
175
- <div class="wis-section-img"><img width="660" height="234" src="https://cm-wp.com/wp-content/uploads/2019/11/pic2.jpg" alt=""></div>
 
 
176
  </li>
177
  <li>
178
  Create carousels of posts
179
  </li>
180
  <li>
181
- Use <a href="https://cm-wp.com/instagram-slider-widget/masonry/">Masonry</a> or <a href="https://cm-wp.com/instagram-slider-widget/highlight/">Highlight</a> for feeds
 
182
  <br>
183
- <div class="wis-section-img"><img width="450" height="389" src="https://cm-wp.com/wp-content/uploads/2019/11/slider5.jpg" alt="">
184
- <img width="450" height="389" src="https://cm-wp.com/wp-content/uploads/2019/11/slider6.jpg" alt="">
 
 
 
185
  </div>
186
  </li>
187
  <li>
188
  Display captions for images and videos.
189
  <br>
190
- <div class="wis-section-img"><img width="490" height="622" src="https://cm-wp.com/wp-content/uploads/2019/11/2019-11-01_11-03-07.png" alt=""></div>
 
 
 
 
 
 
 
 
 
 
191
  </li>
192
  </ul>
193
- <p>Learn more about the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a> or watch the <a href="https://cm-wp.com/instagram-slider-widget/#demos">demo</a>.</p>
 
194
  </div>
195
  </div>
196
  </section>
@@ -198,8 +256,10 @@
198
  <div class="container">
199
  <div>
200
  <h2><?php echo __( 'FEEDBACK AND SUPPORT', 'instagram-slider-widget' ); ?></h2>
201
- <p>Our goal is to create a simple yet powerful plugin – customized and multifunctional, with prompt and helpful support.
202
- For any difficulties or questions about the setup, open a ticket on the <a href="https://cm-wp.com/support/">support</a> and get support in no time.</p>
 
 
203
  </div>
204
  </div>
205
  </section>
@@ -209,10 +269,19 @@
209
  <h2><?php echo __( 'WHY DO YOU NEED IT?', 'instagram-slider-widget' ); ?></h2>
210
  <ul>
211
  <li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
212
- <li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload them on Instagram, and your website visitors will know about it instantly.</li>
213
- <li>A new way of posting news. Flexible settings for widget display templates give your content a seamless and attractive view on any website design.</li>
214
- <li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care of the rest.</li>
215
- <li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on your website; no need to authorize on Instagram or handle tokens. And you can authorize your account in one click!</li>
 
 
 
 
 
 
 
 
 
216
  <li>Great user support.</li>
217
  </ul>
218
  </div>
1
  <style>
2
+ .wis-section-wrapper
3
+ {
4
  width: auto;
5
  margin-top: 10px;
6
  margin-right: 15px;
7
  }
8
 
9
+ .wis-section
10
+ {
11
  padding: 20px 29px 0px 29px;
12
  }
13
 
15
  {
16
  width: 100%;
17
  }
18
+
19
  .wis-section-thin
20
  {
21
  padding: 5px 0px 5px 0px;
22
  }
23
+
24
  .wis-section-thin .subheader
25
  {
26
  font-style: italic;
27
  }
28
+
29
  .wis-section-wrapper h1
30
  {
31
  text-transform: uppercase;
32
  color: whitesmoke;
33
  }
34
+
35
  .wis-section-wrapper h2
36
  {
37
  text-transform: uppercase;
43
  border-radius: 10px;
44
  margin: 10px 0px 0px 10px;
45
  }
46
+
47
  .wis-section-img
48
  {
49
  text-align: center;
51
 
52
  .black-background
53
  {
54
+ background-color: rgba(0, 0, 0, 0.8);
55
  color: whitesmoke;
56
  }
57
 
58
+ .wis-section
59
+ {
60
  display: -webkit-box;
61
  display: -webkit-flex;
62
  display: -ms-flexbox;
72
  align-items: center;
73
  }
74
 
75
+ .wis-section-intro
76
+ {
77
  background-image: url('<?php echo WIS_PLUGIN_URL;?>/admin/assets/img/fon.jpg');
78
  background-position: bottom center;
79
  background-size: cover;
82
  text-align: center;
83
  }
84
 
85
+ .wis-section-intro .container h2
86
+ {
87
  font-size: 61px;
88
  font-weight: 500;
89
  text-transform: uppercase;
92
  text-align: center;
93
  }
94
 
95
+ .wis-section-intro .container p
96
+ {
97
  margin-bottom: 1.6em;
98
  color: #fffcfc;
99
  font-family: "Arial", Sans-serif;
102
  letter-spacing: 1.1px;
103
  }
104
 
105
+ .wis-section-changelog h4
106
+ {
107
  font-size: 1.3333333333333rem;
108
  }
109
 
110
  .wis-section-changelog p,
111
+ .wis-section-changelog ul > li
112
+ {
113
  font-size: 15px;
114
  }
115
 
116
+ .wis-section-changelog ul
117
+ {
118
  list-style: inherit;
119
  margin-left: 40px;
120
  width: 100%;
121
  }
122
 
123
+ #wpfooter
124
+ {
125
  position: relative !important;
126
  }
127
+
128
  .center-section
129
  {
130
  text-align: center;
143
  <div>
144
  <h2><?php echo __( 'FEATURES', 'instagram-slider-widget' ); ?></h2>
145
  <ul>
146
+ <li>Super easy to set up. Just create a widget with the necessary settings and add it anywhere on
147
+ your website using shortcodes.
148
+ </li>
149
+ <li>Show Instagram feeds on your website without authorization. Just enter a username and see the
150
+ result (make sure to check the Instagram limitations on showing feeds without authorization).
151
+ </li>
152
+ <li>Show Instagram feeds on your website without authorization using hashtags (make sure to check
153
+ the Instagram limitations on showing feeds without authorization).
154
+ </li>
155
+ <li>Authorize several Instagram accounts and show multiple feeds simultaneously with no
156
+ limitations.
157
+ </li>
158
  <li>Fully responsive for mobile devices. Great view on any screen size and width.</li>
159
+ <li>Flexible layout settings. Customize the size, the number of images and columns, image spacing
160
+ and much more!
161
+ </li>
162
  <li>Show thumbnails, medium or full-size images from your Instagram feed</li>
163
  <li>Customize the display order by date, popularity or random.</li>
164
  <li>Show or hide the account title.</li>
167
  </div>
168
  </section>
169
  <section class="wis-section-thin center-section">
170
+ <iframe width="720" height="405" src="https://www.youtube.com/embed/7EQirSL0xm4" frameborder="0"
171
+ allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
172
+ allowfullscreen></iframe>
173
  </section>
174
  <section class="wis-section wis-section-changelog">
175
  <div class="container">
177
  <h2><?php echo __( 'BENEFITS', 'instagram-slider-widget' ); ?></h2>
178
  <ul>
179
  <li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
180
+ <li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload
181
+ them on Instagram, and your website visitors will know about it instantly.
182
+ </li>
183
+ <li>A new way of posting news. Flexible settings for widget display templates give your content a
184
+ seamless and attractive view on any website design.
185
+ </li>
186
+ <li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care
187
+ of the rest.
188
+ </li>
189
+ <li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on
190
+ your website; no need to authorize on Instagram or handle tokens. And you can authorize your
191
+ account in one click!
192
+ </li>
193
  </ul>
194
  </div>
195
  </div>
198
  <div class="container">
199
  <div>
200
  <h2><?php echo __( 'PRO VERSION', 'instagram-slider-widget' ); ?></h2>
201
+ <p>To maintain the free version and provide prompt, effective & free support, we offer the Pro
202
+ version.</p>
203
  <p>In the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a>, you can:</p>
204
  <ul>
205
  <li>
206
+ Authorize several accounts and display multiple feeds simultaneously (fully compatible with
207
+ Instagram December 11, 2018, API changes)
208
  <br>
209
+ <div class="wis-section-img"><img width="672" height="226"
210
+ src="https://cm-wp.com/wp-content/uploads/2019/11/pic1.jpg"
211
+ alt=""></div>
212
  </li>
213
  <li>
214
  Display how many likes and comments each post has
215
  <br>
216
+ <div class="wis-section-img"><img width="660" height="234"
217
+ src="https://cm-wp.com/wp-content/uploads/2019/11/pic2.jpg"
218
+ alt=""></div>
219
  </li>
220
  <li>
221
  Create carousels of posts
222
  </li>
223
  <li>
224
+ Use <a href="https://cm-wp.com/instagram-slider-widget/masonry/">Masonry</a> or <a
225
+ href="https://cm-wp.com/instagram-slider-widget/highlight/">Highlight</a> for feeds
226
  <br>
227
+ <div class="wis-section-img"><img width="450" height="389"
228
+ src="https://cm-wp.com/wp-content/uploads/2019/11/slider5.jpg"
229
+ alt="">
230
+ <img width="450" height="389" src="https://cm-wp.com/wp-content/uploads/2019/11/slider6.jpg"
231
+ alt="">
232
  </div>
233
  </li>
234
  <li>
235
  Display captions for images and videos.
236
  <br>
237
+ <div class="wis-section-img"><img width="490" height="622"
238
+ src="https://cm-wp.com/wp-content/uploads/2019/11/2019-11-01_11-03-07.png"
239
+ alt=""></div>
240
+ </li>
241
+ <li>
242
+ View the photos and videos from your feed in a beautiful pop-up lightbox which allows users to
243
+ experience your content without leaving your site.
244
+ <br>
245
+ <div class="wis-section-img"><img width="660" height="454"
246
+ src="https://cm-wp.com/wp-content/uploads/2019/12/2019-12-09_12-34-33.png"
247
+ alt=""></div>
248
  </li>
249
  </ul>
250
+ <p>Learn more about the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a> or watch
251
+ the <a href="https://cm-wp.com/instagram-slider-widget/#demos">demo</a>.</p>
252
  </div>
253
  </div>
254
  </section>
256
  <div class="container">
257
  <div>
258
  <h2><?php echo __( 'FEEDBACK AND SUPPORT', 'instagram-slider-widget' ); ?></h2>
259
+ <p>Our goal is to create a simple yet powerful plugin – customized and multifunctional, with prompt and
260
+ helpful support.
261
+ For any difficulties or questions about the setup, open a ticket on the <a
262
+ href="https://cm-wp.com/support/">support</a> and get support in no time.</p>
263
  </div>
264
  </div>
265
  </section>
269
  <h2><?php echo __( 'WHY DO YOU NEED IT?', 'instagram-slider-widget' ); ?></h2>
270
  <ul>
271
  <li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
272
+ <li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload
273
+ them on Instagram, and your website visitors will know about it instantly.
274
+ </li>
275
+ <li>A new way of posting news. Flexible settings for widget display templates give your content a
276
+ seamless and attractive view on any website design.
277
+ </li>
278
+ <li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care
279
+ of the rest.
280
+ </li>
281
+ <li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on
282
+ your website; no need to authorize on Instagram or handle tokens. And you can authorize your
283
+ account in one click!
284
+ </li>
285
  <li>Great user support.</li>
286
  </ul>
287
  </div>
admin/views/tab-addon_licenses.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*use WBCR\Titan\Plugin;*/
4
+
5
+ if( is_array($data) ) {
6
+ extract($data);
7
+ }
8
+ /**
9
+ * @var array $components
10
+ */
11
+ ?>
12
+ <div class="wbcr-factory-page-group-header"><?php
13
+
14
+ _e('<strong>Plugin Components</strong>.', 'titan-security') ?>
15
+ <p>
16
+ <?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'titan-security') ?>
17
+ </p>
18
+ </div>
19
+ <div class="wbcr-clearfy-components">
20
+ <?php foreach((array)$components as $component): ?>
21
+ <?php
22
+
23
+ $component_const = $component['component_const'];
24
+
25
+ $is_active_component = defined($component_const);
26
+
27
+ $slug = $component['name'];
28
+
29
+ if( $component['type'] == 'wordpress' ) {
30
+ $slug = $component['base_path'];
31
+ }
32
+
33
+ ?>
34
+
35
+ <div class="plugin-card">
36
+ <div class="plugin-card-top">
37
+ <div class="name column-name">
38
+ <h3>
39
+ <a href="<?php echo esc_url($component['url']) ?>" class="open-plugin-details-modal">
40
+ <?php echo esc_html($component['title']) ?>
41
+ <img src="<?php echo esc_attr($component['icon']) ?>" class="plugin-icon"
42
+ alt="<?php echo esc_attr($component['title']) ?>">
43
+ </a>
44
+ </h3>
45
+ </div>
46
+ <div class="desc column-description">
47
+ <p><?php echo esc_html($component['description']); ?></p>
48
+ </div>
49
+ </div>
50
+ <div class="plugin-card-bottom">
51
+ <?php if($is_active_component) : ?>
52
+ <a href="<?php echo esc_url($component['settings_url']) ?>"
53
+ class="button button-primary settings-button"><?php _e('Settings', 'instagram-slider-widget'); ?></a>
54
+ <?php else: ?>
55
+ <?php if( 'premium' === $component['build'] && !(WIS_Plugin::app()->premium->is_activate() && WIS_Plugin::app()->premium->is_install_package()) ): ?>
56
+ <a target="_blank" href="<?php echo esc_url($component['url']) ?>"
57
+ class="button button-default read-more"><?php _e('Read more', 'instagram-slider-widget'); ?></a>
58
+ <?php else: ?>
59
+ <a target="_blank" href="<?php echo esc_url($component['url']) ?>"
60
+ class="button button-default install-now"><?php _e('Install', 'instagram-slider-widget'); ?></a>
61
+ <?php endif; ?>
62
+ <?php endif; ?>
63
+ </div>
64
+ </div>
65
+ <?php endforeach; ?>
66
+ <div class="clearfix"></div>
67
+ </div>
68
+
69
+
admin/views/tab-components.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*use WBCR\Titan\Plugin;*/
4
+
5
+ if( is_array($data) ) {
6
+ extract($data);
7
+ }
8
+ /**
9
+ * @var array $components
10
+ */
11
+ ?>
12
+ <div class="wbcr-factory-page-group-header"><?php
13
+
14
+ _e('<strong>Plugin Components</strong>.', 'titan-security') ?>
15
+ <p>
16
+ <?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'titan-security') ?>
17
+ </p>
18
+ </div>
19
+ <div class="wbcr-clearfy-components">
20
+ <?php foreach((array)$components as $component): ?>
21
+ <?php
22
+
23
+ $component_const = $component['component_const'];
24
+
25
+ $is_active_component = defined($component_const);
26
+
27
+ $slug = $component['name'];
28
+
29
+ if( $component['type'] == 'wordpress' ) {
30
+ $slug = $component['base_path'];
31
+ }
32
+
33
+ ?>
34
+
35
+ <div class="plugin-card">
36
+ <div class="plugin-card-top">
37
+ <div class="name column-name">
38
+ <h3>
39
+ <a href="<?php echo esc_url($component['url']) ?>" class="open-plugin-details-modal">
40
+ <?php echo esc_html($component['title']) ?>
41
+ <img src="<?php echo esc_attr($component['icon']) ?>" class="plugin-icon"
42
+ alt="<?php echo esc_attr($component['title']) ?>">
43
+ </a>
44
+ </h3>
45
+ </div>
46
+ <div class="desc column-description">
47
+ <p><?php echo esc_html($component['description']); ?></p>
48
+ </div>
49
+ </div>
50
+ <div class="plugin-card-bottom">
51
+ <?php if($is_active_component) : ?>
52
+ <a href="<?php echo esc_url($component['settings_url']) ?>"
53
+ class="button button-primary settings-button"><?php _e('Settings', 'instagram-slider-widget'); ?></a>
54
+ <?php else: ?>
55
+ <?php if( 'premium' === $component['build'] && !(WIS_Plugin::app()->premium->is_activate() && WIS_Plugin::app()->premium->is_install_package()) ): ?>
56
+ <a target="_blank" href="<?php echo esc_url($component['url']) ?>"
57
+ class="button button-default read-more"><?php _e('Read more', 'instagram-slider-widget'); ?></a>
58
+ <?php else: ?>
59
+ <?php WIS_Plugin::app()->get_install_component_button('wordpress', $component['slug'])->render_button(); ?>
60
+ <?php endif; ?>
61
+ <?php endif; ?>
62
+ </div>
63
+ </div>
64
+ <?php endforeach; ?>
65
+ <div class="clearfix"></div>
66
+ </div>
67
+
68
+
admin/views/tab-license.php CHANGED
@@ -1,100 +1,100 @@
1
  <div class="wrap">
2
- <div class="factory-bootstrap-423 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
- <div id="wis-license-wrapper"
5
- data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
6
- data-plugin="<?php echo get_class( $this->plugin ) ?>">
7
 
8
- <div class="factory-bootstrap-423 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
9
- id="license-manager">
10
- <div>
11
- <h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
12
  <?php echo $this->get_plan_description() ?>
13
- </div>
14
- <br>
15
 
16
- <div class="onp-container">
17
- <div class="license-details">
18
  <?php if ( $this->get_license_type() == 'free' ): ?>
19
- <a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
20
- class="purchase-premium" target="_blank" rel="noopener">
21
  <span class="btn btn-gold btn-inner-wrap">
22
  <?php printf( __( 'Upgrade to Premium', 'instagram-slider-widget' ), $this->premium->get_price() ) ?>
23
  </span>
24
- </a>
25
- <p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
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 wis-control-btn">
31
  <?php _e( 'Delete Key', 'instagram-slider-widget' ) ?>
32
- </a>
33
- <a data-action="sync" href="#"
34
- class="btn btn-default btn-small license-synchronization-button wis-control-btn">
35
  <?php _e( 'Synchronization', 'instagram-slider-widget' ) ?>
36
- </a>
37
  <?php endif; ?>
38
- <h3>
39
  <?php echo ucfirst( $this->get_plan() ); ?>
40
 
41
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
42
- <span style="font-size: 15px;">
43
  (<?php printf( __( 'Automatic renewal, every %s', '' ), esc_attr( $this->get_billing_cycle_readable() ) ); ?>
44
  )
45
  </span>
46
  <?php endif; ?>
47
- </h3>
48
  <?php if ( $this->is_premium ): ?>
49
- <div class="license-key-identity">
50
- <code><?php echo esc_attr( $this->get_hidden_license_key() ) ?></code>
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.', 'instagram-slider-widget' ) ?>
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="wis-control-btn" href="#">cancel subscription</a>', 'instagram-slider-widget' ) ?>
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.', 'instagram-slider-widget' ), '' ) ?>
65
- </p>
66
  <?php endif; ?>
67
- </div>
68
- <table class="license-params" colspacing="0" colpadding="0">
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', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?>
83
  <?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
84
- <span class="license-value-name"><?php _e( 'active sites', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?></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!', 'instagram-slider-widget' ) ?></span>
95
- <span class="license-value-name"><?php _e( 'please update the key', 'instagram-slider-widget' ) ?></span>
96
  <?php else: ?>
97
- <span class="license-value">
98
  <?php
99
  if ( $this->premium_license->is_lifetime() ) {
100
  echo 'infiniate';
@@ -104,44 +104,44 @@
104
  ?>
105
  <small> <?php _e( 'day(s)', 'instagram-slider-widget' ) ?></small>
106
  </span>
107
- <span class="license-value-name"><?php _e( 'remained', 'instagram-slider-widget' ) ?></span>
108
  <?php endif; ?>
109
- </td>
110
  <?php endif; ?>
111
- </tr>
112
- </table>
113
- </div>
114
- </div>
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:', 'instagram-slider-widget' ) ?><p>
119
  <?php else: ?>
120
- <p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'instagram-slider-widget' ) ?>
121
- <p>
122
  <?php endif; ?>
123
- <button data-action="activate" class="btn btn-default wis-control-btn"
124
- type="button"
125
- id="license-submit">
126
  <?php _e( 'Submit Key', 'instagram-slider-widget' ) ?>
127
- </button>
128
- <div class="license-key-wrap">
129
- <input type="text" id="license-key" name="licensekey" value=""
130
- class="form-control"/>
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!', 'instagram-slider-widget' ), $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.', 'instagram-slider-widget' ), $this->plugin->get_support()->get_contacts_url( true, 'license_page' ) ) ?>
139
- </p>
140
  <?php endif; ?>
141
- </form>
142
- </div>
143
- </div>
144
- </div>
145
- </div>
146
- </div>
147
  </div>
1
  <div class="wrap">
2
+ <div class="factory-bootstrap-436 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
+ <div id="wis-license-wrapper"
5
+ data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
6
+ data-plugin="<?php echo get_class( $this->plugin ) ?>">
7
 
8
+ <div class="factory-bootstrap-436 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
9
+ id="license-manager">
10
+ <div>
11
+ <h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
12
  <?php echo $this->get_plan_description() ?>
13
+ </div>
14
+ <br>
15
 
16
+ <div class="onp-container">
17
+ <div class="license-details">
18
  <?php if ( $this->get_license_type() == 'free' ): ?>
19
+ <a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
20
+ class="purchase-premium" target="_blank" rel="noopener">
21
  <span class="btn btn-gold btn-inner-wrap">
22
  <?php printf( __( 'Upgrade to Premium', 'instagram-slider-widget' ), $this->premium->get_price() ) ?>
23
  </span>
24
+ </a>
25
+ <p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
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 wis-control-btn">
31
  <?php _e( 'Delete Key', 'instagram-slider-widget' ) ?>
32
+ </a>
33
+ <a data-action="sync" href="#"
34
+ class="btn btn-default btn-small license-synchronization-button wis-control-btn">
35
  <?php _e( 'Synchronization', 'instagram-slider-widget' ) ?>
36
+ </a>
37
  <?php endif; ?>
38
+ <h3>
39
  <?php echo ucfirst( $this->get_plan() ); ?>
40
 
41
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
42
+ <span style="font-size: 15px;">
43
  (<?php printf( __( 'Automatic renewal, every %s', '' ), esc_attr( $this->get_billing_cycle_readable() ) ); ?>
44
  )
45
  </span>
46
  <?php endif; ?>
47
+ </h3>
48
  <?php if ( $this->is_premium ): ?>
49
+ <div class="license-key-identity">
50
+ <code><?php echo esc_attr( $this->get_hidden_license_key() ) ?></code>
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.', 'instagram-slider-widget' ) ?>
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="wis-control-btn" href="#">cancel subscription</a>', 'instagram-slider-widget' ) ?>
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.', 'instagram-slider-widget' ), '' ) ?>
65
+ </p>
66
  <?php endif; ?>
67
+ </div>
68
+ <table class="license-params" colspacing="0" colpadding="0">
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', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?>
83
  <?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
84
+ <span class="license-value-name"><?php _e( 'active sites', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?></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!', 'instagram-slider-widget' ) ?></span>
95
+ <span class="license-value-name"><?php _e( 'please update the key', 'instagram-slider-widget' ) ?></span>
96
  <?php else: ?>
97
+ <span class="license-value">
98
  <?php
99
  if ( $this->premium_license->is_lifetime() ) {
100
  echo 'infiniate';
104
  ?>
105
  <small> <?php _e( 'day(s)', 'instagram-slider-widget' ) ?></small>
106
  </span>
107
+ <span class="license-value-name"><?php _e( 'remained', 'instagram-slider-widget' ) ?></span>
108
  <?php endif; ?>
109
+ </td>
110
  <?php endif; ?>
111
+ </tr>
112
+ </table>
113
+ </div>
114
+ </div>
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:', 'instagram-slider-widget' ) ?><p>
119
  <?php else: ?>
120
+ <p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'instagram-slider-widget' ) ?>
121
+ <p>
122
  <?php endif; ?>
123
+ <button data-action="activate" class="btn btn-default wis-control-btn"
124
+ type="button"
125
+ id="license-submit">
126
  <?php _e( 'Submit Key', 'instagram-slider-widget' ) ?>
127
+ </button>
128
+ <div class="license-key-wrap">
129
+ <input type="text" id="license-key" name="licensekey" value=""
130
+ class="form-control"/>
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!', 'instagram-slider-widget' ), $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.', 'instagram-slider-widget' ), "https://users.freemius.com/" ) ?>
139
+ </p>
140
  <?php endif; ?>
141
+ </form>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </div>
147
  </div>
admin/views/tab-licenses.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*use WBCR\Titan\Plugin;*/
4
+
5
+ if( is_array($data) ) {
6
+ extract($data);
7
+ }
8
+ /**
9
+ * @var array $licenses
10
+ */
11
+
12
+
13
+ ?>
14
+ <div class="wbcr-factory-page-group-header"><?php
15
+
16
+ _e('<strong>Licenses</strong>.', 'titan-security') ?>
17
+ <p>
18
+ <?php _e('These are licenses for a plugin and components page.', 'titan-security') ?>
19
+ </p>
20
+ </div>
21
+ <div class="wbcr-clearfy-components">
22
+ <?php foreach((array)$licenses as $license): ?>
23
+ <div class="plugin-card">
24
+ <div class="plugin-card-top">
25
+ <div class="name column-name">
26
+ <h3>
27
+ <?= $license['title'] ?>
28
+ <img src="<?php echo esc_attr($license['icon']) ?>" class="plugin-icon"
29
+ alt="<?php echo esc_attr($license['title']) ?>">
30
+ </h3>
31
+ </div>
32
+ <div class="desc column-description">
33
+ <p><?php echo esc_html($license['description']); ?></p>
34
+ </div>
35
+ </div>
36
+ <div class="plugin-card-bottom">
37
+ <a href="<?php echo admin_url('admin.php?page=' . $license['license_url']) ?>"
38
+ class="button button-primary settings-button"><?php _e('License', 'instagram-slider-widget'); ?></a>
39
+ </div>
40
+ </div>
41
+ <?php endforeach; ?>
42
+ <div class="clearfix"></div>
43
+ </div>
44
+
45
+
admin/views/tab-settings.php CHANGED
@@ -1,101 +1,48 @@
1
  <?php
2
- global $form;
3
-
4
- $args = [
5
- "client_id" => WIS_INSTAGRAM_CLIENT_ID,
6
- "redirect_uri" => "http://instagram.cm-wp.com/?state=" . admin_url( 'admin.php?page=settings-' . WIS_Plugin::app()->getPluginName() ),
7
- "response_type" => "token",
8
- "scope" => "basic",
9
- //"hl" => "en"
10
- ];
11
- $autorize_url = "https://instagram.com/oauth/authorize/?" . http_build_query( $args );
12
-
 
 
 
 
 
 
 
 
13
  ?>
14
- <div class="wrap">
15
- <div class="factory-bootstrap-423 factory-fontawesome-000">
16
- <h3><?php _e( 'Settings', 'insert-php' ) ?></h3>
17
- <div class="row">
18
- <div class="col-md-9">
19
- <div class="row">
20
- <div class="col-md-12 wis-help-text">
21
- <p><?php
22
- echo __( 'Without authorization Instagram limits the number of requests, and after exceeding the limit asks to log in, so an error is displayed that no images were found.', 'instagram-slider-widget' ); ?>
23
- </p>
24
- </div>
25
- </div>
26
- <?php $accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles', array() ); ?>
27
- <div class="row">
28
- <div class="col-md-12">
29
- <div id="wis-add-account-button" class="">
30
- <?php
31
- if ( count( $accounts ) && !WIS_Plugin::app()->is_premium()) : ?>
32
- <span class="wis-btn-instagram-account btn-instagram-account-disabled">
33
- <?php _e('Add Account','instagram-slider-widget')?></span>
34
- <span class="instagram-account-pro"><?php echo sprintf( __( "More accounts in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), WIS_Plugin::app()->get_support()->get_pricing_url(true, "wis_settings") );?></span>
35
- <?php else: ?>
36
- <a class="wis-btn-instagram-account" target="_self" href="<?php echo $autorize_url; ?>" title="Add Account">
37
- <?php _e('Add Account','instagram-slider-widget')?></a>
38
- <?php endif; ?>
39
- <span style="float: none; margin-top: 0;" class="spinner" id="wis-spinner"> </span>
40
- </div>
41
- <div class="wis-help-text"><?php echo sprintf( __( "After adding an account, go to the <a href='%s'>widget settings</a> and change the \"Search Instagram for\" setting to Account", 'instagram-slider-widget' ), admin_url('widgets.php')) ?></div>
42
- <?php
43
- if ( count( $accounts ) ) : ?>
44
- <br>
45
- <table class="widefat wis-table">
46
- <thead>
47
- <tr>
48
- <th><?php echo __( 'Image', 'instagram-slider-widget' ); ?></th>
49
- <th><?php echo __( 'ID', 'instagram-slider-widget' ); ?></th>
50
- <th><?php echo __( 'User', 'instagram-slider-widget' ); ?></th>
51
- <th><?php echo __( 'Name', 'instagram-slider-widget' ); ?></th>
52
- <th><?php echo __( 'Token', 'instagram-slider-widget' ); ?></th>
53
- <th><?php echo __( 'Action', 'instagram-slider-widget' ); ?></th>
54
- </tr>
55
- </thead>
56
- <tbody>
57
- <?php
58
- foreach ( $accounts as $profile_info ) {
59
- ?>
60
- <tr>
61
- <td class="profile-picture">
62
- <img src="<?php echo esc_url( $profile_info['profile_picture'] ); ?>" width="30"/>
63
- </td>
64
- <td><?php echo esc_attr( $profile_info['id'] ); ?></td>
65
- <td>
66
- <a href="https://www.instagram.com/<?php echo esc_html( $profile_info['username'] ); ?>">@<?php echo esc_html( $profile_info['username'] ); ?></a>
67
- </td>
68
- <td><?php echo esc_html( $profile_info['full_name'] ); ?></td>
69
- <td>
70
- <input id="<?php echo esc_attr( $profile_info['id'] ); ?>-access-token" type="text" value="<?php echo esc_attr( $profile_info['token'] ); ?>" class="wis-text-token" readonly/>
71
- </td>
72
- <td>
73
- <a href="#" data-item_id="<?php echo esc_attr( $profile_info['id'] ); ?>" class="btn btn-danger wis-delete-account">
74
- <span class="dashicons dashicons-trash"></span><?php echo __( 'Delete', 'instagram-slider-widget' ); ?>
75
- </a>
76
- <span class="spinner" id="wis-delete-spinner"></span>
77
- </td>
78
- </tr>
79
- <?php
80
- }
81
- ?>
82
- </tbody>
83
- </table>
84
- <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
85
- <?php endif; ?>
86
- </div>
87
- </div>
88
- </div>
89
- <div class="col-md-3">
90
- <div id="wis-dashboard-widget" class="wis-right-widget">
91
- <?php
92
- if(!WIS_Plugin::app()->is_premium())
93
- {
94
- WIS_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar');
95
- }
96
- ?>
97
- </div>
98
- </div>
99
- </div>
100
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  </div>
1
  <?php
2
+ $current_url = admin_url( 'admin.php?page=settings-' . WIS_Plugin::app()->getPluginName() );
3
+ $current_tab = 'instagram';
4
+ $TABS = array(
5
+ 'instagram' => array(
6
+ 'current' => false,
7
+ 'caption' => 'Instagram',
8
+ 'icon' => 'instagram',
9
+ 'url' => $current_url . "&tab=instagram",
10
+ ),
11
+ );
12
+ if ( isset( $_GET['tab'] ) && ! empty( $_GET['tab'] ) ) {
13
+ $current_tab = htmlspecialchars( $_GET['tab'] );
14
+ $current_url .= "&tab={$current_tab}";
15
+ $TABS[ $current_tab ]['current'] = true;
16
+ } else {
17
+ $current_tab = 'instagram';
18
+ $current_url .= "&tab={$current_tab}";
19
+ $TABS[ $current_tab ]['current'] = true;
20
+ }
21
  ?>
22
+ <div class="wis-container">
23
+ <div class="wis-page-title">
24
+ <h1><?php _e( 'Settings', 'insert-php' ) ?><?php echo WIS_Plugin::app()->getPluginTitle() . " " . WIS_Plugin::app()->getPluginVersion(); ?></h1>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  </div>
26
+ <div id="tabs" class="tabs">
27
+ <nav>
28
+ <ul>
29
+ <?php
30
+ foreach ( $TABS as $key => $tab ) {
31
+ if ( $tab['current'] ) {
32
+ echo "<li class='tab-current'>";
33
+ } else {
34
+ echo "<li>";
35
+ }
36
+ echo "<a href='{$tab['url']}' class='icon-{$tab['icon']}'><span>{$tab['caption']}</span></a>";
37
+ echo "</li>";
38
+ }
39
+ ?>
40
+ </ul>
41
+ </nav>
42
+ <div class="content">
43
+ <section id="<?php echo $current_tab; ?>">
44
+ <?php include_once WIS_PLUGIN_DIR . "/admin/views/{$current_tab}.php"; ?>
45
+ </section>
46
+ </div><!-- /content -->
47
+ </div><!-- /tabs -->
48
  </div>
admin/views/tab-showcase-license.php ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="wrap">
2
+ <div class="factory-bootstrap-436 factory-fontawesome-000">
3
+ <?php wp_nonce_field( 'shopifeed_check_license' ); ?>
4
+ <div id="wis-license-wrapper"
5
+ data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
6
+ data-plugin="<?php echo get_class( $this->plugin ) ?>">
7
+
8
+ <div class="factory-bootstrap-436 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
9
+ id="license-manager">
10
+ <div>
11
+ <h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
12
+ <?php echo $this->get_plan_description() ?>
13
+ </div>
14
+ <br>
15
+
16
+ <div class="onp-container">
17
+ <div class="license-details">
18
+ <?php if ( $this->get_license_type() == 'free' ): ?>
19
+ <a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
20
+ class="purchase-premium" target="_blank" rel="noopener">
21
+ <span class="btn btn-gold btn-inner-wrap">
22
+ <?php printf( __( 'Upgrade to Premium', 'instagram-slider-widget' ), $this->premium->get_price() ) ?>
23
+ </span>
24
+ </a>
25
+ <p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
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 wis-control-btn shopifeed-control-btn">
31
+ <?php _e( 'Delete Key', 'instagram-slider-widget' ) ?>
32
+ </a>
33
+ <a data-action="sync" href="#"
34
+ class="btn btn-default btn-small license-synchronization-button wis-control-btn shopifeed-control-btn">
35
+ <?php _e( 'Synchronization', 'instagram-slider-widget' ) ?>
36
+ </a>
37
+ <?php endif; ?>
38
+ <h3>
39
+ <?php echo ucfirst( $this->get_plan() ); ?>
40
+
41
+ <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
42
+ <span style="font-size: 15px;">
43
+ (<?php printf( __( 'Automatic renewal, every %s', '' ), esc_attr( $this->get_billing_cycle_readable() ) ); ?>
44
+ )
45
+ </span>
46
+ <?php endif; ?>
47
+ </h3>
48
+ <?php if ( $this->is_premium ): ?>
49
+ <div class="license-key-identity">
50
+ <code><?php echo esc_attr( $this->get_hidden_license_key() ) ?></code>
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.', 'instagram-slider-widget' ) ?>
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="wis-control-btn" href="#">cancel subscription</a>', 'instagram-slider-widget' ) ?>
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.', 'instagram-slider-widget' ), '' ) ?>
65
+ </p>
66
+ <?php endif; ?>
67
+ </div>
68
+ <table class="license-params" colspacing="0" colpadding="0">
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', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?>
83
+ <?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
84
+ <span class="license-value-name"><?php _e( 'active sites', 'instagram-slider-widget' ) ?></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', 'instagram-slider-widget' ) ?></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!', 'instagram-slider-widget' ) ?></span>
95
+ <span class="license-value-name"><?php _e( 'please update the key', 'instagram-slider-widget' ) ?></span>
96
+ <?php else: ?>
97
+ <span class="license-value">
98
+ <?php
99
+ if ( $this->premium_license->is_lifetime() ) {
100
+ echo 'infiniate';
101
+ } else {
102
+ echo $this->get_expiration_days();
103
+ }
104
+ ?>
105
+ <small> <?php _e( 'day(s)', 'instagram-slider-widget' ) ?></small>
106
+ </span>
107
+ <span class="license-value-name"><?php _e( 'remained', 'instagram-slider-widget' ) ?></span>
108
+ <?php endif; ?>
109
+ </td>
110
+ <?php endif; ?>
111
+ </tr>
112
+ </table>
113
+ </div>
114
+ </div>
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:', 'instagram-slider-widget' ) ?><p>
119
+ <?php else: ?>
120
+ <p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'instagram-slider-widget' ) ?>
121
+ <p>
122
+ <?php endif; ?>
123
+ <button data-action="activate" class="btn btn-default wis-control-btn shopifeed-control-btn"
124
+ type="button"
125
+ id="license-submit">
126
+ <?php _e( 'Submit Key', 'instagram-slider-widget' ) ?>
127
+ </button>
128
+ <div class="license-key-wrap">
129
+ <input type="text" id="license-key" name="licensekey" value=""
130
+ class="form-control"/>
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!', 'instagram-slider-widget' ), $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.', 'instagram-slider-widget' ), "https://users.freemius.com/" ) ?>
139
+ </p>
140
+ <?php endif; ?>
141
+ </form>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </div>
admin/views/tab-widgets.php CHANGED
@@ -1,36 +1,79 @@
1
  <?php
2
- require_once ABSPATH."wp-admin/includes/widgets.php";
3
- $sidebars_widgets = wp_get_sidebars_widgets();
4
- global $wp_registered_widgets, $wp_registered_sidebars;
5
-
6
- wp_nonce_field('save-sidebar-widgets','_wpnonce_widgets');
7
- if ( !empty( $sidebars_widgets ) )
8
- {
9
- foreach ($sidebars_widgets as $key => $sidebar)
10
- {
11
- foreach ($sidebar as $widget)
12
- {
13
- if(strstr($widget, 'jr_insta_slider'))
14
- {
15
- wp_list_widget_controls($key, $wp_registered_sidebars[$key]['name']);
16
- break;
17
- }
18
- }
19
- }
20
- }
21
  ?>
22
- <style>
23
- .widget-inside
24
- {
25
- border-top: none;
26
- padding: 1px 15px 15px 15px;
27
- line-height: 1.2;
28
- }
29
- </style>
30
- <script>
31
- jQuery(document).ready(function($) {
32
- $('.widget:not([id*="jr_insta_slider"])').remove();
33
- //$('[id*="jr_insta_slider"]').before($('#jr_insta_shortcode').val())
34
- $('.sidebar-name').find('button.handlediv').remove();
35
- });
36
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+ /**
3
+ * @var string $content
4
+ * @var array $insta_widgets
5
+ * @var array $demo_widgets
6
+ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  ?>
8
+ <div class="wis-widgets-container">
9
+ <h2><?= __( 'Recommended widget templates', 'instagram-slider-widget' ); ?></h2>
10
+ <div class="wis-demo-widgets">
11
+ <?php if ( is_array( $insta_widgets ) && ! empty( $insta_widgets ) ): ?>
12
+ <div class="wis-row">
13
+ <?php foreach ( $insta_widgets as $key => $insta_widget ) {
14
+ $shortcode = "[jr_instagram id='{$key}']";
15
+ $wis_demo_pro = "";
16
+ if ( ! WIS_Plugin::app()->is_premium() && isset( $insta_widget['premium'] ) && $insta_widget['premium'] ) {
17
+ $shortcode = '';
18
+ $wis_demo_pro = "wis_demo_pro";
19
+ }
20
+ if ( isset( $insta_widget['demo'] ) && ! empty( $insta_widget['demo'] ) ) {
21
+ $demo_id = $insta_widget['demo'];
22
+ ?>
23
+ <div class="wis-col-16">
24
+ <div><p style="text-align: center;"><img
25
+ src="<?php echo WIS_PLUGIN_URL . "/admin/assets/img/demo/{$demo_id}.svg"; ?>"
26
+ alt=""></p>
27
+ </div>
28
+ <div class="wis-demo-shortcode">
29
+ <p><?= __( 'Shortcode for this widget', 'instagram-slider-widget' ); ?><span
30
+ class="<?= $wis_demo_pro; ?>"></span></p>
31
+ <input id="wis_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)"
32
+ type="text" class="wis-demo-widefat" value="<?= $shortcode; ?>"
33
+ readonly="readonly">
34
+ <p><?= $insta_widget['title']; ?></p>
35
+ </div>
36
+ </div>
37
+ <?php
38
+ }
39
+ } ?>
40
+ </div>
41
+ <?php endif; ?>
42
+ <?php
43
+ $account = $this->get_current_account();
44
+ if ( ! isset( $demo_id ) && ! empty( $account ) ) { ?>
45
+ <a class="button button-primary" href="<?php echo add_query_arg( [ 'do' => 'add_demo' ] ); ?>">Add demo
46
+ widgets</a>
47
+ <?php } else if ( ! isset( $demo_id ) && empty( $account ) ) { ?>
48
+ <a class="button button-primary" disabled="disabled" href="#">Add demo
49
+ widgets</a> <div style="display: inline-block; line-height: 30px;"><?=__( 'Add instagram account in plugin settings', 'instagram-slider-widget' );?></div>
50
+ <?php } ?>
51
+ </div>
52
+
53
+ <div class="wis-demo-widgets">
54
+ <?php echo $content; ?>
55
+ </div>
56
+
57
+ <style>
58
+ .widget-inside
59
+ {
60
+ border-top: none;
61
+ padding: 1px 15px 15px 15px;
62
+ line-height: 1.2;
63
+ }
64
+ </style>
65
+ <script>
66
+ jQuery(document).ready(function ($) {
67
+ $('.widget:not([id*="jr_insta_slider"])').remove();
68
+ //$('[id*="jr_insta_slider"]').before($('#jr_insta_shortcode').val())
69
+ $('.sidebar-name').find('button.handlediv').remove();
70
+ });
71
+ </script>
72
+
73
+ <?php
74
+ echo "<pre>";
75
+ //print_r( $demo );
76
+ //print_r( $insta_widgets );
77
+ echo "</pre>";
78
+ ?>
79
+ </div>
admin/views/youtube.php ADDED
@@ -0,0 +1 @@
 
1
+ youtube
assets/css/instag-slider.css CHANGED
@@ -1,178 +1,597 @@
1
  /* Flexislider Default Settings */
2
- .pllexislider { margin: 0; padding: 0; }
3
- .pllexislider .slides > li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping */
4
- .pllexislider .slides img {width: 100%; display: block;}
5
- .pllexislider .slides:after { display: block; clear: both; visibility: hidden; line-height: 0; height: 0;}
6
- .pllex-pauseplay span { text-transform: capitalize; }
7
- .pllexislider, .pllexislider .slides li, .pllexislider .slides > li > a { height: 100%; padding: 0 !important; background: none; margin: 0; border: none; }
8
- .pllexislider, .pllexislider .slides li:hover, .pllexislider .slides > li:hover > a { border: none; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  /* no list style */
11
- .jr-insta-thumb .no-bullet, .pllexislider .no-bullet { list-style: none; margin: 0 0 0 0; padding: 0 0 0 0; clear: both; }
 
 
 
 
 
 
12
 
13
  /* Flexi Slider Template */
14
- .pllexislider { margin: 0; position: relative; }
15
- .pllex-viewport { max-height: 2000px; -webkit-transition: all 1s ease; -moz-transition: all 1s ease; -o-transition: all 1s ease; transition: all 1s ease; }
16
- .loading .pllex-viewport { max-height: 300px; }
17
- .pllexislider .slides { zoom: 1; overflow: hidden; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  /* Control Nav */
20
- .pllexislider .pllex-control-nav { z-index:2; position: absolute; top: 10px; right: 0; padding: 0 15px; margin-right: auto; margin-left: auto }
21
- .pllexislider-overlay .pllex-control-nav { display:none; }
22
- .pllexislider .pllex-control-nav li { margin: 0 3px; display: inline-block; zoom: 1; *display: inline; }
23
- .pllexislider .pllex-control-paging li a { width: 11px; border: none; height: 11px; display: block; background: #fff; background: rgba(255,255,255,255,0.5); cursor: pointer; text-indent: -9999px; -webkit-border-radius: 20px; -moz-border-radius: 20px; -o-border-radius: 20px; border-radius: 20px; -webkit-box-shadow: inset 0 0 2px rgba(0,0,0,0.3); -moz-box-shadow: inset 0 0 2px rgba(0,0,0,0.3); -o-box-shadow: inset 0 0 2px rgba(0,0,0,0.3); box-shadow: inset 0 0 2px rgba(0,0,0,0.3); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  .pllexislider .pllex-control-paging li a:hover,
25
- .pllexislider .pllex-control-paging li a.pllex-active { background: rgba(0,0,0,0.6); -webkit-box-shadow: 0px 0px 1px 2px rgba(255,255,255,1); -moz-box-shadow: 0px 0px 1px 2px rgba(255,255,255,0.7); box-shadow: 0px 0px 1px 2px rgba(255,255,255,1);}
26
- .pllexislider .pllex-control-paging li a.pllex-active { cursor: default; }
27
- .pllexislider .pllex-control-paging {width: 100%; text-align: center}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  /* Direction Nav */
29
- .pllexislider .pllex-direction-nav { z-index:2; position: absolute; list-style:none; padding: 0; top: 7px; right: 2%; margin: 0; background-color: rgba(0,0,0, 0.6); -webkit-border-radius: 15%; -moz-border-radius: 15%; -o-border-radius: 15%; border-radius: 15%; }
30
- .pllexislider-overlay .pllex-direction-nav { display:none; }
31
- .pllexislider .pllex-direction-nav li a { line-height: normal; overflow: hidden; display: block; border: 0 }
32
- .pllexislider .pllex-direction-nav li a:focus { outline: 0 }
33
- .pllexislider .pllex-direction-nav li:first-child { float: left; margin-right: 0; border-left: 0; border-right: 1px solid gray; }
34
- .pllexislider .pllex-direction-nav li { list-style:none; float: right; margin: 0; border-right: 0; border-left: 1px solid #1e1e1e; padding: 0; border-top: 0; border-bottom: 0; }
35
- .pllexislider .pllex-direction-nav .pllex-next:before,
36
- .pllexislider .pllex-direction-nav .pllex-prev:before { font-family: Arial,Helvetica,sans-serif; display: inline-block; padding: 0 4px 1px; speak: none; color: #fff; font-size: 18px; text-shadow: 0 2px 0 rgba(0, 0, 0, 1); }
37
- .pllexislider .pllex-direction-nav .pllex-next:before { content: '\25BA'; }
38
- .pllexislider .pllex-direction-nav .pllex-prev:before { content: '\25C4'; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  /* Slider Normal */
41
- .pllexislider-normal ul li .jr-insta-datacontainer { margin-top:5px; margin-bottom: 5px; display: block; }
42
- .pllexislider-normal ul li .jr-insta-datacontainer .jr-insta-username { text-decoration: none; display: inline-block; }
43
- .pllexislider-normal ul li .jr-insta-datacontainer .jr-insta-time { float: right; display: inline-block; text-align: right; }
44
- .pllexislider-normal ul li .jr-insta-datacontainer .jr-insta-caption { line-height: normal; margin-top: 5px; margin-bottom: 5px; display: block; clear : both }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  /* Slider Overlay */
47
- .pllexislider-overlay a { color: #ffffff; text-decoration: none; }
48
- .pllexislider-overlay ul li .jr-insta-wrap { position: relative; color: #FFF; line-height: normal; }
49
- .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer { position: absolute; display: none; left: 0; bottom: 0; width: 100%; text-shadow: 0 0 5px rgba(0,0,0,0.7); background: rgba(0,0,0,0.4); padding: 5px 15px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
50
- .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer .jr-insta-username a { color: #FFF !important; text-decoration: none; font-weight: bold; }
51
- .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer .jr-insta-time { float:right; text-align: right; }
52
- .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer .jr-insta-caption { line-height: normal; color: #FFF; margin-top: 5px; margin-bottom: 5px; display: block; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  /* Thumbnails Template */
55
- .jr-insta-thumb ul.thumbnails { list-style: none; font-size: 0; margin-left: -2.5%; }
56
- .jr-insta-thumb ul.thumbnails.no-border { margin-left: 0; }
57
- .jr-insta-thumb ul.thumbnails li { display: inline-block; padding: 0; margin: 0 0 2.5% 2.5%; background: none; border: 0; vertical-align: top; box-shadow: none; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; }
58
- .jr-insta-thumb ul.thumbnails.no-border li { margin: 0; }
59
- .jr-insta-thumb ul.thumbnails li img { max-width: 100% !important; height: auto !important; margin: 0 !important; border: 0 !important; vertical-align: top; }
60
- .jr-insta-thumb ul.thumbnails li a { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; }
61
-
62
- .jr-insta-thumb ul.thumbnails.jr_col_1 li { width: 97.5% !important; } /* this value + 2.5 should = 100% */
63
- .jr-insta-thumb ul.thumbnails.jr_col_2 li { width: 47.5% !important; } /* this value + 2.5 should = 50% */
64
- .jr-insta-thumb ul.thumbnails.jr_col_3 li { width: 30.83% !important; } /* this value + 2.5 should = 33% */
65
- .jr-insta-thumb ul.thumbnails.jr_col_4 li { width: 22.5% !important; } /* this value + 2.5 should = 25% */
66
- .jr-insta-thumb ul.thumbnails.jr_col_5 li { width: 17.5% !important; } /* this value + 2.5 should = 20% */
67
- .jr-insta-thumb ul.thumbnails.jr_col_6 li { width: 14.17% !important; } /* this value + 2.5 should = 16.66% */
68
- .jr-insta-thumb ul.thumbnails.jr_col_7 li { width: 11.78% !important; } /* this value + 2.5 should = 14.28% */
69
- .jr-insta-thumb ul.thumbnails.jr_col_8 li { width: 10% !important; } /* this value + 2.5 should = 12.5% */
70
- .jr-insta-thumb ul.thumbnails.jr_col_9 li { width: 8.61% !important; } /* this value + 2.5 should = 11.11% */
71
- .jr-insta-thumb ul.thumbnails.jr_col_10 li { width: 7.5% !important; } /* this value + 2.5 should = 10% */
72
-
73
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_1 li { width: 100% !important; }
74
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_2 li { width: 50% !important; }
75
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_3 li { width: 33.33% !important; }
76
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_4 li { width: 25% !important; }
77
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_5 li { width: 20% !important; }
78
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_6 li { width: 16.66% !important; }
79
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_7 li { width: 14.28% !important; }
80
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_8 li { width: 12.5% !important; }
81
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_9 li { width: 11.11% !important; }
82
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_10 li { width: 10% !important; }
83
-
84
- @media all and (max-width: 640px){
85
- /* Make 3-6 cols into 2 col */
86
- .jr-insta-thumb ul.thumbnails.jr_col_3 li,
87
- .jr-insta-thumb ul.thumbnails.jr_col_4 li,
88
- .jr-insta-thumb ul.thumbnails.jr_col_5 li,
89
- .jr-insta-thumb ul.thumbnails.jr_col_6 li{
90
- width: 47.5% !important;;
91
- }
92
- /* Make 7-10 cols into 4 col */
93
- .jr-insta-thumb ul.thumbnails.jr_col_7 li,
94
- .jr-insta-thumb ul.thumbnails.jr_col_8 li,
95
- .jr-insta-thumb ul.thumbnails.jr_col_9 li,
96
- .jr-insta-thumb ul.thumbnails.jr_col_10 li{
97
- width: 22.5% !important;;
98
- }
99
-
100
- /* Make 3-6 cols into 2 col */
101
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_3 li,
102
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_4 li,
103
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_5 li,
104
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_6 li{
105
- width: 50% !important;;
106
- }
107
- /* Make 7-10 cols into 4 col */
108
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_7 li,
109
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_8 li,
110
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_9 li,
111
- .jr-insta-thumb ul.thumbnails.no-border.jr_col_10 li{
112
- width: 25% !important;;
113
- }
114
-
115
- }
116
- @media all and (max-width: 480px){
117
- .jr-insta-thumb ul.thumbnails li {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  width: 100% !important; /* over-ride all li styles */
119
- }
120
  }
 
121
  .graphdiv
122
  {
123
- -webkit-box-align: end;
124
- align-items: flex-end;
125
- bottom: 0;
126
- display: flex;
127
- -webkit-box-pack: start;
128
- justify-content: flex-start;
129
- left: 0;
130
- pointer-events: none;
131
- position: absolute;
132
- right: 0;
133
- top: 0;
134
  }
135
 
136
- .GraphImage{position: relative;}
137
- .GraphSidecar {position: relative;}
138
- .GraphVideo{position: relative;}
 
 
 
 
 
 
 
 
 
 
 
139
 
140
  .GraphImage:before
141
  {
142
- position: absolute;
143
- content: '';
144
- background-image: url('../in.png');
145
- background-repeat: no-repeat;
146
- background-position: -32px -32px;
147
- height: 32px;
148
- width: 32px;
149
- top: 5px;
150
- right: 0;
151
- z-index: 999999;
 
 
152
  }
 
153
  .GraphSidecar:before
154
  {
155
- position: absolute;
156
- content: '';
157
- background-image: url('../in.png');
158
- background-repeat: no-repeat;
159
- background-position: 0 0;
160
- height: 32px;
161
- width: 32px;
162
- top: 5px;
163
- right: 0;
164
- z-index: 999999;
 
165
  }
 
166
  .GraphVideo:before
167
  {
168
- position: absolute;
169
- content: '';
170
- background-image: url('../in.png');
171
- background-repeat: no-repeat;
172
- background-position: 0 -32px;
173
- height: 32px;
174
- width: 32px;
175
- top: 5px;
176
- right: 0;
177
- z-index: 999999;
 
 
 
 
 
 
178
  }
1
  /* Flexislider Default Settings */
2
+ .pllexislider
3
+ {
4
+ margin: 0;
5
+ padding: 0;
6
+ }
7
+
8
+ .pllexislider .slides > li
9
+ {
10
+ display: none;
11
+ -webkit-backface-visibility: hidden;
12
+ }
13
+
14
+ /* Hide the slides before the JS is loaded. Avoids image jumping */
15
+ .pllexislider .slides img
16
+ {
17
+ width: 100%;
18
+ display: block;
19
+ }
20
+
21
+ .pllexislider .slides:after
22
+ {
23
+ display: block;
24
+ clear: both;
25
+ visibility: hidden;
26
+ line-height: 0;
27
+ height: 0;
28
+ }
29
+
30
+ .pllex-pauseplay span
31
+ {
32
+ text-transform: capitalize;
33
+ }
34
+
35
+ .pllexislider, .pllexislider .slides li, .pllexislider .slides > li > a
36
+ {
37
+ height: 100%;
38
+ padding: 0 !important;
39
+ background: none;
40
+ margin: 0;
41
+ border: none;
42
+ }
43
+
44
+ .pllexislider, .pllexislider .slides li:hover, .pllexislider .slides > li:hover > a
45
+ {
46
+ border: none;
47
+ }
48
 
49
  /* no list style */
50
+ .jr-insta-thumb .no-bullet, .pllexislider .no-bullet
51
+ {
52
+ list-style: none;
53
+ margin: 0 0 0 0;
54
+ padding: 0 0 0 0;
55
+ clear: both;
56
+ }
57
 
58
  /* Flexi Slider Template */
59
+ .pllexislider
60
+ {
61
+ margin: 0;
62
+ position: relative;
63
+ }
64
+
65
+ .pllex-viewport
66
+ {
67
+ max-height: 2000px;
68
+ -webkit-transition: all 1s ease;
69
+ -moz-transition: all 1s ease;
70
+ -o-transition: all 1s ease;
71
+ transition: all 1s ease;
72
+ }
73
+
74
+ .loading .pllex-viewport
75
+ {
76
+ max-height: 300px;
77
+ }
78
+
79
+ .pllexislider .slides
80
+ {
81
+ zoom: 1;
82
+ overflow: hidden;
83
+ }
84
 
85
  /* Control Nav */
86
+ .pllexislider .pllex-control-nav
87
+ {
88
+ z-index: 2;
89
+ position: absolute;
90
+ top: 10px;
91
+ right: 0;
92
+ padding: 0 15px;
93
+ margin-right: auto;
94
+ margin-left: auto
95
+ }
96
+
97
+ .pllexislider-overlay .pllex-control-nav
98
+ {
99
+ display: none;
100
+ }
101
+
102
+ .pllexislider .pllex-control-nav li
103
+ {
104
+ margin: 0 3px;
105
+ display: inline-block;
106
+ zoom: 1;
107
+ *display: inline;
108
+ }
109
+
110
+ .pllexislider .pllex-control-paging li a
111
+ {
112
+ width: 11px;
113
+ border: none;
114
+ height: 11px;
115
+ display: block;
116
+ background: #fff;
117
+ background: rgba(255, 255, 255, 255, 0.5);
118
+ cursor: pointer;
119
+ text-indent: -9999px;
120
+ -webkit-border-radius: 20px;
121
+ -moz-border-radius: 20px;
122
+ -o-border-radius: 20px;
123
+ border-radius: 20px;
124
+ -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3);
125
+ -moz-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3);
126
+ -o-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3);
127
+ box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3);
128
+ }
129
+
130
  .pllexislider .pllex-control-paging li a:hover,
131
+ .pllexislider .pllex-control-paging li a.pllex-active
132
+ {
133
+ background: rgba(0, 0, 0, 0.6);
134
+ -webkit-box-shadow: 0px 0px 1px 2px rgba(255, 255, 255, 1);
135
+ -moz-box-shadow: 0px 0px 1px 2px rgba(255, 255, 255, 0.7);
136
+ box-shadow: 0px 0px 1px 2px rgba(255, 255, 255, 1);
137
+ }
138
+
139
+ .pllexislider .pllex-control-paging li a.pllex-active
140
+ {
141
+ cursor: default;
142
+ }
143
+
144
+ .pllexislider .pllex-control-paging
145
+ {
146
+ width: 100%;
147
+ text-align: center
148
+ }
149
+
150
  /* Direction Nav */
151
+ .pllexislider .pllex-direction-nav
152
+ {
153
+ z-index: 2;
154
+ position: absolute;
155
+ list-style: none;
156
+ padding: 0;
157
+ top: 7px;
158
+ right: 2%;
159
+ margin: 0;
160
+ background-color: rgba(0, 0, 0, 0.6);
161
+ -webkit-border-radius: 15%;
162
+ -moz-border-radius: 15%;
163
+ -o-border-radius: 15%;
164
+ border-radius: 15%;
165
+ }
166
+
167
+ .pllexislider-overlay .pllex-direction-nav
168
+ {
169
+ display: none;
170
+ }
171
+
172
+ .pllexislider .pllex-direction-nav li a
173
+ {
174
+ line-height: normal;
175
+ overflow: hidden;
176
+ display: block;
177
+ border: 0
178
+ }
179
+
180
+ .pllexislider .pllex-direction-nav li a:focus
181
+ {
182
+ outline: 0
183
+ }
184
+
185
+ .pllexislider .pllex-direction-nav li:first-child
186
+ {
187
+ float: left;
188
+ margin-right: 0;
189
+ border-left: 0;
190
+ border-right: 1px solid gray;
191
+ }
192
+
193
+ .pllexislider .pllex-direction-nav li
194
+ {
195
+ list-style: none;
196
+ float: right;
197
+ margin: 0;
198
+ border-right: 0;
199
+ border-left: 1px solid #1e1e1e;
200
+ padding: 0;
201
+ border-top: 0;
202
+ border-bottom: 0;
203
+ }
204
+
205
+ .pllexislider .pllex-direction-nav .pllex-next:before,
206
+ .pllexislider .pllex-direction-nav .pllex-prev:before
207
+ {
208
+ font-family: Arial, Helvetica, sans-serif;
209
+ display: inline-block;
210
+ padding: 0 4px 1px;
211
+ speak: none;
212
+ color: #fff;
213
+ font-size: 18px;
214
+ text-shadow: 0 2px 0 rgba(0, 0, 0, 1);
215
+ }
216
+
217
+ .pllexislider .pllex-direction-nav .pllex-next:before
218
+ {
219
+ content: '\25BA';
220
+ }
221
+
222
+ .pllexislider .pllex-direction-nav .pllex-prev:before
223
+ {
224
+ content: '\25C4';
225
+ }
226
 
227
  /* Slider Normal */
228
+ .pllexislider-normal ul li .jr-insta-datacontainer
229
+ {
230
+ margin-top: 5px;
231
+ margin-bottom: 5px;
232
+ display: block;
233
+ }
234
+
235
+ .pllexislider-normal ul li .jr-insta-datacontainer .jr-insta-username
236
+ {
237
+ text-decoration: none;
238
+ display: inline-block;
239
+ }
240
+
241
+ .pllexislider-normal ul li .jr-insta-datacontainer .jr-insta-time
242
+ {
243
+ float: right;
244
+ display: inline-block;
245
+ text-align: right;
246
+ }
247
+
248
+ .pllexislider-normal ul li .jr-insta-datacontainer .jr-insta-caption
249
+ {
250
+ line-height: normal;
251
+ margin-top: 5px;
252
+ margin-bottom: 5px;
253
+ display: block;
254
+ clear: both
255
+ }
256
 
257
  /* Slider Overlay */
258
+ .pllexislider-overlay a
259
+ {
260
+ color: #ffffff;
261
+ text-decoration: none;
262
+ }
263
+
264
+ .pllexislider-overlay ul li .jr-insta-wrap
265
+ {
266
+ position: relative;
267
+ color: #FFF;
268
+ line-height: normal;
269
+ }
270
+
271
+ .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer
272
+ {
273
+ position: absolute;
274
+ display: none;
275
+ left: 0;
276
+ bottom: 0;
277
+ width: 100%;
278
+ text-shadow: 0 0 5px rgba(0, 0, 0, 0.7);
279
+ background: rgba(0, 0, 0, 0.4);
280
+ padding: 5px 15px;
281
+ -moz-box-sizing: border-box;
282
+ -webkit-box-sizing: border-box;
283
+ box-sizing: border-box;
284
+ }
285
+
286
+ .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer .jr-insta-username a
287
+ {
288
+ color: #FFF !important;
289
+ text-decoration: none;
290
+ font-weight: bold;
291
+ }
292
+
293
+ .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer .jr-insta-time
294
+ {
295
+ float: right;
296
+ text-align: right;
297
+ }
298
+
299
+ .pllexislider-overlay ul li .jr-insta-wrap .jr-insta-datacontainer .jr-insta-caption
300
+ {
301
+ line-height: normal;
302
+ color: #FFF;
303
+ margin-top: 5px;
304
+ margin-bottom: 5px;
305
+ display: block;
306
+ }
307
 
308
  /* Thumbnails Template */
309
+ .jr-insta-thumb ul.thumbnails
310
+ {
311
+ list-style: none;
312
+ font-size: 0;
313
+ margin-left: -2.5%;
314
+ }
315
+
316
+ .jr-insta-thumb ul.thumbnails.no-border
317
+ {
318
+ margin-left: 0;
319
+ }
320
+
321
+ .jr-insta-thumb ul.thumbnails li
322
+ {
323
+ display: inline-block;
324
+ padding: 0;
325
+ margin: 0 0 2.5% 2.5%;
326
+ background: none;
327
+ border: 0;
328
+ vertical-align: top;
329
+ box-shadow: none;
330
+ box-sizing: border-box;
331
+ -moz-box-sizing: border-box;
332
+ -webkit-box-sizing: border-box;
333
+ }
334
+
335
+ .jr-insta-thumb ul.thumbnails.no-border li
336
+ {
337
+ margin: 0;
338
+ }
339
+
340
+ .jr-insta-thumb ul.thumbnails li img
341
+ {
342
+ max-width: 100% !important;
343
+ height: auto !important;
344
+ margin: 0 !important;
345
+ border: 0 !important;
346
+ vertical-align: top;
347
+ }
348
+
349
+ .jr-insta-thumb ul.thumbnails li a
350
+ {
351
+ margin: 0;
352
+ padding: 0;
353
+ border: 0;
354
+ font-size: 100%;
355
+ font: inherit;
356
+ vertical-align: baseline;
357
+ }
358
+
359
+ .jr-insta-thumb ul.thumbnails.jr_col_1 li
360
+ {
361
+ width: 97.5% !important;
362
+ }
363
+
364
+ /* this value + 2.5 should = 100% */
365
+ .jr-insta-thumb ul.thumbnails.jr_col_2 li
366
+ {
367
+ width: 47.5% !important;
368
+ }
369
+
370
+ /* this value + 2.5 should = 50% */
371
+ .jr-insta-thumb ul.thumbnails.jr_col_3 li
372
+ {
373
+ width: 30.83% !important;
374
+ }
375
+
376
+ /* this value + 2.5 should = 33% */
377
+ .jr-insta-thumb ul.thumbnails.jr_col_4 li
378
+ {
379
+ width: 22.5% !important;
380
+ }
381
+
382
+ /* this value + 2.5 should = 25% */
383
+ .jr-insta-thumb ul.thumbnails.jr_col_5 li
384
+ {
385
+ width: 17.5% !important;
386
+ }
387
+
388
+ /* this value + 2.5 should = 20% */
389
+ .jr-insta-thumb ul.thumbnails.jr_col_6 li
390
+ {
391
+ width: 14.17% !important;
392
+ }
393
+
394
+ /* this value + 2.5 should = 16.66% */
395
+ .jr-insta-thumb ul.thumbnails.jr_col_7 li
396
+ {
397
+ width: 11.78% !important;
398
+ }
399
+
400
+ /* this value + 2.5 should = 14.28% */
401
+ .jr-insta-thumb ul.thumbnails.jr_col_8 li
402
+ {
403
+ width: 10% !important;
404
+ }
405
+
406
+ /* this value + 2.5 should = 12.5% */
407
+ .jr-insta-thumb ul.thumbnails.jr_col_9 li
408
+ {
409
+ width: 8.61% !important;
410
+ }
411
+
412
+ /* this value + 2.5 should = 11.11% */
413
+ .jr-insta-thumb ul.thumbnails.jr_col_10 li
414
+ {
415
+ width: 7.5% !important;
416
+ }
417
+
418
+ /* this value + 2.5 should = 10% */
419
+
420
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_1 li
421
+ {
422
+ width: 100% !important;
423
+ }
424
+
425
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_2 li
426
+ {
427
+ width: 50% !important;
428
+ }
429
+
430
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_3 li
431
+ {
432
+ width: 33.33% !important;
433
+ }
434
+
435
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_4 li
436
+ {
437
+ width: 25% !important;
438
+ }
439
+
440
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_5 li
441
+ {
442
+ width: 20% !important;
443
+ }
444
+
445
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_6 li
446
+ {
447
+ width: 16.66% !important;
448
+ }
449
+
450
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_7 li
451
+ {
452
+ width: 14.28% !important;
453
+ }
454
+
455
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_8 li
456
+ {
457
+ width: 12.5% !important;
458
+ }
459
+
460
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_9 li
461
+ {
462
+ width: 11.11% !important;
463
+ }
464
+
465
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_10 li
466
+ {
467
+ width: 10% !important;
468
+ }
469
+
470
+ @media all and (max-width: 640px)
471
+ {
472
+ /* Make 3-6 cols into 2 col */
473
+ .jr-insta-thumb ul.thumbnails.jr_col_3 li,
474
+ .jr-insta-thumb ul.thumbnails.jr_col_4 li,
475
+ .jr-insta-thumb ul.thumbnails.jr_col_5 li,
476
+ .jr-insta-thumb ul.thumbnails.jr_col_6 li
477
+ {
478
+ width: 47.5% !important;;
479
+ }
480
+
481
+ /* Make 7-10 cols into 4 col */
482
+ .jr-insta-thumb ul.thumbnails.jr_col_7 li,
483
+ .jr-insta-thumb ul.thumbnails.jr_col_8 li,
484
+ .jr-insta-thumb ul.thumbnails.jr_col_9 li,
485
+ .jr-insta-thumb ul.thumbnails.jr_col_10 li
486
+ {
487
+ width: 22.5% !important;;
488
+ }
489
+
490
+ /* Make 3-6 cols into 2 col */
491
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_3 li,
492
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_4 li,
493
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_5 li,
494
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_6 li
495
+ {
496
+ width: 50% !important;;
497
+ }
498
+
499
+ /* Make 7-10 cols into 4 col */
500
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_7 li,
501
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_8 li,
502
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_9 li,
503
+ .jr-insta-thumb ul.thumbnails.no-border.jr_col_10 li
504
+ {
505
+ width: 25% !important;;
506
+ }
507
+
508
+ }
509
+
510
+ @media all and (max-width: 480px)
511
+ {
512
+ .jr-insta-thumb ul.thumbnails li
513
+ {
514
  width: 100% !important; /* over-ride all li styles */
515
+ }
516
  }
517
+
518
  .graphdiv
519
  {
520
+ -webkit-box-align: end;
521
+ align-items: flex-end;
522
+ bottom: 0;
523
+ display: flex;
524
+ -webkit-box-pack: start;
525
+ justify-content: flex-start;
526
+ left: 0;
527
+ pointer-events: none;
528
+ position: absolute;
529
+ right: 0;
530
+ top: 0;
531
  }
532
 
533
+ .GraphImage
534
+ {
535
+ position: relative;
536
+ }
537
+
538
+ .GraphSidecar
539
+ {
540
+ position: relative;
541
+ }
542
+
543
+ .GraphVideo
544
+ {
545
+ position: relative;
546
+ }
547
 
548
  .GraphImage:before
549
  {
550
+ position: absolute;
551
+ content: '';
552
+ background-image: url('../in.png');
553
+ background-repeat: no-repeat;
554
+ background-position: -32px -32px;
555
+ background-color: transparent !important;
556
+ height: 32px;
557
+ width: 32px;
558
+ top: 5px;
559
+ right: 0;
560
+ z-index: 1;
561
+ opacity: 0.7;
562
  }
563
+
564
  .GraphSidecar:before
565
  {
566
+ position: absolute;
567
+ content: '';
568
+ background-image: url('../in.png');
569
+ background-repeat: no-repeat;
570
+ background-position: 4px -4px;
571
+ height: 32px;
572
+ width: 32px;
573
+ top: 0px;
574
+ right: 0;
575
+ z-index: 1;
576
+ opacity: 0.7;
577
  }
578
+
579
  .GraphVideo:before
580
  {
581
+ position: absolute;
582
+ content: '';
583
+ background-image: url('../in.png');
584
+ background-repeat: no-repeat;
585
+ background-position: 3px -42px;
586
+ height: 32px;
587
+ width: 32px;
588
+ top: 3px;
589
+ right: 0;
590
+ z-index: 1;
591
+ opacity: 0.7;
592
+ }
593
+
594
+ .jr-insta-thumb
595
+ {
596
+ padding: 0 !important;
597
  }
assets/css/jr-insta.css ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* MODAL popup*/
2
+ .wis_accounts_modal
3
+ {
4
+ position: fixed;
5
+ top: 50%;
6
+ left: 50%;
7
+ transform: translate(-50%, -50%);
8
+ width: 400px;
9
+ max-width: 100%;
10
+ height: 400px;
11
+ max-height: 100%;
12
+ z-index: 1010;
13
+ display: block;
14
+ overflow-y: auto;
15
+ overflow-x: hidden;
16
+ background-color: white;
17
+ border: 1px solid #32323280;
18
+ border-radius: 10px;
19
+ -webkit-box-shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.5);
20
+ -moz-box-shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.5);
21
+ box-shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.5);
22
+ }
23
+
24
+ .wis_closed
25
+ {
26
+ display: none !important;
27
+ }
28
+
29
+ .wis_modal_content
30
+ {
31
+ position: initial;
32
+ top: 0;
33
+ left: 0;
34
+ width: auto;
35
+ height: auto;
36
+ padding: 15px 20px 15px 20px;
37
+ overflow-y: auto;
38
+ overflow-x: hidden;
39
+ }
40
+
41
+ .wis_modal_header
42
+ {
43
+ position: initial;
44
+ top: 0;
45
+ left: 0;
46
+ width: auto;
47
+ height: 20px;
48
+ padding: 15px 20px 15px 20px;
49
+ overflow: hidden;
50
+ text-align: left;
51
+ font-weight: bold;
52
+ font-size: 14px;
53
+
54
+ }
55
+
56
+ .wis_modal_overlay
57
+ {
58
+ z-index: 1000;
59
+ position: fixed;
60
+ top: 0;
61
+ left: 0;
62
+ width: 100%;
63
+ height: 100%;
64
+ background-color: rgba(0, 0, 0, 0.5);
65
+ }
66
+
67
+ .wis-overlay-spinner
68
+ {
69
+ background: url(../img/spinner.svg) no-repeat;
70
+ background-size: 100px 100px;
71
+ vertical-align: middle;
72
+ transform: translate(-50%, -50%);
73
+ left: 50%;
74
+ top: 50%;
75
+ width: 100px;
76
+ height: 100px;
77
+ position: fixed;
78
+ visibility: hidden;
79
+ z-index: 1001;
80
+ }
81
+
82
+ .is-active
83
+ {
84
+ visibility: visible !important;
85
+ }
86
+
87
+ .wis-row
88
+ {
89
+ width: 95%;
90
+ display: flex;
91
+ }
92
+
93
+ .wis-col-1
94
+ {
95
+ float: left;
96
+ width: 20%;
97
+ }
98
+
99
+ .wis-col-2
100
+ {
101
+ float: left;
102
+ width: 80%;
103
+ }
104
+
105
+ .wis-row-style
106
+ {
107
+ padding: 10px;
108
+ cursor: pointer;
109
+ }
110
+
111
+ .wis-row-style:hover
112
+ {
113
+ background-color: #dadada;
114
+ }
115
+
116
+ .wis-col1-style
117
+ {
118
+ text-align: center;
119
+ vertical-align: middle;
120
+ }
121
+
122
+ .wis-col1-style img
123
+ {
124
+ border: 1px solid #dadada;
125
+ border-radius: 10px;
126
+ vertical-align: middle;
127
+ }
128
+
129
+ .wis-col2-style
130
+ {
131
+ font-weight: bold;
132
+ font-size: 14px;
133
+ padding-left: 5px;
134
+ }
135
+
136
+ .wis-col2-style p
137
+ {
138
+ vertical-align: middle;
139
+ }
140
+
141
+ .wis-page-title
142
+ {
143
+ text-align: center;
144
+ margin: 20px 0;
145
+ height: 100px;
146
+ transform: translateY(35%);
147
+ }
148
+
149
+ .wis-page-title h1
150
+ {
151
+ vertical-align: middle;
152
+ color: white;
153
+ text-shadow: 1px 1px 1px #004769;
154
+ }
assets/css/wis-header.css CHANGED
@@ -1,57 +1,67 @@
1
- .wis-feed-header {
2
- height: 60px;
3
- overflow: hidden;
4
- display: inline-flex;
5
- margin: 0px 0px !important;
 
6
  }
7
 
8
- .wis-header-info-username {
9
- margin-bottom: -4px !important;
10
- margin-top: -4px !important;
11
- vertical-align: middle;
 
12
  }
13
 
14
- .wis-header-info {
15
- margin-left: 10px;
16
- font-size: 17px;
 
17
  }
18
 
19
- .wis-header-neg {
20
- opacity: 0;
21
- position: absolute;
22
- height: 50px;
23
- width: 50px;
24
- z-index: 999;
25
- background-color: black
 
26
  }
27
 
28
- .wis-header-neg-icon {
29
- color: white;
30
- margin-left: 12px;
31
- margin-top: 11px;
32
- font-size: 29px;
 
33
  }
34
 
35
- .wis-box{
36
- height: 50px;
 
37
  }
38
 
39
- .wis-box div {
40
- vertical-align: top;
41
- margin-top: 0;
42
- display: inline-block;
 
43
  }
44
 
45
- .wis-round {
46
- border-radius: 50px !important;
 
47
  }
48
 
49
- .wis-feed-header:hover, .wis-feed-header:hover p{
50
- cursor: pointer;
51
- text-decoration: none;
52
- color: #ed1e24;
 
53
  }
54
 
55
- .wis-feed-header:hover .wis-header-neg {
56
- opacity: 0.5;
 
57
  }
1
+ .wis-feed-header
2
+ {
3
+ height: 60px;
4
+ overflow: hidden;
5
+ display: inline-flex;
6
+ margin: 0px 0px !important;
7
  }
8
 
9
+ .wis-header-info-username
10
+ {
11
+ margin-bottom: -4px !important;
12
+ margin-top: -4px !important;
13
+ vertical-align: middle;
14
  }
15
 
16
+ .wis-header-info
17
+ {
18
+ margin-left: 10px;
19
+ font-size: 17px;
20
  }
21
 
22
+ .wis-header-neg
23
+ {
24
+ opacity: 0;
25
+ position: absolute;
26
+ height: 50px;
27
+ width: 50px;
28
+ z-index: 999;
29
+ background-color: black
30
  }
31
 
32
+ .wis-header-neg-icon
33
+ {
34
+ color: white;
35
+ margin-left: 12px;
36
+ margin-top: 11px;
37
+ font-size: 29px;
38
  }
39
 
40
+ .wis-box
41
+ {
42
+ height: 50px;
43
  }
44
 
45
+ .wis-box div
46
+ {
47
+ vertical-align: top;
48
+ margin-top: 0;
49
+ display: inline-block;
50
  }
51
 
52
+ .wis-round
53
+ {
54
+ border-radius: 50px !important;
55
  }
56
 
57
+ .wis-feed-header:hover, .wis-feed-header:hover p
58
+ {
59
+ cursor: pointer;
60
+ text-decoration: none;
61
+ color: #ed1e24;
62
  }
63
 
64
+ .wis-feed-header:hover .wis-header-neg
65
+ {
66
+ opacity: 0.5;
67
  }
assets/image.png ADDED
Binary file
assets/img/icon.png ADDED
Binary file
assets/img/spinner.svg ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
3
+ xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="128px" height="128px" viewBox="0 0 128 128"
4
+ xml:space="preserve"><g><circle cx="16" cy="64" r="16" fill="#000000" fill-opacity="1"/><circle cx="16" cy="64"
5
+ r="16"
6
+ fill="#555555"
7
+ fill-opacity="0.67"
8
+ transform="rotate(45,64,64)"/><circle
9
+ cx="16" cy="64" r="16" fill="#949494" fill-opacity="0.42" transform="rotate(90,64,64)"/><circle cx="16" cy="64"
10
+ r="16"
11
+ fill="#cccccc"
12
+ fill-opacity="0.2"
13
+ transform="rotate(135,64,64)"/><circle
14
+ cx="16" cy="64" r="16" fill="#e1e1e1" fill-opacity="0.12" transform="rotate(180,64,64)"/><circle cx="16" cy="64"
15
+ r="16"
16
+ fill="#e1e1e1"
17
+ fill-opacity="0.12"
18
+ transform="rotate(225,64,64)"/><circle
19
+ cx="16" cy="64" r="16" fill="#e1e1e1" fill-opacity="0.12" transform="rotate(270,64,64)"/><circle cx="16" cy="64"
20
+ r="16"
21
+ fill="#e1e1e1"
22
+ fill-opacity="0.12"
23
+ transform="rotate(315,64,64)"/><animateTransform
24
+ attributeName="transform" type="rotate"
25
+ values="0 64 64;315 64 64;270 64 64;225 64 64;180 64 64;135 64 64;90 64 64;45 64 64" calcMode="discrete"
26
+ dur="720ms" repeatCount="indefinite"></animateTransform></g></svg>
assets/js/jr-insta.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ (function ($) {
2
+
3
+ $(document).ready(function ($) {
4
+
5
+ }); // Document Ready
6
+
7
+ })(jQuery);
html_templates/facebook_slider_template.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /** @var array $posts data */
3
+ /** @var array $template template */
4
+ /** @var string $images_link link */
5
+ /** @var string $account account */
6
+ /** @var string $orderby order */
7
+
8
+ $account = isset( $args['account'] ) ? $args['account'] : array();
9
+ $template = isset( $args['template'] ) ? $args['template'] : '';
10
+ $images_link = isset( $args['images_link'] ) ? $args['images_link'] : '';
11
+ $posts = isset( $args['posts'] ) ? $args['posts'] : array();
12
+
13
+ foreach ( $posts as $post ) {
14
+ echo "<img src='{$post['full_picture']}' alt=''><br>";
15
+ }
html_templates/feed_header_template.php CHANGED
@@ -6,15 +6,15 @@
6
  /** @var int $followers count of account followers */
7
  /** @var string $profile_url ULR of account */
8
 
9
- $username = isset($args['username']) ? $args['username'] : '';
10
- $profile_pic_url = isset($args['profile_picture']) ? $args['profile_picture'] : '';
11
- $posts_count = isset($args['counts']['media']) ? $args['counts']['media'] : '';
12
- $followers = isset($args['counts']['followed_by']) ? $args['counts']['followed_by'] : '';
13
  $profile_url = "https://www.instagram.com/$username/";
14
  ?>
15
 
16
  <div class="wis-feed-header">
17
- <a href="<?php echo esc_url($profile_url)?>" target="_blank" style="text-decoration: none;border: 0 !important;">
18
  <div class="wis-box">
19
  <div class="wis-header-img">
20
  <div class="wis-round wis-header-neg">
@@ -24,7 +24,7 @@ $profile_url = "https://www.instagram.com/$username/";
24
  width="50" height="50">
25
  </div>
26
  <div class="wis-header-info">
27
- <p class="wis-header-info-username"><?php echo esc_html( $username )?></p>
28
  <p style="margin-top: 0; font-size: 11px">
29
  <span class="fa fa-image">&nbsp;<?php echo esc_html( $posts_count ) ?></span>&nbsp;&nbsp;
30
  <span class="fa fa-user">&nbsp;<?php echo esc_html( $followers ) ?></span>
6
  /** @var int $followers count of account followers */
7
  /** @var string $profile_url ULR of account */
8
 
9
+ $username = isset( $args['username'] ) ? $args['username'] : '';
10
+ $profile_pic_url = $args['profile_picture_url'];
11
+ $posts_count = $args['media_count'];
12
+ $followers = $args['followers_count'];
13
  $profile_url = "https://www.instagram.com/$username/";
14
  ?>
15
 
16
  <div class="wis-feed-header">
17
+ <a href="<?php echo esc_url( $profile_url ) ?>" target="_blank" style="text-decoration: none;border: 0 !important;">
18
  <div class="wis-box">
19
  <div class="wis-header-img">
20
  <div class="wis-round wis-header-neg">
24
  width="50" height="50">
25
  </div>
26
  <div class="wis-header-info">
27
+ <p class="wis-header-info-username"><?php echo esc_html( $username ) ?></p>
28
  <p style="margin-top: 0; font-size: 11px">
29
  <span class="fa fa-image">&nbsp;<?php echo esc_html( $posts_count ) ?></span>&nbsp;&nbsp;
30
  <span class="fa fa-user">&nbsp;<?php echo esc_html( $followers ) ?></span>
includes/class-wis-plugin.php CHANGED
@@ -12,12 +12,11 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  * @copyright (c) 2019 Webraftic Ltd
13
  * @version 1.0
14
  */
15
-
16
- class WIS_Plugin extends Wbcr_Factory422_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory422_Plugin
21
  */
22
  private static $app;
23
 
@@ -35,12 +34,23 @@ class WIS_Plugin extends Wbcr_Factory422_Plugin {
35
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
36
  * классам.
37
  *
38
- * @return Wbcr_Factory422_Plugin
39
  */
40
  public static function app() {
41
  return self::$app;
42
  }
43
 
 
 
 
 
 
 
 
 
 
 
 
44
  /**
45
  * Конструктор
46
  *
@@ -48,7 +58,7 @@ class WIS_Plugin extends Wbcr_Factory422_Plugin {
48
  * Подробнее о свойстве $app см. self::app()
49
  *
50
  * @param string $plugin_path
51
- * @param array $data
52
  *
53
  * @throws Exception
54
  */
@@ -66,9 +76,7 @@ class WIS_Plugin extends Wbcr_Factory422_Plugin {
66
 
67
  //Подключение файла проверки лицензии
68
  require( WIS_PLUGIN_DIR . '/admin/ajax/check-license.php' );
69
- }
70
- else
71
- {
72
  $this->front_scripts();
73
  }
74
 
@@ -87,21 +95,34 @@ class WIS_Plugin extends Wbcr_Factory422_Plugin {
87
  */
88
  private function register_pages() {
89
  require_once WIS_PLUGIN_DIR . '/admin/class-wis-page.php';
 
 
 
90
  self::app()->registerPage( 'WIS_WidgetsPage', WIS_PLUGIN_DIR . '/admin/pages/widgets.php' );
91
  self::app()->registerPage( 'WIS_SettingsPage', WIS_PLUGIN_DIR . '/admin/pages/settings.php' );
92
- self::app()->registerPage( 'WIS_LicensePage', WIS_PLUGIN_DIR . '/admin/pages/license.php' );
93
  self::app()->registerPage( 'WIS_AboutPage', WIS_PLUGIN_DIR . '/admin/pages/about.php' );
 
 
 
 
 
 
 
 
 
 
94
  }
95
 
96
  /**
97
  * Код для админки
98
  */
99
- private function admin_scripts()
100
- {
101
  // Регистрация страниц
102
  $this->register_pages();
103
 
104
- add_action( 'admin_enqueue_scripts', [$this, 'admin_enqueue_assets'] );
 
 
105
  }
106
 
107
  /**
@@ -115,24 +136,27 @@ class WIS_Plugin extends Wbcr_Factory422_Plugin {
115
  * Код для фронтенда
116
  */
117
  private function front_scripts() {
118
- add_action( 'wp_enqueue_scripts', [$this, 'enqueue_assets'] );
119
  }
120
 
121
- public function admin_enqueue_assets()
122
- {
123
- wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_URL.'/admin/assets/css/jr-insta-admin.css', array(), WIS_PLUGIN_VERSION );
124
- wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_URL.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_PLUGIN_VERSION, true );
125
- wp_localize_script('jr-insta-admin-script', 'wis', array(
126
- 'nonce' => wp_create_nonce('wis_nonce'),
127
- 'remove_account' => __('Are you sure want to delete this account?', 'instagram-slider-widget'),
128
- ));
129
- wp_enqueue_script( 'jr-tinymce-button', WIS_PLUGIN_URL.'/admin/assets/js/tinymce_button.js', array( 'jquery' ), WIS_PLUGIN_VERSION, false );
130
  $wis_shortcodes = $this->get_isw_widgets();
131
- wp_localize_script('jr-insta-admin-script', 'wis_shortcodes', $wis_shortcodes);
 
 
 
 
132
  }
133
 
134
- public function enqueue_assets()
135
- {
136
  }
137
 
138
  /**
@@ -140,16 +164,13 @@ class WIS_Plugin extends Wbcr_Factory422_Plugin {
140
  *
141
  * @return bool
142
  */
143
- public function is_premium()
144
- {
145
- if(
146
- $this->premium->is_active() &&
147
- $this->premium->is_activate()
148
- //&& is_plugin_active( "{$this->premium->get_setting('slug')}/{$this->premium->get_setting('slug')}.php" )
149
- )
150
  return true;
151
- else
152
  return false;
 
153
  }
154
 
155
  /**
@@ -157,18 +178,67 @@ class WIS_Plugin extends Wbcr_Factory422_Plugin {
157
  *
158
  * @return array
159
  */
160
- public function get_isw_widgets()
161
- {
162
  $settings = WIS_InstagramSlider::app()->get_settings();
163
- $result = array();
164
- foreach ($settings as $key => $widget)
165
- {
166
  $result[] = array(
167
  'title' => $widget['title'],
168
- 'id' => $key,
169
  );
170
  }
 
171
  return $result;
172
  }
173
 
174
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  * @copyright (c) 2019 Webraftic Ltd
13
  * @version 1.0
14
  */
15
+ class WIS_Plugin extends Wbcr_Factory436_Plugin {
 
16
 
17
  /**
18
  * @see self::app()
19
+ * @var Wbcr_Factory436_Plugin
20
  */
21
  private static $app;
22
 
34
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
35
  * классам.
36
  *
37
+ * @return Wbcr_Factory436_Plugin
38
  */
39
  public static function app() {
40
  return self::$app;
41
  }
42
 
43
+ /**
44
+ * Статический метод для быстрого доступа к классу соцсети.
45
+ *
46
+ * @param string $class
47
+ *
48
+ * @return $class
49
+ */
50
+ public static function social( $class ) {
51
+ return new $class;
52
+ }
53
+
54
  /**
55
  * Конструктор
56
  *
58
  * Подробнее о свойстве $app см. self::app()
59
  *
60
  * @param string $plugin_path
61
+ * @param array $data
62
  *
63
  * @throws Exception
64
  */
76
 
77
  //Подключение файла проверки лицензии
78
  require( WIS_PLUGIN_DIR . '/admin/ajax/check-license.php' );
79
+ } else {
 
 
80
  $this->front_scripts();
81
  }
82
 
95
  */
96
  private function register_pages() {
97
  require_once WIS_PLUGIN_DIR . '/admin/class-wis-page.php';
98
+
99
+ //$fb = new WIS_Facebook();
100
+
101
  self::app()->registerPage( 'WIS_WidgetsPage', WIS_PLUGIN_DIR . '/admin/pages/widgets.php' );
102
  self::app()->registerPage( 'WIS_SettingsPage', WIS_PLUGIN_DIR . '/admin/pages/settings.php' );
 
103
  self::app()->registerPage( 'WIS_AboutPage', WIS_PLUGIN_DIR . '/admin/pages/about.php' );
104
+ self::app()->registerPage( 'WIS_LicensePage', WIS_PLUGIN_DIR . '/admin/pages/license.php' );
105
+ self::app()->registerPage( 'WIS_ComponentsPage', WIS_PLUGIN_DIR . '/admin/pages/components.php' );
106
+
107
+ add_action('plugins_loaded', function (){
108
+ if( defined('SPFD_PLUGIN_DIR')){
109
+ self::app()->registerPage( 'WBCR\Shopifeed\Page\ShopifeedLicensePage', SPFD_PLUGIN_DIR . '/admin/pages/LicensePage.php' );
110
+ }
111
+ self::app()->registerPage( 'Licenses', WIS_PLUGIN_DIR . '/admin/pages/Licenses.php' );
112
+
113
+ }, 2);
114
  }
115
 
116
  /**
117
  * Код для админки
118
  */
119
+ private function admin_scripts() {
 
120
  // Регистрация страниц
121
  $this->register_pages();
122
 
123
+ add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_assets' ] );
124
+ add_action( 'admin_notices', [ $this, 'new_api_admin_notice' ] );
125
+ add_action( 'admin_notices', [ $this, 'check_token_admin_notice' ] );
126
  }
127
 
128
  /**
136
  * Код для фронтенда
137
  */
138
  private function front_scripts() {
139
+ add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_assets' ] );
140
  }
141
 
142
+ public function admin_enqueue_assets( $hook_suffix ) {
143
+ wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_URL . '/admin/assets/css/jr-insta-admin.css', array(), WIS_PLUGIN_VERSION );
144
+ wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_URL . '/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_PLUGIN_VERSION, true );
145
+ wp_localize_script( 'jr-insta-admin-script', 'wis', array(
146
+ 'nonce' => wp_create_nonce( 'wis_nonce' ),
147
+ 'remove_account' => __( 'Are you sure want to delete this account?', 'instagram-slider-widget' ),
148
+ ) );
149
+ wp_enqueue_script( 'jr-tinymce-button', WIS_PLUGIN_URL . '/admin/assets/js/tinymce_button.js', array( 'jquery' ), WIS_PLUGIN_VERSION, false );
 
150
  $wis_shortcodes = $this->get_isw_widgets();
151
+ wp_localize_script( 'jr-tinymce-button', 'wis_shortcodes', $wis_shortcodes );
152
+ wp_localize_script( 'jr-insta-admin-script', 'add_account_nonce', array(
153
+ 'nonce' => wp_create_nonce( "addAccountByToken" ),
154
+ ) );
155
+
156
  }
157
 
158
+ public function enqueue_assets() {
159
+ wp_enqueue_style( 'jr-insta-styles', WIS_PLUGIN_URL . '/assets/css/jr-insta.css', array(), WIS_PLUGIN_VERSION );
160
  }
161
 
162
  /**
164
  *
165
  * @return bool
166
  */
167
+ public function is_premium() {
168
+ if ( $this->premium->is_active() && $this->premium->is_activate() //&& is_plugin_active( "{$this->premium->get_setting('slug')}/{$this->premium->get_setting('slug')}.php" )
169
+ ) {
 
 
 
 
170
  return true;
171
+ } else {
172
  return false;
173
+ }
174
  }
175
 
176
  /**
178
  *
179
  * @return array
180
  */
181
+ public function get_isw_widgets() {
 
182
  $settings = WIS_InstagramSlider::app()->get_settings();
183
+ $result = array();
184
+ foreach ( $settings as $key => $widget ) {
 
185
  $result[] = array(
186
  'title' => $widget['title'],
187
+ 'id' => $key,
188
  );
189
  }
190
+
191
  return $result;
192
  }
193
 
194
+ /**
195
+ * Выводит нотис о том, что изменилось в новой версии
196
+ *
197
+ */
198
+ public function new_api_admin_notice() {
199
+ $text = "";
200
+ $accounts = $this->getOption( 'account_profiles', array() );
201
+ if ( count( $accounts ) ) {
202
+ foreach ( $accounts as $account ) {
203
+ if ( strlen( $account['token'] ) < 55 ) {
204
+ $text .= "<p><b>@" . $account['username'] . "</b></p>";
205
+ }
206
+ }
207
+ }
208
+ if ( ! empty( $text ) ) {
209
+ ?>
210
+ <div class="notice notice-info is-dismissible">
211
+ <p>
212
+ <b>Social Slider Widget:</b><br>
213
+ The plugin has moved to the new Instagram Basic Display API.<br>
214
+ To make your widgets work again, reconnect your instagram accounts in the plugin settings.
215
+ <a href="https://cm-wp.com/important-update-social-slider-widget/" class="">Read more about the
216
+ changes</a>
217
+ </p>
218
+ </div>
219
+ <?php
220
+ }
221
+ }
222
+
223
+ /**
224
+ * Выводит нотис о том, что нужно обновить токены
225
+ *
226
+ */
227
+ public function check_token_admin_notice() {
228
+ $text = "";
229
+ $accounts = $this->getOption( 'account_profiles', array() );
230
+ if ( count( $accounts ) ) {
231
+ foreach ( $accounts as $account ) {
232
+ if ( strlen( $account['token'] ) < 55 ) {
233
+ $text .= "<p><b>@" . $account['username'] . "</b></p>";
234
+ }
235
+ }
236
+ }
237
+ if ( ! empty( $text ) ) {
238
+ echo '<div class="notice notice-warning">
239
+ <p><b>Social Slider Widget:</b><br>You need to reconnect this accounts in the <a href="' . admin_url( "admin.php?page=settings-wisw&tab=instagram" ) . '">plugin settings</a>' . $text . '</p>
240
+ </div>';
241
+ }
242
+ }
243
+
244
+ }
includes/class-wis_facebook_slider.php ADDED
@@ -0,0 +1,488 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once WIS_PLUGIN_DIR . '/includes/socials/class.wis_facebook.php';
4
+
5
+ /**
6
+ * WIS_FacebookSlider Class
7
+ */
8
+ class WIS_FacebookSlider extends WP_Widget {
9
+
10
+ private static $app;
11
+
12
+ /**
13
+ * @var WIS_Plugin
14
+ */
15
+ public $WIS;
16
+
17
+ /**
18
+ * @var WIS_Facebook
19
+ */
20
+ public $FACEBOOK;
21
+
22
+ /**
23
+ * @var array
24
+ */
25
+ public $sliders;
26
+
27
+ /**
28
+ * @var array
29
+ */
30
+ public $options_linkto;
31
+
32
+ public static function app() {
33
+ return self::$app;
34
+ }
35
+
36
+ /**
37
+ * Initialize the plugin by registering widget and loading public scripts
38
+ *
39
+ */
40
+ public function __construct() {
41
+ self::$app = $this;
42
+
43
+ // Widget ID and Class Setup
44
+ parent::__construct( 'wis_facebook_slider', __( 'Social Slider - Facebook', 'instagram-slider-widget' ), array(
45
+ 'classname' => 'jr-insta-slider',
46
+ 'description' => __( 'A widget that displays a slider with Facebook posts ', 'instagram-slider-widget' )
47
+ ) );
48
+
49
+ $this->WIS = WIS_Plugin::app();
50
+ $this->FACEBOOK = WIS_Plugin::social( 'WIS_Facebook' );
51
+
52
+ $this->sliders = array(
53
+ "slider" => 'Slider - Normal',
54
+ );
55
+ $this->options_linkto = array(
56
+ "image_link" => 'Facebook post',
57
+ "image_url" => 'Facebook page',
58
+ "none" => 'None'
59
+ );
60
+
61
+ /**
62
+ * Фильтр для добавления слайдеров
63
+ */
64
+ $this->sliders = apply_filters( 'wis/facebook/sliders', $this->sliders );
65
+
66
+ /**
67
+ * Фильтр для добавления popup
68
+ */
69
+ $this->options_linkto = apply_filters( 'wis/options/link_to', $this->options_linkto );
70
+
71
+ // Shortcode
72
+ add_shortcode( 'jr_facebook', array( $this, 'shortcode' ) );
73
+
74
+ // Instgram Action to display images
75
+ add_action( 'jr_facebook', array( $this, 'facebook_images' ) );
76
+
77
+ // Enqueue Plugin Styles and scripts
78
+ add_action( 'wp_enqueue_scripts', array( $this, 'public_enqueue' ) );
79
+
80
+ // Enqueue Plugin Styles and scripts for admin pages
81
+ add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ) );
82
+ }
83
+
84
+ /**
85
+ * Register widget on widgets init
86
+ */
87
+ public static function register_widget() {
88
+ register_widget( __CLASS__ );
89
+ register_sidebar( array(
90
+ 'name' => __( 'Social Slider - Shortcode Generator', 'instagram-slider-widget' ),
91
+ 'id' => 'jr-insta-shortcodes',
92
+ 'description' => __( "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. Copy the shortocde generated at the bottom of the widget form and use it on posts or pages.", 'instagram-slider-widget' )
93
+ ) );
94
+ }
95
+
96
+ /**
97
+ * Enqueue public-facing Scripts and style sheet.
98
+ */
99
+ public function public_enqueue() {
100
+
101
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'font-awesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css' );
102
+
103
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'fb-slider', WIS_PLUGIN_URL . '/assets/css/instag-slider.css', array(), WIS_Plugin::app()->getPluginVersion() );
104
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'fb-header', WIS_PLUGIN_URL . '/assets/css/wis-header.css', array(), WIS_Plugin::app()->getPluginVersion() );
105
+
106
+ wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jquery-pllexi-slider', WIS_PLUGIN_URL . '/assets/js/jquery.flexslider-min.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), false );
107
+ //wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jr-fb', WIS_PLUGIN_URL.'/assets/js/jr-insta.js', array( ), WIS_Plugin::app()->getPluginVersion(), false );
108
+ }
109
+
110
+ /**
111
+ * Enqueue admin side scripts and styles
112
+ *
113
+ * @param string $hook
114
+ */
115
+ public function admin_enqueue( $hook ) {
116
+
117
+ if ( 'widgets.php' != $hook ) {
118
+ return;
119
+ }
120
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'fb-admin-styles', WIS_PLUGIN_DIR . '/admin/assets/css/jr-insta-admin.css', array(), WIS_Plugin::app()->getPluginVersion() );
121
+ wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'fb-admin-script', WIS_PLUGIN_DIR . '/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), true );
122
+
123
+ }
124
+
125
+ /**
126
+ * The Public view of the Widget
127
+ *
128
+ */
129
+ public function widget( $args, $instance ) {
130
+
131
+ //Our variables from the widget settings.
132
+ $title = apply_filters( 'widget_title', $instance['title'] );
133
+
134
+ echo $args['before_widget'];
135
+
136
+ // Display the widget title
137
+ if ( $title ) {
138
+ echo $args['before_title'] . $title . $args['after_title'];
139
+ }
140
+
141
+ do_action( 'jr_instagram', $instance );
142
+
143
+ echo $args['after_widget'];
144
+ }
145
+
146
+ /**
147
+ * Update the widget settings
148
+ *
149
+ * @param array $new_instance New instance values
150
+ * @param array $instance Old instance values
151
+ *
152
+ * @return array
153
+ */
154
+ public function update( $new_instance, $instance ) {
155
+
156
+ $instance['title'] = strip_tags( isset( $new_instance['title'] ) ? $new_instance['title'] : null );
157
+ $instance['account'] = isset( $new_instance['account'] ) ? $new_instance['account'] : null;
158
+ $instance['images_number'] = isset( $new_instance['images_number'] ) ? $new_instance['images_number'] : 20;
159
+ $instance['refresh_hour'] = isset( $new_instance['refresh_hour'] ) ? $new_instance['refresh_hour'] : 5;
160
+ $instance['template'] = isset( $new_instance['template'] ) ? $new_instance['template'] : 'slider';
161
+ $instance['images_link'] = isset( $new_instance['images_link'] ) ? $new_instance['images_link'] : 'image_link';
162
+ $instance['orderby'] = isset( $new_instance['orderby'] ) ? $new_instance['orderby'] : 'rand';
163
+
164
+ return $instance;
165
+ }
166
+
167
+
168
+ /**
169
+ * Widget Settings Form
170
+ *
171
+ */
172
+ public function form( $instance ) {
173
+
174
+ $accounts = WIS_Plugin::app()->getOption( WIS_FACEBOOK_ACCOUNT_PROFILES_OPTION_NAME, array() );
175
+ $sliders = $this->sliders;
176
+ $options_linkto = $this->options_linkto;
177
+
178
+ $defaults = array(
179
+ 'title' => __( 'Facebook feed', 'instagram-slider-widget' ),
180
+ 'account' => '',
181
+ 'images_number' => 20,
182
+ 'refresh_hour' => 5,
183
+ 'template' => 'slider',
184
+ 'images_link' => 'image_link',
185
+ 'orderby' => 'date-DESC',
186
+ );
187
+
188
+ $instance = wp_parse_args( (array) $instance, $defaults );
189
+
190
+ ?>
191
+ <div class="jr-container">
192
+ <p>
193
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e( 'Title:', 'instagram-slider-widget' ); ?></strong></label>
194
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>"
195
+ name="<?php echo $this->get_field_name( 'title' ); ?>"
196
+ value="<?php echo $instance['title']; ?>"/>
197
+ </p>
198
+ <p>
199
+ <label for="<?php echo $this->get_field_id( 'account' ); ?>"><strong><?php _e( 'Search Facebook for:', 'instagram-slider-widget' ); ?></strong></label>
200
+ <span class="jr-search-for-container">
201
+ <?php
202
+ if ( count( $accounts ) ) {
203
+ ?>
204
+
205
+ <select id="<?php echo $this->get_field_id( 'account' ); ?>" class="widefat"
206
+ name="<?php echo $this->get_field_name( 'account' ); ?>"><?php
207
+ foreach ( $accounts as $acc ) {
208
+ $selected = $instance['account'] == $acc['username'] ? "selected='selected'" : "";
209
+ echo "<option value='{$acc['username']}' {$selected}>{$acc['username']}</option>";
210
+ }
211
+ ?>
212
+ </select><?php
213
+ } else {
214
+ echo "<a href='" . admin_url( 'admin.php?page=settings-wisw&tab=facebook' ) . "'>" . __( 'Add account in settings', 'instagram-slider-widget' ) . "</a>";
215
+ }
216
+ ?>
217
+ </span>
218
+ </p>
219
+ <p id="img_to_show">
220
+ <label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Count of images to show:', 'instagram-slider-widget' ); ?></strong>
221
+ <input class="small-text" type="number" min="1" max=""
222
+ id="<?php echo $this->get_field_id( 'images_number' ); ?>"
223
+ name="<?php echo $this->get_field_name( 'images_number' ); ?>"
224
+ value="<?php echo $instance['images_number']; ?>"/>
225
+ <span class="jr-description">
226
+ <?php if ( ! $this->WIS->is_premium() ) {
227
+ _e( 'Maximum 20 images in free version.', 'instagram-slider-widget' );
228
+ echo " " . sprintf( __( "More in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), $this->WIS->get_support()->get_pricing_url( true, "wis_widget_settings" ) );
229
+ }
230
+ ?>
231
+ </span>
232
+ </label>
233
+ </p>
234
+ <p>
235
+ <label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'instagram-slider-widget' ); ?></strong>
236
+ <input class="small-text" type="number" min="1" max="200"
237
+ id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"
238
+ name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>"
239
+ value="<?php echo $instance['refresh_hour']; ?>"/>
240
+ <span><?php _e( 'hours', 'instagram-slider-widget' ); ?></span>
241
+ </label>
242
+ </p>
243
+ <p>
244
+ <label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'instagram-slider-widget' ); ?></strong>
245
+ <select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>"
246
+ id="<?php echo $this->get_field_id( 'template' ); ?>">
247
+ <?php
248
+ if ( count( $sliders ) ) {
249
+ foreach ( $sliders as $key => $slider ) {
250
+ $selected = ( $instance['template'] == $key ) ? "selected='selected'" : '';
251
+ echo "<option value='{$key}' {$selected}>{$slider}</option>\n";
252
+ }
253
+ }
254
+ /*if(!$this->WIS->is_premium())
255
+ {
256
+ ?>
257
+ <optgroup label="Available in PRO">
258
+ <option value='1' disabled="disabled">Slick</option>
259
+ <option value='2' disabled="disabled">Masonry</option>
260
+ <option value='3' disabled="disabled">Highlight</option>
261
+ </optgroup>
262
+ <?php
263
+ }*/ ?>
264
+ </select>
265
+ </label>
266
+ </p>
267
+ <p>
268
+ <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'instagram-slider-widget' ); ?></strong>
269
+ <select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>"
270
+ id="<?php echo $this->get_field_id( 'orderby' ); ?>">
271
+ <option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true ); ?>><?php _e( 'Date - Ascending', 'instagram-slider-widget' ); ?></option>
272
+ <option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true ); ?>><?php _e( 'Date - Descending', 'instagram-slider-widget' ); ?></option>
273
+ <option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true ); ?>><?php _e( 'Popularity - Ascending', 'instagram-slider-widget' ); ?></option>
274
+ <option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true ); ?>><?php _e( 'Popularity - Descending', 'instagram-slider-widget' ); ?></option>
275
+ <option value="rand" <?php selected( $instance['orderby'], 'rand', true ); ?>><?php _e( 'Random', 'instagram-slider-widget' ); ?></option>
276
+ </select>
277
+ </label>
278
+ </p>
279
+ <p>
280
+ <label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'instagram-slider-widget' ); ?></strong>
281
+ <select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>"
282
+ id="<?php echo $this->get_field_id( 'images_link' ); ?>">
283
+ <?php
284
+ if ( count( $options_linkto ) ) {
285
+ foreach ( $options_linkto as $key => $option ) {
286
+ $selected = selected( $instance['images_link'], $key, false );
287
+ echo "<option value='{$key}' {$selected}>{$option}</option>\n";
288
+ }
289
+ }
290
+ if ( ! $this->WIS->is_premium() ) {
291
+ ?>
292
+ <optgroup label="Available in PRO">
293
+ <option value='1' disabled="disabled">Pop Up</option>
294
+ </optgroup>
295
+ <?php
296
+ }
297
+ ?>
298
+ </select>
299
+ </label>
300
+ </p>
301
+ <p>
302
+ <label for="jr_insta_shortcode"><?php _e( 'Shortcode of this Widget:', 'instagram-slider-widget' ); ?></label>
303
+ <?php
304
+ $widget_id = preg_replace( '/[^0-9]/', '', $this->id );
305
+ if ( $widget_id != '' ) {
306
+ ?>
307
+ <input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text"
308
+ class="widefat" value="[jr_facebook id=&quot;<?php echo $widget_id ?>&quot;]"
309
+ readonly="readonly" style="border:none; color:black; font-family:monospace;">
310
+ <?php
311
+ } else {
312
+ ?>
313
+ <input id="jr_insta_shortcode" type="text" class="widefat"
314
+ value="<?php echo __( 'Click Save and refresh page', 'instagram-slider-widget' ); ?>"
315
+ readonly="readonly" style="border:none; color:black; font-family:monospace;">
316
+ <?php
317
+ }
318
+ ?>
319
+ <span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'instagram-slider-widget' ) ?></span>
320
+ </p>
321
+ </div>
322
+ <?php
323
+ }
324
+
325
+ /**
326
+ * Selected array function echoes selected if in array
327
+ *
328
+ * @param array $haystack The array to search in
329
+ * @param string $current The string value to search in array;
330
+ *
331
+ */
332
+ public function selected( $haystack, $current ) {
333
+
334
+ if ( is_array( $haystack ) && in_array( $current, $haystack ) ) {
335
+ selected( 1, 1, true );
336
+ }
337
+ }
338
+
339
+
340
+ /**
341
+ * Add shorcode function
342
+ *
343
+ * @param array $atts shortcode attributes
344
+ *
345
+ * @return mixed
346
+ */
347
+ public function shortcode( $atts ) {
348
+
349
+ $atts = shortcode_atts( array( 'id' => '' ), $atts, 'jr_facebook' );
350
+ $args = get_option( 'widget_wis_facebook_slider' );
351
+ if ( isset( $args[ $atts['id'] ] ) ) {
352
+ $args[ $atts['id'] ]['widget_id'] = $atts['id'];
353
+
354
+ return $this->display_images( $args[ $atts['id'] ] );
355
+ }
356
+
357
+ return "";
358
+ }
359
+
360
+ /**
361
+ * Echoes the Display Instagram Images method
362
+ *
363
+ * @param array $args
364
+ *
365
+ * @return void
366
+ */
367
+ public function facebook_images( $args ) {
368
+ echo $this->display_images( $args );
369
+ }
370
+
371
+ /**
372
+ * Cron Trigger Function
373
+ *
374
+ * @param [type] $username [description]
375
+ * @param [type] $refresh_hour [description]
376
+ * @param [type] $images [description]
377
+ */
378
+ public function jr_cron_trigger( $username, $refresh_hour, $images ) {
379
+ $search_for = array();
380
+ $search_for['username'] = $username;
381
+ $this->instagram_data( $search_for, $refresh_hour, $images, true );
382
+ }
383
+
384
+ /**
385
+ * Runs the query for images and returns the html
386
+ *
387
+ * @param array $args
388
+ *
389
+ * @return string
390
+ */
391
+ private function display_images( $args ) {
392
+ $account = isset( $args['account'] ) && ! empty( $args['account'] ) ? $args['account'] : false;
393
+ $images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 20;
394
+ $refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
395
+ $template = isset( $args['template'] ) ? $args['template'] : 'slider';
396
+ $orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
397
+ $images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
398
+ $widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
399
+
400
+ $images_data = $this->FACEBOOK->get_data( $account, $refresh_hour, $images_number );
401
+ $account_data = $this->FACEBOOK->getAccountByName( $account );
402
+
403
+ if ( is_array( $images_data ) && ! empty( $images_data ) ) {
404
+ if ( isset( $images_data['error'] ) ) {
405
+ return $images_data['error'];
406
+ }
407
+
408
+ if ( $orderby == 'rand' ) {
409
+ shuffle( $images_data );
410
+ } else {
411
+ $orderby = explode( '-', $orderby );
412
+ $func = $orderby[0] == 'date' ? 'sort_timestamp_' . $orderby[1] : 'sort_popularity_' . $orderby[1];
413
+ usort( $images_data, array( $this, $func ) );
414
+ }
415
+
416
+ $template_args = array(
417
+ 'account' => $account_data,
418
+ 'template' => $template,
419
+ 'images_link' => $images_link,
420
+ 'posts' => $images_data,
421
+ );
422
+
423
+ $output = "";
424
+ switch ( $template ) {
425
+ case 'slider':
426
+ $output = $this->render_layout_template( 'facebook_slider_template', $template_args );
427
+ break;
428
+ }
429
+ } else {
430
+ $output = __( 'No images found!', 'instagram-slider-widget' );
431
+ }
432
+
433
+ return $output;
434
+
435
+ }
436
+
437
+ /**
438
+ * Method renders layout template
439
+ *
440
+ * @param string $template_name Template name without ".php"
441
+ *
442
+ * @param array $args Template arguments
443
+ *
444
+ * @return false|string
445
+ */
446
+ private function render_layout_template( $template_name, $args ) {
447
+ $path = WIS_PLUGIN_DIR . "/html_templates/$template_name.php";
448
+ if ( file_exists( $path ) ) {
449
+ ob_start();
450
+ include $path;
451
+
452
+ return ob_get_clean();
453
+ } else {
454
+ return 'This template does not exist!';
455
+ }
456
+ }
457
+
458
+ /**
459
+ * Sort Function for timestamp Ascending
460
+ */
461
+ public function sort_timestamp_ASC( $a, $b ) {
462
+ return $a['timestamp'] > $b['timestamp'];
463
+ }
464
+
465
+ /**
466
+ * Sort Function for timestamp Descending
467
+ */
468
+ public function sort_timestamp_DESC( $a, $b ) {
469
+ return $a['timestamp'] < $b['timestamp'];
470
+ }
471
+
472
+ /**
473
+ * Sort Function for popularity Ascending
474
+ */
475
+ public function sort_popularity_ASC( $a, $b ) {
476
+ return $a['popularity'] > $b['popularity'];
477
+ }
478
+
479
+ /**
480
+ * Sort Function for popularity Descending
481
+ */
482
+ public function sort_popularity_DESC( $a, $b ) {
483
+ return $a['popularity'] < $b['popularity'];
484
+ }
485
+
486
+ }
487
+
488
+ ?>
includes/class-wis_instagram_slider.php CHANGED
@@ -1,20 +1,20 @@
1
  <?php
 
2
  /**
3
  * WIS_InstagramSlider Class
4
  */
5
  class WIS_InstagramSlider extends WP_Widget {
6
 
7
- private static $app;
8
- /**
9
- * Plugin version, used for cache-busting of style and script file references.
10
- *
11
- * @var string
12
- */
13
- // Потому что, разработчики будут забывать обновлять версию в этом месте.
14
  const USERNAME_URL = 'https://www.instagram.com/{username}/';
15
  const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
16
- const USERS_SELF_URL = 'https://api.instagram.com/v1/users/self/';
17
- const USERS_SELF_MEDIA_URL = 'https://api.instagram.com/v1/users/self/media/recent/';
 
 
 
 
18
 
19
  /**
20
  * @var WIS_Plugin
@@ -26,9 +26,15 @@ class WIS_InstagramSlider extends WP_Widget {
26
  */
27
  public $sliders;
28
 
 
 
 
 
 
29
  public static function app() {
30
  return self::$app;
31
  }
 
32
  /**
33
  * Initialize the plugin by registering widget and loading public scripts
34
  *
@@ -37,23 +43,34 @@ class WIS_InstagramSlider extends WP_Widget {
37
  self::$app = $this;
38
 
39
  // Widget ID and Class Setup
40
- parent::__construct( 'jr_insta_slider', __( 'Social Slider', 'instagram-slider-widget' ), array(
41
- 'classname' => 'jr-insta-slider',
42
- 'description' => __( 'A widget that displays a slider with instagram images ', 'instagram-slider-widget' )
43
- )
44
- );
45
 
46
- $this->WIS = WIS_Plugin::app();
47
- $this->sliders = array(
48
  "slider" => 'Slider - Normal',
49
  "slider-overlay" => 'Slider - Overlay Text',
50
  "thumbs" => 'Thumbnails',
51
  "thumbs-no-border" => 'Thumbnails - Without Border',
52
  );
 
 
 
 
 
 
 
53
  /**
54
  * Фильтр для добавления слайдеров
55
  */
56
- $this->sliders = apply_filters('wis/sliders', $this->sliders);
 
 
 
 
 
57
 
58
 
59
  // Shortcode
@@ -63,7 +80,7 @@ class WIS_InstagramSlider extends WP_Widget {
63
  add_action( 'jr_instagram', array( $this, 'instagram_images' ) );
64
 
65
  // Enqueue Plugin Styles and scripts
66
- add_action( 'wp_enqueue_scripts', array( $this, 'public_enqueue' ) );
67
 
68
  // Enqueue Plugin Styles and scripts for admin pages
69
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ) );
@@ -72,12 +89,12 @@ class WIS_InstagramSlider extends WP_Widget {
72
  add_action( 'wp_ajax_jr_delete_insta_dupes', array( $this, 'delete_dupes' ) );
73
 
74
  // Add new attachment field desctiptions
75
- add_filter( 'attachment_fields_to_edit', array( $this, 'insta_attachment_fields' ) , 10, 2 );
76
 
77
  // Add action for single cron events
78
- add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10 , 3 );
79
 
80
- add_action( 'wp_ajax_add_account_by_token', array( $this, 'add_account_by_token' ) );
81
 
82
  add_action( 'wp_ajax_wis_delete_account', array( $this, 'delete_account' ) );
83
 
@@ -89,11 +106,10 @@ class WIS_InstagramSlider extends WP_Widget {
89
  public static function register_widget() {
90
  register_widget( __CLASS__ );
91
  register_sidebar( array(
92
- 'name' => __( 'Social Slider - Shortcode Generator', 'instagram-slider-widget' ),
93
- 'id' => 'jr-insta-shortcodes',
94
- 'description' => __( "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. Copy the shortocde generated at the bottom of the widget form and use it on posts or pages.", 'instagram-slider-widget' )
95
- )
96
- );
97
  }
98
 
99
  /**
@@ -101,27 +117,30 @@ class WIS_InstagramSlider extends WP_Widget {
101
  */
102
  public function public_enqueue() {
103
 
104
- wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'font-awesome',
105
- 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'
106
- );
107
 
108
- wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'instag-slider', WIS_PLUGIN_URL.'/assets/css/instag-slider.css', array(), WIS_Plugin::app()->getPluginVersion() );
109
- wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jquery-pllexi-slider', WIS_PLUGIN_URL.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), false );
110
- wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'wis-header', WIS_PLUGIN_URL.'/assets/css/wis-header.css', array(), WIS_Plugin::app()->getPluginVersion() );
 
 
 
 
 
111
  }
112
 
113
  /**
114
  * Enqueue admin side scripts and styles
115
  *
116
- * @param string $hook
117
  */
118
  public function admin_enqueue( $hook ) {
119
 
120
  if ( 'widgets.php' != $hook ) {
121
  return;
122
  }
123
- wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_DIR.'/admin/assets/css/jr-insta-admin.css', array(), WIS_Plugin::app()->getPluginVersion() );
124
- wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_DIR.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), true );
125
 
126
  }
127
 
@@ -149,44 +168,59 @@ class WIS_InstagramSlider extends WP_Widget {
149
  /**
150
  * Update the widget settings
151
  *
152
- * @param array $new_instance New instance values
153
- * @param array $instance Old instance values
154
  *
155
  * @return array
156
  */
157
  public function update( $new_instance, $instance ) {
158
 
159
- $instance['title'] = strip_tags( isset($new_instance['title']) ? $new_instance['title'] : null );
160
- $instance['search_for'] = isset($new_instance['search_for']) ? $new_instance['search_for'] : null;
161
- $instance['username'] = isset($new_instance['username']) ? $new_instance['username'] : null;
162
- $instance['account'] = isset($new_instance['account']) ? $new_instance['account'] : null;
163
- $instance['hashtag'] = isset($new_instance['hashtag']) ? $new_instance['hashtag'] : null;
164
- $instance['blocked_users'] = isset($new_instance['blocked_users']) ? $new_instance['blocked_users'] : null;
165
- $instance['attachment'] = isset($new_instance['attachment']) ? $new_instance['attachment'] : null;
166
- $instance['template'] = isset($new_instance['template']) ? $new_instance['template'] : 'slider';
167
- $instance['images_link'] = isset($new_instance['images_link']) ? $new_instance['images_link'] : 'image_link';
168
- $instance['custom_url'] = isset($new_instance['custom_url']) ?$new_instance['custom_url'] : null;
169
- $instance['orderby'] = isset($new_instance['orderby']) ? $new_instance['orderby'] : 'rand';
170
- $instance['images_number'] = isset($new_instance['images_number']) ? $new_instance['images_number'] : 20;
171
- $instance['columns'] = isset($new_instance['columns']) ? $new_instance['columns'] : 4;
172
- $instance['refresh_hour'] = isset($new_instance['refresh_hour']) ? $new_instance['refresh_hour'] : 5;
173
- $instance['image_size'] = isset($new_instance['image_size']) ? $new_instance['image_size'] : 'standard';
174
- $instance['image_link_rel'] = isset($new_instance['image_link_rel']) ? $new_instance['image_link_rel'] : null;
175
- $instance['image_link_class'] = isset($new_instance['image_link_class']) ? $new_instance['image_link_class'] : null;
176
- $instance['no_pin'] = isset($new_instance['no_pin']) ? $new_instance['no_pin'] : null;
177
- $instance['controls'] = isset($new_instance['controls']) ? $new_instance['controls'] : 'prev_next';
178
- $instance['animation'] = isset($new_instance['animation']) ? $new_instance['animation'] : 'slide';
179
- $instance['caption_words'] = isset($new_instance['caption_words']) ? $new_instance['caption_words'] : 20;
180
- $instance['slidespeed'] = isset($new_instance['slidespeed']) ? $new_instance['slidespeed'] : 7000;
181
- $instance['description'] = isset($new_instance['description']) ? $new_instance['description'] : array( 'username', 'time','caption' );
182
- $instance['support_author'] = isset($new_instance['support_author']) ? $new_instance['support_author'] : null;
183
- $instance['gutter'] = isset($new_instance['gutter']) ? $new_instance['gutter'] : null;
184
- $instance['masonry_image_width'] = isset($new_instance['masonry_image_width']) ? $new_instance['masonry_image_width'] : 200;
185
- $instance['slick_slides_to_show'] = isset($new_instance['slick_slides_to_show']) ? $new_instance['slick_slides_to_show'] : 3;
186
- $instance['slick_slides_padding'] = isset($new_instance['slick_slides_padding']) ? $new_instance['slick_slides_padding'] : 0;
187
- $instance['show_feed_header'] = isset($new_instance['show_feed_header']) ? $new_instance['show_feed_header'] : 0;
188
- $instance['highlight_offset'] = isset($new_instance['highlight_offset']) ? $new_instance['highlight_offset'] : 1;
189
- $instance['highlight_pattern'] = isset($new_instance['highlight_pattern']) ? $new_instance['highlight_pattern'] : 6;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
 
191
  return $instance;
192
  }
@@ -198,42 +232,66 @@ class WIS_InstagramSlider extends WP_Widget {
198
  */
199
  public function form( $instance ) {
200
 
201
- $accounts = WIS_Plugin::app()->getOption( 'account_profiles');
202
- if(!is_array($accounts)) $accounts = array();
203
- $sliders = $this->sliders;
 
 
 
 
 
 
 
204
 
 
 
 
 
 
 
 
205
  $defaults = array(
206
- 'title' => __('Social Slider', 'instagram-slider-widget'),
207
- 'search_for' => count($accounts) ? 'account' : 'username',
208
- 'account' => '',
209
- 'username' => '',
210
- 'hashtag' => '',
211
- 'blocked_users' => '',
212
- 'attachment' => 0,
213
- 'template' => 'slider',
214
- 'images_link' => 'image_link',
215
- 'custom_url' => '',
216
- 'orderby' => 'rand',
217
- 'images_number' => 20,
218
- 'columns' => 4,
219
- 'refresh_hour' => 5,
220
- 'image_size' => 'standard',
221
- 'image_link_rel' => '',
222
- 'image_link_class' => '',
223
- 'no_pin' => 0,
224
- 'controls' => 'prev_next',
225
- 'animation' => 'slide',
226
- 'caption_words' => 20,
227
- 'slidespeed' => 7000,
228
- 'description' => array( 'username', 'time','caption' ),
229
- 'support_author' => 0,
230
- 'gutter' => 0,
231
- 'masonry_image_width' => 200,
 
 
 
 
 
 
 
232
  'slick_slides_to_show' => 3,
233
- 'slick_slides_padding' => 0,
234
- 'show_feed_header' => 1,
235
- 'highlight_offset' => 1,
236
- 'highlight_pattern' => 6,
 
 
 
237
  );
238
 
239
  $instance = wp_parse_args( (array) $instance, $defaults );
@@ -241,252 +299,466 @@ class WIS_InstagramSlider extends WP_Widget {
241
  ?>
242
  <div class="jr-container">
243
  <p>
244
- <label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e('Title:', 'instagram-slider-widget'); ?></strong></label>
245
- <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
 
 
246
  </p>
247
  <p>
248
  <strong><?php _e( 'Search Instagram for:', 'instagram-slider-widget' ); ?></strong>
249
  <span class="jr-search-for-container">
250
  <label class="jr-seach-for">
251
- <input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="account" <?php checked( 'account', $instance['search_for'] ); ?> />
 
 
252
  <?php _e( 'Account:', 'instagram-slider-widget' ); ?>
253
  </label>
254
- <?php $accounts = WIS_Plugin::app()->getOption( 'account_profiles');
255
-
256
- if(count($accounts))
257
- {?>
258
-
259
- <select id="<?php echo $this->get_field_id( 'account' ); ?>" class="" name="<?php echo $this->get_field_name( 'account' ); ?>"><?php
260
- foreach ($accounts as $acc)
261
- {
262
- $selected = $instance['account'] == $acc['username'] ? "selected='selected'" : "";
263
- echo "<option value='{$acc['username']}' {$selected}>{$acc['username']}</option>";
264
- }
265
- ?>
266
  </select><?php
 
 
267
  }
268
- else{
269
- echo "<a href='".admin_url('admin.php?page=settings-wisw')."'>".__('Add account in settings','instagram-slider-widget')."</a>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  }
271
  ?>
272
  </span>
273
- <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="username" <?php checked( 'username', $instance['search_for'] ); ?> /> <?php _e( 'Username:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'username' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'username' ); ?>" value="<?php echo $instance['username']; ?>" /></span>
274
- <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="hashtag" <?php checked( 'hashtag', $instance['search_for'] ); ?> /> <?php _e( 'Hashtag:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'hashtag' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'hashtag' ); ?>" value="<?php echo $instance['hashtag']; ?>" placeholder="<?php _e('without # sign', 'instagram-slider-widget') ?>" /></span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  </p>
276
- <p class="<?php if ( 'hashtag' != $instance['search_for'] ) echo 'hidden'; ?>">
277
- <label for="<?php echo $this->get_field_id( 'blocked_users' ); ?>"><?php _e( 'Block Users', 'instagram-slider-widget' ); ?>:</label>
278
- <input class="widefat" id="<?php echo $this->get_field_id( 'blocked_users' ); ?>" name="<?php echo $this->get_field_name( 'blocked_users' ); ?>" value="<?php echo $instance['blocked_users']; ?>" />
279
- <span class="jr-description"><?php _e( 'Enter usernames separated by commas whose images you don\'t want to show', 'instagram-slider-widget' ); ?></span>
 
 
 
 
 
280
  </p>
281
- <p class="<?php if ( 'username' != $instance['search_for'] ) echo 'hidden'; ?>"><strong><?php _e( 'Save in Media Library: ', 'instagram-slider-widget' ); ?></strong>
 
 
282
 
283
  <label class="switch" for="<?php echo $this->get_field_id( 'attachment' ); ?>">
284
- <input class="widefat" id="<?php echo $this->get_field_id( 'attachment' ); ?>" name="<?php echo $this->get_field_name( 'attachment' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['attachment'] ); ?> /><span class="slider round"></span></label>
285
- <br><span class="jr-description"><?php _e( ' Turn on to save Instagram Images into WordPress media library.', 'instagram-slider-widget') ?></span>
 
 
 
 
286
  <?php
287
- if ( isset ( $instance['username'] ) && !empty($instance['username'] ) ) {
288
- echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="'.$instance['username'].'"><strong>Remove</strong> duplicate images for <strong>'.$instance['username'].'</strong></button><span class="jr-spinner"></span>';
289
  echo '<br><br><strong><span class="deleted-dupes-info"></span></strong>';
290
  wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
291
  }
292
  ?>
293
  </p>
294
  <p id="img_to_show">
295
- <label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Count of images to show:', 'instagram-slider-widget' ); ?></strong>
296
- <input class="small-text" type="number" min="1" max="" id="<?php echo $this->get_field_id( 'images_number' ); ?>" name="<?php echo $this->get_field_name( 'images_number' ); ?>" value="<?php echo $instance['images_number']; ?>" />
 
 
 
297
  <span class="jr-description">
298
- <?php if(!$this->WIS->is_premium()) {
299
- _e( 'Maximum 20 images in free version.', 'instagram-slider-widget' );
300
- echo " ".sprintf( __( "More in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), $this->WIS->get_support()->get_pricing_url(true, "wis_widget_settings") );
301
- }
302
- ?>
303
  </span>
304
  </label>
305
  </p>
306
  <p>
307
  <label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'instagram-slider-widget' ); ?></strong>
308
- <input class="small-text" type="number" min="1" max="200" id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>" name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>" value="<?php echo $instance['refresh_hour']; ?>" />
309
- <span><?php _e('hours', 'instagram-slider-widget'); ?></span>
 
 
 
310
  </label>
311
  </p>
312
- <p>
 
 
313
  <strong><?php _e( 'Show feed header:', 'instagram-slider-widget' ); ?></strong>
314
  <label class="switch" for="<?php echo $this->get_field_id( 'show_feed_header' ); ?>">
315
- <input class="widefat" id="<?php echo $this->get_field_id( 'show_feed_header' ); ?>" name="<?php echo $this->get_field_name( 'show_feed_header' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['show_feed_header'] ); ?> />
 
 
316
  <span class="slider round"></span>
317
  </label>
318
  </p>
319
  <p>
320
  <label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'instagram-slider-widget' ); ?></strong>
321
- <select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>">
322
- <?php
323
- if(count($sliders)) {
324
- foreach ($sliders as $key => $slider) {
325
- $selected = ($instance['template'] == $key) ? "selected='selected'" : '';
326
- echo "<option value='{$key}' {$selected}>{$slider}</option>\n";
327
- }
328
- }
329
- if(!$this->WIS->is_premium())
330
- {
331
- ?>
332
  <optgroup label="Available in PRO">
333
- <option value='1' disabled="disabled">Slick</option>
334
- <option value='2' disabled="disabled">Masonry</option>
335
- <option value='3' disabled="disabled">Highlight</option>
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  </optgroup>
337
- <?php
338
  }
339
- ?>
340
  </select>
341
  </label>
342
  </p>
343
- <span id="masonry_notice" class="masonry_notice jr-description <?php if ( 'masonry' != $instance['template']) echo 'hidden'; ?>"><?php _e("Not recommended for <strong>sidebar</strong>")?></span>
344
- <p class="<?php if ( 'thumbs' != $instance['template'] && 'thumbs-no-border' != $instance['template'] ) echo 'hidden'; ?>">
345
- <label for="<?php echo $this->get_field_id( 'columns' ); ?>"><strong><?php _e( 'Number of Columns:', 'instagram-slider-widget' ); ?></strong>
346
- <input class="small-text" id="<?php echo $this->get_field_id( 'columns' ); ?>" name="<?php echo $this->get_field_name( 'columns' ); ?>" value="<?php echo $instance['columns']; ?>" />
347
- <span class='jr-description'><?php _e('max is 10 ( only for thumbnails template )', 'instagram-slider-widget'); ?></span>
 
 
 
 
 
 
 
348
  </label>
349
  </p>
350
- <p class="masonry_settings <?php if ( 'masonry' != $instance['template']) echo 'hidden'; ?>">
351
- <label for="<?php echo $this->get_field_id( 'gutter' ); ?>"><strong><?php _e( 'Vertical space between item elements:', 'instagram-slider-widget' ); ?></strong>
352
- <input class="small-text" id="<?php echo $this->get_field_id( 'gutter' ); ?>" name="<?php echo $this->get_field_name( 'gutter' ); ?>" value="<?php echo $instance['gutter']; ?>" />
353
- <span><?php _e('px', 'instagram-slider-widget'); ?></span>
 
 
 
 
354
  </label>
355
  <br>
356
- <label for="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>"><strong><?php _e( 'Image width:', 'instagram-slider-widget' ); ?></strong>
357
- <input class="small-text" id="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>" name="<?php echo $this->get_field_name( 'masonry_image_width' ); ?>" value="<?php echo $instance['masonry_image_width']; ?>" />
358
- <span><?php _e('px', 'instagram-slider-widget'); ?></span>
 
 
359
  </label>
360
  </p>
361
- <p class="slick_settings <?php if ( 'slick_slider' != $instance['template']) echo 'hidden'; ?>">
362
- <label for="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>"><strong><?php _e( 'Pictures per slide:', 'instagram-slider-widget' ); ?></strong>
363
- <input class="small-text" id="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>" name="<?php echo $this->get_field_name( 'slick_slides_to_show' ); ?>" value="<?php echo $instance['slick_slides_to_show']; ?>" />
364
- <span><?php _e('pictures', 'instagram-slider-widget'); ?></span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
365
  </label>
366
  <br>
367
  <strong><?php _e( 'Space between pictures:', 'instagram-slider-widget' ); ?></strong>
368
  <label class="switch" for="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>">
369
- <input class="widefat" id="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>" name="<?php echo $this->get_field_name( 'slick_slides_padding' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['slick_slides_padding'] ); ?> />
 
 
370
  <span class="slider round"></span>
371
  </label>
 
372
  </p>
373
- <p class="highlight_settings <?php if ( 'highlight' != $instance['template']) echo 'hidden'; ?>">
374
- <label for="<?php echo $this->get_field_id( 'highlight_offset' ); ?>"><strong><?php _e( 'Offset', 'instagram-slider-widget' ); ?></strong>
375
- <input type="number" min="1" class="small-text" id="<?php echo $this->get_field_id( 'highlight_offset' ); ?>" name="<?php echo $this->get_field_name( 'highlight_offset' ); ?>" value="<?php echo $instance['highlight_offset']; ?>" />
 
 
 
 
 
376
  </label>
377
  <br>
378
- <label for="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>"><strong><?php _e( 'Pattern', 'instagram-slider-widget' ); ?></strong>
379
- <input type="number" min="0" class="small-text" id="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>" name="<?php echo $this->get_field_name( 'highlight_pattern' ); ?>" value="<?php echo $instance['highlight_pattern']; ?>" />
 
 
 
380
  </label>
381
  </p>
382
- <p class="slider_normal_settings jr-slider-options <?php if ( 'slider' != $instance['template'] || 'slider-overlay' != $instance['template'] ) echo 'hidden'; ?>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
 
384
- <?php _e( 'Slider Navigation Controls:', 'instagram-slider-widget' ); ?><br>
385
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'instagram-slider-widget' ); ?></label>
386
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'instagram-slider-widget' ); ?></label>
387
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'instagram-slider-widget' ); ?></label>
388
  <br>
389
- <?php _e( 'Slider Animation:', 'instagram-slider-widget' ); ?><br>
390
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'instagram-slider-widget' ); ?></label>
391
- <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'instagram-slider-widget' ); ?></label>
392
- <br>
393
- <label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'instagram-slider-widget' ); ?>
394
- <input type="number" min="1000" max="10000" step="100" class="small-text" id="<?php echo $this->get_field_id( 'slidespeed' ); ?>" name="<?php echo $this->get_field_name( 'slidespeed' ); ?>" value="<?php echo $instance['slidespeed']; ?>" />
395
- <span><?php _e('milliseconds', 'instagram-slider-widget'); ?></span>
396
- <span class='jr-description'><?php _e('1000 milliseconds = 1 second', 'instagram-slider-widget'); ?></span>
397
- </label>
398
- <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e( 'Slider Text Description:', 'instagram-slider-widget' ); ?></label>
399
- <select size=3 class='widefat' id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>[]" multiple="multiple">
400
- <option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'instagram-slider-widget'); ?></option>
401
- <option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'instagram-slider-widget'); ?></option>
402
- <option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'instagram-slider-widget'); ?></option>
403
- </select>
404
- <span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'instagram-slider-widget') ?></span>
405
- </p>
406
- <p class="words_in_caption <?php if (
407
- 'thumbs' == $instance['template'] ||
408
- 'thumbs-no-border' == $instance['template'] ||
409
- 'highlight' == $instance['template'] ||
410
- 'slick_slider' == $instance['template']
411
- ) echo 'hidden';?>">
412
- <label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><strong><?php _e( 'Number of words in caption:', 'instagram-slider-widget' ); ?></strong>
413
- <input class="small-text" type="number" min="0" max="200" id="<?php echo $this->get_field_id( 'caption_words' ); ?>" name="<?php echo $this->get_field_name( 'caption_words' ); ?>" value="<?php echo $instance['caption_words']; ?>" />
414
  </label>
415
  </p>
416
- <p>
417
- <label for="<?php echo $this->get_field_id( 'image_size' ); ?>"><strong><?php _e( 'Image format', 'instagram-slider-widget' ); ?></strong></label>
418
- <select class="widefat" id="<?php echo $this->get_field_id( 'image_size' ); ?>" name="<?php echo $this->get_field_name( 'image_size' ); ?>">
419
- <option value="thumbnail" <?php echo ($instance['image_size'] == 'thumbnail') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnail - 150x150', 'instagram-slider-widget' ); ?></option>
420
- <option value="low" <?php echo ($instance['image_size'] == 'low') ? ' selected="selected"' : ''; ?>><?php _e( 'Low - 320x320', 'instagram-slider-widget' ); ?></option>
421
- <option value="standard" <?php echo ($instance['image_size'] == 'standard') ? ' selected="selected"' : ''; ?>><?php _e( 'Standard - 640x640', 'instagram-slider-widget' ); ?></option>
422
- <option value="full" <?php echo ($instance['image_size'] == 'full') ? ' selected="selected"' : ''; ?>><?php _e( 'Full Size', 'instagram-slider-widget' ); ?></option>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
423
  </select>
 
 
 
 
 
 
 
 
 
 
 
424
  </p>
 
 
 
 
 
 
 
 
425
  <p>
426
  <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'instagram-slider-widget' ); ?></strong>
427
- <select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>">
428
- <option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true); ?>><?php _e( 'Date - Ascending', 'instagram-slider-widget' ); ?></option>
429
- <option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true); ?>><?php _e( 'Date - Descending', 'instagram-slider-widget' ); ?></option>
430
- <option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true); ?>><?php _e( 'Popularity - Ascending', 'instagram-slider-widget' ); ?></option>
431
- <option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true); ?>><?php _e( 'Popularity - Descending', 'instagram-slider-widget' ); ?></option>
432
- <option value="rand" <?php selected( $instance['orderby'], 'rand', true); ?>><?php _e( 'Random', 'instagram-slider-widget' ); ?></option>
 
433
  </select>
434
  </label>
435
  </p>
436
- <p>
 
 
437
  <label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'instagram-slider-widget' ); ?></strong>
438
- <select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>" id="<?php echo $this->get_field_id( 'images_link' ); ?>">
439
- <option value="image_link" <?php selected( $instance['images_link'], 'image_link', true); ?>><?php _e( 'Instagram Image', 'instagram-slider-widget' ); ?></option>
440
- <option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="user_url" <?php selected( $instance['images_link'], 'user_url', true); ?>><?php _e( 'Instagram Profile', 'instagram-slider-widget' ); ?></option>
441
- <option value="image_url" <?php selected( $instance['images_link'], 'image_url', true); ?>><?php _e( 'Image URL', 'instagram-slider-widget' ); ?></option>
442
- <option class="<?php if ( ( !$instance['attachment'] ) || 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="attachment" <?php selected( $instance['images_link'], 'attachment', true); ?>><?php _e( 'Attachment Page', 'instagram-slider-widget' ); ?></option>
443
- <option value="custom_url" <?php selected( $instance['images_link'], 'custom_url', true ); ?>><?php _e( 'Custom Link', 'instagram-slider-widget' ); ?></option>
444
- <option value="none" <?php selected( $instance['images_link'], 'none', true); ?>><?php _e( 'None', 'instagram-slider-widget' ); ?></option>
 
 
 
 
 
 
 
 
 
 
445
  </select>
446
  </label>
447
  </p>
448
- <p class="<?php if ( 'custom_url' != $instance['images_link'] ) echo 'hidden'; ?>">
449
- <label for="<?php echo $this->get_field_id( 'custom_url' ); ?>"><?php _e( 'Custom link:', 'instagram-slider-widget'); ?></label>
450
- <input class="widefat" id="<?php echo $this->get_field_id( 'custom_url' ); ?>" name="<?php echo $this->get_field_name( 'custom_url' ); ?>" value="<?php echo $instance['custom_url']; ?>" />
451
- <span><?php _e('* use this field only if the above option is set to <strong>Custom Link</strong>', 'instagram-slider-widget'); ?></span>
 
 
 
 
452
  </p>
453
  <!--<p>
454
  <strong>Advanced Options</strong>
455
  <?php
456
- /* $advanced_class = '';
457
- $advanced_text = '[ - Close ]';
458
- if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
459
- $advanced_class = 'hidden';
460
- $advanced_text = '[ + Open ]';
461
- }
462
- */?>
463
- <a href="#" class="jr-advanced"><?php /*echo $advanced_text; */?></a>
464
  </p>-->
465
  <!-- <div class="jr-advanced-input <?php /*echo $advanced_class;*/ ?>">
466
  <div class="jr-image-options">
467
- <h4 class="jr-advanced-title"><?php /*_e( 'Advanced Image Options', 'instagram-slider-widget'); */?></h4>
468
  <p>
469
- <label for="<?php /*echo $this->get_field_id( 'image_link_rel' ); */?>"><?php /*_e( 'Image Link rel attribute', 'instagram-slider-widget' ); */?>:</label>
470
- <input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_rel' ); */?>" name="<?php /*echo $this->get_field_name( 'image_link_rel' ); */?>" value="<?php /*echo $instance['image_link_rel']; */?>" />
471
- <span class="jr-description"><?php /*_e( 'Specifies the relationship between the current page and the linked website', 'instagram-slider-widget' ); */?></span>
472
  </p>
473
  <p>
474
- <label for="<?php /*echo $this->get_field_id( 'image_link_class' ); */?>"><?php /*_e( 'Image Link class', 'instagram-slider-widget' ); */?>:</label>
475
- <input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_class' ); */?>" name="<?php /*echo $this->get_field_name( 'image_link_class' ); */?>" value="<?php /*echo $instance['image_link_class']; */?>" />
476
- <span class="jr-description"><?php /*_e( 'Usefull if you are using jQuery lightbox plugins to open links', 'instagram-slider-widget' ); */?></span>
477
  </p>
478
- <p><strong><?php /*_e( 'Disable Pinning:', 'instagram-slider-widget' ); */?></strong>
479
- <label class="switch" for="<?php /*echo $this->get_field_id( 'no_pin' ); */?>">
480
- <input class="widefat" id="<?php /*echo $this->get_field_id( 'no_pin' ); */?>" name="<?php /*echo $this->get_field_name( 'no_pin' ); */?>" type="checkbox" value="1" <?php /*checked( '1', $instance['no_pin'] ); */?> /><span class="slider round"></span></label>
481
- <br><span class="jr-description"><?php /*_e( 'Disable pinning for Pinterest on all images from this widget!', 'instagram-slider-widget') */?></span>
482
  </p>
483
  </div>
484
  </div>-->
485
- <?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id ); if ( $widget_id != '' ) : ?>
 
486
  <p>
487
- <label for="jr_insta_shortcode"><?php _e('Shortcode of this Widget:', 'instagram-slider-widget'); ?></label>
488
- <input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text" class="widefat" value="[jr_instagram id=&quot;<?php echo $widget_id ?>&quot;]" readonly="readonly" style="border:none; color:black; font-family:monospace;">
489
- <span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'instagram-slider-widget') ?></span>
 
 
490
  </p>
491
  <?php endif; ?>
492
  </div>
@@ -496,13 +768,13 @@ class WIS_InstagramSlider extends WP_Widget {
496
  /**
497
  * Selected array function echoes selected if in array
498
  *
499
- * @param array $haystack The array to search in
500
- * @param string $current The string value to search in array;
501
  *
502
  */
503
  public function selected( $haystack, $current ) {
504
 
505
- if( is_array( $haystack ) && in_array( $current, $haystack ) ) {
506
  selected( 1, 1, true );
507
  }
508
  }
@@ -510,96 +782,121 @@ class WIS_InstagramSlider extends WP_Widget {
510
 
511
  /**
512
  * Add shorcode function
513
- * @param array $atts shortcode attributes
 
 
514
  * @return mixed
515
  */
516
  public function shortcode( $atts ) {
517
 
518
  $atts = shortcode_atts( array( 'id' => '' ), $atts, 'jr_instagram' );
519
  $args = get_option( 'widget_jr_insta_slider' );
520
- if ( isset($args[$atts['id']] ) ) {
521
- $args[$atts['id']]['widget_id'] = $atts['id'];
522
- return $this->display_images( $args[$atts['id']] );
 
523
  }
524
  }
525
 
526
  /**
527
  * Echoes the Display Instagram Images method
528
  *
529
- * @param array $args
530
  *
531
  * @return void
532
  */
533
  public function instagram_images( $args ) {
534
- echo $this->display_images( $args );
535
  }
536
 
537
  /**
538
  * Cron Trigger Function
539
- * @param [type] $username [description]
540
- * @param [type] $refresh_hour [description]
541
- * @param [type] $images [description]
 
 
542
  */
543
  public function jr_cron_trigger( $username, $refresh_hour, $images ) {
544
- $search_for = array();
545
- $search_for['username'] = $username;
546
  $this->instagram_data( $search_for, $refresh_hour, $images, true );
547
  }
548
 
549
  /**
550
  * Runs the query for images and returns the html
551
  *
552
- * @param array $args
553
  *
554
  * @return string
555
  */
556
  private function display_images( $args ) {
557
- $account = isset( $args['account'] ) && !empty( $args['account'] ) ? $args['account'] : false;
558
- $username = isset( $args['username'] ) && !empty( $args['username'] ) ? str_replace( '@', '', $args['username'] ) : false;
559
- $hashtag = isset( $args['hashtag'] ) && !empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
560
- $blocked_users = isset( $args['blocked_users'] ) && !empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
561
- $attachment = isset( $args['attachment'] ) ? true : false;
562
- $template = isset( $args['template'] ) ? $args['template'] : 'slider';
563
- $orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
564
- $images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
565
- $custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
566
- $images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 20;
567
- $columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
568
- $refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
569
- $image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
570
- $image_link_rel = isset( $args['image_link_rel'] ) ? $args['image_link_rel'] : '';
571
- $no_pin = isset( $args['no_pin'] ) ? $args['no_pin'] : 0;
572
- $image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
573
- $controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
574
- $animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
575
- $caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] : 20;
576
- $slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
577
- $description = isset( $args['description'] ) ? $args['description'] : array();
578
- $widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
579
- $powered_by_link = isset( $args['support_author'] ) ? true : false;
580
- $gutter = isset( $args['gutter'] ) ? $args['gutter'] : 0;
581
- $masonry_image_width = isset( $args['masonry_image_width'] ) ? $args['masonry_image_width'] : 200;
 
 
 
 
 
 
 
582
  $slick_slides_to_show = isset( $args['slick_slides_to_show'] ) ? $args['slick_slides_to_show'] : 3;
583
- $slick_slides_padding = isset( $args['slick_slides_padding'] ) ? $args['slick_slides_padding'] : 0;
584
- $show_feed_header = isset( $args['show_feed_header'] ) ? $args['show_feed_header'] : 0;
585
- $highlight_offset = isset( $args['highlight_offset'] ) ? $args['highlight_offset'] : 1;
586
- $highlight_pattern = isset( $args['highlight_pattern'] ) ? $args['highlight_pattern'] : 6;
587
-
588
- if ( !empty( $description ) && !is_array( $description ) ) {
 
 
 
589
  $description = explode( ',', $description );
590
  }
591
 
592
  if ( isset ( $args['search_for'] ) && $args['search_for'] == 'hashtag' ) {
593
- $search = 'hashtag';
594
- $search_for['hashtag'] = $hashtag;
595
  $search_for['blocked_users'] = $blocked_users;
596
- }
597
- elseif(isset ( $args['search_for'] ) && $args['search_for'] == 'account' ) {
598
- $search = 'account';
599
- $search_for['account'] = $account;
 
 
 
 
 
 
 
 
600
  } else {
601
- $search = 'user';
602
- $search_for['username'] = $username;
 
 
603
  }
604
 
605
  if ( $refresh_hour == 0 ) {
@@ -608,18 +905,21 @@ class WIS_InstagramSlider extends WP_Widget {
608
 
609
 
610
  $template_args = array(
611
- 'search_for' => $search,
612
- 'attachment' => $attachment,
613
- 'image_size' => $image_size,
614
- 'link_rel' => $image_link_rel,
615
- 'link_class' => $image_link_class,
616
- 'no_pin' => $no_pin,
617
- 'caption_words' => $caption_words,
618
- 'masonry_image_width' => $masonry_image_width,
619
- 'slick_slides_padding' => $slick_slides_padding,
620
- 'slick_slides_to_show' => $slick_slides_to_show,
621
- 'highlight_offset' => $highlight_offset,
622
- 'highlight_pattern' => $highlight_pattern,
 
 
 
623
 
624
  );
625
 
@@ -627,74 +927,64 @@ class WIS_InstagramSlider extends WP_Widget {
627
  $ul_class = ( $template == 'thumbs-no-border' ) ? 'thumbnails no-border jr_col_' . $columns : 'thumbnails jr_col_' . $columns;
628
  $slider_script = '';
629
 
630
- if ( $template != 'thumbs' && $template != 'thumbs-no-border' ) {
631
 
632
  $template_args['description'] = $description;
633
- $direction_nav = ( $controls == 'prev_next' ) ? 'true' : 'false';
634
- $control_nav = ( $controls == 'numberless' ) ? 'true': 'false';
635
- $ul_class = 'slides';
636
-
637
- if( $template == 'slider' ) {
638
- $images_div_class = 'pllexislider pllexislider-normal instaslider-nr-'. $widget_id;
639
- $slider_script =
640
- "<script type='text/javascript'>" . "\n" .
641
- " jQuery(document).ready(function($) {" . "\n" .
642
- " $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" .
643
- " animation: '{$animation}'," . "\n" .
644
- " slideshowSpeed: {$slidespeed}," . "\n" .
645
- " directionNav: {$direction_nav}," . "\n" .
646
- " controlNav: {$control_nav}," . "\n" .
647
- " prevText: ''," . "\n" .
648
- " nextText: ''," . "\n" .
649
- " });" . "\n" .
650
- " });" . "\n" .
651
- "</script>" . "\n";
652
- }
653
- if ( $template == 'slick_slider' || $template == 'masonry' || $template == 'highlight') {
654
- //return $this->pro_display_images($args);
655
- return apply_filters( 'wis/pro/display_images', "", $args, $this );
 
 
 
 
656
  } else {
657
- $images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-'. $widget_id;
658
- $slider_script =
659
- "<script type='text/javascript'>" . "\n" .
660
- " jQuery(document).ready(function($) {" . "\n" .
661
- " $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" .
662
- " animation: '{$animation}'," . "\n" .
663
- " slideshowSpeed: {$slidespeed}," . "\n" .
664
- " directionNav: {$direction_nav}," . "\n" .
665
- " controlNav: {$control_nav}," . "\n" .
666
- " prevText: ''," . "\n" .
667
- " nextText: ''," . "\n" .
668
- " start: function(slider){" . "\n" .
669
- " slider.hover(" . "\n" .
670
- " function () {" . "\n" .
671
- " slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeIn();" . "\n" .
672
- " }," . "\n" .
673
- " function () {" . "\n" .
674
- " slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeOut();" . "\n" .
675
- " }" . "\n" .
676
- " );" . "\n" .
677
- " }" . "\n" .
678
- " });" . "\n" .
679
- " });" . "\n" .
680
- "</script>" . "\n";
681
  }
682
  }
683
 
684
- //$account = $accounts[$images_data[0]['username']];
685
- $images_div = '';
686
- $images_ul = "<ul class='no-bullet {$ul_class}' id='slides'>\n";
687
 
688
  $output = '';
689
  $output .= __( 'No images found! <br> Try some other hashtag or username', 'instagram-slider-widget' );
690
 
691
- if ( ( $search == 'user' && $attachment ) ) {
692
-
693
- if ( !wp_next_scheduled( 'jr_insta_cron', array( $search_for['username'], $refresh_hour, $images_number ) ) ) {
694
- wp_schedule_single_event( time(), 'jr_insta_cron', array( $search_for['username'], $refresh_hour, $images_number ) );
 
 
 
 
 
 
 
 
695
  }
696
 
697
- $opt_name = 'jr_insta_' . md5( $search . '_' . $search_for['username'] );
698
  $attachment_ids = (array) get_option( $opt_name );
699
 
700
  $query_args = array(
@@ -706,8 +996,7 @@ class WIS_InstagramSlider extends WP_Widget {
706
  );
707
 
708
  if ( $orderby != 'rand' ) {
709
-
710
- $orderby = explode( '-', $orderby );
711
  $meta_key = $orderby[0] == 'date' ? 'jr_insta_timestamp' : 'jr_insta_popularity';
712
 
713
  $query_args['meta_key'] = $meta_key;
@@ -715,9 +1004,9 @@ class WIS_InstagramSlider extends WP_Widget {
715
  $query_args['order'] = $orderby[1];
716
  }
717
 
718
- if ( isset( $attachment_ids['saved_images'] ) && !empty( $attachment_ids['saved_images'] ) ) {
719
 
720
- $query_args['post__in'] = $attachment_ids['saved_images'];
721
 
722
  } else {
723
 
@@ -753,8 +1042,8 @@ class WIS_InstagramSlider extends WP_Widget {
753
  $template_args['link_to'] = $custom_url;
754
  }
755
 
756
- $image_thumb_url = get_post_meta( $id, 'jr_insta_sizes', true );
757
- $template_args['image'] = $image_thumb_url[$image_size];
758
 
759
  $output .= $this->get_template( $template, $template_args );
760
 
@@ -766,9 +1055,8 @@ class WIS_InstagramSlider extends WP_Widget {
766
 
767
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
768
 
769
- if ( is_array( $images_data ) && !empty( $images_data ) ) {
770
- if(isset($images_data['error']))
771
- {
772
  return $images_data['error'];
773
  }
774
 
@@ -798,7 +1086,7 @@ class WIS_InstagramSlider extends WP_Widget {
798
  }
799
 
800
  $template_args['type'] = $image_data['type'];
801
- $template_args['image'] = $image_data['sizes'][$image_size];
802
  $template_args['caption'] = $image_data['caption'];
803
  $template_args['timestamp'] = $image_data['timestamp'];
804
  $template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
@@ -815,39 +1103,77 @@ class WIS_InstagramSlider extends WP_Widget {
815
  wp_reset_postdata();
816
 
817
  } else {
818
-
 
 
 
 
 
819
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
820
- $accounts = WIS_Plugin::app()->getOption( 'account_profiles');
821
- $account = $accounts[$images_data[0]['username']];
822
- $images_div = '';
823
- if($account){
824
- $account_data = $account;
825
- } else {
826
- $data = WIS_Plugin::app()->getOption('profiles_data_by_username');
827
- $data = $data['entry_data']['ProfilePage']['0']['graphql']['user'];
828
- $account_data = array(
829
- 'username' => $data['username'],
830
- 'profile_picture' => $data['profile_pic_url'],
831
- 'counts' => array(
832
- 'media' => $data['edge_owner_to_timeline_media']['count'],
833
- 'followed_by' => $data['edge_followed_by']['count']
834
- ),
835
- );
836
- }
837
 
838
- if($show_feed_header && !isset($search_for['hashtag']) ){
839
- $images_div .= $this->render_layout_template('feed_header_template', $account_data);
840
- }
841
- $images_div .= "<div class='{$images_div_class}'>\n";
842
- if ( is_array( $images_data ) && !empty( $images_data ) ) {
843
- if(isset($images_data['error'])) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
844
  return $images_data['error'];
845
  }
846
 
847
  if ( $orderby != 'rand' ) {
848
 
849
  $orderby = explode( '-', $orderby );
850
- $func = $orderby[0] == 'date' ? 'sort_timestamp_' . $orderby[1] : 'sort_popularity_' . $orderby[1];
 
 
 
 
851
 
852
  usort( $images_data, array( $this, $func ) );
853
 
@@ -871,7 +1197,7 @@ class WIS_InstagramSlider extends WP_Widget {
871
  }
872
 
873
  $template_args['type'] = $image_data['type'];
874
- $template_args['image'] = $image_data['sizes'][$image_size];
875
  $template_args['caption'] = $image_data['caption'];
876
  $template_args['timestamp'] = $image_data['timestamp'];
877
  $template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
@@ -879,10 +1205,18 @@ class WIS_InstagramSlider extends WP_Widget {
879
  $output .= $this->get_template( $template, $template_args );
880
  }
881
 
882
- $output .= "</ul>\n</div>";
883
  }
884
  }
885
 
 
 
 
 
 
 
 
 
886
  return $output;
887
 
888
  }
@@ -897,21 +1231,22 @@ class WIS_InstagramSlider extends WP_Widget {
897
  * @return false|string
898
  */
899
  private function render_layout_template( $template_name, $args ) {
900
- $path = WIS_PLUGIN_DIR."/html_templates/$template_name.php";
901
- if(file_exists($path)){
902
- ob_start();
903
- include $path;
904
- return ob_get_clean();
905
- } else {
906
- return 'This template does not exist!';
907
- }
908
- }
 
909
 
910
  /**
911
  * Function to display Templates styles
912
  *
913
- * @param string $template
914
- * @param array $args
915
  *
916
  * return mixed
917
  */
@@ -919,12 +1254,12 @@ class WIS_InstagramSlider extends WP_Widget {
919
 
920
  $link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
921
  $image_url = isset( $args['image'] ) ? $args['image'] : false;
922
- $type = isset( $args['type'] ) ? $args['type'] : '';
923
 
924
- if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || ( $args['search_for'] == 'account' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
925
- $caption = $args['caption'];
926
- $time = $args['timestamp'];
927
- $username = $args['username'];
928
  } else {
929
  $attach_id = get_the_id();
930
  $caption = get_the_excerpt();
@@ -932,17 +1267,22 @@ class WIS_InstagramSlider extends WP_Widget {
932
  $username = get_post_meta( $attach_id, 'jr_insta_username', true );
933
  }
934
 
 
 
 
 
935
  $short_caption = wp_trim_words( $caption, 10, '' );
936
- $short_caption = strip_tags($short_caption);
937
 
938
- $caption = wp_trim_words( $caption, $args['caption_words'], '' );
939
- $nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
940
 
941
- $image_src = "<img src=$image_url $nopin class=$type>";
942
- $image_output = $image_src;
 
943
 
944
  if ( $link_to ) {
945
- $image_output = "<a href=$link_to target=_blank";
946
 
947
  if ( ! empty( $args['link_rel'] ) ) {
948
  $image_output .= " rel={$args['link_rel']}";
@@ -956,30 +1296,31 @@ class WIS_InstagramSlider extends WP_Widget {
956
 
957
  $output = '';
958
 
959
- if( $template == 'slider' ) {
960
  $output .= "<li style='border:0;' >";
961
 
962
- $output .= $image_output;
 
963
 
964
  if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
965
 
966
  $output .= "<div class='jr-insta-datacontainer' style=''>\n";
967
 
968
- if ( in_array( 'username', $args['description'] ) && $username ) {
969
-
970
- $output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' style='color:black; font-weight: 600' target='_blank'>{$username}</a></span>\n";
971
- }
972
  if ( $time && in_array( 'time', $args['description'] ) ) {
973
- $time = human_time_diff( $time );
974
  $output .= "<strong><span class='jr-insta-time pull-right' style='font-size: 0.9em'>{$time} ago</span></strong>\n";
975
  $output .= "<br>";
976
  }
977
 
978
 
979
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
980
- $caption = preg_replace( '/\@([a-z0-9А-Яа-я_-]+)/u', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" style="color:black; font-weight: 600" target="_blank">@$1</a>&nbsp;', $caption );
981
- $caption = preg_replace( '/\#([a-zA-Z0-9А-Яа-я_-]+)/u', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" style="color:black; font-weight: 600" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption);
982
- $output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
983
  }
984
 
985
  $output .= "</div>\n";
@@ -988,9 +1329,10 @@ class WIS_InstagramSlider extends WP_Widget {
988
  $output .= "</li>";
989
  // Template : Slider with text Overlay on mouse over
990
  } elseif ( $template == 'slider-overlay' ) {
991
- $output .= "<li class='".$type."'>";
992
 
993
- $output .= $image_output;
 
994
 
995
  if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
996
 
@@ -999,7 +1341,7 @@ class WIS_InstagramSlider extends WP_Widget {
999
  $output .= "<div class='jr-insta-datacontainer'>\n";
1000
 
1001
  if ( $time && in_array( 'time', $args['description'] ) ) {
1002
- $time = human_time_diff( $time );
1003
  $output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
1004
  }
1005
 
@@ -1009,8 +1351,8 @@ class WIS_InstagramSlider extends WP_Widget {
1009
 
1010
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
1011
  $caption = preg_replace( '/@([a-z0-9_]+)/i', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a>&nbsp;', $caption );
1012
- $caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption);
1013
- $output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
1014
  }
1015
 
1016
  $output .= "</div>\n";
@@ -1022,8 +1364,9 @@ class WIS_InstagramSlider extends WP_Widget {
1022
 
1023
  // Template : Thumbnails no text
1024
  } elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
1025
- $output .= "<li class='".$type."'>";
1026
- $output .= $image_output;
 
1027
  $output .= "</li>";
1028
 
1029
  } else {
@@ -1037,9 +1380,11 @@ class WIS_InstagramSlider extends WP_Widget {
1037
 
1038
  /**
1039
  * Trigger refresh for new data
1040
- * @param bool $instaData
1041
- * @param array $old_args
1042
- * @param array $new_args
 
 
1043
  * @return bool
1044
  */
1045
  private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
@@ -1056,11 +1401,11 @@ class WIS_InstagramSlider extends WP_Widget {
1056
 
1057
 
1058
  if ( isset( $old_args['saved_images'] ) ) {
1059
- unset($old_args['saved_images']);
1060
  }
1061
 
1062
  if ( isset( $old_args['deleted_images'] ) ) {
1063
- unset($old_args['deleted_images']);
1064
  }
1065
 
1066
  if ( is_array( $old_args ) && is_array( $new_args ) && array_diff( $old_args, $new_args ) !== array_diff( $new_args, $old_args ) ) {
@@ -1076,16 +1421,18 @@ class WIS_InstagramSlider extends WP_Widget {
1076
 
1077
  /**
1078
  * Get data from instagram by username
1079
- * @param string $username
 
 
1080
  * @return array
1081
  */
1082
  private function get_data_by_username( $username ) {
1083
 
1084
- $url = str_replace( '{username}', urlencode( trim( $username ) ), self::USERNAME_URL );
1085
  $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
1086
 
1087
- if(strstr( $response['body'], '-cx-PRIVATE-Page__main' )) {
1088
- return ['error' => __( 'Account not found or for this account there are restrictions on Instagram by age', 'instagram-slider-widget' )];
1089
  }
1090
 
1091
  $json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
@@ -1110,34 +1457,48 @@ class WIS_InstagramSlider extends WP_Widget {
1110
  return $results;
1111
  }
1112
 
1113
- /**
1114
- * Stores the fetched data from instagram in WordPress DB using transients
1115
- *
1116
- * @param string $username Instagram Username to fetch images from
1117
- * @param string $cache_hours Cache hours for transient
1118
- * @param string $nr_images Nr of images to fetch from instagram
1119
- *
1120
- * @return array of localy saved instagram data
1121
- * @throws \Exception
1122
- */
 
1123
  public function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
1124
-
1125
  //$nr_images = $nr_images <= 12 ? $nr_images : 12;
1126
- $blocked_users = isset( $search_for['blocked_users'] ) && !empty( $search_for['blocked_users'] ) ? str_replace( '@', '', $search_for['blocked_users'] ) : false;
1127
- if ( isset( $search_for['account'] ) && !empty( $search_for['account'] ) ) {
1128
- $search = 'account';
1129
  $search_string = $search_for['account'];
1130
- } elseif ( isset( $search_for['username'] ) && !empty( $search_for['username'] ) ) {
1131
- $search = 'user';
 
 
 
1132
  $search_string = $search_for['username'];
1133
- } elseif ( isset( $search_for['hashtag'] ) && !empty( $search_for['hashtag'] ) ) {
1134
- $search = 'hashtag';
1135
  $search_string = $search_for['hashtag'];
 
1136
  $blocked_users_array = $blocked_users ? $this->get_ids_from_usernames( $blocked_users ) : array();
1137
  } else {
1138
- return __( 'Nothing to search for', 'instagram-slider-widget');
1139
  }
1140
 
 
 
 
 
 
 
 
 
 
 
 
1141
  $opt_name = 'jr_insta_' . md5( $search . '_' . $search_string );
1142
  $instaData = get_transient( $opt_name );
1143
  $old_opts = (array) get_option( $opt_name );
@@ -1151,8 +1512,9 @@ class WIS_InstagramSlider extends WP_Widget {
1151
  );
1152
 
1153
  if ( true === $this->trigger_refresh_data( $instaData, $old_opts, $new_opts ) ) {
 
1154
 
1155
- $instaData = array();
1156
  $old_opts['search'] = $search;
1157
  $old_opts['search_string'] = $search_string;
1158
  $old_opts['blocked_users'] = $blocked_users;
@@ -1162,120 +1524,220 @@ class WIS_InstagramSlider extends WP_Widget {
1162
 
1163
  if ( 'user' == $search ) {
1164
 
1165
- $results = $this->get_data_by_username($search_string);
1166
- if(isset($results['error'])) return $results['error'];
 
 
1167
 
1168
- WIS_Plugin::app()->updateOption('profiles_data_by_username', $results);
1169
  // ************************************
1170
  // if instagram not return list of posts
1171
  // ************************************
1172
- $is_instaLoginPage = !isset($results['entry_data']['ProfilePage']);
1173
- if($is_instaLoginPage)
1174
- {
1175
- return ['error' => __( 'Instagram requires authorization to view a user profile. Use autorized account in widget settings', 'instagram-slider-widget' )];
1176
  }
1177
  // ************************************
1178
- }
1179
- elseif ( 'account' == $search )
1180
- {
1181
- $nr_images = !$this->WIS->is_premium() && $nr_images > 20 ? 20 : $nr_images;
1182
- $account = $this->getAccountById( $search_string);
1183
- $args = array(
1184
- 'body' => array(
1185
- 'access_token' => $account['token'],
1186
- 'count' => $nr_images,
1187
- )
1188
- );
1189
- $response = wp_remote_get( self::USERS_SELF_MEDIA_URL , $args );
1190
- if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1191
- $media = json_decode( wp_remote_retrieve_body( $response ), true );
1192
- $results = $media['data'];
1193
- $results = apply_filters('wis/images/count', $results, $media, $nr_images);
1194
-
1195
- if(!count($results))
1196
- return ['error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' )];
1197
- }
1198
-
1199
- //Обновляем данные профиля: подписчики, количество постов
1200
- $this->update_account_profiles( $account['token']);
1201
 
1202
- }
1203
- else {
1204
- $url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
1205
- $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
1206
- $results = json_decode( $response['body'], true );
1207
 
1208
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1209
 
1210
- if ( is_wp_error( $response ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1211
 
1212
- return $response->get_error_message();
1213
  }
1214
 
1215
- if ( $response['response']['code'] == 200 ) {
1216
 
1217
  if ( $results && is_array( $results ) ) {
1218
 
1219
  if ( 'user' == $search ) {
1220
- $entry_data = isset($results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges']) ? $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] : array();
1221
- } elseif( 'account' == $search ) {
1222
- $entry_data = $results;
1223
- } else {
1224
- $entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
 
 
 
 
1225
  }
1226
 
1227
  if ( empty( $entry_data ) ) {
1228
- return ['error' => __( 'No images found', 'instagram-slider-widget' )];
1229
  }
 
 
 
 
 
1230
 
1231
- foreach ( $entry_data as $current => $result )
1232
- {
1233
- if( 'account' !== $search ) $result = $result['node'];
 
 
1234
 
1235
  if ( 'hashtag' == $search ) {
1236
 
1237
- if ( in_array( $result['owner']['id'], $blocked_users_array ) ) {
1238
- $nr_images++;
1239
- continue;
 
 
 
 
 
 
 
 
 
 
 
1240
  }
1241
  }
1242
- /*
1243
- if ( $result['is_video'] == true ) {
1244
- $nr_images++;
1245
- continue;
1246
- }
1247
- */
1248
-
1249
- if ( $current >= $nr_images ) {
1250
- break;
1251
- }
1252
 
1253
  if ( 'account' == $search ) {
1254
- $image_data = $this->to_media_model_from_account( $result );
 
 
 
 
 
 
 
1255
  }
1256
- else
1257
- $image_data = $this->media_model( $result );
1258
 
1259
- if ( 'user' == $search ) {
1260
- $image_data['username'] = $search_string;
 
 
1261
  }
1262
 
1263
- if ( ( $search == 'hashtag' ) || ( $search == 'user' && !$attachment ) || ( $search == 'account' && !$attachment ) ) {
 
 
 
 
 
1264
 
1265
  $instaData[] = $image_data;
1266
 
1267
  } else {
1268
 
1269
- if ( isset( $old_opts['saved_images'][$image_data['id']] ) ) {
1270
 
1271
- if ( is_string( get_post_status( $old_opts['saved_images'][$image_data['id']] ) ) ) {
1272
 
1273
- $this->update_wp_attachment( $old_opts['saved_images'][$image_data['id']], $image_data );
1274
 
1275
- $instaData[$image_data['id']] = $old_opts['saved_images'][$image_data['id']];
1276
 
1277
  } else {
1278
- unset( $old_opts['saved_images'][$image_data['id']] );
1279
  }
1280
 
1281
  } else {
@@ -1284,9 +1746,9 @@ class WIS_InstagramSlider extends WP_Widget {
1284
 
1285
  if ( $id && is_numeric( $id ) ) {
1286
 
1287
- $old_opts['saved_images'][$image_data['id']] = $id;
1288
 
1289
- $instaData[$image_data['id']] = $id;
1290
 
1291
  } else {
1292
 
@@ -1309,13 +1771,15 @@ class WIS_InstagramSlider extends WP_Widget {
1309
 
1310
  update_option( $opt_name, $old_opts );
1311
 
1312
- if ( is_array( $instaData ) && !empty( $instaData ) ) {
1313
 
1314
  set_transient( $opt_name, $instaData, $cache_hours * 60 * 60 );
1315
  }
1316
 
1317
  } // end -> false === $instaData
1318
 
 
 
1319
  return $instaData;
1320
  }
1321
 
@@ -1349,119 +1813,294 @@ class WIS_InstagramSlider extends WP_Widget {
1349
 
1350
  /**
1351
  * Media Model
 
1352
  * @param [type] $medias_array [description]
 
1353
  * @return [type] [description]
1354
  */
1355
  private function media_model( $medias_array ) {
1356
 
1357
- $medias_model = array();
1358
 
1359
  foreach ( $medias_array as $prop => $value ) {
1360
 
1361
  switch ( $prop ) {
1362
  case 'id':
1363
- $medias_model['id'] = $value;
1364
  break;
1365
  case 'code':
1366
  case '__typename':
1367
- $medias_model['type'] = $value;
1368
- break;
1369
  case 'shortcode':
1370
- $medias_model['code'] = $value;
1371
- $medias_model['link'] = 'https://www.instagram.com/p/'. $value . '/';
1372
  break;
1373
  case 'owner':
1374
- $medias_model['user_id'] = $value['id'];
1375
  break;
1376
  case 'caption':
1377
- $medias_model['caption'] = $this->sanitize( $value );
1378
  break;
1379
  case 'edge_media_to_caption':
1380
- if ( !empty( $value['edges'] ) ) {
1381
  $first_caption = $value['edges'][0];
1382
  if ( isset( $first_caption['node']['text'] ) ) {
1383
- $medias_model['caption'] = $this->sanitize( $value['edges'][0]['node']['text'] );
1384
  }
1385
  }
1386
  break;
1387
  case 'date':
1388
  case 'taken_at_timestamp':
1389
- $medias_model['timestamp'] = (float) $value;
1390
  break;
1391
  case 'dimensions':
1392
- $medias_model['height'] = $value['height'];
1393
- $medias_model['width'] = $value['width'];
1394
  break;
1395
  case 'display_url':
1396
  case 'display_src':
1397
- $medias_model['url'] = $value;
1398
- if ( isset( $medias_model['sizes'] ) ) {
1399
- $medias_model['sizes']['full'] = $value;
 
1400
  }
1401
  break;
1402
  case 'edge_liked_by':
1403
  case 'likes':
1404
- $medias_model['likes_count'] = $value['count'];
1405
  break;
1406
  case 'edge_media_to_comment':
1407
  case 'comments':
1408
- $medias_model['comment_count'] = $value['count'];
1409
  break;
1410
  case 'thumbnail_resources':
1411
- $medias_model['sizes'] = $this->get_thumbnail_urls( $value );
1412
- if ( isset( $medias_model['url'] ) ) {
1413
- $medias_model['sizes']['full'] = $medias_model['url'];
1414
  }
1415
  break;
1416
  }
1417
 
1418
- if ( isset( $medias_model['comment_count'] ) && isset( $medias_model['likes_count'] ) ) {
1419
- $medias_model['popularity'] = (int) ( $medias_model['comment_count'] ) + ( $medias_model['likes_count'] );
1420
  }
1421
  }
1422
 
1423
- return $medias_model;
1424
  }
1425
 
1426
  /**
1427
  * Media Model from account
1428
- * @param array $media From API
 
 
1429
  * @return array To plugin format
1430
  */
1431
- private function to_media_model_from_account( $media ) {
1432
 
1433
  $m = array();
1434
- $value = $media;
1435
- switch ($value['type'])
1436
- {
1437
- case 'image':
1438
- $m['type'] = 'GraphImage';
1439
- break;
1440
- case 'video':
1441
- $m['type'] = 'GraphVideo';
1442
- break;
1443
- case 'carousel':
1444
- $m['type'] = 'GraphSidecar';
1445
- break;
1446
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1447
 
1448
- $m['id'] = $value['id'];
1449
- $m['caption'] = $this->sanitize( $value['caption']['text'] );
1450
- //$m['code'] = $value;
1451
- $m['link'] = $value['link'];
1452
- $m['comment_count'] = $value['comments']['count'];
1453
- $m['user_id'] = $value['user']['id'];
1454
- $m['timestamp'] = $value['created_time'];
1455
- $m['height'] = $value['images']['standard_resolution']['height'];
1456
- $m['width'] = $value['images']['standard_resolution']['width'];
1457
- $m['url'] = $value['images']['standard_resolution']['url'];
1458
- $m['likes_count'] = $value['likes']['count'];
1459
- $m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
1460
- $m['sizes']['thumbnail'] = $value['images']['thumbnail']['url'];
1461
- $m['sizes']['low'] = $value['images']['low_resolution']['url'];
1462
- $m['sizes']['standard'] = $value['images']['standard_resolution']['url'];
1463
- $m['sizes']['full'] = $value['images']['standard_resolution']['url'];
1464
- $m['username'] = $value['user']['username'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1465
 
1466
  return $m;
1467
  }
@@ -1476,8 +2115,8 @@ class WIS_InstagramSlider extends WP_Widget {
1476
  'post_type' => 'attachment',
1477
  'post_status' => 'inherit',
1478
  'post_mime_type' => 'image',
1479
- 'orderby' => 'rand',
1480
- 'posts_per_page' => -1,
1481
  'meta_query' => array(
1482
  array(
1483
  'key' => 'jr_insta_username',
@@ -1487,9 +2126,9 @@ class WIS_InstagramSlider extends WP_Widget {
1487
  ),
1488
  );
1489
 
1490
- $savedinsta = new WP_Query( $savedinsta_args );
1491
 
1492
- $opt_name = 'jr_insta_' . md5( 'user' . '_' . $username );
1493
 
1494
  $attachment_ids = (array) get_option( $opt_name );
1495
 
@@ -1497,10 +2136,10 @@ class WIS_InstagramSlider extends WP_Widget {
1497
 
1498
  foreach ( $savedinsta->posts as $post ) {
1499
 
1500
- if ( !in_array( $post->ID, $attachment_ids['saved_images'] ) ) {
1501
 
1502
  if ( false !== wp_delete_attachment( $post->ID, true ) ) {
1503
- $deleted_count++;
1504
  }
1505
  }
1506
  }
@@ -1516,11 +2155,11 @@ class WIS_InstagramSlider extends WP_Widget {
1516
  */
1517
  public function delete_dupes() {
1518
 
1519
- if (function_exists('check_ajax_referer')) {
1520
  check_ajax_referer( 'jr_delete_instagram_dupes' );
1521
  }
1522
 
1523
- $post = $_POST;
1524
  $return = array(
1525
  'deleted' => $this->clean_duplicates( $post['username'] )
1526
  );
@@ -1528,21 +2167,42 @@ class WIS_InstagramSlider extends WP_Widget {
1528
  wp_send_json( $return );
1529
  }
1530
 
1531
- /**
1532
- * Ajax Call to add account by token
1533
- *
1534
- * @return void
1535
- * @throws \Exception
1536
- */
1537
  public function add_account_by_token() {
1538
- if ( isset( $_POST['token'] ) && ! empty( $_POST['token'] ) ) {
1539
  if ( ! current_user_can( 'manage_options' ) ) {
1540
- wp_die( - 1 );
1541
  } else {
1542
- check_ajax_referer( 'addAccountByToken' );
1543
 
1544
- $this->update_account_profiles( $_POST['token']);
1545
- wp_die('OK');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1546
  }
1547
  }
1548
  }
@@ -1552,73 +2212,104 @@ class WIS_InstagramSlider extends WP_Widget {
1552
  * @return void
1553
  */
1554
  public function delete_account() {
1555
- if ( isset( $_POST['item_id'] ) && ! empty( $_POST['item_id'] ) ) {
1556
  if ( ! current_user_can( 'manage_options' ) ) {
1557
  wp_die( - 1 );
1558
  } else {
1559
  check_ajax_referer( 'wis_nonce' );
1560
 
1561
- $accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles');
 
 
 
 
 
1562
  $accounts_new = array();
1563
- foreach($accounts as $name => $acc) { if($acc['id'] !== $_POST['item_id']) $accounts_new[$name] = $acc; }
1564
- WIS_Plugin::app()->updatePopulateOption( 'account_profiles', $accounts_new);
 
 
 
 
 
1565
 
1566
- wp_send_json_success(__('Account deleted successfully', 'instagram-slider-widget'));
1567
  }
1568
  }
1569
  }
1570
 
1571
  /**
1572
  * Get Account data by USERNAME from option in wp_options
1573
- *
1574
- * @param string id
1575
- *
1576
- * @return array
 
1577
  */
1578
- public function getAccountById($name)
1579
- {
1580
- $token = WIS_Plugin::app()->getOption( 'account_profiles' );
1581
- return $token[$name];
1582
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1583
 
1584
  /**
1585
  * Get Instagram Ids from Usernames into array
1586
- * @param string $usernames Comma separated string with instagram users
 
 
1587
  * @return array An array with instagram ids
1588
  */
1589
  private function get_ids_from_usernames( $usernames ) {
1590
 
1591
- $users = explode( ',', trim( $usernames ) );
1592
- $user_ids = (array) get_transient( 'jr_insta_user_ids' );
1593
  $return_ids = array();
1594
 
1595
- if ( is_array( $users ) && !empty( $users ) ) {
1596
 
1597
  foreach ( $users as $user ) {
1598
 
1599
- if ( isset( $user_ids[$user] ) ) {
1600
  continue;
1601
  }
1602
 
1603
- $results = $this->get_data_by_username($user);
1604
- if ( $results && is_array( $results ) ) {
1605
 
1606
- $results = $results['entry_data']['ProfilePage']['0']['graphql']['user'];
1607
- $user_id = isset( $results['id'] ) ? $results['id'] : false;
1608
 
1609
- if ( $user_id ) {
1610
 
1611
- $user_ids[$user] = $user_id;
1612
 
1613
- set_transient( 'jr_insta_user_ids', $user_ids );
1614
- }
1615
- }
1616
  }
1617
  }
1618
 
1619
  foreach ( $users as $user ) {
1620
- if ( isset( $user_ids[$user] ) ) {
1621
- $return_ids[] = $user_ids[$user];
1622
  }
1623
  }
1624
 
@@ -1628,8 +2319,10 @@ class WIS_InstagramSlider extends WP_Widget {
1628
 
1629
  /**
1630
  * Updates attachment using the id
1631
- * @param int $attachment_ID
1632
- * @param array image_data
 
 
1633
  * @return void
1634
  */
1635
  private function update_wp_attachment( $attachment_ID, $image_data ) {
@@ -1642,16 +2335,16 @@ class WIS_InstagramSlider extends WP_Widget {
1642
  * Save Instagram images to upload folder and ads to media.
1643
  * If the upload fails it returns the remote image url.
1644
  *
1645
- * @param string $url Url of image to download
1646
- * @param string $file File path for image
1647
  *
1648
- * @return string $url Url to image
1649
  */
1650
  private function save_wp_attachment( $image_data ) {
1651
 
1652
  $image_info = pathinfo( $image_data['url'] );
1653
 
1654
- if ( !in_array( $image_info['extension'], array( 'jpg', 'jpe', 'jpeg' ) ) ) {
1655
  return false;
1656
  }
1657
 
@@ -1662,9 +2355,13 @@ class WIS_InstagramSlider extends WP_Widget {
1662
  'post_excerpt' => $image_data['caption']
1663
  );
1664
 
1665
- $attachment_metadata = array( 'width' => $image_data['width'], 'height' => $image_data['height'], 'file' => $image_info['basename'] );
 
 
 
 
1666
  $attachment_metadata['sizes'] = array( 'full' => $attachment_metadata );
1667
- $id = wp_insert_attachment( $attachment );
1668
  wp_update_attachment_metadata( $id, $attachment_metadata );
1669
 
1670
 
@@ -1680,8 +2377,8 @@ class WIS_InstagramSlider extends WP_Widget {
1680
  /**
1681
  * Add new attachment Description only for instgram images
1682
  *
1683
- * @param array $form_fields
1684
- * @param object $post
1685
  *
1686
  * @return array
1687
  */
@@ -1689,7 +2386,7 @@ class WIS_InstagramSlider extends WP_Widget {
1689
 
1690
  $instagram_username = get_post_meta( $post->ID, 'jr_insta_username', true );
1691
 
1692
- if ( !empty( $instagram_username ) ) {
1693
 
1694
  $form_fields["jr_insta_username"] = array(
1695
  "label" => __( "Instagram Username" ),
@@ -1698,7 +2395,7 @@ class WIS_InstagramSlider extends WP_Widget {
1698
  );
1699
 
1700
  $instagram_link = get_post_meta( $post->ID, 'jr_insta_link', true );
1701
- if ( !empty( $instagram_link ) ) {
1702
  $form_fields["jr_insta_link"] = array(
1703
  "label" => __( "Instagram Image" ),
1704
  "input" => "html",
@@ -1707,8 +2404,8 @@ class WIS_InstagramSlider extends WP_Widget {
1707
  }
1708
 
1709
  $instagram_date = get_post_meta( $post->ID, 'jr_insta_timestamp', true );
1710
- if ( !empty( $instagram_date ) ) {
1711
- $instagram_date = date( "F j, Y, g:i a", $instagram_date );
1712
  $form_fields["jr_insta_time"] = array(
1713
  "label" => __( "Posted on Instagram" ),
1714
  "input" => "html",
@@ -1753,36 +2450,42 @@ class WIS_InstagramSlider extends WP_Widget {
1753
  * This solution runs in O(n) time BUT assumes that all incoming input is
1754
  * strictly UTF8.
1755
  *
1756
- * @param string $input The input to be sanitised
1757
  *
1758
- * @return the sanitized input
1759
  */
1760
  private function sanitize( $input ) {
1761
 
1762
- if ( !empty( $input ) ) {
1763
- $utf8_2byte = 0xC0 /*1100 0000*/ ;
1764
- $utf8_2byte_bmask = 0xE0 /*1110 0000*/ ;
1765
- $utf8_3byte = 0xE0 /*1110 0000*/ ;
1766
- $utf8_3byte_bmask = 0XF0 /*1111 0000*/ ;
1767
- $utf8_4byte = 0xF0 /*1111 0000*/ ;
1768
- $utf8_4byte_bmask = 0xF8 /*1111 1000*/ ;
 
 
 
 
 
 
1769
 
1770
  $sanitized = "";
1771
  $len = strlen( $input );
1772
- for ( $i = 0; $i < $len; ++$i ) {
1773
 
1774
- $mb_char = $input[$i]; // Potentially a multibyte sequence
1775
  $byte = ord( $mb_char );
1776
 
1777
  if ( ( $byte & $utf8_2byte_bmask ) == $utf8_2byte ) {
1778
- $mb_char .= $input[++$i];
1779
  } else if ( ( $byte & $utf8_3byte_bmask ) == $utf8_3byte ) {
1780
- $mb_char .= $input[++$i];
1781
- $mb_char .= $input[++$i];
1782
  } else if ( ( $byte & $utf8_4byte_bmask ) == $utf8_4byte ) {
1783
  // Replace with ? to avoid MySQL exception
1784
  $mb_char = '';
1785
- $i += 3;
1786
  }
1787
 
1788
  $sanitized .= $mb_char;
@@ -1795,29 +2498,199 @@ class WIS_InstagramSlider extends WP_Widget {
1795
  }
1796
 
1797
  /**
1798
- * @param $token
 
 
1799
  *
1800
- * @return bool
1801
  */
1802
- private function update_account_profiles($token) {
1803
- $args = array(
1804
- 'body' => array(
 
1805
  'access_token' => $token,
1806
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1807
  );
1808
- $response = wp_remote_get( self::USERS_SELF_URL, $args);
 
 
 
1809
  if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1810
- $user_profile = array();
1811
- $user_profile = apply_filters( 'wis/account/profiles', $user_profile );
 
 
 
1812
 
1813
- $user = json_decode( wp_remote_retrieve_body( $response ), true );
1814
- $user['data']['token'] = $token;
1815
- $user_profile[$user['data']['username']] = $user['data'];
1816
- WIS_Plugin::app()->updateOption( 'account_profiles', $user_profile);
1817
- return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1818
  }
 
1819
  return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1820
  }
1821
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1822
  } // end of class WIS_InstagramSlider
1823
  ?>
1
  <?php
2
+
3
  /**
4
  * WIS_InstagramSlider Class
5
  */
6
  class WIS_InstagramSlider extends WP_Widget {
7
 
8
+ private static $app;
9
+
 
 
 
 
 
10
  const USERNAME_URL = 'https://www.instagram.com/{username}/';
11
  const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
12
+ //const USERS_SELF_URL = 'https://api.instagram.com/v1/users/self/';
13
+ //const USERS_SELF_MEDIA_URL = 'https://api.instagram.com/v1/users/self/media/recent/';
14
+ const USERS_SELF_URL = 'https://graph.instagram.com/me';
15
+ const USERS_SELF_MEDIA_URL = 'https://graph.instagram.com/';
16
+
17
+ const USERS_SELF_URL_NEW = 'https://graph.facebook.com/';
18
 
19
  /**
20
  * @var WIS_Plugin
26
  */
27
  public $sliders;
28
 
29
+ /**
30
+ * @var array
31
+ */
32
+ public $options_linkto;
33
+
34
  public static function app() {
35
  return self::$app;
36
  }
37
+
38
  /**
39
  * Initialize the plugin by registering widget and loading public scripts
40
  *
43
  self::$app = $this;
44
 
45
  // Widget ID and Class Setup
46
+ parent::__construct( 'jr_insta_slider', __( 'Social Slider - Instagram', 'instagram-slider-widget' ), array(
47
+ 'classname' => 'jr-insta-slider',
48
+ 'description' => __( 'A widget that displays a slider with instagram images ', 'instagram-slider-widget' )
49
+ ) );
 
50
 
51
+ $this->WIS = WIS_Plugin::app();
52
+ $this->sliders = array(
53
  "slider" => 'Slider - Normal',
54
  "slider-overlay" => 'Slider - Overlay Text',
55
  "thumbs" => 'Thumbnails',
56
  "thumbs-no-border" => 'Thumbnails - Without Border',
57
  );
58
+ $this->options_linkto = array(
59
+ "image_link" => 'Instagram Image',
60
+ "image_url" => 'Image URL',
61
+ "custom_url" => 'Custom Link',
62
+ "none" => 'None'
63
+ );
64
+
65
  /**
66
  * Фильтр для добавления слайдеров
67
  */
68
+ $this->sliders = apply_filters( 'wis/sliders', $this->sliders );
69
+
70
+ /**
71
+ * Фильтр для добавления popup
72
+ */
73
+ $this->options_linkto = apply_filters( 'wis/options/link_to', $this->options_linkto );
74
 
75
 
76
  // Shortcode
80
  add_action( 'jr_instagram', array( $this, 'instagram_images' ) );
81
 
82
  // Enqueue Plugin Styles and scripts
83
+ add_action( 'wp_enqueue_scripts', array( $this, 'public_enqueue' ) );
84
 
85
  // Enqueue Plugin Styles and scripts for admin pages
86
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ) );
89
  add_action( 'wp_ajax_jr_delete_insta_dupes', array( $this, 'delete_dupes' ) );
90
 
91
  // Add new attachment field desctiptions
92
+ add_filter( 'attachment_fields_to_edit', array( $this, 'insta_attachment_fields' ), 10, 2 );
93
 
94
  // Add action for single cron events
95
+ add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10, 3 );
96
 
97
+ add_action( 'wp_ajax_wis_add_account_by_token', array( $this, 'add_account_by_token' ) );
98
 
99
  add_action( 'wp_ajax_wis_delete_account', array( $this, 'delete_account' ) );
100
 
106
  public static function register_widget() {
107
  register_widget( __CLASS__ );
108
  register_sidebar( array(
109
+ 'name' => __( 'Social Slider - Shortcode Generator', 'instagram-slider-widget' ),
110
+ 'id' => 'jr-insta-shortcodes',
111
+ 'description' => __( "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. Copy the shortocde generated at the bottom of the widget form and use it on posts or pages.", 'instagram-slider-widget' )
112
+ ) );
 
113
  }
114
 
115
  /**
117
  */
118
  public function public_enqueue() {
119
 
120
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'font-awesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css' );
 
 
121
 
122
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'instag-slider', WIS_PLUGIN_URL . '/assets/css/instag-slider.css', array(), WIS_Plugin::app()->getPluginVersion() );
123
+ wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jquery-pllexi-slider', WIS_PLUGIN_URL . '/assets/js/jquery.flexslider-min.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), false );
124
+ //wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jr-insta', WIS_PLUGIN_URL.'/assets/js/jr-insta.js', array( ), WIS_Plugin::app()->getPluginVersion(), false );
125
+ wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'wis-header', WIS_PLUGIN_URL . '/assets/css/wis-header.css', array(), WIS_Plugin::app()->getPluginVersion() );
126
+ wp_localize_script( WIS_Plugin::app()->getPrefix() . 'jr-insta', 'ajax', array(
127
+ 'url' => admin_url( 'admin-ajax.php' ),
128
+ 'nonce' => wp_create_nonce( "addAccountByToken" ),
129
+ ) );
130
  }
131
 
132
  /**
133
  * Enqueue admin side scripts and styles
134
  *
135
+ * @param string $hook
136
  */
137
  public function admin_enqueue( $hook ) {
138
 
139
  if ( 'widgets.php' != $hook ) {
140
  return;
141
  }
142
+ wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_DIR . '/admin/assets/css/jr-insta-admin.css', array(), WIS_Plugin::app()->getPluginVersion() );
143
+ wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_DIR . '/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), true );
144
 
145
  }
146
 
168
  /**
169
  * Update the widget settings
170
  *
171
+ * @param array $new_instance New instance values
172
+ * @param array $instance Old instance values
173
  *
174
  * @return array
175
  */
176
  public function update( $new_instance, $instance ) {
177
 
178
+ $instance['title'] = strip_tags( isset( $new_instance['title'] ) ? $new_instance['title'] : null );
179
+ $instance['search_for'] = isset( $new_instance['search_for'] ) ? $new_instance['search_for'] : null;
180
+ $instance['username'] = isset( $new_instance['username'] ) ? $new_instance['username'] : null;
181
+ $instance['account'] = isset( $new_instance['account'] ) ? $new_instance['account'] : null;
182
+ $instance['account_business'] = isset( $new_instance['account_business'] ) ? $new_instance['account_business'] : null;
183
+ $instance['hashtag'] = isset( $new_instance['hashtag'] ) ? $new_instance['hashtag'] : null;
184
+ $instance['blocked_users'] = isset( $new_instance['blocked_users'] ) ? $new_instance['blocked_users'] : null;
185
+ $instance['blocked_words'] = isset( $new_instance['blocked_words'] ) ? $new_instance['blocked_words'] : null;
186
+ $instance['allowed_words'] = isset( $new_instance['allowed_words'] ) ? $new_instance['allowed_words'] : null;
187
+ $instance['attachment'] = isset( $new_instance['attachment'] ) ? $new_instance['attachment'] : null;
188
+ $instance['template'] = isset( $new_instance['template'] ) ? $new_instance['template'] : 'slider';
189
+ $instance['images_link'] = isset( $new_instance['images_link'] ) ? $new_instance['images_link'] : 'image_link';
190
+ $instance['custom_url'] = isset( $new_instance['custom_url'] ) ? $new_instance['custom_url'] : null;
191
+ $instance['orderby'] = isset( $new_instance['orderby'] ) ? $new_instance['orderby'] : 'rand';
192
+ $instance['images_number'] = isset( $new_instance['images_number'] ) ? $new_instance['images_number'] : 20;
193
+ $instance['columns'] = isset( $new_instance['columns'] ) ? $new_instance['columns'] : 4;
194
+ $instance['refresh_hour'] = isset( $new_instance['refresh_hour'] ) ? $new_instance['refresh_hour'] : 5;
195
+ $instance['slick_img_size'] = isset( $new_instance['slick_img_size'] ) ? $new_instance['slick_img_size'] : 300;
196
+ $instance['image_size'] = isset( $new_instance['image_size'] ) ? $new_instance['image_size'] : 'standard';
197
+ $instance['image_link_rel'] = isset( $new_instance['image_link_rel'] ) ? $new_instance['image_link_rel'] : null;
198
+ $instance['image_link_class'] = isset( $new_instance['image_link_class'] ) ? $new_instance['image_link_class'] : null;
199
+ $instance['no_pin'] = isset( $new_instance['no_pin'] ) ? $new_instance['no_pin'] : null;
200
+ $instance['shopifeed_phone'] = isset( $new_instance['shopifeed_phone'] ) ? $new_instance['shopifeed_phone'] : '';
201
+ $instance['shopifeed_color'] = isset( $new_instance['shopifeed_color'] ) ? $new_instance['shopifeed_color'] : "#DA004A";
202
+ $instance['shopifeed_columns'] = isset( $new_instance['shopifeed_columns'] ) ? $new_instance['shopifeed_columns'] : 3;
203
+ $instance['controls'] = isset( $new_instance['controls'] ) ? $new_instance['controls'] : 'prev_next';
204
+ $instance['animation'] = isset( $new_instance['animation'] ) ? $new_instance['animation'] : 'slide';
205
+ $instance['caption_words'] = isset( $new_instance['caption_words'] ) ? $new_instance['caption_words'] : 20;
206
+ $instance['slidespeed'] = isset( $new_instance['slidespeed'] ) ? $new_instance['slidespeed'] : 7000;
207
+ $instance['description'] = isset( $new_instance['description'] ) ? $new_instance['description'] : array(
208
+ 'username',
209
+ 'time',
210
+ 'caption'
211
+ );
212
+ $instance['support_author'] = isset( $new_instance['support_author'] ) ? $new_instance['support_author'] : null;
213
+ $instance['gutter'] = isset( $new_instance['gutter'] ) ? $new_instance['gutter'] : null;
214
+ $instance['masonry_image_width'] = isset( $new_instance['masonry_image_width'] ) ? $new_instance['masonry_image_width'] : 200;
215
+ $instance['slick_slides_to_show'] = isset( $new_instance['slick_slides_to_show'] ) ? $new_instance['slick_slides_to_show'] : 3;
216
+ $instance['enable_control_buttons'] = isset( $new_instance['enable_control_buttons'] ) ? $new_instance['enable_control_buttons'] : 0;
217
+ $instance['keep_ratio'] = isset( $new_instance['keep_ratio'] ) ? $new_instance['keep_ratio'] : 0;
218
+ $instance['keep_ratio'] = isset( $new_instance['keep_ratio'] ) ? $new_instance['keep_ratio'] : 0;
219
+ $instance['enable_ad'] = isset( $new_instance['enable_ad'] ) ? $new_instance['enable_ad'] : 0;
220
+ $instance['slick_slides_padding'] = isset( $new_instance['slick_slides_padding'] ) ? $new_instance['slick_slides_padding'] : 0;
221
+ $instance['show_feed_header'] = isset( $new_instance['show_feed_header'] ) ? $new_instance['show_feed_header'] : 0;
222
+ $instance['highlight_offset'] = isset( $new_instance['highlight_offset'] ) ? $new_instance['highlight_offset'] : 1;
223
+ $instance['highlight_pattern'] = isset( $new_instance['highlight_pattern'] ) ? $new_instance['highlight_pattern'] : 6;
224
 
225
  return $instance;
226
  }
232
  */
233
  public function form( $instance ) {
234
 
235
+ $accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles', array() );
236
+ $accounts_business = WIS_Plugin::app()->getPopulateOption( 'account_profiles_new', array() );
237
+ if ( ! is_array( $accounts ) ) {
238
+ $accounts = array();
239
+ }
240
+ if ( ! is_array( $accounts_business ) ) {
241
+ $accounts_business = array();
242
+ }
243
+ $sliders = $this->sliders;
244
+ $options_linkto = $this->options_linkto;
245
 
246
+ if ( count( $accounts ) ) {
247
+ $s_for = 'account';
248
+ } else if ( count( $accounts_business ) ) {
249
+ $s_for = 'account_business';
250
+ } else {
251
+ $s_for = 'username';
252
+ }
253
  $defaults = array(
254
+ 'title' => __( 'Social Slider', 'instagram-slider-widget' ),
255
+ 'search_for' => $s_for,
256
+ 'account' => '',
257
+ 'account_business' => '',
258
+ 'username' => '',
259
+ 'hashtag' => '',
260
+ 'blocked_users' => '',
261
+ 'blocked_words' => '',
262
+ 'allowed_words' => '',
263
+ 'attachment' => 0,
264
+ 'template' => 'slider',
265
+ 'images_link' => 'image_link',
266
+ 'custom_url' => '',
267
+ 'orderby' => 'rand',
268
+ 'images_number' => 20,
269
+ 'columns' => 4,
270
+ 'refresh_hour' => 5,
271
+ 'slick_img_size' => 300,
272
+ 'image_size' => 'standard',
273
+ 'image_link_rel' => '',
274
+ 'image_link_class' => '',
275
+ 'no_pin' => 0,
276
+ 'controls' => 'prev_next',
277
+ 'animation' => 'slide',
278
+ 'caption_words' => 20,
279
+ 'shopifeed_phone' => '',
280
+ 'shopifeed_color' => "#DA004A",
281
+ 'shopifeed_columns' => 3,
282
+ 'slidespeed' => 7000,
283
+ 'description' => array( 'username', 'time', 'caption' ),
284
+ 'support_author' => 0,
285
+ 'gutter' => 0,
286
+ 'masonry_image_width' => 200,
287
  'slick_slides_to_show' => 3,
288
+ 'enable_control_buttons' => 0,
289
+ 'keep_ratio' => 0,
290
+ 'enable_ad' => 0,
291
+ 'slick_slides_padding' => 0,
292
+ 'show_feed_header' => 1,
293
+ 'highlight_offset' => 1,
294
+ 'highlight_pattern' => 6,
295
  );
296
 
297
  $instance = wp_parse_args( (array) $instance, $defaults );
299
  ?>
300
  <div class="jr-container">
301
  <p>
302
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e( 'Title:', 'instagram-slider-widget' ); ?></strong></label>
303
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>"
304
+ name="<?php echo $this->get_field_name( 'title' ); ?>"
305
+ value="<?php echo $instance['title']; ?>"/>
306
  </p>
307
  <p>
308
  <strong><?php _e( 'Search Instagram for:', 'instagram-slider-widget' ); ?></strong>
309
  <span class="jr-search-for-container">
310
  <label class="jr-seach-for">
311
+ <input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>"
312
+ name="<?php echo $this->get_field_name( 'search_for' ); ?>"
313
+ value="account" <?php checked( 'account', $instance['search_for'] ); ?> />
314
  <?php _e( 'Account:', 'instagram-slider-widget' ); ?>
315
  </label>
316
+ <?php
317
+ if ( count( $accounts ) ) {
318
+ ?>
319
+
320
+ <select id="<?php echo $this->get_field_id( 'account' ); ?>" class=""
321
+ name="<?php echo $this->get_field_name( 'account' ); ?>"><?php
322
+ foreach ( $accounts as $acc ) {
323
+ $selected = $instance['account'] == $acc['username'] ? "selected='selected'" : "";
324
+ echo "<option value='{$acc['username']}' {$selected}>{$acc['username']}</option>";
325
+ }
326
+ ?>
 
327
  </select><?php
328
+ } else {
329
+ echo "<a href='" . admin_url( 'admin.php?page=settings-wisw' ) . "'>" . __( 'Add account in settings', 'instagram-slider-widget' ) . "</a>";
330
  }
331
+ ?>
332
+ </span>
333
+ <span class="jr-search-for-container">
334
+ <label class="jr-seach-for">
335
+ <input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>"
336
+ name="<?php echo $this->get_field_name( 'search_for' ); ?>"
337
+ value="account_business" <?php checked( 'account_business', $instance['search_for'] ); ?> />
338
+ <?php _e( 'Business account:', 'instagram-slider-widget' ); ?>
339
+ </label>
340
+ <?php
341
+ if ( count( $accounts_business ) ) {
342
+ ?>
343
+
344
+ <select id="<?php echo $this->get_field_id( 'account_business' ); ?>" class=""
345
+ name="<?php echo $this->get_field_name( 'account_business' ); ?>"><?php
346
+ foreach ( $accounts_business as $acc ) {
347
+ $selected = $instance['account_business'] == $acc['username'] ? "selected='selected'" : "";
348
+ echo "<option value='{$acc['username']}' {$selected}>{$acc['username']}</option>";
349
+ }
350
+ ?>
351
+ </select><?php
352
+ } else {
353
+ echo "<a href='" . admin_url( 'admin.php?page=settings-wisw' ) . "'>" . __( 'Add account in settings', 'instagram-slider-widget' ) . "</a>";
354
  }
355
  ?>
356
  </span>
357
+ <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio"
358
+ id="<?php echo $this->get_field_id( 'search_for' ); ?>"
359
+ name="<?php echo $this->get_field_name( 'search_for' ); ?>"
360
+ value="username" <?php checked( 'username', $instance['search_for'] ); ?> /> <?php _e( 'Username:', 'instagram-slider-widget' ); ?></label> <input
361
+ id="<?php echo $this->get_field_id( 'username' ); ?>" class="inline-field-text"
362
+ name="<?php echo $this->get_field_name( 'username' ); ?>"
363
+ value="<?php echo $instance['username']; ?>"/></span>
364
+ <span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio"
365
+ id="<?php echo $this->get_field_id( 'search_for' ); ?>"
366
+ name="<?php echo $this->get_field_name( 'search_for' ); ?>"
367
+ value="hashtag" <?php checked( 'hashtag', $instance['search_for'] ); ?> /> <?php _e( 'Hashtag:', 'instagram-slider-widget' ); ?></label> <input
368
+ id="<?php echo $this->get_field_id( 'hashtag' ); ?>" class="inline-field-text"
369
+ name="<?php echo $this->get_field_name( 'hashtag' ); ?>"
370
+ value="<?php echo $instance['hashtag']; ?>"
371
+ placeholder="<?php _e( 'without # sign', 'instagram-slider-widget' ) ?>"/></span>
372
+ </p>
373
+ <p class="<?php if ( 'hashtag' != $instance['search_for'] ) {
374
+ echo 'hidden';
375
+ } ?>">
376
+ <label for="<?php echo $this->get_field_id( 'blocked_users' ); ?>"><?php _e( 'Block Users', 'instagram-slider-widget' ); ?>
377
+ :</label>
378
+ <input class="widefat" id="<?php echo $this->get_field_id( 'blocked_users' ); ?>"
379
+ name="<?php echo $this->get_field_name( 'blocked_users' ); ?>"
380
+ value="<?php echo $instance['blocked_users']; ?>"/>
381
+ <span class="jr-description"><?php _e( 'Enter words separated by commas whose images you don\'t want to show', 'instagram-slider-widget' ); ?></span>
382
+ </p>
383
+ <p class="<?php if ( 'hashtag' == $instance['search_for'] ) {
384
+ echo 'hidden';
385
+ } ?>">
386
+ <label for="<?php echo $this->get_field_id( 'blocked_words' ); ?>"><?php _e( 'Block words', 'instagram-slider-widget' ); ?>
387
+ :</label>
388
+ <input class="widefat" id="<?php echo $this->get_field_id( 'blocked_words' ); ?>"
389
+ name="<?php echo $this->get_field_name( 'blocked_words' ); ?>"
390
+ value="<?php echo $instance['blocked_words']; ?>"/>
391
+ <span class="jr-description"><?php _e( 'Enter comma-separated words. If one of them occurs in the image description, the image will not be displayed', 'instagram-slider-widget' ); ?></span>
392
  </p>
393
+ <p class="<?php if ( 'hashtag' == $instance['search_for'] ) {
394
+ echo 'hidden';
395
+ } ?>">
396
+ <label for="<?php echo $this->get_field_id( 'allowed_words' ); ?>"><?php _e( 'Allow words', 'instagram-slider-widget' ); ?>
397
+ :</label>
398
+ <input class="widefat" id="<?php echo $this->get_field_id( 'allowed_words' ); ?>"
399
+ name="<?php echo $this->get_field_name( 'allowed_words' ); ?>"
400
+ value="<?php echo $instance['allowed_words']; ?>"/>
401
+ <span class="jr-description"><?php _e( 'Enter comma-separated words. If one of them occurs in the image description, the image will be displayed', 'instagram-slider-widget' ); ?></span>
402
  </p>
403
+ <p class="<?php if ( 'username' != $instance['search_for'] ) {
404
+ echo 'hidden';
405
+ } ?>"><strong><?php _e( 'Save in Media Library: ', 'instagram-slider-widget' ); ?></strong>
406
 
407
  <label class="switch" for="<?php echo $this->get_field_id( 'attachment' ); ?>">
408
+ <input class="widefat" id="<?php echo $this->get_field_id( 'attachment' ); ?>"
409
+ name="<?php echo $this->get_field_name( 'attachment' ); ?>" type="checkbox"
410
+ value="1" <?php checked( '1', $instance['attachment'] ); ?> /><span
411
+ class="slider round"></span></label>
412
+ <br><span
413
+ class="jr-description"><?php _e( ' Turn on to save Instagram Images into WordPress media library.', 'instagram-slider-widget' ) ?></span>
414
  <?php
415
+ if ( isset ( $instance['username'] ) && ! empty( $instance['username'] ) ) {
416
+ echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="' . $instance['username'] . '"><strong>Remove</strong> duplicate images for <strong>' . $instance['username'] . '</strong></button><span class="jr-spinner"></span>';
417
  echo '<br><br><strong><span class="deleted-dupes-info"></span></strong>';
418
  wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
419
  }
420
  ?>
421
  </p>
422
  <p id="img_to_show">
423
+ <label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Count of images to show:', 'instagram-slider-widget' ); ?></strong>
424
+ <input class="small-text" type="number" min="1" max=""
425
+ id="<?php echo $this->get_field_id( 'images_number' ); ?>"
426
+ name="<?php echo $this->get_field_name( 'images_number' ); ?>"
427
+ value="<?php echo $instance['images_number']; ?>"/>
428
  <span class="jr-description">
429
+ <?php if ( ! $this->WIS->is_premium() ) {
430
+ _e( 'Maximum 20 images in free version.', 'instagram-slider-widget' );
431
+ echo " " . sprintf( __( "More in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), $this->WIS->get_support()->get_pricing_url( true, "wis_widget_settings" ) );
432
+ }
433
+ ?>
434
  </span>
435
  </label>
436
  </p>
437
  <p>
438
  <label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'instagram-slider-widget' ); ?></strong>
439
+ <input class="small-text" type="number" min="1" max="200"
440
+ id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"
441
+ name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>"
442
+ value="<?php echo $instance['refresh_hour']; ?>"/>
443
+ <span><?php _e( 'hours', 'instagram-slider-widget' ); ?></span>
444
  </label>
445
  </p>
446
+ <p class="show_feed_header <?php if ( 'account_business' != $instance['search_for'] ) {
447
+ echo 'hidden';
448
+ } ?>">
449
  <strong><?php _e( 'Show feed header:', 'instagram-slider-widget' ); ?></strong>
450
  <label class="switch" for="<?php echo $this->get_field_id( 'show_feed_header' ); ?>">
451
+ <input class="widefat" id="<?php echo $this->get_field_id( 'show_feed_header' ); ?>"
452
+ name="<?php echo $this->get_field_name( 'show_feed_header' ); ?>" type="checkbox"
453
+ value="1" <?php checked( '1', $instance['show_feed_header'] ); ?> />
454
  <span class="slider round"></span>
455
  </label>
456
  </p>
457
  <p>
458
  <label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'instagram-slider-widget' ); ?></strong>
459
+ <select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>"
460
+ id="<?php echo $this->get_field_id( 'template' ); ?>">
461
+ <?php
462
+ if ( count( $sliders ) ) {
463
+ foreach ( $sliders as $key => $slider ) {
464
+ $selected = ( $instance['template'] == $key ) ? "selected='selected'" : '';
465
+ echo "<option value='{$key}' {$selected}>{$slider}</option>\n";
466
+ }
467
+ }
468
+ if ( ! $this->WIS->is_premium() ) {
469
+ ?>
470
  <optgroup label="Available in PRO">
471
+ <option value='slick_slider' disabled="disabled">Slick</option>
472
+ <option value='masonry' disabled="disabled">Masonry</option>
473
+ <option value='highlight' disabled="disabled">Highlight</option>
474
+ </optgroup>
475
+ <?php
476
+ }
477
+ if( !defined('SPFD_PLUGIN_ACTIVE') ){
478
+ ?>
479
+ <optgroup label="Available in Shopifeed Addon">
480
+ <option value='showcase' disabled="disabled">Shopifeed - Thumbnails</option>
481
+ </optgroup>
482
+ <?php
483
+ } elseif (!Shopifeed::app()->is_premium()){
484
+ ?>
485
+ <optgroup label="Available in Shopifeed Addon">
486
+ <option value='showcase' disabled="disabled">Shopifeed - Thumbnails</option>
487
  </optgroup>
488
+ <?php
489
  }
490
+ ?>
491
  </select>
492
  </label>
493
  </p>
494
+ <span id="masonry_notice"
495
+ class="masonry_notice jr-description <?php if ( 'masonry' != $instance['template'] ) {
496
+ echo 'hidden';
497
+ } ?>"><?php _e( "Not recommended for <strong>sidebar</strong>" ) ?></span>
498
+ <p class="<?php if ( 'thumbs' != $instance['template'] && 'thumbs-no-border' != $instance['template'] ) {
499
+ echo 'hidden';
500
+ } ?>">
501
+ <label for="<?php echo $this->get_field_id( 'columns' ); ?>"><strong><?php _e( 'Number of Columns:', 'instagram-slider-widget' ); ?></strong>
502
+ <input class="small-text" id="<?php echo $this->get_field_id( 'columns' ); ?>"
503
+ name="<?php echo $this->get_field_name( 'columns' ); ?>"
504
+ value="<?php echo $instance['columns']; ?>"/>
505
+ <span class='jr-description'><?php _e( 'max is 10 ( only for thumbnails template )', 'instagram-slider-widget' ); ?></span>
506
  </label>
507
  </p>
508
+ <p class="masonry_settings <?php if ( 'masonry' != $instance['template'] ) {
509
+ echo 'hidden';
510
+ } ?>">
511
+ <label for="<?php echo $this->get_field_id( 'gutter' ); ?>"><strong><?php _e( 'Vertical space between item elements:', 'instagram-slider-widget' ); ?></strong>
512
+ <input class="small-text" id="<?php echo $this->get_field_id( 'gutter' ); ?>"
513
+ name="<?php echo $this->get_field_name( 'gutter' ); ?>"
514
+ value="<?php echo $instance['gutter']; ?>"/>
515
+ <span><?php _e( 'px', 'instagram-slider-widget' ); ?></span>
516
  </label>
517
  <br>
518
+ <label for="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>"><strong><?php _e( 'Image width:', 'instagram-slider-widget' ); ?></strong>
519
+ <input class="small-text" id="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>"
520
+ name="<?php echo $this->get_field_name( 'masonry_image_width' ); ?>"
521
+ value="<?php echo $instance['masonry_image_width']; ?>"/>
522
+ <span><?php _e( 'px', 'instagram-slider-widget' ); ?></span>
523
  </label>
524
  </p>
525
+ <p class="slick_settings <?php if ( 'slick_slider' != $instance['template'] ) {
526
+ echo 'hidden';
527
+ } ?>">
528
+ <strong><?php _e( 'Enable control buttons:', 'instagram-slider-widget' ); ?></strong>
529
+ <label class="switch" for="<?php echo $this->get_field_id( 'enable_control_buttons' ); ?>">
530
+ <input class="widefat" id="<?php echo $this->get_field_id( 'enable_control_buttons' ); ?>"
531
+ name="<?php echo $this->get_field_name( 'enable_control_buttons' ); ?>" type="checkbox"
532
+ value="1" <?php checked( '1', $instance['enable_control_buttons'] ); ?> />
533
+ <span class="slider round"></span>
534
+ </label>
535
+ <br>
536
+ <strong><?php _e( 'Keep 1x1 Instagram ratio:', 'instagram-slider-widget' ); ?></strong>
537
+ <label class="switch" for="<?php echo $this->get_field_id( 'keep_ratio' ); ?>">
538
+ <input class="widefat" id="<?php echo $this->get_field_id( 'keep_ratio' ); ?>"
539
+ name="<?php echo $this->get_field_name( 'keep_ratio' ); ?>" type="checkbox"
540
+ value="1" <?php checked( '1', $instance['keep_ratio'] ); ?> />
541
+ <span class="slider round"></span>
542
+ </label>
543
+ <br>
544
+ <label class="slick_img_size" for="<?php echo $this->get_field_id( 'slick_img_size' ); ?>"><strong><?php _e( 'Images size: ', 'instagram-slider-widget' ); ?></strong>
545
+ <input class="small-text" type="number" min="1" max="500" step="1"
546
+ id="<?php echo $this->get_field_id( 'slick_img_size' ); ?>"
547
+ name="<?php echo $this->get_field_name( 'slick_img_size' ); ?>"
548
+ value="<?php echo $instance['slick_img_size']; ?>"/>
549
+ <span><?php _e( 'px', 'instagram-slider-widget' ); ?></span>
550
+ </label>
551
+ <br>
552
+ <label for="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>"><strong><?php _e( 'Pictures per slide:', 'instagram-slider-widget' ); ?></strong>
553
+ <input class="small-text" id="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>"
554
+ name="<?php echo $this->get_field_name( 'slick_slides_to_show' ); ?>"
555
+ value="<?php echo $instance['slick_slides_to_show']; ?>"/>
556
+ <span><?php _e( 'pictures', 'instagram-slider-widget' ); ?></span>
557
  </label>
558
  <br>
559
  <strong><?php _e( 'Space between pictures:', 'instagram-slider-widget' ); ?></strong>
560
  <label class="switch" for="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>">
561
+ <input class="widefat" id="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>"
562
+ name="<?php echo $this->get_field_name( 'slick_slides_padding' ); ?>" type="checkbox"
563
+ value="1" <?php checked( '1', $instance['slick_slides_padding'] ); ?> />
564
  <span class="slider round"></span>
565
  </label>
566
+ <br>
567
  </p>
568
+ <p class="highlight_settings <?php if ( 'highlight' != $instance['template'] ) {
569
+ echo 'hidden';
570
+ } ?>">
571
+ <label for="<?php echo $this->get_field_id( 'highlight_offset' ); ?>"><strong><?php _e( 'Offset', 'instagram-slider-widget' ); ?></strong>
572
+ <input type="number" min="1" class="small-text"
573
+ id="<?php echo $this->get_field_id( 'highlight_offset' ); ?>"
574
+ name="<?php echo $this->get_field_name( 'highlight_offset' ); ?>"
575
+ value="<?php echo $instance['highlight_offset']; ?>"/>
576
  </label>
577
  <br>
578
+ <label for="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>"><strong><?php _e( 'Pattern', 'instagram-slider-widget' ); ?></strong>
579
+ <input type="number" min="0" class="small-text"
580
+ id="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>"
581
+ name="<?php echo $this->get_field_name( 'highlight_pattern' ); ?>"
582
+ value="<?php echo $instance['highlight_pattern']; ?>"/>
583
  </label>
584
  </p>
585
+ <p class="shopifeed_settings <?php if ( 'showcase' != $instance['template'] ) {
586
+ echo 'hidden';
587
+ } ?>">
588
+ <label for="<?php echo $this->get_field_id( 'shopifeed_phone' ); ?>"><strong><?php _e( 'Phone', 'instagram-slider-widget' ); ?></strong>
589
+ <input type="text" class="shopifeed_phone"
590
+ id="<?php echo $this->get_field_id( 'shopifeed_phone' ); ?>"
591
+ name="<?php echo $this->get_field_name( 'shopifeed_phone' ); ?>"
592
+ value="<?php echo $instance['shopifeed_phone']; ?>"/>
593
+ <span id="" class="jr-description"><?php _e( "Use for whatsapp messages" ) ?></span>
594
+ </label>
595
+ <label for="<?php echo $this->get_field_id( 'shopifeed_color' ); ?>"><strong><?php _e( 'Buttons Color', 'instagram-slider-widget' ); ?></strong>
596
+ <input type="color" class="shopifeed_color"
597
+ id="<?php echo $this->get_field_id( 'shopifeed_color' ); ?>"
598
+ name="<?php echo $this->get_field_name( 'shopifeed_color' ); ?>"
599
+ value="<?php echo $instance['shopifeed_color']; ?>"
600
+ style="border: none !important;"/>
601
+ </label>
602
 
 
 
 
 
603
  <br>
604
+ <label for="<?php echo $this->get_field_id( 'shopifeed_columns' ); ?>"><strong><?php _e( 'Columns count', 'instagram-slider-widget' ); ?></strong>
605
+ <input type="number" class="shopifeed_columns" min="1" max="6" step="1"
606
+ id="<?php echo $this->get_field_id( 'shopifeed_columns' ); ?>"
607
+ name="<?php echo $this->get_field_name( 'shopifeed_columns' ); ?>"
608
+ value="<?php echo $instance['shopifeed_columns']; ?>"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
609
  </label>
610
  </p>
611
+ <p class="slider_normal_settings jr-slider-options <?php if ( 'slider' != $instance['template'] || 'slider-overlay' != $instance['template'] ) {
612
+ echo 'hidden';
613
+ } ?>">
614
+
615
+ <?php _e( 'Slider Navigation Controls:', 'instagram-slider-widget' ); ?><br>
616
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>"
617
+ name="<?php echo $this->get_field_name( 'controls' ); ?>"
618
+ value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'instagram-slider-widget' ); ?>
619
+ </label>
620
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>"
621
+ name="<?php echo $this->get_field_name( 'controls' ); ?>"
622
+ value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'instagram-slider-widget' ); ?>
623
+ </label>
624
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>"
625
+ name="<?php echo $this->get_field_name( 'controls' ); ?>"
626
+ value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'instagram-slider-widget' ); ?>
627
+ </label>
628
+ <br>
629
+ <?php _e( 'Slider Animation:', 'instagram-slider-widget' ); ?><br>
630
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>"
631
+ name="<?php echo $this->get_field_name( 'animation' ); ?>"
632
+ value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'instagram-slider-widget' ); ?>
633
+ </label>
634
+ <label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>"
635
+ name="<?php echo $this->get_field_name( 'animation' ); ?>"
636
+ value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'instagram-slider-widget' ); ?>
637
+ </label>
638
+ <br>
639
+ <label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'instagram-slider-widget' ); ?>
640
+ <input type="number" min="1000" max="10000" step="100" class="small-text"
641
+ id="<?php echo $this->get_field_id( 'slidespeed' ); ?>"
642
+ name="<?php echo $this->get_field_name( 'slidespeed' ); ?>"
643
+ value="<?php echo $instance['slidespeed']; ?>"/>
644
+ <span><?php _e( 'milliseconds', 'instagram-slider-widget' ); ?></span>
645
+ <span class='jr-description'><?php _e( '1000 milliseconds = 1 second', 'instagram-slider-widget' ); ?></span>
646
+ </label>
647
+ <label for="<?php echo $this->get_field_id( 'description' ); ?>"><?php _e( 'Slider Text Description:', 'instagram-slider-widget' ); ?></label>
648
+ <select size=3 class='widefat' id="<?php echo $this->get_field_id( 'description' ); ?>"
649
+ name="<?php echo $this->get_field_name( 'description' ); ?>[]" multiple="multiple">
650
+ <option class="<?php if ( 'hashtag' == $instance['search_for'] ) {
651
+ echo 'hidden';
652
+ } ?>"
653
+ value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'instagram-slider-widget' ); ?></option>
654
+ <option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'instagram-slider-widget' ); ?></option>
655
+ <option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'instagram-slider-widget' ); ?></option>
656
  </select>
657
+ <span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'instagram-slider-widget' ) ?></span>
658
+ </p>
659
+ <p class="words_in_caption <?php if ( 'thumbs' == $instance['template'] || 'thumbs-no-border' == $instance['template'] || 'highlight' == $instance['template'] || 'slick_slider' == $instance['template'] ) {
660
+ echo 'hidden';
661
+ } ?>">
662
+ <label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><strong><?php _e( 'Number of words in caption:', 'instagram-slider-widget' ); ?></strong>
663
+ <input class="small-text" type="number" min="0" max="200"
664
+ id="<?php echo $this->get_field_id( 'caption_words' ); ?>"
665
+ name="<?php echo $this->get_field_name( 'caption_words' ); ?>"
666
+ value="<?php echo $instance['caption_words']; ?>"/>
667
+ </label>
668
  </p>
669
+ <br>
670
+ <strong><?php _e( 'Enable author\'s ad:', 'instagram-slider-widget' ); ?></strong>
671
+ <label class="switch" for="<?php echo $this->get_field_id( 'enable_ad' ); ?>">
672
+ <input class="widefat" id="<?php echo $this->get_field_id( 'enable_ad' ); ?>"
673
+ name="<?php echo $this->get_field_name( 'enable_ad' ); ?>" type="checkbox"
674
+ value="1" <?php checked( '1', $instance['enable_ad'] ); ?> />
675
+ <span class="slider round"></span>
676
+ </label>
677
  <p>
678
  <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'instagram-slider-widget' ); ?></strong>
679
+ <select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>"
680
+ id="<?php echo $this->get_field_id( 'orderby' ); ?>">
681
+ <option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true ); ?>><?php _e( 'Date - Ascending', 'instagram-slider-widget' ); ?></option>
682
+ <option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true ); ?>><?php _e( 'Date - Descending', 'instagram-slider-widget' ); ?></option>
683
+ <option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true ); ?>><?php _e( 'Popularity - Ascending', 'instagram-slider-widget' ); ?></option>
684
+ <option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true ); ?>><?php _e( 'Popularity - Descending', 'instagram-slider-widget' ); ?></option>
685
+ <option value="rand" <?php selected( $instance['orderby'], 'rand', true ); ?>><?php _e( 'Random', 'instagram-slider-widget' ); ?></option>
686
  </select>
687
  </label>
688
  </p>
689
+ <p class="isw-linkto <?php if ( 'showcase' == $instance['template'] ) {
690
+ echo 'hidden';
691
+ } ?>">
692
  <label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'instagram-slider-widget' ); ?></strong>
693
+ <select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>"
694
+ id="<?php echo $this->get_field_id( 'images_link' ); ?>">
695
+ <?php
696
+ if ( count( $options_linkto ) ) {
697
+ foreach ( $options_linkto as $key => $option ) {
698
+ $selected = selected( $instance['images_link'], $key, false );
699
+ echo "<option value='{$key}' {$selected}>{$option}</option>\n";
700
+ }
701
+ }
702
+ if ( ! $this->WIS->is_premium() ) {
703
+ ?>
704
+ <optgroup label="Available in PRO">
705
+ <option value='1' disabled="disabled">Pop Up</option>
706
+ </optgroup>
707
+ <?php
708
+ }
709
+ ?>
710
  </select>
711
  </label>
712
  </p>
713
+ <p class="<?php if ( 'custom_url' != $instance['images_link'] ) {
714
+ echo 'hidden';
715
+ } ?>">
716
+ <label for="<?php echo $this->get_field_id( 'custom_url' ); ?>"><?php _e( 'Custom link:', 'instagram-slider-widget' ); ?></label>
717
+ <input class="widefat" id="<?php echo $this->get_field_id( 'custom_url' ); ?>"
718
+ name="<?php echo $this->get_field_name( 'custom_url' ); ?>"
719
+ value="<?php echo $instance['custom_url']; ?>"/>
720
+ <span><?php _e( '* use this field only if the above option is set to <strong>Custom Link</strong>', 'instagram-slider-widget' ); ?></span>
721
  </p>
722
  <!--<p>
723
  <strong>Advanced Options</strong>
724
  <?php
725
+ /* $advanced_class = '';
726
+ $advanced_text = '[ - Close ]';
727
+ if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
728
+ $advanced_class = 'hidden';
729
+ $advanced_text = '[ + Open ]';
730
+ }
731
+ */ ?>
732
+ <a href="#" class="jr-advanced"><?php /*echo $advanced_text; */ ?></a>
733
  </p>-->
734
  <!-- <div class="jr-advanced-input <?php /*echo $advanced_class;*/ ?>">
735
  <div class="jr-image-options">
736
+ <h4 class="jr-advanced-title"><?php /*_e( 'Advanced Image Options', 'instagram-slider-widget'); */ ?></h4>
737
  <p>
738
+ <label for="<?php /*echo $this->get_field_id( 'image_link_rel' ); */ ?>"><?php /*_e( 'Image Link rel attribute', 'instagram-slider-widget' ); */ ?>:</label>
739
+ <input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_rel' ); */ ?>" name="<?php /*echo $this->get_field_name( 'image_link_rel' ); */ ?>" value="<?php /*echo $instance['image_link_rel']; */ ?>" />
740
+ <span class="jr-description"><?php /*_e( 'Specifies the relationship between the current page and the linked website', 'instagram-slider-widget' ); */ ?></span>
741
  </p>
742
  <p>
743
+ <label for="<?php /*echo $this->get_field_id( 'image_link_class' ); */ ?>"><?php /*_e( 'Image Link class', 'instagram-slider-widget' ); */ ?>:</label>
744
+ <input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_class' ); */ ?>" name="<?php /*echo $this->get_field_name( 'image_link_class' ); */ ?>" value="<?php /*echo $instance['image_link_class']; */ ?>" />
745
+ <span class="jr-description"><?php /*_e( 'Usefull if you are using jQuery lightbox plugins to open links', 'instagram-slider-widget' ); */ ?></span>
746
  </p>
747
+ <p><strong><?php /*_e( 'Disable Pinning:', 'instagram-slider-widget' ); */ ?></strong>
748
+ <label class="switch" for="<?php /*echo $this->get_field_id( 'no_pin' ); */ ?>">
749
+ <input class="widefat" id="<?php /*echo $this->get_field_id( 'no_pin' ); */ ?>" name="<?php /*echo $this->get_field_name( 'no_pin' ); */ ?>" type="checkbox" value="1" <?php /*checked( '1', $instance['no_pin'] ); */ ?> /><span class="slider round"></span></label>
750
+ <br><span class="jr-description"><?php /*_e( 'Disable pinning for Pinterest on all images from this widget!', 'instagram-slider-widget') */ ?></span>
751
  </p>
752
  </div>
753
  </div>-->
754
+ <?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id );
755
+ if ( $widget_id != '' ) : ?>
756
  <p>
757
+ <label for="jr_insta_shortcode"><?php _e( 'Shortcode of this Widget:', 'instagram-slider-widget' ); ?></label>
758
+ <input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text"
759
+ class="widefat" value="[jr_instagram id=&quot;<?php echo $widget_id ?>&quot;]"
760
+ readonly="readonly" style="border:none; color:black; font-family:monospace;">
761
+ <span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'instagram-slider-widget' ) ?></span>
762
  </p>
763
  <?php endif; ?>
764
  </div>
768
  /**
769
  * Selected array function echoes selected if in array
770
  *
771
+ * @param array $haystack The array to search in
772
+ * @param string $current The string value to search in array;
773
  *
774
  */
775
  public function selected( $haystack, $current ) {
776
 
777
+ if ( is_array( $haystack ) && in_array( $current, $haystack ) ) {
778
  selected( 1, 1, true );
779
  }
780
  }
782
 
783
  /**
784
  * Add shorcode function
785
+ *
786
+ * @param array $atts shortcode attributes
787
+ *
788
  * @return mixed
789
  */
790
  public function shortcode( $atts ) {
791
 
792
  $atts = shortcode_atts( array( 'id' => '' ), $atts, 'jr_instagram' );
793
  $args = get_option( 'widget_jr_insta_slider' );
794
+ if ( isset( $args[ $atts['id'] ] ) ) {
795
+ $args[ $atts['id'] ]['widget_id'] = $atts['id'];
796
+
797
+ return $this->display_images( $args[ $atts['id'] ] );
798
  }
799
  }
800
 
801
  /**
802
  * Echoes the Display Instagram Images method
803
  *
804
+ * @param array $args
805
  *
806
  * @return void
807
  */
808
  public function instagram_images( $args ) {
809
+ echo $this->display_images( $args );
810
  }
811
 
812
  /**
813
  * Cron Trigger Function
814
+ *
815
+ * @param string $search_for
816
+ * @param int $cache_hours
817
+ * @param int $nr_images
818
+ * @param bool $attachment
819
  */
820
  public function jr_cron_trigger( $username, $refresh_hour, $images ) {
821
+ $search_for = array();
822
+ $search_for['username'] = $username;
823
  $this->instagram_data( $search_for, $refresh_hour, $images, true );
824
  }
825
 
826
  /**
827
  * Runs the query for images and returns the html
828
  *
829
+ * @param array $args
830
  *
831
  * @return string
832
  */
833
  private function display_images( $args ) {
834
+ $account = isset( $args['account'] ) && ! empty( $args['account'] ) ? $args['account'] : false;
835
+ $account_business = isset( $args['account_business'] ) && ! empty( $args['account_business'] ) ? $args['account_business'] : false;
836
+ $username = isset( $args['username'] ) && ! empty( $args['username'] ) ? str_replace( '@', '', $args['username'] ) : false;
837
+ $hashtag = isset( $args['hashtag'] ) && ! empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
838
+ $blocked_users = isset( $args['blocked_users'] ) && ! empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
839
+ $blocked_words = isset( $args['blocked_words'] ) && ! empty( $args['blocked_words'] ) ? $args['blocked_words'] : false;
840
+ $allowed_words = isset( $args['allowed_words'] ) && ! empty( $args['allowed_words'] ) ? $args['allowed_words'] : false;
841
+ $attachment = isset( $args['attachment'] ) ? true : false;
842
+ $template = isset( $args['template'] ) ? $args['template'] : 'slider';
843
+ $orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
844
+ $images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
845
+ $custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
846
+ $images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 20;
847
+ $columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
848
+ $refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
849
+ $slick_img_size = isset( $args['slick_img_size'] ) ? absint( $args['slick_img_size'] ) : 300;
850
+ $image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
851
+ $image_link_rel = isset( $args['image_link_rel'] ) ? $args['image_link_rel'] : '';
852
+ $no_pin = isset( $args['no_pin'] ) ? $args['no_pin'] : 0;
853
+ $shopifeed_phone = isset( $args['shopifeed_phone'] ) ? $args['shopifeed_phone'] : '';
854
+ $shopifeed_color = isset( $args['shopifeed_color'] ) ? $args['shopifeed_color'] : "#DA004A";
855
+ $shopifeed_columns = isset( $args['shopifeed_columns'] ) ? $args['shopifeed_columns'] : 3;
856
+ $image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
857
+ $controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
858
+ $animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
859
+ $caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] : 20;
860
+ $slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
861
+ $description = isset( $args['description'] ) ? $args['description'] : array();
862
+ $widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
863
+ $powered_by_link = isset( $args['support_author'] ) ? true : false;
864
+ $gutter = isset( $args['gutter'] ) ? $args['gutter'] : 0;
865
+ $masonry_image_width = isset( $args['masonry_image_width'] ) ? $args['masonry_image_width'] : 200;
866
  $slick_slides_to_show = isset( $args['slick_slides_to_show'] ) ? $args['slick_slides_to_show'] : 3;
867
+ $enable_control_buttons = isset( $args['enable_control_buttons'] ) ? $args['enable_control_buttons'] : 0;
868
+ $keep_ratio = isset( $args['keep_ratio'] ) ? $args['keep_ratio'] : 0;
869
+ $enable_ad = isset( $args['enable_ad'] ) ? $args['enable_ad'] : 0;
870
+ $slick_slides_padding = isset( $args['slick_slides_padding'] ) ? $args['slick_slides_padding'] : 0;
871
+ $show_feed_header = isset( $args['show_feed_header'] ) ? $args['show_feed_header'] : 0;
872
+ $highlight_offset = isset( $args['highlight_offset'] ) ? $args['highlight_offset'] : 1;
873
+ $highlight_pattern = isset( $args['highlight_pattern'] ) ? $args['highlight_pattern'] : 6;
874
+
875
+ if ( ! empty( $description ) && ! is_array( $description ) ) {
876
  $description = explode( ',', $description );
877
  }
878
 
879
  if ( isset ( $args['search_for'] ) && $args['search_for'] == 'hashtag' ) {
880
+ $search = 'hashtag';
881
+ $search_for['hashtag'] = $hashtag;
882
  $search_for['blocked_users'] = $blocked_users;
883
+ $search_for['blocked_words'] = $blocked_words;
884
+ $search_for['allowed_words'] = $allowed_words;
885
+ } elseif ( isset ( $args['search_for'] ) && $args['search_for'] == 'account' ) {
886
+ $search = 'account';
887
+ $search_for['account'] = $account;
888
+ $search_for['blocked_words'] = $blocked_words;
889
+ $search_for['allowed_words'] = $allowed_words;
890
+ } elseif ( isset ( $args['search_for'] ) && $args['search_for'] == 'account_business' ) {
891
+ $search = 'account_business';
892
+ $search_for['account_business'] = $account_business;
893
+ $search_for['blocked_words'] = $blocked_words;
894
+ $search_for['allowed_words'] = $allowed_words;
895
  } else {
896
+ $search = 'user';
897
+ $search_for['username'] = $username;
898
+ $search_for['allowed_words'] = $allowed_words;
899
+ $search_for['blocked_words'] = $blocked_words;
900
  }
901
 
902
  if ( $refresh_hour == 0 ) {
905
 
906
 
907
  $template_args = array(
908
+ 'search_for' => $search,
909
+ 'attachment' => $attachment,
910
+ 'image_size' => $image_size,
911
+ 'link_rel' => $image_link_rel,
912
+ 'link_class' => $image_link_class,
913
+ 'no_pin' => $no_pin,
914
+ 'caption_words' => $caption_words,
915
+ 'masonry_image_width' => $masonry_image_width,
916
+ 'enable_control_buttons' => $enable_control_buttons,
917
+ 'keep_ratio' => $keep_ratio,
918
+ 'enable_ad' => $enable_ad,
919
+ 'slick_slides_padding' => $slick_slides_padding,
920
+ 'slick_slides_to_show' => $slick_slides_to_show,
921
+ 'highlight_offset' => $highlight_offset,
922
+ 'highlight_pattern' => $highlight_pattern,
923
 
924
  );
925
 
927
  $ul_class = ( $template == 'thumbs-no-border' ) ? 'thumbnails no-border jr_col_' . $columns : 'thumbnails jr_col_' . $columns;
928
  $slider_script = '';
929
 
930
+ if ( $template != 'thumbs' && $template != 'thumbs-no-border' ) {
931
 
932
  $template_args['description'] = $description;
933
+ $direction_nav = ( $controls == 'prev_next' ) ? 'true' : 'false';
934
+ $control_nav = ( $controls == 'numberless' ) ? 'true' : 'false';
935
+ $ul_class = 'slides';
936
+
937
+ if ( $template == 'slider' ) {
938
+ $images_div_class = 'pllexislider pllexislider-normal instaslider-nr-' . $widget_id;
939
+ $slider_script = "<script type='text/javascript'>" . "\n" . " jQuery(document).ready(function($) {" . "\n" . " $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" . " animation: '{$animation}'," . "\n" . " slideshowSpeed: {$slidespeed}," . "\n" . " directionNav: {$direction_nav}," . "\n" . " controlNav: {$control_nav}," . "\n" . " prevText: ''," . "\n" . " nextText: ''," . "\n" . " });" . "\n" . " });" . "\n" . "</script>" . "\n";
940
+ }
941
+ if ( $template == 'slick_slider' || $template == 'masonry' || $template == 'highlight' ) {
942
+ //return $this->pro_display_images($args);
943
+ if(defined('WISP_PLUGIN_ACTIVE') && WISP_PLUGIN_ACTIVE == true){
944
+ return apply_filters( 'wis/pro/display_images', "", $args, $this );
945
+ } else {
946
+ $images_div_class = 'pllexislider pllexislider-normal instaslider-nr-' . $widget_id;
947
+ $slider_script = "<script type='text/javascript'>" . "\n" . " jQuery(document).ready(function($) {" . "\n" . " $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" . " animation: '{$animation}'," . "\n" . " slideshowSpeed: {$slidespeed}," . "\n" . " directionNav: {$direction_nav}," . "\n" . " controlNav: {$control_nav}," . "\n" . " prevText: ''," . "\n" . " nextText: ''," . "\n" . " });" . "\n" . " });" . "\n" . "</script>" . "\n";
948
+ $template = 'slider';
949
+ }
950
+ }
951
+ if( $template == 'showcase' ) {
952
+
953
+ if(defined('SPFD_PLUGIN_ACTIVE') && SPFD_PLUGIN_ACTIVE == true){
954
+ return apply_filters( 'wis/shopifeed/display_images', "", $args, $this );
955
+ } else {
956
+ $images_div_class = 'pllexislider pllexislider-normal instaslider-nr-' . $widget_id;
957
+ $slider_script = "<script type='text/javascript'>" . "\n" . " jQuery(document).ready(function($) {" . "\n" . " $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" . " animation: '{$animation}'," . "\n" . " slideshowSpeed: {$slidespeed}," . "\n" . " directionNav: {$direction_nav}," . "\n" . " controlNav: {$control_nav}," . "\n" . " prevText: ''," . "\n" . " nextText: ''," . "\n" . " });" . "\n" . " });" . "\n" . "</script>" . "\n";
958
+ $template = 'slider';
959
+ }
960
  } else {
961
+ $images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-' . $widget_id;
962
+ $slider_script = "<script type='text/javascript'>" . "\n" . " jQuery(document).ready(function($) {" . "\n" . " $('.instaslider-nr-{$widget_id}').pllexislider({" . "\n" . " animation: '{$animation}'," . "\n" . " slideshowSpeed: {$slidespeed}," . "\n" . " directionNav: {$direction_nav}," . "\n" . " controlNav: {$control_nav}," . "\n" . " prevText: ''," . "\n" . " nextText: ''," . "\n" . " start: function(slider){" . "\n" . " slider.hover(" . "\n" . " function () {" . "\n" . " slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeIn();" . "\n" . " slider.find('.jr-insta-datacontainer').fadeIn();" . "\n" . " }," . "\n" . " function () {" . "\n" . " slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeOut();" . "\n" . " slider.find('.jr-insta-datacontainer').fadeOut();" . "\n" . " }" . "\n" . " );" . "\n" . " }" . "\n" . " });" . "\n" . " });" . "\n" . "</script>" . "\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
963
  }
964
  }
965
 
966
+ //$account = $accounts[$images_data[0]['username']];
967
+ $images_div = '';
968
+ $images_ul = "<ul class='no-bullet {$ul_class}' id='wis-slides'>\n";
969
 
970
  $output = '';
971
  $output .= __( 'No images found! <br> Try some other hashtag or username', 'instagram-slider-widget' );
972
 
973
+ if ( ( $search == 'user' && $attachment && false ) ) {
974
+
975
+ if ( ! wp_next_scheduled( 'jr_insta_cron', array(
976
+ $search_for['username'],
977
+ $refresh_hour,
978
+ $images_number
979
+ ) ) ) {
980
+ wp_schedule_single_event( time(), 'jr_insta_cron', array(
981
+ $search_for['username'],
982
+ $refresh_hour,
983
+ $images_number
984
+ ) );
985
  }
986
 
987
+ $opt_name = 'jr_insta_' . md5( $search . '_' . $search_for['username'] );
988
  $attachment_ids = (array) get_option( $opt_name );
989
 
990
  $query_args = array(
996
  );
997
 
998
  if ( $orderby != 'rand' ) {
999
+ $orderby = explode( '-', $orderby );
 
1000
  $meta_key = $orderby[0] == 'date' ? 'jr_insta_timestamp' : 'jr_insta_popularity';
1001
 
1002
  $query_args['meta_key'] = $meta_key;
1004
  $query_args['order'] = $orderby[1];
1005
  }
1006
 
1007
+ if ( isset( $attachment_ids['saved_images'] ) && ! empty( $attachment_ids['saved_images'] ) ) {
1008
 
1009
+ $query_args['post__in'] = $attachment_ids['saved_images'];
1010
 
1011
  } else {
1012
 
1042
  $template_args['link_to'] = $custom_url;
1043
  }
1044
 
1045
+ $image_thumb_url = get_post_meta( $id, 'jr_insta_sizes', true );
1046
+ $template_args['image'] = $image_thumb_url[ $image_size ];
1047
 
1048
  $output .= $this->get_template( $template, $template_args );
1049
 
1055
 
1056
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
1057
 
1058
+ if ( is_array( $images_data ) && ! empty( $images_data ) ) {
1059
+ if ( isset( $images_data['error'] ) ) {
 
1060
  return $images_data['error'];
1061
  }
1062
 
1086
  }
1087
 
1088
  $template_args['type'] = $image_data['type'];
1089
+ $template_args['image'] = $image_data['image'];
1090
  $template_args['caption'] = $image_data['caption'];
1091
  $template_args['timestamp'] = $image_data['timestamp'];
1092
  $template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
1103
  wp_reset_postdata();
1104
 
1105
  } else {
1106
+ $is_business = ( $search == 'account_business' );
1107
+ if ( $is_business ) {
1108
+ $accounts = WIS_Plugin::app()->getOption( 'account_profiles_new' );
1109
+ } else {
1110
+ $accounts = WIS_Plugin::app()->getOption( 'account_profiles' );
1111
+ }
1112
  $images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1113
 
1114
+ /*
1115
+ * Песочница
1116
+ */
1117
+ if ( isset( $_GET['access_token'] ) && isset( $_GET['id'] ) ) {
1118
+ if ( $is_business ) {
1119
+ if ( isset( $_COOKIE['wis-demo-account-data'] ) ) {
1120
+ $account = json_decode( stripslashes( $_COOKIE['wis-demo-account-data'] ), true );
1121
+ }
1122
+ } else {
1123
+ $args = array(
1124
+ 'fields' => 'id,media_count,username',
1125
+ 'access_token' => $_GET['access_token'],
1126
+ );
1127
+
1128
+ $url = self::USERS_SELF_URL;
1129
+ $url = add_query_arg( $args, $url );
1130
+ $response = wp_remote_get( $url );
1131
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1132
+ $user = json_decode( wp_remote_retrieve_body( $response ), true );
1133
+ $user['token'] = $_GET['access_token'];
1134
+ $account = $user;
1135
+ }
1136
+ }
1137
+ } // конец песочницы
1138
+ else {
1139
+ if ( $search !== 'hashtag' && $search !== 'user' ) {
1140
+ $account = $accounts[ $images_data[0]['username'] ];
1141
+ }
1142
+ }
1143
+
1144
+ $images_div = '';
1145
+ if ( $account ) {
1146
+ $account_data = $account;
1147
+ } else {
1148
+ $data = WIS_Plugin::app()->getOption( 'profiles_data_by_username' );
1149
+ $data = $data['entry_data']['ProfilePage']['0']['graphql']['user'];
1150
+ $account_data = array(
1151
+ 'username' => $data['username'],
1152
+ 'profile_picture' => $data['profile_pic_url'],
1153
+ 'counts' => array(
1154
+ 'media' => $data['edge_owner_to_timeline_media']['count'],
1155
+ 'followed_by' => $data['edge_followed_by']['count']
1156
+ ),
1157
+ );
1158
+ }
1159
+
1160
+ if ( $show_feed_header && $search == 'account_business' ) {
1161
+ $images_div .= $this->render_layout_template( 'feed_header_template', $account_data );
1162
+ }
1163
+ $images_div .= "<div class='{$images_div_class}'>\n";
1164
+ if ( is_array( $images_data ) && ! empty( $images_data ) ) {
1165
+ if ( isset( $images_data['error'] ) ) {
1166
  return $images_data['error'];
1167
  }
1168
 
1169
  if ( $orderby != 'rand' ) {
1170
 
1171
  $orderby = explode( '-', $orderby );
1172
+ if ( $orderby[0] == 'date' ) {
1173
+ $func = 'sort_timestamp_' . $orderby[1];
1174
+ } else {
1175
+ $func = $is_business ? 'sort_popularity_' . $orderby[1] : 'sort_timestamp_' . $orderby[1];
1176
+ }
1177
 
1178
  usort( $images_data, array( $this, $func ) );
1179
 
1197
  }
1198
 
1199
  $template_args['type'] = $image_data['type'];
1200
+ $template_args['image'] = $image_data['image'];
1201
  $template_args['caption'] = $image_data['caption'];
1202
  $template_args['timestamp'] = $image_data['timestamp'];
1203
  $template_args['username'] = isset( $image_data['username'] ) ? $image_data['username'] : '';
1205
  $output .= $this->get_template( $template, $template_args );
1206
  }
1207
 
1208
+ $output .= "</ul>";
1209
  }
1210
  }
1211
 
1212
+ $output .= "</div>";
1213
+ if ($enable_ad && !defined("WISP_PLUGIN_ACTIVE")) {
1214
+ $output .= '
1215
+ <div class="wis-template-ad" style="font-size: 1.3rem !important; margin-top: 2%; text-align: center; color: rgba(22,22,22,0.72) !important;" >
1216
+ <a target="_blank" style="color: rgba(22,22,22,0.72) !important; text-decoration: none" href="https://cm-wp.com/instagram-slider-widget/" ><h3 style="font-size: 1.15rem !important;"> Powered by Social Slider Widget </h3 ></a >
1217
+ </div >
1218
+ ';
1219
+ }
1220
  return $output;
1221
 
1222
  }
1231
  * @return false|string
1232
  */
1233
  private function render_layout_template( $template_name, $args ) {
1234
+ $path = WIS_PLUGIN_DIR . "/html_templates/$template_name.php";
1235
+ if ( file_exists( $path ) ) {
1236
+ ob_start();
1237
+ include $path;
1238
+
1239
+ return ob_get_clean();
1240
+ } else {
1241
+ return 'This template does not exist!';
1242
+ }
1243
+ }
1244
 
1245
  /**
1246
  * Function to display Templates styles
1247
  *
1248
+ * @param string $template
1249
+ * @param array $args
1250
  *
1251
  * return mixed
1252
  */
1254
 
1255
  $link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
1256
  $image_url = isset( $args['image'] ) ? $args['image'] : false;
1257
+ $type = isset( $args['type'] ) ? $args['type'] : '';
1258
 
1259
+ if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || ( $args['search_for'] == 'account' && $args['attachment'] !== true ) || ( $args['search_for'] == 'account_business' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
1260
+ $caption = $args['caption'];
1261
+ $time = $args['timestamp'];
1262
+ $username = $args['username'];
1263
  } else {
1264
  $attach_id = get_the_id();
1265
  $caption = get_the_excerpt();
1267
  $username = get_post_meta( $attach_id, 'jr_insta_username', true );
1268
  }
1269
 
1270
+ $caption = $args['caption'];
1271
+ $time = $args['timestamp'];
1272
+ $username = $args['username'];
1273
+
1274
  $short_caption = wp_trim_words( $caption, 10, '' );
1275
+ $short_caption = strip_tags( $short_caption );
1276
 
1277
+ $caption = wp_trim_words( $caption, $args['caption_words'], '' );
1278
+ $nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
1279
 
1280
+ $clean_image_url = WIS_PLUGIN_URL . "/assets/image.png";
1281
+ $image_src = "<img alt='" . $caption . "' src='{$clean_image_url}' $nopin class='{$type}' style='opacity: 0;'>";
1282
+ $image_output = $image_src;
1283
 
1284
  if ( $link_to ) {
1285
+ $image_output = "<a href='$link_to' target='_blank' rel='nofollow'";
1286
 
1287
  if ( ! empty( $args['link_rel'] ) ) {
1288
  $image_output .= " rel={$args['link_rel']}";
1296
 
1297
  $output = '';
1298
 
1299
+ if ( $template == 'slider' ) {
1300
  $output .= "<li style='border:0;' >";
1301
 
1302
+ //$output .= $image_output;
1303
+ $output .= "<div style='background: url({$image_url}) no-repeat center center; background-size: cover;'>{$image_output}</div>";
1304
 
1305
  if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
1306
 
1307
  $output .= "<div class='jr-insta-datacontainer' style=''>\n";
1308
 
1309
+ if ( in_array( 'username', $args['description'] ) && $username ) {
1310
+
1311
+ $output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' style='color:black; font-weight: 600' target='_blank'>{$username}</a></span>\n";
1312
+ }
1313
  if ( $time && in_array( 'time', $args['description'] ) ) {
1314
+ $time = human_time_diff( $time );
1315
  $output .= "<strong><span class='jr-insta-time pull-right' style='font-size: 0.9em'>{$time} ago</span></strong>\n";
1316
  $output .= "<br>";
1317
  }
1318
 
1319
 
1320
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
1321
+ $caption = preg_replace( '/\@([a-z0-9А-Яа-я_-]+)/u', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" style="color:black; font-weight: 600" target="_blank">@$1</a>&nbsp;', $caption );
1322
+ $caption = preg_replace( '/\#([a-zA-Z0-9А-Яа-я_-]+)/u', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" style="color:black; font-weight: 600" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption );
1323
+ $output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
1324
  }
1325
 
1326
  $output .= "</div>\n";
1329
  $output .= "</li>";
1330
  // Template : Slider with text Overlay on mouse over
1331
  } elseif ( $template == 'slider-overlay' ) {
1332
+ $output .= "<li class='" . $type . "'>";
1333
 
1334
+ //$output .= $image_output;
1335
+ $output .= "<div id='jr-image-overlay' style='background: url({$image_url}) no-repeat center center; background-size: cover;'>{$image_output}</div>";
1336
 
1337
  if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
1338
 
1341
  $output .= "<div class='jr-insta-datacontainer'>\n";
1342
 
1343
  if ( $time && in_array( 'time', $args['description'] ) ) {
1344
+ $time = human_time_diff( $time );
1345
  $output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
1346
  }
1347
 
1351
 
1352
  if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
1353
  $caption = preg_replace( '/@([a-z0-9_]+)/i', '&nbsp;<a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a>&nbsp;', $caption );
1354
+ $caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', '&nbsp;<a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a>&nbsp;', $caption );
1355
+ $output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
1356
  }
1357
 
1358
  $output .= "</div>\n";
1364
 
1365
  // Template : Thumbnails no text
1366
  } elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
1367
+ $output .= "<li class='{$type}'>";
1368
+ $output .= "<div style='background: url({$image_url}) no-repeat center center; background-size: cover;'>{$image_output}</div>";
1369
+ //$output .= "<div></div>";
1370
  $output .= "</li>";
1371
 
1372
  } else {
1380
 
1381
  /**
1382
  * Trigger refresh for new data
1383
+ *
1384
+ * @param bool $instaData
1385
+ * @param array $old_args
1386
+ * @param array $new_args
1387
+ *
1388
  * @return bool
1389
  */
1390
  private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
1401
 
1402
 
1403
  if ( isset( $old_args['saved_images'] ) ) {
1404
+ unset( $old_args['saved_images'] );
1405
  }
1406
 
1407
  if ( isset( $old_args['deleted_images'] ) ) {
1408
+ unset( $old_args['deleted_images'] );
1409
  }
1410
 
1411
  if ( is_array( $old_args ) && is_array( $new_args ) && array_diff( $old_args, $new_args ) !== array_diff( $new_args, $old_args ) ) {
1421
 
1422
  /**
1423
  * Get data from instagram by username
1424
+ *
1425
+ * @param string $username
1426
+ *
1427
  * @return array
1428
  */
1429
  private function get_data_by_username( $username ) {
1430
 
1431
+ $url = str_replace( '{username}', urlencode( trim( $username ) ), self::USERNAME_URL );
1432
  $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
1433
 
1434
+ if ( strstr( $response['body'], '-cx-PRIVATE-Page__main' ) ) {
1435
+ return [ 'error' => __( 'Account not found or for this account there are restrictions on Instagram by age', 'instagram-slider-widget' ) ];
1436
  }
1437
 
1438
  $json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
1457
  return $results;
1458
  }
1459
 
1460
+ /**
1461
+ * Stores the fetched data from instagram in WordPress DB using transients
1462
+ *
1463
+ * @param array $search_for Array of widget settings
1464
+ * @param string $cache_hours Cache hours for transient
1465
+ * @param string $nr_images Nr of images to fetch from instagram
1466
+ * @param bool $attachment Is attachment
1467
+ *
1468
+ * @return array of localy saved instagram data
1469
+ * @throws \Exception
1470
+ */
1471
  public function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
 
1472
  //$nr_images = $nr_images <= 12 ? $nr_images : 12;
1473
+ if ( isset( $search_for['account'] ) && ! empty( $search_for['account'] ) ) {
1474
+ $search = 'account';
 
1475
  $search_string = $search_for['account'];
1476
+ } elseif ( isset( $search_for['account_business'] ) && ! empty( $search_for['account_business'] ) ) {
1477
+ $search = 'account_business';
1478
+ $search_string = $search_for['account_business'];
1479
+ } elseif ( isset( $search_for['username'] ) && ! empty( $search_for['username'] ) ) {
1480
+ $search = 'user';
1481
  $search_string = $search_for['username'];
1482
+ } elseif ( isset( $search_for['hashtag'] ) && ! empty( $search_for['hashtag'] ) ) {
1483
+ $search = 'hashtag';
1484
  $search_string = $search_for['hashtag'];
1485
+ $blocked_users = isset( $search_for['blocked_users'] ) && ! empty( $search_for['blocked_users'] ) ? str_replace( '@', '', $search_for['blocked_users'] ) : false;
1486
  $blocked_users_array = $blocked_users ? $this->get_ids_from_usernames( $blocked_users ) : array();
1487
  } else {
1488
+ return __( 'Nothing to search for', 'instagram-slider-widget' );
1489
  }
1490
 
1491
+ $blocked_users = isset( $blocked_users ) ? $blocked_users : '';
1492
+ $blocked_words = isset( $search_for['blocked_words'] ) && ! empty( $search_for['blocked_words'] ) ? $search_for['blocked_words'] : '';
1493
+ $allowed_words = isset( $search_for['allowed_words'] ) && ! empty( $search_for['allowed_words'] ) ? $search_for['allowed_words'] : '';
1494
+
1495
+ //песочница
1496
+ if ( isset( $_GET['access_token'] ) && isset( $_GET['id'] ) ) {
1497
+ $search = 'account';
1498
+ $search_string = htmlspecialchars( $_GET['access_token'] );
1499
+ }
1500
+
1501
+
1502
  $opt_name = 'jr_insta_' . md5( $search . '_' . $search_string );
1503
  $instaData = get_transient( $opt_name );
1504
  $old_opts = (array) get_option( $opt_name );
1512
  );
1513
 
1514
  if ( true === $this->trigger_refresh_data( $instaData, $old_opts, $new_opts ) ) {
1515
+ // if ( true ) {
1516
 
1517
+ $instaData = array();
1518
  $old_opts['search'] = $search;
1519
  $old_opts['search_string'] = $search_string;
1520
  $old_opts['blocked_users'] = $blocked_users;
1524
 
1525
  if ( 'user' == $search ) {
1526
 
1527
+ $results = $this->get_data_by_username( $search_string );
1528
+ if ( isset( $results['error'] ) ) {
1529
+ return $results['error'];
1530
+ }
1531
 
1532
+ WIS_Plugin::app()->updateOption( 'profiles_data_by_username', $results );
1533
  // ************************************
1534
  // if instagram not return list of posts
1535
  // ************************************
1536
+ $is_instaLoginPage = ! isset( $results['entry_data']['ProfilePage'] );
1537
+ if ( $is_instaLoginPage ) {
1538
+ return [ 'error' => __( 'Instagram requires authorization to view a user profile. Use autorized account in widget settings', 'instagram-slider-widget' ) ];
 
1539
  }
1540
  // ************************************
1541
+ } elseif ( 'account' == $search || 'account_business' == $search ) {
1542
+ $is_business_api = 'account_business' == $search ? true : false;
1543
+ $nr_images = ! $this->WIS->is_premium() && $nr_images > 20 ? 20 : $nr_images;
1544
+ //песочница
1545
+ if ( isset( $_GET['access_token'] ) && isset( $_GET['id'] ) ) {
1546
+ if ( isset( $_COOKIE['wis-demo-account-data'] ) ) {
1547
+ $account = json_decode( stripslashes( $_COOKIE['wis-demo-account-data'] ), true );
1548
+ } else {
1549
+ $account = $this->get_user_by_token( $_GET['access_token'] );
1550
+ }
1551
+ // $account = array(
1552
+ // 'token' => $_GET['access_token'],
1553
+ // 'id' => $_GET['id'],
1554
+ // );
1555
+ } else {
1556
+ $account = $this->getAccountById( $search_string, $is_business_api );
1557
+ }
 
 
 
 
 
 
1558
 
1559
+ if ( $is_business_api ) {
1560
+ if ( ! isset( $_GET['access_token'] ) && ! isset( $_GET['id'] ) ) {
1561
+ //Обновляем данные профиля: подписчики, количество постов
1562
+ $this->update_account_profiles( $account['token'], true, $account['username'] );
1563
+ }
1564
 
1565
+ $args = array(
1566
+ 'access_token' => $account['token'],
1567
+ 'fields' => "id,username,caption,comments_count,like_count,media_type,media_url,permalink,timestamp,children{media_url,media_type},owner,thumbnail_url",
1568
+ 'limit' => 50,
1569
+ );
1570
+
1571
+ $url = self::USERS_SELF_URL_NEW . $account['id'] . "/media";
1572
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
1573
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1574
+ $media = json_decode( wp_remote_retrieve_body( $response ), true );
1575
+ $results = $media['data'];
1576
+ $results = apply_filters('wis/images/count', $results, $media, $nr_images, true);
1577
+ $next_max_id = null;
1578
+ if ( ! empty( $media['pagination'] ) ) {
1579
+ $next_max_id = $media['pagination']['next_max_id'];
1580
+ }
1581
+ if ( ! count( $results ) ) {
1582
+ return [ 'error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' ) ];
1583
+ }
1584
+ } else {
1585
+ if ( $instaData ) {
1586
+ $results = $instaData;
1587
+ }
1588
+ }
1589
+
1590
+ } else {
1591
+ if ( ! isset( $_GET['access_token'] ) ) {
1592
+ //Обновляем данные профиля: подписчики, количество постов
1593
+ $this->update_account_profiles( $account['token'] );
1594
+ }
1595
+
1596
+ $args = array(
1597
+ 'fields' => 'id,username,media{id,username,caption,media_type,media_url,permalink,thumbnail_url,timestamp,children{id,media_type,media_url,thumbnail_url}}',
1598
+ 'limit' => 50,
1599
+ 'access_token' => $account['token'],
1600
+ );
1601
+ $url = self::USERS_SELF_MEDIA_URL . $account['id'];
1602
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
1603
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1604
+ $media = json_decode( wp_remote_retrieve_body( $response ), true );
1605
+ $results = $media['media']['data'];
1606
+ $results = apply_filters('wis/images/count', $results, $media, $nr_images, false);
1607
+ if ( ! is_array( $results ) || ! count( $results ) ) {
1608
+ return [ 'error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' ) ];
1609
+ }
1610
+ } else {
1611
+ if ( $instaData ) {
1612
+ $results = $instaData;
1613
+ }
1614
+ }
1615
+ }
1616
 
1617
+ } else { //hashtag
1618
+ //$account = $this->getAccountForHashtag();
1619
+ $account = false;
1620
+ if ( $account ) {
1621
+ $args = array(
1622
+ 'access_token' => $account['token'],
1623
+ 'user_id' => $account['id'],
1624
+ 'q' => $search_string,
1625
+ );
1626
+ $url = self::USERS_SELF_URL_NEW . "ig_hashtag_search";
1627
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
1628
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1629
+ $media = json_decode( wp_remote_retrieve_body( $response ), true );
1630
+ $args = array(
1631
+ 'access_token' => $account['token'],
1632
+ 'user_id' => $account['id'],
1633
+ 'fields' => "id,caption,media_type,media_url,comments_count,like_count,permalink,children{media_type,media_url}",
1634
+ 'limit' => 50,
1635
+ );
1636
+ $url = self::USERS_SELF_URL_NEW . $media['data'][0]['id'] . "/recent_media";
1637
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
1638
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
1639
+ $media = json_decode( wp_remote_retrieve_body( $response ), true );
1640
+ $media['hashtag'] = true;
1641
+ $results = $media;
1642
+
1643
+ }
1644
+ }
1645
+ } else {
1646
+ $url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
1647
+ $response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
1648
+ $results = json_decode( $response['body'], true );
1649
+ }
1650
 
 
1651
  }
1652
 
1653
+ if ( true ) {
1654
 
1655
  if ( $results && is_array( $results ) ) {
1656
 
1657
  if ( 'user' == $search ) {
1658
+ $entry_data = isset( $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] ) ? $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] : array();
1659
+ } elseif ( 'account' == $search || 'account_business' == $search ) {
1660
+ $entry_data = $results;
1661
+ } elseif ( 'hashtag' == $search ) {
1662
+ if ( isset( $results['hashtag'] ) ) {
1663
+ $entry_data = $results['data'];
1664
+ } else {
1665
+ $entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
1666
+ }
1667
  }
1668
 
1669
  if ( empty( $entry_data ) ) {
1670
+ return [ 'error' => __( 'No images found', 'instagram-slider-widget' ) ];
1671
  }
1672
+ $i = 0;
1673
+ foreach ( $entry_data as $current => $result ) {
1674
+ if ( ! isset( $result['caption'] ) ) {
1675
+ $result['caption'] = "";
1676
+ }
1677
 
1678
+ if ( $i >= $nr_images ) {
1679
+ break;
1680
+ } else {
1681
+ $i ++;
1682
+ }
1683
 
1684
  if ( 'hashtag' == $search ) {
1685
 
1686
+ //TODO: Доделать черный список с новым API
1687
+ //Чёрный список не работает, так как API не отдает имя пользователя, который создал пост
1688
+ if ( isset( $results['hashtag'] ) ) {
1689
+ $result['fbapi'] = true;
1690
+ if ( isset( $result['media_type'] ) && $result['media_type'] == 'VIDEO' ) {
1691
+ //$nr_images++;
1692
+ continue;
1693
+ }
1694
+ } else {
1695
+ $result = $result['node'];
1696
+ if ( in_array( $result['owner']['id'], $blocked_users_array ) ) {
1697
+ $nr_images ++;
1698
+ continue;
1699
+ }
1700
  }
1701
  }
 
 
 
 
 
 
 
 
 
 
1702
 
1703
  if ( 'account' == $search ) {
1704
+ $image_data = $this->to_media_model_from_account( $result );
1705
+ } elseif ( 'account_business' == $search ) {
1706
+ $image_data = $this->to_media_model_from_account_business( $result );
1707
+ } elseif ( 'hashtag' == $search && $results['graphql']['hashtag'] ) {
1708
+ $image_data = $this->to_media_model_from_hashtag( $result );
1709
+ } elseif ( 'user' == $search ) {
1710
+ $image_data = $this->media_model( $result['node'] );
1711
+ $image_data['username'] = $search_string;
1712
  }
 
 
1713
 
1714
+
1715
+ if ( $this->is_blocked_by_word( $blocked_words, $image_data['caption'] ) ) {
1716
+ $nr_images ++;
1717
+ continue;
1718
  }
1719
 
1720
+ if( !$this->is_allowed_by_word($allowed_words, $image_data['caption']) ){
1721
+ $nr_images ++;
1722
+ continue;
1723
+ }
1724
+
1725
+ if ( ! $attachment ) {
1726
 
1727
  $instaData[] = $image_data;
1728
 
1729
  } else {
1730
 
1731
+ if ( isset( $old_opts['saved_images'][ $image_data['id'] ] ) ) {
1732
 
1733
+ if ( is_string( get_post_status( $old_opts['saved_images'][ $image_data['id'] ] ) ) ) {
1734
 
1735
+ $this->update_wp_attachment( $old_opts['saved_images'][ $image_data['id'] ], $image_data );
1736
 
1737
+ $instaData[ $image_data['id'] ] = $old_opts['saved_images'][ $image_data['id'] ];
1738
 
1739
  } else {
1740
+ unset( $old_opts['saved_images'][ $image_data['id'] ] );
1741
  }
1742
 
1743
  } else {
1746
 
1747
  if ( $id && is_numeric( $id ) ) {
1748
 
1749
+ $old_opts['saved_images'][ $image_data['id'] ] = $id;
1750
 
1751
+ $instaData[ $image_data['id'] ] = $id;
1752
 
1753
  } else {
1754
 
1771
 
1772
  update_option( $opt_name, $old_opts );
1773
 
1774
+ if ( is_array( $instaData ) && ! empty( $instaData ) ) {
1775
 
1776
  set_transient( $opt_name, $instaData, $cache_hours * 60 * 60 );
1777
  }
1778
 
1779
  } // end -> false === $instaData
1780
 
1781
+ //if('account' == $search)
1782
+ //$instaData = array_merge($instaData, ['next_max_id' => $next_max_id]);
1783
  return $instaData;
1784
  }
1785
 
1813
 
1814
  /**
1815
  * Media Model
1816
+ *
1817
  * @param [type] $medias_array [description]
1818
+ *
1819
  * @return [type] [description]
1820
  */
1821
  private function media_model( $medias_array ) {
1822
 
1823
+ $m = array();
1824
 
1825
  foreach ( $medias_array as $prop => $value ) {
1826
 
1827
  switch ( $prop ) {
1828
  case 'id':
1829
+ $m['id'] = $value;
1830
  break;
1831
  case 'code':
1832
  case '__typename':
1833
+ $m['type'] = $value;
1834
+ break;
1835
  case 'shortcode':
1836
+ $m['code'] = $value;
1837
+ $m['link'] = 'https://www.instagram.com/p/' . $value . '/';
1838
  break;
1839
  case 'owner':
1840
+ $m['user_id'] = $value['id'];
1841
  break;
1842
  case 'caption':
1843
+ $m['caption'] = $this->sanitize( $value );
1844
  break;
1845
  case 'edge_media_to_caption':
1846
+ if ( ! empty( $value['edges'] ) ) {
1847
  $first_caption = $value['edges'][0];
1848
  if ( isset( $first_caption['node']['text'] ) ) {
1849
+ $m['caption'] = $this->sanitize( $value['edges'][0]['node']['text'] );
1850
  }
1851
  }
1852
  break;
1853
  case 'date':
1854
  case 'taken_at_timestamp':
1855
+ $m['timestamp'] = (float) $value;
1856
  break;
1857
  case 'dimensions':
1858
+ $m['height'] = $value['height'];
1859
+ $m['width'] = $value['width'];
1860
  break;
1861
  case 'display_url':
1862
  case 'display_src':
1863
+ $m['url'] = $value;
1864
+ $m['image'] = $value;
1865
+ if ( isset( $m['sizes'] ) ) {
1866
+ $m['sizes']['full'] = $value;
1867
  }
1868
  break;
1869
  case 'edge_liked_by':
1870
  case 'likes':
1871
+ $m['likes_count'] = $value['count'];
1872
  break;
1873
  case 'edge_media_to_comment':
1874
  case 'comments':
1875
+ $m['comment_count'] = $value['count'];
1876
  break;
1877
  case 'thumbnail_resources':
1878
+ $m['sizes'] = $this->get_thumbnail_urls( $value );
1879
+ if ( isset( $m['url'] ) ) {
1880
+ $m['sizes']['full'] = $m['url'];
1881
  }
1882
  break;
1883
  }
1884
 
1885
+ if ( isset( $m['comment_count'] ) && isset( $m['likes_count'] ) ) {
1886
+ $m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
1887
  }
1888
  }
1889
 
1890
+ return $m;
1891
  }
1892
 
1893
  /**
1894
  * Media Model from account
1895
+ *
1896
+ * @param array $media From API
1897
+ *
1898
  * @return array To plugin format
1899
  */
1900
+ public function to_media_model_from_account( $media ) {
1901
 
1902
  $m = array();
1903
+ switch ( $media['media_type'] ) {
1904
+ case 'IMAGE':
1905
+ $m['type'] = 'GraphImage';
1906
+ $m['image'] = $media['media_url'];
1907
+ break;
1908
+ case 'VIDEO':
1909
+ $m['type'] = 'GraphVideo';
1910
+ $m['video'] = $media['media_url'];
1911
+ $m['thumbnail'] = $media['thumbnail_url'];
1912
+ $m['image'] = $media['thumbnail_url'];
1913
+ break;
1914
+ case 'CAROUSEL_ALBUM':
1915
+ $m['type'] = 'GraphSidecar';
1916
+ $res = array();
1917
+ foreach ( $media['children']['data'] as $v ) {
1918
+ $type = 'images';
1919
+ $t['standard_resolution']['url'] = $v['media_url'];
1920
+ $size = getimagesize( $v['media_url'] );
1921
+ if ( is_array( $size ) ) {
1922
+ $t['standard_resolution']['height'] = $size[1];
1923
+ $t['standard_resolution']['width'] = $size[0];
1924
+ } else {
1925
+ $type = 'videos';
1926
+ }
1927
+ $res[][ $type ] = $t;
1928
+
1929
+ }
1930
+ $m['sidecar_media'] = $res;
1931
+ $m['image'] = $media['media_url'];
1932
+ break;
1933
+ }
1934
+
1935
+ $m['id'] = $media['id'];
1936
+ $m['username'] = $media['username'];
1937
+ $m['caption'] = $this->sanitize( $media['caption'] );
1938
+ $m['link'] = $media['permalink'];
1939
+ $m['timestamp'] = strtotime( $media['timestamp'] );
1940
+ $m['url'] = $media['media_url'];
1941
+
1942
+ if ( $media['media_type'] == 'VIDEO' ) {
1943
+ $size = getimagesize( $media['thumbnail_url'] );
1944
+ } else {
1945
+ $size = getimagesize( $media['media_url'] );
1946
+ }
1947
+ if ( is_array( $size ) ) {
1948
+ $m['height'] = $size[1];
1949
+ $m['width'] = $size[0];
1950
+ }
1951
+
1952
+ $m['popularity'] = 0;
1953
+
1954
+ return $m;
1955
+ }
1956
+
1957
+ /**
1958
+ * Media Model from account
1959
+ *
1960
+ * @param array $media From API
1961
+ *
1962
+ * @return array To plugin format
1963
+ */
1964
+ public function to_media_model_from_account_business( $media ) {
1965
+
1966
+ $m = array();
1967
+ switch ( $media['media_type'] ) {
1968
+ case 'IMAGE':
1969
+ $m['type'] = 'GraphImage';
1970
+ $m['image'] = $media['media_url'];
1971
+ break;
1972
+ case 'VIDEO':
1973
+ $m['type'] = 'GraphVideo';
1974
+ $m['video'] = $media['media_url'];
1975
+ $m['thumbnail'] = $media['thumbnail_url'];
1976
+ $m['image'] = $media['thumbnail_url'];
1977
+ break;
1978
+ case 'CAROUSEL_ALBUM':
1979
+ $m['type'] = 'GraphSidecar';
1980
+ $res = array();
1981
+ foreach ( $media['children']['data'] as $v ) {
1982
+ $type = 'images';
1983
+ $t['standard_resolution']['url'] = $v['media_url'];
1984
+ $size = getimagesize( $v['media_url'] );
1985
+ if ( is_array( $size ) ) {
1986
+ $t['standard_resolution']['height'] = $size[1];
1987
+ $t['standard_resolution']['width'] = $size[0];
1988
+ } else {
1989
+ $type = 'videos';
1990
+ }
1991
+ $res[][ $type ] = $t;
1992
+ }
1993
+ $m['sidecar_media'] = $res;
1994
+ $m['image'] = $media['media_url'];
1995
+ break;
1996
+ }
1997
+
1998
+ $m['id'] = $media['id'];
1999
+ $m['username'] = $media['username'];
2000
+ $m['caption'] = $this->sanitize( $media['caption'] );
2001
+ $m['link'] = $media['permalink'];
2002
+ $m['user_id'] = $media['owner']['id'];
2003
+ $m['timestamp'] = strtotime( $media['timestamp'] );
2004
+ $m['url'] = $media['media_url'];
2005
+ $m['comments'] = $media['comments_count'];
2006
+ $m['likes'] = $media['like_count'];
2007
+
2008
+ if ( $media['media_type'] == 'VIDEO' ) {
2009
+ $size = getimagesize( $media['thumbnail_url'] );
2010
+ } else {
2011
+ $size = getimagesize( $media['media_url'] );
2012
+ }
2013
+ if ( is_array( $size ) ) {
2014
+ $m['height'] = $size[1];
2015
+ $m['width'] = $size[0];
2016
+ }
2017
+
2018
+ if ( isset( $m['comments'] ) && isset( $m['likes'] ) ) {
2019
+ $m['popularity'] = (int) ( $m['comments'] ) + ( $m['likes'] );
2020
+ }
2021
 
2022
+ return $m;
2023
+ }
2024
+
2025
+ /**
2026
+ * Media Model from hashtag
2027
+ *
2028
+ * @param array $media From API
2029
+ *
2030
+ * @return array To plugin format
2031
+ */
2032
+ public function to_media_model_from_hashtag( $media ) {
2033
+
2034
+ $m = array();
2035
+ if ( isset( $media['fbapi'] ) ) {
2036
+ $value = $media;
2037
+ switch ( $value['media_type'] ) {
2038
+ case 'IMAGE':
2039
+ $m['type'] = 'GraphImage';
2040
+ $m['image'] = $value['media_url'];
2041
+ break;
2042
+ case 'VIDEO':
2043
+ $m['type'] = 'GraphVideo';
2044
+ $m['video'] = $value['media_url'];
2045
+ $m['thumbnail'] = $value['thumbnail_url'];
2046
+ $m['image'] = $value['thumbnail_url'];
2047
+ break;
2048
+ case 'CAROUSEL_ALBUM':
2049
+ $m['type'] = 'GraphSidecar';
2050
+ $res = array();
2051
+ foreach ( $value['children']['data'] as $v ) {
2052
+ $t['standard_resolution']['url'] = $v['media_url'];
2053
+ $res[]['images'] = $t;
2054
+ }
2055
+ $m['sidecar_media'] = $res;
2056
+ $m['image'] = $value['children']['data'][0]['media_url'];
2057
+ break;
2058
+ }
2059
+
2060
+ $m['id'] = $value['id'];
2061
+ $m['caption'] = $this->sanitize( $value['caption'] );
2062
+ $m['link'] = $value['permalink'];
2063
+ $m['comment_count'] = $value['comments_count'];
2064
+ $m['url'] = $value['media_url'];
2065
+ $m['likes_count'] = $value['like_count'];
2066
+
2067
+ $m['sizes']['thumbnail'] = $value['media_url'];
2068
+ $m['sizes']['low'] = $value['media_url'];
2069
+ $m['sizes']['standard'] = $value['media_url'];
2070
+ $m['sizes']['full'] = $value['media_url'];
2071
+
2072
+ if ( $media['media_type'] == 'VIDEO' ) {
2073
+ $size = getimagesize( $value['thumbnail_url'] );
2074
+ } else {
2075
+ $size = getimagesize( $value['media_url'] );
2076
+ }
2077
+ if ( is_array( $size ) ) {
2078
+ $m['height'] = $size[1];
2079
+ $m['width'] = $size[0];
2080
+ }
2081
+
2082
+ $m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
2083
+ } else {
2084
+ $value = $media;
2085
+ $m['type'] = $value['__typename'];
2086
+ $m['id'] = $value['id'];
2087
+ $m['code'] = $value['shortcode'];
2088
+ $m['link'] = 'https://www.instagram.com/p/' . $value['shortcode'] . '/';
2089
+ $m['user_id'] = $value['owner']['id'];
2090
+
2091
+ $m['caption'] = isset( $value['edge_media_to_caption']['edges'][0]['node']['text'] ) ? $value['edge_media_to_caption']['edges'][0]['node']['text'] : "";
2092
+
2093
+ $m['timestamp'] = $value['taken_at_timestamp'];
2094
+ $m['url'] = $value['display_url'];
2095
+ $m['likes_count'] = $value['edge_liked_by']['count'];
2096
+ $m['comment_count'] = $value['edge_media_to_comment']['count'];
2097
+ $m['sizes'] = $this->get_thumbnail_urls( $value['thumbnail_resources'] );
2098
+ $m['image'] = $value['thumbnail_src'];
2099
+
2100
+ if ( isset( $m['comment_count'] ) && isset( $m['likes_count'] ) ) {
2101
+ $m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
2102
+ }
2103
+ }
2104
 
2105
  return $m;
2106
  }
2115
  'post_type' => 'attachment',
2116
  'post_status' => 'inherit',
2117
  'post_mime_type' => 'image',
2118
+ 'orderby' => 'rand',
2119
+ 'posts_per_page' => - 1,
2120
  'meta_query' => array(
2121
  array(
2122
  'key' => 'jr_insta_username',
2126
  ),
2127
  );
2128
 
2129
+ $savedinsta = new WP_Query( $savedinsta_args );
2130
 
2131
+ $opt_name = 'jr_insta_' . md5( 'user' . '_' . $username );
2132
 
2133
  $attachment_ids = (array) get_option( $opt_name );
2134
 
2136
 
2137
  foreach ( $savedinsta->posts as $post ) {
2138
 
2139
+ if ( ! in_array( $post->ID, $attachment_ids['saved_images'] ) ) {
2140
 
2141
  if ( false !== wp_delete_attachment( $post->ID, true ) ) {
2142
+ $deleted_count ++;
2143
  }
2144
  }
2145
  }
2155
  */
2156
  public function delete_dupes() {
2157
 
2158
+ if ( function_exists( 'check_ajax_referer' ) ) {
2159
  check_ajax_referer( 'jr_delete_instagram_dupes' );
2160
  }
2161
 
2162
+ $post = $_POST;
2163
  $return = array(
2164
  'deleted' => $this->clean_duplicates( $post['username'] )
2165
  );
2167
  wp_send_json( $return );
2168
  }
2169
 
2170
+ /**
2171
+ * Ajax Call to add BUSINESS account by token
2172
+ *
2173
+ * @return void
2174
+ * @throws \Exception
2175
+ */
2176
  public function add_account_by_token() {
2177
+ if ( isset( $_POST['account'] ) && ! empty( $_POST['account'] ) && isset( $_POST['_ajax_nonce'] ) ) {
2178
  if ( ! current_user_can( 'manage_options' ) ) {
2179
+ wp_die( - 2 );
2180
  } else {
2181
+ wp_verify_nonce( $_POST['_ajax_nonce'], 'addAccountByToken' );
2182
 
2183
+ $account = json_decode( stripslashes( $_POST['account'] ), true );
2184
+ $user_profile = array();
2185
+ $user_profile = apply_filters( 'wis/account/profiles', $user_profile, true );
2186
+
2187
+ if ( ! WIS_Plugin::app()->is_premium() && $this->count_accounts() >= 1 ) {
2188
+ wp_die( 'No premium' );
2189
+ }
2190
+
2191
+ $user_profile[ $account['username'] ] = $account;
2192
+ WIS_Plugin::app()->updateOption( 'account_profiles_new', $user_profile );
2193
+
2194
+ wp_die( 'Ok' );
2195
+ }
2196
+ } elseif ( isset( $_POST['token'] ) && ! empty( $_POST['token'] ) && isset( $_POST['_ajax_nonce'] ) ) {
2197
+ if ( ! current_user_can( 'manage_options' ) ) {
2198
+ wp_die( - 2 );
2199
+ } else {
2200
+ wp_verify_nonce( $_POST['_ajax_nonce'], 'addAccountByToken' );
2201
+
2202
+ $token = $_POST['token'];
2203
+ $this->update_account_profiles( $token );
2204
+
2205
+ wp_die( '1' );
2206
  }
2207
  }
2208
  }
2212
  * @return void
2213
  */
2214
  public function delete_account() {
2215
+ if ( isset( $_POST['item_id'] ) && isset( $_POST['is_business'] ) ) {
2216
  if ( ! current_user_can( 'manage_options' ) ) {
2217
  wp_die( - 1 );
2218
  } else {
2219
  check_ajax_referer( 'wis_nonce' );
2220
 
2221
+ if ( (bool) $_POST['is_business'] ) {
2222
+ $option_name = 'account_profiles_new';
2223
+ } else {
2224
+ $option_name = 'account_profiles';
2225
+ }
2226
+ $accounts = WIS_Plugin::app()->getPopulateOption( $option_name );
2227
  $accounts_new = array();
2228
+ foreach ( $accounts as $name => $acc ) {
2229
+ $id = isset( $acc['id'] ) ? $acc['id'] : 0;
2230
+ if ( (int) $id != (int) $_POST['item_id'] && ! empty( $name ) ) {
2231
+ $accounts_new[ $name ] = $acc;
2232
+ }
2233
+ }
2234
+ WIS_Plugin::app()->updatePopulateOption( $option_name, $accounts_new );
2235
 
2236
+ wp_send_json_success( __( 'Account deleted successfully', 'instagram-slider-widget' ) );
2237
  }
2238
  }
2239
  }
2240
 
2241
  /**
2242
  * Get Account data by USERNAME from option in wp_options
2243
+ *
2244
+ * @param string $name
2245
+ * @param bool $is_business
2246
+ *
2247
+ * @return array
2248
  */
2249
+ public function getAccountById( $name, $is_business = false ) {
2250
+ if ( $is_business ) {
2251
+ $token = WIS_Plugin::app()->getOption( 'account_profiles_new' );
2252
+ } else {
2253
+ $token = WIS_Plugin::app()->getOption( 'account_profiles' );
2254
+ }
2255
+
2256
+ return $token[ $name ];
2257
+ }
2258
+
2259
+ /**
2260
+ * Get first Account data from option in wp_options
2261
+ *
2262
+ * @return bool|array
2263
+ */
2264
+ public function getAccountForHashtag() {
2265
+ $token = WIS_Plugin::app()->getOption( 'account_profiles_new', false );
2266
+ if ( $token && is_array( $token ) && ! empty( $token ) ) {
2267
+ return $token[ array_key_first( $token ) ];
2268
+ } else {
2269
+ return false;
2270
+ }
2271
+ }
2272
 
2273
  /**
2274
  * Get Instagram Ids from Usernames into array
2275
+ *
2276
+ * @param string $usernames Comma separated string with instagram users
2277
+ *
2278
  * @return array An array with instagram ids
2279
  */
2280
  private function get_ids_from_usernames( $usernames ) {
2281
 
2282
+ $users = explode( ',', trim( $usernames ) );
2283
+ $user_ids = (array) get_transient( 'jr_insta_user_ids' );
2284
  $return_ids = array();
2285
 
2286
+ if ( is_array( $users ) && ! empty( $users ) ) {
2287
 
2288
  foreach ( $users as $user ) {
2289
 
2290
+ if ( isset( $user_ids[ $user ] ) ) {
2291
  continue;
2292
  }
2293
 
2294
+ $results = $this->get_data_by_username( $user );
2295
+ if ( $results && is_array( $results ) ) {
2296
 
2297
+ $results = $results['entry_data']['ProfilePage']['0']['graphql']['user'];
2298
+ $user_id = isset( $results['id'] ) ? $results['id'] : false;
2299
 
2300
+ if ( $user_id ) {
2301
 
2302
+ $user_ids[ $user ] = $user_id;
2303
 
2304
+ set_transient( 'jr_insta_user_ids', $user_ids );
2305
+ }
2306
+ }
2307
  }
2308
  }
2309
 
2310
  foreach ( $users as $user ) {
2311
+ if ( isset( $user_ids[ $user ] ) ) {
2312
+ $return_ids[] = $user_ids[ $user ];
2313
  }
2314
  }
2315
 
2319
 
2320
  /**
2321
  * Updates attachment using the id
2322
+ *
2323
+ * @param int $attachment_ID
2324
+ * @param array image_data
2325
+ *
2326
  * @return void
2327
  */
2328
  private function update_wp_attachment( $attachment_ID, $image_data ) {
2335
  * Save Instagram images to upload folder and ads to media.
2336
  * If the upload fails it returns the remote image url.
2337
  *
2338
+ * @param string $url Url of image to download
2339
+ * @param string $file File path for image
2340
  *
2341
+ * @return string $url Url to image
2342
  */
2343
  private function save_wp_attachment( $image_data ) {
2344
 
2345
  $image_info = pathinfo( $image_data['url'] );
2346
 
2347
+ if ( ! in_array( $image_info['extension'], array( 'jpg', 'jpe', 'jpeg' ) ) ) {
2348
  return false;
2349
  }
2350
 
2355
  'post_excerpt' => $image_data['caption']
2356
  );
2357
 
2358
+ $attachment_metadata = array(
2359
+ 'width' => $image_data['width'],
2360
+ 'height' => $image_data['height'],
2361
+ 'file' => $image_info['basename']
2362
+ );
2363
  $attachment_metadata['sizes'] = array( 'full' => $attachment_metadata );
2364
+ $id = wp_insert_attachment( $attachment );
2365
  wp_update_attachment_metadata( $id, $attachment_metadata );
2366
 
2367
 
2377
  /**
2378
  * Add new attachment Description only for instgram images
2379
  *
2380
+ * @param array $form_fields
2381
+ * @param object $post
2382
  *
2383
  * @return array
2384
  */
2386
 
2387
  $instagram_username = get_post_meta( $post->ID, 'jr_insta_username', true );
2388
 
2389
+ if ( ! empty( $instagram_username ) ) {
2390
 
2391
  $form_fields["jr_insta_username"] = array(
2392
  "label" => __( "Instagram Username" ),
2395
  );
2396
 
2397
  $instagram_link = get_post_meta( $post->ID, 'jr_insta_link', true );
2398
+ if ( ! empty( $instagram_link ) ) {
2399
  $form_fields["jr_insta_link"] = array(
2400
  "label" => __( "Instagram Image" ),
2401
  "input" => "html",
2404
  }
2405
 
2406
  $instagram_date = get_post_meta( $post->ID, 'jr_insta_timestamp', true );
2407
+ if ( ! empty( $instagram_date ) ) {
2408
+ $instagram_date = date( "F j, Y, g:i a", $instagram_date );
2409
  $form_fields["jr_insta_time"] = array(
2410
  "label" => __( "Posted on Instagram" ),
2411
  "input" => "html",
2450
  * This solution runs in O(n) time BUT assumes that all incoming input is
2451
  * strictly UTF8.
2452
  *
2453
+ * @param string $input The input to be sanitised
2454
  *
2455
+ * @return string sanitized input
2456
  */
2457
  private function sanitize( $input ) {
2458
 
2459
+ if ( ! empty( $input ) ) {
2460
+ $utf8_2byte = 0xC0 /*1100 0000*/
2461
+ ;
2462
+ $utf8_2byte_bmask = 0xE0 /*1110 0000*/
2463
+ ;
2464
+ $utf8_3byte = 0xE0 /*1110 0000*/
2465
+ ;
2466
+ $utf8_3byte_bmask = 0XF0 /*1111 0000*/
2467
+ ;
2468
+ $utf8_4byte = 0xF0 /*1111 0000*/
2469
+ ;
2470
+ $utf8_4byte_bmask = 0xF8 /*1111 1000*/
2471
+ ;
2472
 
2473
  $sanitized = "";
2474
  $len = strlen( $input );
2475
+ for ( $i = 0; $i < $len; ++ $i ) {
2476
 
2477
+ $mb_char = $input[ $i ]; // Potentially a multibyte sequence
2478
  $byte = ord( $mb_char );
2479
 
2480
  if ( ( $byte & $utf8_2byte_bmask ) == $utf8_2byte ) {
2481
+ $mb_char .= $input[ ++ $i ];
2482
  } else if ( ( $byte & $utf8_3byte_bmask ) == $utf8_3byte ) {
2483
+ $mb_char .= $input[ ++ $i ];
2484
+ $mb_char .= $input[ ++ $i ];
2485
  } else if ( ( $byte & $utf8_4byte_bmask ) == $utf8_4byte ) {
2486
  // Replace with ? to avoid MySQL exception
2487
  $mb_char = '';
2488
+ $i += 3;
2489
  }
2490
 
2491
  $sanitized .= $mb_char;
2498
  }
2499
 
2500
  /**
2501
+ * @param string $token
2502
+ * @param string $is_business
2503
+ * @param string $username
2504
  *
2505
+ * @return bool|array
2506
  */
2507
+ public function update_account_profiles( $token, $is_business = false, $username = "" ) {
2508
+ if ( $is_business ) {
2509
+ //Получаем аккаунты привязанные к фейсбуку
2510
+ $args = array(
2511
  'access_token' => $token,
2512
+ 'fields' => 'instagram_business_account',
2513
+ 'limit' => 200,
2514
+ );
2515
+ $url = self::USERS_SELF_URL_NEW . "me/accounts";
2516
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
2517
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
2518
+ $pages = json_decode( wp_remote_retrieve_body( $response ), true );
2519
+ //$username = $result['data'][0]['name'];
2520
+ $html = "";
2521
+ $users = array();
2522
+ foreach ( $pages['data'] as $key => $r ) {
2523
+ if ( isset( $r['instagram_business_account'] ) && isset( $r['instagram_business_account']['id'] ) ) {
2524
+ $args = array(
2525
+ 'fields' => 'username,id,followers_count,follows_count,media_count,name,profile_picture_url',
2526
+ 'access_token' => $token
2527
+ );
2528
+ $url = self::USERS_SELF_URL_NEW . $r['instagram_business_account']['id'];
2529
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
2530
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
2531
+ $result = json_decode( wp_remote_retrieve_body( $response ), true );
2532
+ $result['token'] = $token;
2533
+ $users[] = $result;
2534
+ $html .= "<div class='wis-row wis-row-style' id='wis-instagram-row' data-account='" . json_encode( $result ) . "'>";
2535
+ $html .= "<div class='wis-col-1 wis-col1-style'><img src='{$result['profile_picture_url']}' width='50' alt='{$result['username']}'></div>";
2536
+ $html .= "<div class='wis-col-2 wis-col2-style'>{$result['name']}<br>@{$result['username']}</div>";
2537
+ $html .= "</div>";
2538
+ }
2539
+ if ( "" !== $username && $username == $result['username'] ) {
2540
+ $user_profile = array();
2541
+ $user_profile = apply_filters( 'wis/account/profiles', $user_profile, true );
2542
+
2543
+ $user_profile[ $result['username'] ] = $result;
2544
+ WIS_Plugin::app()->updateOption( 'account_profiles_new', $user_profile );
2545
+ }
2546
+ }
2547
+ }
2548
+
2549
+ return array( $html, $users );
2550
+ }
2551
+ } else {
2552
+ $expires = 0;
2553
+ $profiles = WIS_Plugin::app()->getOption( 'account_profiles', array() );
2554
+ foreach ( $profiles as $profile ) {
2555
+ if ( $profile['token'] == $token ) {
2556
+ if ( $profile['expires'] <= time() ) {
2557
+ $new = $this->refresh_token( $token );
2558
+ $token = $new['access_token'];
2559
+ $expires = $new['expires_in']; //5183944 sec
2560
+ }
2561
+ break;
2562
+ }
2563
+ }
2564
+
2565
+ $args = array(
2566
+ 'fields' => 'id,media_count,username',
2567
+ 'access_token' => $token,
2568
+ );
2569
+
2570
+ $url = self::USERS_SELF_URL;
2571
+ $url = add_query_arg( $args, $url );
2572
+ $response = wp_remote_get( $url );
2573
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
2574
+ $user = json_decode( wp_remote_retrieve_body( $response ), true );
2575
+ if ( ! isset( $user['id'] ) || empty( $user['id'] ) ) {
2576
+ return false;
2577
+ }
2578
+
2579
+ $user['token'] = $token;
2580
+ if ( $expires > 0 ) {
2581
+ $user['expires'] = time() + ( $expires - 86344 );
2582
+ } //= 5097600 sec = 59 days
2583
+ else {
2584
+ $user['expires'] = isset( $profiles[ $user['username'] ]['expires'] ) ? $profiles[ $user['username'] ]['expires'] : time() + 5097600;
2585
+ }
2586
+ $user_profile = array();
2587
+ $user_profile = apply_filters( 'wis/account/profiles', $user_profile );
2588
+
2589
+ if ( ! WIS_Plugin::app()->is_premium() && $this->count_accounts() >= 1 ) {
2590
+ return array();
2591
+ }
2592
+
2593
+ $user_profile[ $user['username'] ] = $user;
2594
+ WIS_Plugin::app()->updateOption( 'account_profiles', $user_profile );
2595
+
2596
+ return $user;
2597
+ }
2598
+ }
2599
+
2600
+ return false;
2601
+ }
2602
+
2603
+ /**
2604
+ * @param string $token
2605
+ *
2606
+ * @return array
2607
+ */
2608
+ public function refresh_token( $token ) {
2609
+ $args = array(
2610
+ 'grant_type' => 'ig_refresh_token',
2611
+ 'access_token' => $token,
2612
  );
2613
+
2614
+ $url = self::USERS_SELF_MEDIA_URL . 'refresh_access_token';
2615
+ $url = add_query_arg( $args, $url );
2616
+ $response = wp_remote_get( $url );
2617
  if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
2618
+ $new = json_decode( wp_remote_retrieve_body( $response ), true );
2619
+ if ( is_array( $new ) ) {
2620
+ return $new;
2621
+ }
2622
+ }
2623
 
2624
+ return array();
2625
+ }
2626
+
2627
+ /**
2628
+ * This post is blocked by words?
2629
+ *
2630
+ * @param string $words
2631
+ * @param string $text
2632
+ *
2633
+ * @return bool
2634
+ */
2635
+ public function is_blocked_by_word( $words, $text ) {
2636
+ if ( empty( $words ) || empty( $text ) ) {
2637
+ return false;
2638
+ }
2639
+ $words_array = explode( ',', $words );
2640
+ foreach ( $words_array as $word ) {
2641
+ $pos = stripos( $text, trim( $word ) );
2642
+ if ( $pos !== false ) {
2643
+ return true;
2644
+ }
2645
  }
2646
+
2647
  return false;
2648
+ }
2649
+
2650
+ public function is_allowed_by_word($words, $text)
2651
+ {
2652
+ if(empty($words)) return true;
2653
+ if(empty($text)) return false;
2654
+
2655
+ $words_array = explode( ',', $words );
2656
+ foreach ($words_array as $word) {
2657
+ if(strripos($text, $word) !== false){
2658
+ return true;
2659
+ }
2660
+ }
2661
+ return false;
2662
  }
2663
 
2664
+ public function get_user_by_token( $token ) {
2665
+ $args = array(
2666
+ 'fields' => 'id,media_count,username',
2667
+ 'access_token' => $token,
2668
+ );
2669
+
2670
+ $url = self::USERS_SELF_URL;
2671
+ $url = add_query_arg( $args, $url );
2672
+ $response = wp_remote_get( $url );
2673
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
2674
+ $user = json_decode( wp_remote_retrieve_body( $response ), true );
2675
+ $user['token'] = $token;
2676
+
2677
+ return $user;
2678
+ }
2679
+
2680
+ return false;
2681
+ }
2682
+
2683
+ /**
2684
+ * Get count of accounts
2685
+ *
2686
+ * @return int
2687
+ */
2688
+ public function count_accounts() {
2689
+ $account = WIS_Plugin::app()->getOption( 'account_profiles', array() );
2690
+ $accont_b = WIS_Plugin::app()->getOption( 'account_profiles_new', array() );
2691
+
2692
+ return count( $account ) + count( $accont_b );
2693
+ }
2694
+
2695
  } // end of class WIS_InstagramSlider
2696
  ?>
includes/class.wis_social.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class of Social feed
4
+ *
5
+ * @author Artem Prihodko <webtemyk@yandex.ru>, Github: https://github.com/temyk
6
+ * @copyright (c) 28.12.2019, Webcraftic
7
+ *
8
+ * @version 1.0.0
9
+ */
10
+
11
+ // Exit if accessed directly
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ class WIS_Social {
17
+
18
+ /**
19
+ * @see self::app()
20
+ * @var WIS_Social
21
+ */
22
+ private static $app;
23
+
24
+ /**
25
+ * @var WIS_Plugin
26
+ */
27
+ public $WIS;
28
+
29
+ /**
30
+ * Name of the Social
31
+ *
32
+ * @var string
33
+ */
34
+ public $social_name = "";
35
+
36
+ /**
37
+ * Статический метод для быстрого доступа к интерфейсу плагина.
38
+ *
39
+ * @return WIS_Social
40
+ */
41
+ public static function app() {
42
+ return self::$app;
43
+ }
44
+
45
+ /**
46
+ * WIS_Social constructor.
47
+ */
48
+ public function __construct() {
49
+ self::$app = $this;
50
+ $this->WIS = WIS_Plugin::app();
51
+ }
52
+
53
+ /**
54
+ * @return string
55
+ */
56
+ public function getSocialName() {
57
+ return $this->social_name;
58
+ }
59
+
60
+ /**
61
+ * Обработка данных на вкладке соцсети
62
+ */
63
+ public function tabAction() {
64
+ echo $this->social_name;
65
+ }
66
+
67
+ /**
68
+ * Add account
69
+ *
70
+ */
71
+ public function addAccount() {
72
+
73
+ }
74
+
75
+ }
includes/demo_widgets.php ADDED
@@ -0,0 +1,391 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $premium = "";
3
+ if ( ! WIS_Plugin::app()->is_premium() ) {
4
+ $premium = " PREMIUM";
5
+ }
6
+ $demo_widgets[] = [
7
+ 'title' => 'Slider normal (for a sidebar)',
8
+ 'search_for' => '',
9
+ 'username' => '',
10
+ 'account' => '',
11
+ 'account_business' => '',
12
+ 'hashtag' => '',
13
+ 'blocked_users' => '',
14
+ 'blocked_words' => '',
15
+ 'attachment' => '',
16
+ 'template' => 'slider',
17
+ 'images_link' => 'image_link',
18
+ 'custom_url' => '',
19
+ 'orderby' => 'rand',
20
+ 'images_number' => '5',
21
+ 'columns' => '4',
22
+ 'refresh_hour' => '5',
23
+ 'image_size' => 'standard',
24
+ 'image_link_rel' => 'standard',
25
+ 'image_link_class' => 'standard',
26
+ 'no_pin' => 'standard',
27
+ 'controls' => 'prev_next',
28
+ 'animation' => 'slide',
29
+ 'caption_words' => '20',
30
+ 'slidespeed' => '7000',
31
+ 'description' => [
32
+ '0' => 'username',
33
+ '1' => 'time',
34
+ '2' => 'caption',
35
+ ],
36
+ 'support_author' => '',
37
+ 'gutter' => '0',
38
+ 'masonry_image_width' => '200',
39
+ 'slick_slides_to_show' => '3',
40
+ 'enable_control_buttons' => '0',
41
+ 'slick_slides_padding' => '3',
42
+ 'show_feed_header' => '1',
43
+ 'highlight_offset' => '1',
44
+ 'highlight_pattern' => '6',
45
+ 'demo' => 1,
46
+ ];
47
+
48
+ $demo_widgets[] = [
49
+ 'title' => 'Thumbmails (for a sidebar)',
50
+ 'search_for' => '',
51
+ 'username' => '',
52
+ 'account' => '',
53
+ 'account_business' => '',
54
+ 'hashtag' => '',
55
+ 'blocked_users' => '',
56
+ 'blocked_words' => '',
57
+ 'attachment' => '',
58
+ 'template' => 'thumbs',
59
+ 'images_link' => 'image_link',
60
+ 'custom_url' => '',
61
+ 'orderby' => 'date-ASC',
62
+ 'images_number' => '6',
63
+ 'columns' => '2',
64
+ 'refresh_hour' => '5',
65
+ 'image_size' => 'standard',
66
+ 'image_link_rel' => 'standard',
67
+ 'image_link_class' => 'standard',
68
+ 'no_pin' => 'standard',
69
+ 'controls' => 'prev_next',
70
+ 'animation' => 'slide',
71
+ 'caption_words' => '20',
72
+ 'slidespeed' => '7000',
73
+ 'description' => [
74
+ '0' => 'username',
75
+ '1' => 'time',
76
+ '2' => 'caption',
77
+ ],
78
+ 'support_author' => '',
79
+ 'gutter' => '0',
80
+ 'masonry_image_width' => '200',
81
+ 'slick_slides_to_show' => '3',
82
+ 'enable_control_buttons' => '0',
83
+ 'slick_slides_padding' => '3',
84
+ 'show_feed_header' => '1',
85
+ 'highlight_offset' => '1',
86
+ 'highlight_pattern' => '6',
87
+ 'demo' => 3,
88
+ ];
89
+
90
+ $demo_widgets[] = [
91
+ 'title' => 'Thumbnails without border (for articles and pages without sidebar)',
92
+ 'search_for' => '',
93
+ 'username' => '',
94
+ 'account' => '',
95
+ 'account_business' => '',
96
+ 'hashtag' => '',
97
+ 'blocked_users' => '',
98
+ 'blocked_words' => '',
99
+ 'attachment' => '',
100
+ 'template' => 'thumbs-no-border',
101
+ 'images_link' => 'image_link',
102
+ 'custom_url' => '',
103
+ 'orderby' => 'date-ASC',
104
+ 'images_number' => '12',
105
+ 'columns' => '4',
106
+ 'refresh_hour' => '5',
107
+ 'image_size' => 'standard',
108
+ 'image_link_rel' => 'standard',
109
+ 'image_link_class' => 'standard',
110
+ 'no_pin' => 'standard',
111
+ 'controls' => 'prev_next',
112
+ 'animation' => 'slide',
113
+ 'caption_words' => '20',
114
+ 'slidespeed' => '7000',
115
+ 'description' => [
116
+ '0' => 'username',
117
+ '1' => 'time',
118
+ '2' => 'caption',
119
+ ],
120
+ 'support_author' => '',
121
+ 'gutter' => '0',
122
+ 'masonry_image_width' => '200',
123
+ 'slick_slides_to_show' => '3',
124
+ 'enable_control_buttons' => '0',
125
+ 'slick_slides_padding' => '3',
126
+ 'show_feed_header' => '1',
127
+ 'highlight_offset' => '1',
128
+ 'highlight_pattern' => '6',
129
+ 'demo' => 5,
130
+ ];
131
+
132
+ $demo_widgets[] = [
133
+ 'title' => "Masonry (for articles and pages with sidebar){$premium}",
134
+ 'search_for' => '',
135
+ 'username' => '',
136
+ 'account' => '',
137
+ 'account_business' => '',
138
+ 'hashtag' => '',
139
+ 'blocked_users' => '',
140
+ 'blocked_words' => '',
141
+ 'attachment' => '',
142
+ 'template' => 'masonry',
143
+ 'images_link' => 'popup',
144
+ 'custom_url' => '',
145
+ 'orderby' => 'rand',
146
+ 'images_number' => '20',
147
+ 'columns' => '4',
148
+ 'refresh_hour' => '5',
149
+ 'image_size' => 'standard',
150
+ 'image_link_rel' => 'standard',
151
+ 'image_link_class' => 'standard',
152
+ 'no_pin' => 'standard',
153
+ 'controls' => 'prev_next',
154
+ 'animation' => 'slide',
155
+ 'caption_words' => '25',
156
+ 'slidespeed' => '7000',
157
+ 'description' => [
158
+ '0' => 'username',
159
+ '1' => 'time',
160
+ '2' => 'caption',
161
+ ],
162
+ 'support_author' => '',
163
+ 'gutter' => '0',
164
+ 'masonry_image_width' => '205',
165
+ 'slick_slides_to_show' => '3',
166
+ 'enable_control_buttons' => '0',
167
+ 'slick_slides_padding' => '3',
168
+ 'show_feed_header' => '1',
169
+ 'highlight_offset' => '1',
170
+ 'highlight_pattern' => '6',
171
+ 'demo' => 4,
172
+ 'premium' => true,
173
+ ];
174
+
175
+ $demo_widgets[] = [
176
+ 'title' => "Masonry (for articles and pages without sidebar){$premium}",
177
+ 'search_for' => '',
178
+ 'username' => '',
179
+ 'account' => '',
180
+ 'account_business' => '',
181
+ 'hashtag' => '',
182
+ 'blocked_users' => '',
183
+ 'blocked_words' => '',
184
+ 'attachment' => '',
185
+ 'template' => 'masonry',
186
+ 'images_link' => 'popup',
187
+ 'custom_url' => '',
188
+ 'orderby' => 'rand',
189
+ 'images_number' => '20',
190
+ 'columns' => '4',
191
+ 'refresh_hour' => '5',
192
+ 'image_size' => 'standard',
193
+ 'image_link_rel' => 'standard',
194
+ 'image_link_class' => 'standard',
195
+ 'no_pin' => 'standard',
196
+ 'controls' => 'prev_next',
197
+ 'animation' => 'slide',
198
+ 'caption_words' => '20',
199
+ 'slidespeed' => '7000',
200
+ 'description' => [
201
+ '0' => 'username',
202
+ '1' => 'time',
203
+ '2' => 'caption',
204
+
205
+ ],
206
+ 'support_author' => '',
207
+ 'gutter' => '0',
208
+ 'masonry_image_width' => '220',
209
+ 'slick_slides_to_show' => '3',
210
+ 'enable_control_buttons' => '0',
211
+ 'slick_slides_padding' => '3',
212
+ 'show_feed_header' => '1',
213
+ 'highlight_offset' => '1',
214
+ 'highlight_pattern' => '6',
215
+ 'demo' => '',
216
+ 'premium' => true,
217
+ ];
218
+
219
+ $demo_widgets[] = [
220
+ 'title' => "Highlight (for a sidebar){$premium}",
221
+ 'search_for' => '',
222
+ 'username' => '',
223
+ 'account' => '',
224
+ 'account_business' => '',
225
+ 'hashtag' => '',
226
+ 'blocked_users' => '',
227
+ 'blocked_words' => '',
228
+ 'attachment' => '',
229
+ 'template' => 'highlight',
230
+ 'images_link' => 'popup',
231
+ 'custom_url' => '',
232
+ 'orderby' => 'rand',
233
+ 'images_number' => '12',
234
+ 'columns' => '4',
235
+ 'refresh_hour' => '5',
236
+ 'image_size' => 'standard',
237
+ 'image_link_rel' => 'standard',
238
+ 'image_link_class' => 'standard',
239
+ 'no_pin' => 'standard',
240
+ 'controls' => 'prev_next',
241
+ 'animation' => 'slide',
242
+ 'caption_words' => '20',
243
+ 'slidespeed' => '7000',
244
+ 'description' => [
245
+ '0' => 'username',
246
+ '1' => 'time',
247
+ '2' => 'caption',
248
+ ],
249
+ 'support_author' => '',
250
+ 'gutter' => '0',
251
+ 'masonry_image_width' => '200',
252
+ 'slick_slides_to_show' => '3',
253
+ 'enable_control_buttons' => '0',
254
+ 'slick_slides_padding' => '3',
255
+ 'show_feed_header' => '1',
256
+ 'highlight_offset' => '1',
257
+ 'highlight_pattern' => '4',
258
+ 'demo' => 2,
259
+ 'premium' => true,
260
+ ];
261
+
262
+ $demo_widgets[] = [
263
+ 'title' => "Highlight (for articles and pages without sidebar){$premium}",
264
+ 'search_for' => '',
265
+ 'username' => '',
266
+ 'account' => '',
267
+ 'account_business' => '',
268
+ 'hashtag' => '',
269
+ 'blocked_users' => '',
270
+ 'blocked_words' => '',
271
+ 'attachment' => '',
272
+ 'template' => 'highlight',
273
+ 'images_link' => 'popup',
274
+ 'custom_url' => '',
275
+ 'orderby' => 'date-ASC',
276
+ 'images_number' => '14',
277
+ 'columns' => '4',
278
+ 'refresh_hour' => '5',
279
+ 'image_size' => 'standard',
280
+ 'image_link_rel' => 'standard',
281
+ 'image_link_class' => 'standard',
282
+ 'no_pin' => 'standard',
283
+ 'controls' => 'prev_next',
284
+ 'animation' => 'slide',
285
+ 'caption_words' => '20',
286
+ 'slidespeed' => '7000',
287
+ 'description' => [
288
+ '0' => 'username',
289
+ '1' => 'time',
290
+ '2' => 'caption',
291
+ ],
292
+ 'support_author' => '',
293
+ 'gutter' => '0',
294
+ 'masonry_image_width' => '200',
295
+ 'slick_slides_to_show' => '3',
296
+ 'enable_control_buttons' => '0',
297
+ 'slick_slides_padding' => '3',
298
+ 'show_feed_header' => '1',
299
+ 'highlight_offset' => '3',
300
+ 'highlight_pattern' => '8',
301
+ 'demo' => 6,
302
+ 'premium' => true,
303
+ ];
304
+
305
+ $demo_widgets[] = [
306
+ 'title' => "Slick Slider (for articles and pages with sidebar){$premium}",
307
+ 'search_for' => '',
308
+ 'username' => '',
309
+ 'account' => '',
310
+ 'account_business' => '',
311
+ 'hashtag' => '',
312
+ 'blocked_users' => '',
313
+ 'blocked_words' => '',
314
+ 'attachment' => '',
315
+ 'template' => 'slick_slider',
316
+ 'images_link' => 'popup',
317
+ 'custom_url' => '',
318
+ 'orderby' => 'rand',
319
+ 'images_number' => '20',
320
+ 'columns' => '4',
321
+ 'refresh_hour' => '5',
322
+ 'image_size' => 'standard',
323
+ 'image_link_rel' => 'standard',
324
+ 'image_link_class' => 'standard',
325
+ 'no_pin' => 'standard',
326
+ 'controls' => 'prev_next',
327
+ 'animation' => 'slide',
328
+ 'caption_words' => '20',
329
+ 'slidespeed' => '7000',
330
+ 'description' => [
331
+ '0' => 'username',
332
+ '1' => 'time',
333
+ '2' => 'caption',
334
+ ],
335
+ 'support_author' => '',
336
+ 'gutter' => '0',
337
+ 'masonry_image_width' => '200',
338
+ 'slick_slides_to_show' => '3',
339
+ 'enable_control_buttons' => '0',
340
+ 'slick_slides_padding' => '1',
341
+ 'show_feed_header' => '1',
342
+ 'highlight_offset' => '1',
343
+ 'highlight_pattern' => '6',
344
+ 'demo' => '',
345
+ 'premium' => true,
346
+ ];
347
+
348
+ $demo_widgets[] = [
349
+ 'title' => "Slick Slider (for articles and pages without sidebar){$premium}",
350
+ 'search_for' => '',
351
+ 'username' => '',
352
+ 'account' => '',
353
+ 'account_business' => '',
354
+ 'hashtag' => '',
355
+ 'blocked_users' => '',
356
+ 'blocked_words' => '',
357
+ 'attachment' => '',
358
+ 'template' => 'slick_slider',
359
+ 'images_link' => 'popup',
360
+ 'custom_url' => '',
361
+ 'orderby' => 'rand',
362
+ 'images_number' => '20',
363
+ 'columns' => '4',
364
+ 'refresh_hour' => '5',
365
+ 'image_size' => 'standard',
366
+ 'image_link_rel' => 'standard',
367
+ 'image_link_class' => 'standard',
368
+ 'no_pin' => 'standard',
369
+ 'controls' => 'prev_next',
370
+ 'animation' => 'slide',
371
+ 'caption_words' => '20',
372
+ 'slidespeed' => '7000',
373
+ 'description' => [
374
+ '0' => 'username',
375
+ '1' => 'time',
376
+ '2' => 'caption',
377
+ ],
378
+ 'support_author' => '',
379
+ 'gutter' => '0',
380
+ 'masonry_image_width' => '200',
381
+ 'slick_slides_to_show' => '4',
382
+ 'enable_control_buttons' => '0',
383
+ 'slick_slides_padding' => '1',
384
+ 'show_feed_header' => '1',
385
+ 'highlight_offset' => '1',
386
+ 'highlight_pattern' => '6',
387
+ 'demo' => '',
388
+ 'premium' => true,
389
+ ];
390
+
391
+ return $demo_widgets;
includes/socials/class.wis_facebook.php ADDED
@@ -0,0 +1,280 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class of Facebook feed
4
+ *
5
+ * @author Artem Prihodko <webtemyk@yandex.ru>, Github: https://github.com/temyk
6
+ * @copyright (c) 28.12.2019, Webcraftic
7
+ *
8
+ * @version 1.0.0
9
+ */
10
+
11
+ // Exit if accessed directly
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ class WIS_Facebook extends WIS_Social {
17
+
18
+ const FACEBOOK_SELF_URL = 'https://graph.facebook.com/';
19
+
20
+ /**
21
+ * Name of the Social
22
+ *
23
+ * @var string
24
+ */
25
+ public $social_name = "facebook";
26
+
27
+ /**
28
+ * WIS_Facebook constructor.
29
+ */
30
+ public function __construct() {
31
+ parent::__construct();
32
+
33
+ add_action( 'wp_ajax_wis_add_facebook_page_by_token', array( $this, 'add_account' ) );
34
+ }
35
+
36
+ /**
37
+ * @return string
38
+ */
39
+ public function getSocialName() {
40
+ return $this->social_name;
41
+ }
42
+
43
+ /**
44
+ * Обработка данных на вкладке соцсети
45
+ */
46
+ public function tabAction() {
47
+ if ( isset( $_GET['token_error'] ) ) {
48
+ //TODO: Обрабатывать ошибки, возможно логировать
49
+ $_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'token_error' ) );
50
+ } else {
51
+ if ( isset( $_GET['access_token'] ) ) {
52
+ $token = $_GET['access_token'];
53
+ $result = $this->update_account_profiles( $token );
54
+ $_SERVER['REQUEST_URI'] = remove_query_arg( 'access_token' );
55
+ ?>
56
+ <div id="wis_accounts_modal" class="wis_accounts_modal">
57
+ <div class="wis_modal_header">
58
+ Choose Account:
59
+ </div>
60
+ <div class="wis_modal_content">
61
+ <?php echo $result[0]; ?>
62
+ </div>
63
+ </div>
64
+ <div id="wis_modal_overlay" class="wis_modal_overlay"></div>
65
+ <span class="wis-overlay-spinner is-active">&nbsp;</span>
66
+ <?php
67
+ }
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Stores the fetched data from Facebook in WordPress DB using transients
73
+ *
74
+ * @param string $search_for Facebook page name to fetch
75
+ * @param string $cache_hours Cache hours for transient
76
+ * @param string $nr_images Nr of images to fetch
77
+ *
78
+ * @return string|array of localy saved facebook data
79
+ */
80
+ public function get_data( $search_for, $cache_hours, $nr_images ) {
81
+
82
+ if ( ! isset( $search_for ) || empty( $search_for ) ) {
83
+ return __( 'Nothing to search', 'instagram-slider-widget' );
84
+ }
85
+
86
+ $opt_name = 'jr_facebook_' . md5( $search_for );
87
+ $fbData = get_transient( $opt_name );
88
+ $old_opts = (array) get_option( $opt_name );
89
+ $new_opts = array(
90
+ 'search_string' => $search_for,
91
+ 'cache_hours' => $cache_hours,
92
+ 'nr_images' => $nr_images,
93
+ );
94
+
95
+ if ( true === $this->trigger_refresh_data( $fbData, $old_opts, $new_opts ) ) {
96
+
97
+ $entry_data = array();
98
+ $old_opts['search_string'] = $search_for;
99
+ $old_opts['cache_hours'] = $cache_hours;
100
+ $old_opts['nr_images'] = $nr_images;
101
+
102
+ $nr_images = ! $this->WIS->is_premium() && $nr_images > 20 ? 20 : $nr_images;
103
+ $account = $this->getAccountByName( $search_for );
104
+
105
+ $args = array(
106
+ 'access_token' => $account['token'],
107
+ 'fields' => "id,created_time,message,full_picture,picture,attachments{media_type,media,title,type,url},comments{comment_count,id},likes{id}",
108
+ 'limit' => $nr_images,
109
+ );
110
+
111
+ $url = self::FACEBOOK_SELF_URL . $account['id'] . "/feed";
112
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
113
+ if ( is_wp_error( $response ) ) {
114
+ return [ 'error' => __( 'Something went wrong', 'instagram-slider-widget' ) ];
115
+ }
116
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
117
+ $media = json_decode( wp_remote_retrieve_body( $response ), true );
118
+ if ( $media ) {
119
+ if ( isset( $media['data'] ) && is_array( $media['data'] ) ) {
120
+ $entry_data = $media['data'];
121
+
122
+ if ( ! count( $entry_data ) ) {
123
+ return [ 'error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' ) ];
124
+ }
125
+
126
+ update_option( $opt_name, $old_opts );
127
+ set_transient( $opt_name, $entry_data, $cache_hours * 60 * 60 );
128
+ } else {
129
+ return [ 'error' => __( 'No images found', 'instagram-slider-widget' ) ];
130
+ }
131
+ } else {
132
+ return [ 'error' => __( 'Something went wrong (json)', 'instagram-slider-widget' ) ];
133
+ }
134
+ } else {
135
+ return [ 'error' => __( 'Something went wrong. API error', 'instagram-slider-widget' ) ];
136
+ }
137
+
138
+ //Обновляем данные профиля: подписчики, количество постов
139
+ //$this->update_account_profiles( $account['token'], $account['username'] );
140
+ }
141
+
142
+ return $entry_data;
143
+ }
144
+
145
+ /**
146
+ * Get Account data by NAME from option in wp_options
147
+ *
148
+ * @param string $name
149
+ *
150
+ * @return array
151
+ */
152
+ public function getAccountByName( $name ) {
153
+ $token = WIS_Plugin::app()->getOption( WIS_FACEBOOK_ACCOUNT_PROFILES_OPTION_NAME );
154
+
155
+ return $token[ $name ];
156
+ }
157
+
158
+ /**
159
+ * Trigger refresh for new data
160
+ *
161
+ * @param array $fbData
162
+ * @param array $old_args
163
+ * @param array $new_args
164
+ *
165
+ * @return bool
166
+ */
167
+ private function trigger_refresh_data( $fbData, $old_args, $new_args ) {
168
+
169
+ $trigger = 0;
170
+
171
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
172
+ return false;
173
+ }
174
+
175
+ if ( false === $fbData ) {
176
+ $trigger = 1;
177
+ }
178
+
179
+
180
+ if ( isset( $old_args['saved_images'] ) ) {
181
+ unset( $old_args['saved_images'] );
182
+ }
183
+
184
+ if ( isset( $old_args['deleted_images'] ) ) {
185
+ unset( $old_args['deleted_images'] );
186
+ }
187
+
188
+ if ( is_array( $old_args ) && is_array( $new_args ) && array_diff( $old_args, $new_args ) !== array_diff( $new_args, $old_args ) ) {
189
+ $trigger = 1;
190
+ }
191
+
192
+ if ( $trigger == 1 ) {
193
+ return true;
194
+ }
195
+
196
+ return false;
197
+ }
198
+
199
+ /**
200
+ * @param $token
201
+ * @param $username
202
+ *
203
+ * @return bool|array
204
+ */
205
+ public function update_account_profiles( $token, $username = "" ) {
206
+ //Получаем аккаунты привязанные к фейсбуку
207
+ $args = array(
208
+ 'access_token' => $token,
209
+ 'fields' => 'id,name,username,picture,photos',
210
+ 'limit' => 200,
211
+ );
212
+ $url = self::FACEBOOK_SELF_URL . "me/accounts";
213
+ $response = wp_remote_get( add_query_arg( $args, $url ) );
214
+ if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
215
+ $pages = json_decode( wp_remote_retrieve_body( $response ), true );
216
+ $html = "";
217
+ foreach ( $pages['data'] as $key => $result ) {
218
+ $result['token'] = $token;
219
+ $users[] = $result;
220
+ $picture = isset( $result['picture']['data']['url'] ) ? $result['picture']['data']['url'] : "";
221
+ $html .= "<div class='wis-row wis-row-style' id='wis-facebook-row' data-account='" . json_encode( $result ) . "'>";
222
+ $html .= "<div class='wis-col-1 wis-col1-style'><img src='{$picture}' width='50' alt='{$result['name']}'></div>";
223
+ $html .= "<div class='wis-col-2 wis-col2-style'><a href='https://www.facebook.com/{$result['username']}'>{$result['name']}</a></div>";
224
+ $html .= "</div>";
225
+ }
226
+ }
227
+
228
+ return array( $html, $users );
229
+ }
230
+
231
+ /**
232
+ * Ajax Call to Add account
233
+ *
234
+ * @return void
235
+ */
236
+ public function add_account() {
237
+ if ( isset( $_POST['account'] ) && ! empty( $_POST['account'] ) && isset( $_POST['_ajax_nonce'] ) ) {
238
+ if ( ! current_user_can( 'manage_options' ) ) {
239
+ wp_die( - 2 );
240
+ } else {
241
+ wp_verify_nonce( $_POST['_ajax_nonce'], 'addAccountByToken' );
242
+
243
+ $account = json_decode( stripslashes( $_POST['account'] ), true );
244
+ $user_profile = array();
245
+ //$user_profile = apply_filters( 'wis/account/profiles', $user_profile );
246
+
247
+ $user_profile[ $account['username'] ] = $account;
248
+ WIS_Plugin::app()->updateOption( WIS_FACEBOOK_ACCOUNT_PROFILES_OPTION_NAME, $user_profile );
249
+ wp_die( '' );
250
+ }
251
+ }
252
+ }
253
+
254
+ /**
255
+ * Ajax Call to delete account
256
+ * @return void
257
+ */
258
+ public function delete_account() {
259
+ if ( isset( $_POST['item_id'] ) && ! empty( $_POST['item_id'] ) ) {
260
+ if ( ! current_user_can( 'manage_options' ) ) {
261
+ wp_die( - 1 );
262
+ } else {
263
+ check_ajax_referer( 'wis_nonce' );
264
+
265
+ $accounts = WIS_Plugin::app()->getPopulateOption( WIS_FACEBOOK_ACCOUNT_PROFILES_OPTION_NAME );
266
+ $accounts_new = array();
267
+ foreach ( $accounts as $name => $acc ) {
268
+ if ( $acc['id'] !== $_POST['item_id'] ) {
269
+ $accounts_new[ $name ] = $acc;
270
+ }
271
+ }
272
+ WIS_Plugin::app()->updatePopulateOption( WIS_FACEBOOK_ACCOUNT_PROFILES_OPTION_NAME, $accounts_new );
273
+
274
+ wp_send_json_success( __( 'Account deleted successfully', 'instagram-slider-widget' ) );
275
+ }
276
+ }
277
+ }
278
+
279
+
280
+ }
includes/socials/class.wis_youtube.php ADDED
File without changes
instaram_slider.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: Social Slider Widget
4
  Plugin URI: https://cm-wp.com/instagram-slider-widget
5
- Version: 1.6.3
6
  Description: Social Slider Widget is a responsive slider widget that shows 12 latest images from a public Instagram user and up to 18 images from a hashtag.
7
  Author: creativemotion
8
  Author URI: https://cm-wp.com/
@@ -21,10 +21,14 @@ if ( ! defined( 'ABSPATH' ) ) {
21
  require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-requirements.php' );
22
 
23
  $plugin_info = array(
24
- 'prefix' => 'wis_', // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
25
- 'plugin_name' => 'wisw', // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
26
- 'plugin_title' => __( 'Social Slider Widget', 'instagram-slider-widget' ), // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
27
- 'plugin_text_domain' => 'instagram-slider-widget', // Идентификатор перевода, указывается в load_plugin_textdomain()
 
 
 
 
28
 
29
  // Служба поддержки
30
  // Указываем ссылки и имена страниц сайта плагина, чтобы иметь к ним доступ внутри плагина.
@@ -40,58 +44,80 @@ $plugin_info = array(
40
 
41
  // Настройка обновлений плагина
42
  // Имеется ввиду настройка обновлений из удаленного репозитория. Это может быть wordpress.org, freemius.com, codecanyon.com
43
- 'has_updates' => true, // Нужно ли проверять обновления для этого плагина
 
44
  'updates_settings' => array(
45
- 'repository' => 'wordpress', // Тип репозитория из которого получаем обновления. Может быть wordpress, freemius
46
- 'slug' => 'instagram-slider-widget', // Слаг плагина в удаленном репозитории
47
- 'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
 
 
 
48
  'rollback_settings' => array(
49
- 'prev_stable_version' => '0.0.0' // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
 
50
  )
51
  ),
52
 
53
  // Настройка премиум плагина
54
  // Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
55
- 'has_premium' => true, // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
 
56
  'license_settings' => array(
57
  'has_updates' => true,
58
- 'provider' => 'freemius', // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
59
- 'slug' => 'instagram-slider-widget-premium', // Слаг плагина в выбранном поставщике лицензий и обновлений
60
- 'plugin_id' => '4272', // ID плагина в freemius.com
61
- 'public_key' => 'pk_5152229a4aba03187267a8bc88874', // Публичный ключ плагина в freemius.com
62
- 'price' => 39, // Минимальная цена плагина, выводится в рекламных блоках
 
 
 
 
 
63
  // Настройка обновлений премиум плагина
64
  'updates_settings' => array(
65
  'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
66
  'rollback_settings' => array(
67
- 'prev_stable_version' => '0.0.0' // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
 
68
  )
69
  )
70
  ),
71
 
72
  // Настройки рекламы от CreativeMotion
73
- 'render_adverts' => true, // Показывать рекламу CreativeMotion в админке Wordpress?
74
- 'adverts_settings' => array(
75
- 'dashboard_widget' => true, // если true, показывать виджет новостей на страницу Dashboard
76
- 'right_sidebar' => true, // если true, показывать виджет в правом сайбаре интерфейса плагина
77
- 'notice' => true, // если true, показывать сквозное уведомление на всех страницах админ панели Wordpress
 
 
 
 
78
  ),
79
 
80
  // Подключаемые модуль фреймворка
81
  // Необходимые для ускоренной разработки продуктов Webcrfatic
82
  'load_factory_modules' => array(
83
- array( 'libs/factory/bootstrap', 'factory_bootstrap_423', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
84
- array( 'libs/factory/forms', 'factory_forms_420', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
85
- array( 'libs/factory/pages', 'factory_pages_422', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
86
- array( 'libs/factory/freemius', 'factory_freemius_110', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
87
- array( 'libs/factory/adverts', 'factory_adverts_104', 'admin') // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
 
 
 
 
 
 
88
  )
89
  );
90
 
91
- $wis_compatibility = new Wbcr_Factory422_Requirements( __FILE__, array_merge( $plugin_info, array(
92
- 'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
93
- 'required_php_version' => '5.4',
94
- 'required_wp_version' => '4.2.0',
95
  'required_clearfy_check_component' => false
96
  ) ) );
97
 
@@ -109,8 +135,8 @@ define( 'WIS_PLUGIN_ACTIVE', true );
109
  define( 'WIS_PLUGIN_VERSION', $wis_compatibility->get_plugin_version() );
110
  define( 'WIS_PLUGIN_FILE', __FILE__ );
111
  define( 'WIS_ABSPATH', dirname( __FILE__ ) );
112
- define( 'WIS_PLUGIN_BASENAME', plugin_basename( __FILE__ ));
113
- define( 'WIS_PLUGIN_SLUG', dirname(plugin_basename( __FILE__ )));
114
  // Ссылка к директории плагина
115
  define( 'WIS_PLUGIN_URL', plugins_url( null, __FILE__ ) );
116
  // Директория плагина
@@ -132,11 +158,12 @@ try {
132
  new WIS_Plugin( __FILE__, array_merge( $plugin_info, array(
133
  'plugin_version' => WIS_PLUGIN_VERSION
134
  ) ) );
135
- } catch( Exception $e ) {
136
  // Plugin wasn't initialized due to an error
137
  define( 'WIS_PLUGIN_THROW_ERROR', true );
138
 
139
- $wis_plugin_error_func = function () use ( $e ) {
 
140
  $error = sprintf( "The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Social Slider Widget', $e->getMessage(), $e->getCode() );
141
  echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
142
  };
@@ -145,11 +172,29 @@ try {
145
  add_action( 'network_admin_notices', $wis_plugin_error_func );
146
  }
147
 
148
- define('WIS_INSTAGRAM_CLIENT_ID', '217c51471f2f4e11abaeaef4a12b99a4');
 
 
 
 
 
 
 
 
 
 
 
149
  /*******************************************************************************/
150
  /**
151
  * On widgets Init register Widget
152
  */
153
- require_once WIS_PLUGIN_DIR."/includes/class-wis_instagram_slider.php";
154
- add_action( 'widgets_init', array( 'WIS_InstagramSlider', 'register_widget' ) );
 
 
 
 
 
 
 
155
  ?>
2
  /*
3
  Plugin Name: Social Slider Widget
4
  Plugin URI: https://cm-wp.com/instagram-slider-widget
5
+ Version: 1.7.13
6
  Description: Social Slider Widget is a responsive slider widget that shows 12 latest images from a public Instagram user and up to 18 images from a hashtag.
7
  Author: creativemotion
8
  Author URI: https://cm-wp.com/
21
  require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-requirements.php' );
22
 
23
  $plugin_info = array(
24
+ 'prefix' => 'wis_',
25
+ // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
26
+ 'plugin_name' => 'wisw',
27
+ // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
28
+ 'plugin_title' => __( 'Social Slider Widget', 'instagram-slider-widget' ),
29
+ // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
30
+ 'plugin_text_domain' => 'instagram-slider-widget',
31
+ // Идентификатор перевода, указывается в load_plugin_textdomain()
32
 
33
  // Служба поддержки
34
  // Указываем ссылки и имена страниц сайта плагина, чтобы иметь к ним доступ внутри плагина.
44
 
45
  // Настройка обновлений плагина
46
  // Имеется ввиду настройка обновлений из удаленного репозитория. Это может быть wordpress.org, freemius.com, codecanyon.com
47
+ 'has_updates' => true,
48
+ // Нужно ли проверять обновления для этого плагина
49
  'updates_settings' => array(
50
+ 'repository' => 'wordpress',
51
+ // Тип репозитория из которого получаем обновления. Может быть wordpress, freemius
52
+ 'slug' => 'instagram-slider-widget',
53
+ // Слаг плагина в удаленном репозитории
54
+ 'maybe_rollback' => true,
55
+ // Можно ли делать откат к предыдущей версии плагина?
56
  'rollback_settings' => array(
57
+ 'prev_stable_version' => '0.0.0'
58
+ // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
59
  )
60
  ),
61
 
62
  // Настройка премиум плагина
63
  // Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
64
+ 'has_premium' => true,
65
+ // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
66
  'license_settings' => array(
67
  'has_updates' => true,
68
+ 'provider' => 'freemius',
69
+ // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
70
+ 'slug' => 'instagram-slider-widget-premium',
71
+ // Слаг плагина в выбранном поставщике лицензий и обновлений
72
+ 'plugin_id' => '4272',
73
+ // ID плагина в freemius.com
74
+ 'public_key' => 'pk_5152229a4aba03187267a8bc88874',
75
+ // Публичный ключ плагина в freemius.com
76
+ 'price' => 39,
77
+ // Минимальная цена плагина, выводится в рекламных блоках
78
  // Настройка обновлений премиум плагина
79
  'updates_settings' => array(
80
  'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
81
  'rollback_settings' => array(
82
+ 'prev_stable_version' => '0.0.0'
83
+ // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
84
  )
85
  )
86
  ),
87
 
88
  // Настройки рекламы от CreativeMotion
89
+ 'render_adverts' => true,
90
+ // Показывать рекламу CreativeMotion в админке Wordpress?
91
+ 'adverts_settings' => array(
92
+ 'dashboard_widget' => true,
93
+ // если true, показывать виджет новостей на страницу Dashboard
94
+ 'right_sidebar' => true,
95
+ // если true, показывать виджет в правом сайбаре интерфейса плагина
96
+ 'notice' => true,
97
+ // если true, показывать сквозное уведомление на всех страницах админ панели Wordpress
98
  ),
99
 
100
  // Подключаемые модуль фреймворка
101
  // Необходимые для ускоренной разработки продуктов Webcrfatic
102
  'load_factory_modules' => array(
103
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_436', 'admin' ),
104
+ // Модуль позволяет использовать различные js виджеты и стили оформление форм.
105
+ array( 'libs/factory/forms', 'factory_forms_433', 'admin' ),
106
+ // Модуль позволяет быстро создавать формы и готовые поля настроек
107
+ array( 'libs/factory/pages', 'factory_pages_435', 'admin' ),
108
+ // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
109
+ array( 'libs/factory/freemius', 'factory_freemius_123', 'all' ),
110
+ // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
111
+ array( 'libs/factory/adverts', 'factory_adverts_114', 'admin' ),
112
+ // Модуль clearfy для страницы компонентов
113
+ array( 'libs/factory/clearfy', 'factory_clearfy_227', 'admin' )
114
  )
115
  );
116
 
117
+ $wis_compatibility = new Wbcr_Factory436_Requirements( __FILE__, array_merge( $plugin_info, array(
118
+ 'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
119
+ 'required_php_version' => '5.6',
120
+ 'required_wp_version' => '4.8.0',
121
  'required_clearfy_check_component' => false
122
  ) ) );
123
 
135
  define( 'WIS_PLUGIN_VERSION', $wis_compatibility->get_plugin_version() );
136
  define( 'WIS_PLUGIN_FILE', __FILE__ );
137
  define( 'WIS_ABSPATH', dirname( __FILE__ ) );
138
+ define( 'WIS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
139
+ define( 'WIS_PLUGIN_SLUG', dirname( plugin_basename( __FILE__ ) ) );
140
  // Ссылка к директории плагина
141
  define( 'WIS_PLUGIN_URL', plugins_url( null, __FILE__ ) );
142
  // Директория плагина
158
  new WIS_Plugin( __FILE__, array_merge( $plugin_info, array(
159
  'plugin_version' => WIS_PLUGIN_VERSION
160
  ) ) );
161
+ } catch ( Exception $e ) {
162
  // Plugin wasn't initialized due to an error
163
  define( 'WIS_PLUGIN_THROW_ERROR', true );
164
 
165
+ $wis_plugin_error_func = function () use ( $e )
166
+ {
167
  $error = sprintf( "The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Social Slider Widget', $e->getMessage(), $e->getCode() );
168
  echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
169
  };
172
  add_action( 'network_admin_notices', $wis_plugin_error_func );
173
  }
174
 
175
+ define( 'WIS_INSTAGRAM_CLIENT_ID', '2555361627845349' );
176
+ define( 'WIS_FACEBOOK_CLIENT_ID', '776212986124330' );
177
+
178
+ /*
179
+ * Константа определяет какое имя опции для хранения данных.
180
+ * Нужно для отладки и последующего бесшовного перехода
181
+ */
182
+ define( 'WIS_ACCOUNT_PROFILES_OPTION_NAME', 'account_profiles' );
183
+ define( 'WIS_ACCOUNT_PROFILES_NEW_OPTION_NAME', 'account_profiles_new' );
184
+
185
+ define( 'WIS_FACEBOOK_ACCOUNT_PROFILES_OPTION_NAME', 'facebook_account_profiles' );
186
+
187
  /*******************************************************************************/
188
  /**
189
  * On widgets Init register Widget
190
  */
191
+ require_once WIS_PLUGIN_DIR . '/includes/class.wis_social.php';
192
+
193
+ require_once WIS_PLUGIN_DIR . "/includes/class-wis_instagram_slider.php";
194
+ add_action('plugins_loaded', function (){
195
+ add_action( 'widgets_init', array( 'WIS_InstagramSlider', 'register_widget' ) );
196
+ });
197
+
198
+ //require_once WIS_PLUGIN_DIR."/includes/class-wis_facebook_slider.php";
199
+ //add_action( 'widgets_init', array( 'WIS_FacebookSlider', 'register_widget' ) );
200
  ?>
languages/instagram-slider-widget-en_US.po CHANGED
@@ -1,628 +1,628 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Social Slider Widget\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2019-11-08 05:43+0000\n"
6
- "PO-Revision-Date: 2019-11-08 05:46+0000\n"
7
- "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
- "Language-Team: \n"
9
- "Language: en_US\n"
10
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Generator: Loco https://localise.biz/\n"
15
- "X-Loco-Version: 2.3.1; wp-5.2.4"
16
-
17
- #: includes/class-wis_instagram_slider.php:283
18
- msgid " Turn on to save Instagram Images into WordPress media library."
19
- msgstr ""
20
-
21
- #: includes/class-wis_instagram_slider.php:450
22
- msgid ""
23
- "* use this field only if the above option is set to <strong>Custom "
24
- "Link</strong>"
25
- msgstr ""
26
-
27
- #: includes/class-wis_instagram_slider.php:94
28
- msgid ""
29
- "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
30
- "Copy the shortocde generated at the bottom of the widget form and use it on "
31
- "posts or pages."
32
- msgstr ""
33
-
34
- #: includes/class-wis_instagram_slider.php:394
35
- msgid "1000 milliseconds = 1 second"
36
- msgstr ""
37
-
38
- #: admin/views/tab-license.php:134
39
- #, php-format
40
- msgid ""
41
- "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
42
- "premium version and get the license key to activate it now!"
43
- msgstr ""
44
-
45
- #: includes/class-wis_instagram_slider.php:422
46
- msgid ""
47
- "<strong>Square - Cropped</strong> - option will show square cropped images "
48
- "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
49
- "the original user uploaded image size."
50
- msgstr ""
51
-
52
- #: includes/class-wis_instagram_slider.php:42
53
- msgid "A widget that displays a slider with instagram images "
54
- msgstr ""
55
-
56
- #: admin/pages/about.php:44
57
- msgid "About"
58
- msgstr ""
59
-
60
- #: admin/pages/about.php:43
61
- msgid "About Social Slider Widget"
62
- msgstr ""
63
-
64
- #: includes/class-wis_instagram_slider.php:1552
65
- msgid "Account deleted successfully"
66
- msgstr ""
67
-
68
- #: includes/class-wis_instagram_slider.php:1131
69
- msgid ""
70
- "Account not found or for this account there are restrictions on Instagram by "
71
- "age"
72
- msgstr ""
73
-
74
- #: includes/class-wis_instagram_slider.php:250
75
- msgid "Account:"
76
- msgstr ""
77
-
78
- #: admin/views/tab-settings.php:51
79
- msgid "Action"
80
- msgstr ""
81
-
82
- #: admin/views/tab-license.php:11
83
- #, php-format
84
- msgid "Activate %s"
85
- msgstr ""
86
-
87
- #: admin/views/tab-license.php:84
88
- msgid "active sites"
89
- msgstr ""
90
-
91
- #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
92
- msgid "Add Account"
93
- msgstr ""
94
-
95
- #: includes/class-wis_instagram_slider.php:267
96
- msgid "Add account in settings"
97
- msgstr ""
98
-
99
- #: includes/class-wis-plugin.php:127
100
- msgid "Are you sure want to delete this account?"
101
- msgstr ""
102
-
103
- #: includes/class-wis_instagram_slider.php:441
104
- msgid "Attachment Page"
105
- msgstr ""
106
-
107
- #: admin/views/tab-about.php:149
108
- msgid "BENEFITS"
109
- msgstr ""
110
-
111
- #: includes/class-wis_instagram_slider.php:275
112
- msgid "Block Users"
113
- msgstr ""
114
-
115
- #: admin/views/tab-license.php:138
116
- #, php-format
117
- msgid ""
118
- "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
119
- "this page</a> and login using the e-mail address associated with your "
120
- "purchase."
121
- msgstr ""
122
-
123
- #: includes/class-wis_instagram_slider.php:400
124
- msgid "Caption"
125
- msgstr ""
126
-
127
- #: includes/class-wis_instagram_slider.php:305
128
- msgid "Check for new images every:"
129
- msgstr ""
130
-
131
- #: includes/class-wis_instagram_slider.php:293
132
- msgid "Count of images to show:"
133
- msgstr ""
134
-
135
- #. Author of the plugin
136
- msgid "creativemotion"
137
- msgstr ""
138
-
139
- #: includes/class-wis_instagram_slider.php:442
140
- msgid "Custom Link"
141
- msgstr ""
142
-
143
- #: includes/class-wis_instagram_slider.php:448
144
- msgid "Custom link:"
145
- msgstr ""
146
-
147
- #: includes/class-wis_instagram_slider.php:427
148
- msgid "Date - Ascending"
149
- msgstr ""
150
-
151
- #: includes/class-wis_instagram_slider.php:428
152
- msgid "Date - Descending"
153
- msgstr ""
154
-
155
- #: admin/views/tab-license.php:105
156
- msgid "day(s)"
157
- msgstr ""
158
-
159
- #: admin/views/tab-settings.php:72
160
- msgid "Delete"
161
- msgstr ""
162
-
163
- #: admin/views/tab-license.php:31
164
- msgid "Delete Key"
165
- msgstr ""
166
-
167
- #: admin/views/tab-about.php:123
168
- msgid ""
169
- "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
170
- "shortcodes."
171
- msgstr ""
172
-
173
- #: admin/views/tab-license.php:72
174
- msgid "domain"
175
- msgstr ""
176
-
177
- #: includes/class-wis_instagram_slider.php:384
178
- msgid "Dotted"
179
- msgstr ""
180
-
181
- #: includes/class-wis_instagram_slider.php:277
182
- msgid "Enter usernames separated by commas whose images you don't want to show"
183
- msgstr ""
184
-
185
- #: admin/views/tab-license.php:94
186
- msgid "EXPIRED!"
187
- msgstr ""
188
-
189
- #: includes/class-wis_instagram_slider.php:389
190
- msgid "Fade"
191
- msgstr ""
192
-
193
- #: admin/views/tab-about.php:128
194
- msgid "FEATURES"
195
- msgstr ""
196
-
197
- #: admin/views/tab-about.php:200
198
- msgid "FEEDBACK AND SUPPORT"
199
- msgstr ""
200
-
201
- #: includes/class-wis_instagram_slider.php:420
202
- msgid "Full Size"
203
- msgstr ""
204
-
205
- #: admin/pages/settings.php:148
206
- msgid "General"
207
- msgstr ""
208
-
209
- #: includes/class-wis_instagram_slider.php:272
210
- msgid "Hashtag:"
211
- msgstr ""
212
-
213
- #: admin/views/tab-license.php:120
214
- msgid "Have a key to activate the plugin? Paste it here:"
215
- msgstr ""
216
-
217
- #: admin/views/tab-license.php:118
218
- msgid "Have a key to activate the premium version? Paste it here:"
219
- msgstr ""
220
-
221
- #: includes/class-wis_instagram_slider.php:402
222
- msgid ""
223
- "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
224
- "all unselected to hide them all. Default all selected."
225
- msgstr ""
226
-
227
- #: includes/class-wis_instagram_slider.php:307
228
- msgid "hours"
229
- msgstr ""
230
-
231
- #. Author URI of the plugin
232
- msgid "https://cm-wp.com/"
233
- msgstr ""
234
-
235
- #. URI of the plugin
236
- msgid "https://cm-wp.com/instagram-slider-widget"
237
- msgstr ""
238
-
239
- #: admin/views/tab-settings.php:47
240
- msgid "ID"
241
- msgstr ""
242
-
243
- #: admin/views/tab-settings.php:46
244
- msgid "Image"
245
- msgstr ""
246
-
247
- #: includes/class-wis_instagram_slider.php:415
248
- msgid "Image format"
249
- msgstr ""
250
-
251
- #: includes/class-wis_instagram_slider.php:440
252
- msgid "Image URL"
253
- msgstr ""
254
-
255
- #: includes/class-wis_instagram_slider.php:354
256
- msgid "Image width:"
257
- msgstr ""
258
-
259
- #: admin/pages/settings.php:158
260
- msgid "Instagram account"
261
- msgstr ""
262
-
263
- #: includes/class-wis_instagram_slider.php:438
264
- msgid "Instagram Image"
265
- msgstr ""
266
-
267
- #: admin/pages/settings.php:166
268
- msgid "Instagram password"
269
- msgstr ""
270
-
271
- #: includes/class-wis_instagram_slider.php:439
272
- msgid "Instagram Profile"
273
- msgstr ""
274
-
275
- #: includes/class-wis_instagram_slider.php:1161
276
- msgid ""
277
- "Instagram requires authorization to view a user profile. Use autorized "
278
- "account in widget settings"
279
- msgstr ""
280
-
281
- #: admin/pages/license.php:90
282
- msgid "License"
283
- msgstr ""
284
-
285
- #: admin/ajax/check-license.php:39
286
- msgid ""
287
- "License key is empty or license key too long (license key is 32 characters "
288
- "long)"
289
- msgstr ""
290
-
291
- #: admin/pages/license.php:91
292
- msgid "License of Social Slider Widget"
293
- msgstr ""
294
-
295
- #: admin/ajax/check-license.php:27
296
- msgid "Licensing action not passed or this action is prohibited!"
297
- msgstr ""
298
-
299
- #: includes/class-wis_instagram_slider.php:436
300
- msgid "Link to"
301
- msgstr ""
302
-
303
- #: includes/class-wis_instagram_slider.php:418
304
- msgid "Low - 320x320"
305
- msgstr ""
306
-
307
- #: includes/class-wis_instagram_slider.php:345
308
- msgid "max is 10 ( only for thumbnails template )"
309
- msgstr ""
310
-
311
- #: includes/class-wis_instagram_slider.php:297
312
- msgid "Maximum 20 images in free version."
313
- msgstr ""
314
-
315
- #: includes/class-wis_instagram_slider.php:393
316
- msgid "milliseconds"
317
- msgstr ""
318
-
319
- #: admin/views/tab-settings.php:33
320
- #, php-format
321
- msgid "More accounts in <a href='%s'>PRO version</a>"
322
- msgstr ""
323
-
324
- #: includes/class-wis_instagram_slider.php:298
325
- #, php-format
326
- msgid "More in <a href='%s'>PRO version</a>"
327
- msgstr ""
328
-
329
- #: admin/views/tab-settings.php:49
330
- msgid "Name"
331
- msgstr ""
332
-
333
- #: includes/class-wis_instagram_slider.php:1214
334
- msgid "No images found"
335
- msgstr ""
336
-
337
- #: includes/class-wis_instagram_slider.php:688
338
- msgid "No images found! <br> Try some other hashtag or username"
339
- msgstr ""
340
-
341
- #: includes/class-wis_instagram_slider.php:385
342
- msgid "No Navigation"
343
- msgstr ""
344
-
345
- #: includes/class-wis_instagram_slider.php:443
346
- msgid "None"
347
- msgstr ""
348
-
349
- #: includes/class-wis_instagram_slider.php:1100
350
- msgid "Nothing to search for"
351
- msgstr ""
352
-
353
- #: includes/class-wis_instagram_slider.php:343
354
- msgid "Number of Columns:"
355
- msgstr ""
356
-
357
- #: includes/class-wis_instagram_slider.php:410
358
- msgid "Number of words in caption:"
359
- msgstr ""
360
-
361
- #: admin/views/tab-license.php:82
362
- msgid "of"
363
- msgstr ""
364
-
365
- #: includes/class-wis_instagram_slider.php:372
366
- msgid "Offset"
367
- msgstr ""
368
-
369
- #: includes/class-wis_instagram_slider.php:425
370
- msgid "Order by"
371
- msgstr ""
372
-
373
- #: admin/pages/settings.php:168
374
- msgid "Password of your Instagram account"
375
- msgstr ""
376
-
377
- #: includes/class-wis_instagram_slider.php:376
378
- msgid "Pattern"
379
- msgstr ""
380
-
381
- #: includes/class-wis_instagram_slider.php:362
382
- msgid "pictures"
383
- msgstr ""
384
-
385
- #: includes/class-wis_instagram_slider.php:360
386
- msgid "Pictures per slide:"
387
- msgstr ""
388
-
389
- #: admin/views/tab-license.php:76
390
- msgid "plan"
391
- msgstr ""
392
-
393
- #: admin/views/tab-license.php:95
394
- msgid "please update the key"
395
- msgstr ""
396
-
397
- #: includes/class-wis_instagram_slider.php:429
398
- msgid "Popularity - Ascending"
399
- msgstr ""
400
-
401
- #: includes/class-wis_instagram_slider.php:430
402
- msgid "Popularity - Descending"
403
- msgstr ""
404
-
405
- #: includes/class-wis_instagram_slider.php:383
406
- msgid "Prev & Next"
407
- msgstr ""
408
-
409
- #: admin/views/tab-about.php:163
410
- msgid "PRO VERSION"
411
- msgstr ""
412
-
413
- #: admin/views/tab-license.php:54
414
- msgid ""
415
- "Public License is a GPLv2 compatible license allowing you to change and use "
416
- "this version of the plugin for free. Please keep in mind this license covers "
417
- "only free edition of the plugin. Premium versions are distributed with other "
418
- "type of a license."
419
- msgstr ""
420
-
421
- #: includes/class-wis_instagram_slider.php:351
422
- #: includes/class-wis_instagram_slider.php:356
423
- msgid "px"
424
- msgstr ""
425
-
426
- #: includes/class-wis_instagram_slider.php:431
427
- msgid "Random"
428
- msgstr ""
429
-
430
- #: admin/views/tab-license.php:107
431
- msgid "remained"
432
- msgstr ""
433
-
434
- #: includes/class-wis_instagram_slider.php:279
435
- msgid "Save in Media Library: "
436
- msgstr ""
437
-
438
- #: includes/class-wis_instagram_slider.php:246
439
- msgid "Search Instagram for:"
440
- msgstr ""
441
-
442
- #: admin/pages/settings.php:108
443
- msgid "Settings"
444
- msgstr ""
445
-
446
- #: admin/pages/settings.php:107
447
- msgid "Settings of Social Slider Widget"
448
- msgstr ""
449
-
450
- #: includes/class-wis_instagram_slider.php:486
451
- msgid "Shortcode of this Widget:"
452
- msgstr ""
453
-
454
- #: includes/class-wis_instagram_slider.php:311
455
- msgid "Show feed header:"
456
- msgstr ""
457
-
458
- #: includes/class-wis_instagram_slider.php:388
459
- msgid "Slide"
460
- msgstr ""
461
-
462
- #: includes/class-wis_instagram_slider.php:391
463
- msgid "Slide Speed:"
464
- msgstr ""
465
-
466
- #: includes/class-wis_instagram_slider.php:387
467
- msgid "Slider Animation:"
468
- msgstr ""
469
-
470
- #: includes/class-wis_instagram_slider.php:382
471
- msgid "Slider Navigation Controls:"
472
- msgstr ""
473
-
474
- #: includes/class-wis_instagram_slider.php:396
475
- msgid "Slider Text Description:"
476
- msgstr ""
477
-
478
- #: includes/class-wis_instagram_slider.php:40
479
- #: includes/class-wis_instagram_slider.php:204
480
- msgid "Social Slider"
481
- msgstr ""
482
-
483
- #: includes/class-wis_instagram_slider.php:92
484
- msgid "Social Slider - Shortcode Generator"
485
- msgstr ""
486
-
487
- #. Name of the plugin
488
- #: instaram_slider.php:26 admin/views/tab-about.php:122
489
- msgid "Social Slider Widget"
490
- msgstr ""
491
-
492
- #. Description of the plugin
493
- msgid ""
494
- "Social Slider Widget is a responsive slider widget that shows 12 latest "
495
- "images from a public Instagram user and up to 18 images from a hashtag."
496
- msgstr ""
497
-
498
- #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
499
- msgid "Social Slider Widgets"
500
- msgstr ""
501
-
502
- #: includes/class-wis_instagram_slider.php:365
503
- msgid "Space between pictures:"
504
- msgstr ""
505
-
506
- #: includes/class-wis_instagram_slider.php:419
507
- msgid "Standard - 640x640"
508
- msgstr ""
509
-
510
- #: admin/views/tab-license.php:126
511
- msgid "Submit Key"
512
- msgstr ""
513
-
514
- #: admin/ajax/check-license.php:55
515
- msgid "Subscription success cancelled"
516
- msgstr ""
517
-
518
- #: admin/views/tab-license.php:35
519
- msgid "Synchronization"
520
- msgstr ""
521
-
522
- #: includes/class-wis_instagram_slider.php:318
523
- msgid "Template"
524
- msgstr ""
525
-
526
- #: admin/ajax/check-license.php:51
527
- msgid "The license has been updated"
528
- msgstr ""
529
-
530
- #: admin/ajax/check-license.php:47
531
- msgid "The license is deactivated"
532
- msgstr ""
533
-
534
- #: includes/class-wis_instagram_slider.php:1182
535
- msgid "There are no publications in this account yet"
536
- msgstr ""
537
-
538
- #: includes/class-wis_instagram_slider.php:417
539
- msgid "Thumbnail - 150x150"
540
- msgstr ""
541
-
542
- #: includes/class-wis_instagram_slider.php:399
543
- msgid "Time"
544
- msgstr ""
545
-
546
- #: includes/class-wis_instagram_slider.php:242
547
- msgid "Title:"
548
- msgstr ""
549
-
550
- #: admin/views/tab-settings.php:50
551
- msgid "Token"
552
- msgstr ""
553
-
554
- #: admin/views/tab-license.php:22
555
- #, php-format
556
- msgid "Upgrade to Premium for $%s"
557
- msgstr ""
558
-
559
- #: includes/class-wis_instagram_slider.php:488
560
- msgid ""
561
- "Use this shortcode in any page or post to display images with this widget "
562
- "configuration!"
563
- msgstr ""
564
-
565
- #: admin/views/tab-settings.php:48
566
- msgid "User"
567
- msgstr ""
568
-
569
- #: includes/class-wis_instagram_slider.php:398
570
- msgid "Username"
571
- msgstr ""
572
-
573
- #: admin/pages/settings.php:160
574
- msgid "Username of your Instagram account"
575
- msgstr ""
576
-
577
- #: includes/class-wis_instagram_slider.php:271
578
- msgid "Username:"
579
- msgstr ""
580
-
581
- #: admin/views/tab-license.php:89
582
- msgid "version"
583
- msgstr ""
584
-
585
- #: includes/class-wis_instagram_slider.php:349
586
- msgid "Vertical space between item elements:"
587
- msgstr ""
588
-
589
- #: admin/views/tab-about.php:209
590
- msgid "WHY DO YOU NEED IT?"
591
- msgstr ""
592
-
593
- #: admin/pages/widgets.php:109
594
- msgid "Widgets"
595
- msgstr ""
596
-
597
- #: includes/class-wis_instagram_slider.php:272
598
- msgid "without # sign"
599
- msgstr ""
600
-
601
- #: admin/views/tab-settings.php:21
602
- msgid ""
603
- "Without authorization Instagram limits the number of requests, and after "
604
- "exceeding the limit asks to log in, so an error is displayed that no images "
605
- "were found."
606
- msgstr ""
607
-
608
- #: admin/views/tab-license.php:58
609
- msgid ""
610
- "You use a paid subscription for the plugin updates. In case you don’t want "
611
- "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
612
- "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
613
- msgstr ""
614
-
615
- #: admin/views/tab-license.php:25
616
- #, php-format
617
- msgid "Your current license for %1$s:"
618
- msgstr ""
619
-
620
- #: admin/ajax/check-license.php:42
621
- msgid "Your license has been successfully activated"
622
- msgstr ""
623
-
624
- #: admin/views/tab-license.php:64
625
- msgid ""
626
- "Your license has expired, please extend the license to get updates and "
627
- "support."
628
- msgstr ""
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Social Slider Widget\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-11-08 05:43+0000\n"
6
+ "PO-Revision-Date: 2019-11-08 05:46+0000\n"
7
+ "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
+ "Language-Team: \n"
9
+ "Language: en_US\n"
10
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Generator: Loco https://localise.biz/\n"
15
+ "X-Loco-Version: 2.3.1; wp-5.2.4"
16
+
17
+ #: includes/class-wis_instagram_slider.php:283
18
+ msgid " Turn on to save Instagram Images into WordPress media library."
19
+ msgstr ""
20
+
21
+ #: includes/class-wis_instagram_slider.php:450
22
+ msgid ""
23
+ "* use this field only if the above option is set to <strong>Custom "
24
+ "Link</strong>"
25
+ msgstr ""
26
+
27
+ #: includes/class-wis_instagram_slider.php:94
28
+ msgid ""
29
+ "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
30
+ "Copy the shortocde generated at the bottom of the widget form and use it on "
31
+ "posts or pages."
32
+ msgstr ""
33
+
34
+ #: includes/class-wis_instagram_slider.php:394
35
+ msgid "1000 milliseconds = 1 second"
36
+ msgstr ""
37
+
38
+ #: admin/views/tab-license.php:134
39
+ #, php-format
40
+ msgid ""
41
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
42
+ "premium version and get the license key to activate it now!"
43
+ msgstr ""
44
+
45
+ #: includes/class-wis_instagram_slider.php:422
46
+ msgid ""
47
+ "<strong>Square - Cropped</strong> - option will show square cropped images "
48
+ "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
49
+ "the original user uploaded image size."
50
+ msgstr ""
51
+
52
+ #: includes/class-wis_instagram_slider.php:42
53
+ msgid "A widget that displays a slider with instagram images "
54
+ msgstr ""
55
+
56
+ #: admin/pages/about.php:44
57
+ msgid "About"
58
+ msgstr ""
59
+
60
+ #: admin/pages/about.php:43
61
+ msgid "About Social Slider Widget"
62
+ msgstr ""
63
+
64
+ #: includes/class-wis_instagram_slider.php:1552
65
+ msgid "Account deleted successfully"
66
+ msgstr ""
67
+
68
+ #: includes/class-wis_instagram_slider.php:1131
69
+ msgid ""
70
+ "Account not found or for this account there are restrictions on Instagram by "
71
+ "age"
72
+ msgstr ""
73
+
74
+ #: includes/class-wis_instagram_slider.php:250
75
+ msgid "Account:"
76
+ msgstr ""
77
+
78
+ #: admin/views/tab-settings.php:51
79
+ msgid "Action"
80
+ msgstr ""
81
+
82
+ #: admin/views/tab-license.php:11
83
+ #, php-format
84
+ msgid "Activate %s"
85
+ msgstr ""
86
+
87
+ #: admin/views/tab-license.php:84
88
+ msgid "active sites"
89
+ msgstr ""
90
+
91
+ #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
92
+ msgid "Add Account"
93
+ msgstr ""
94
+
95
+ #: includes/class-wis_instagram_slider.php:267
96
+ msgid "Add account in settings"
97
+ msgstr ""
98
+
99
+ #: includes/class-wis-plugin.php:127
100
+ msgid "Are you sure want to delete this account?"
101
+ msgstr ""
102
+
103
+ #: includes/class-wis_instagram_slider.php:441
104
+ msgid "Attachment Page"
105
+ msgstr ""
106
+
107
+ #: admin/views/tab-about.php:149
108
+ msgid "BENEFITS"
109
+ msgstr ""
110
+
111
+ #: includes/class-wis_instagram_slider.php:275
112
+ msgid "Block Users"
113
+ msgstr ""
114
+
115
+ #: admin/views/tab-license.php:138
116
+ #, php-format
117
+ msgid ""
118
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
119
+ "this page</a> and login using the e-mail address associated with your "
120
+ "purchase."
121
+ msgstr ""
122
+
123
+ #: includes/class-wis_instagram_slider.php:400
124
+ msgid "Caption"
125
+ msgstr ""
126
+
127
+ #: includes/class-wis_instagram_slider.php:305
128
+ msgid "Check for new images every:"
129
+ msgstr ""
130
+
131
+ #: includes/class-wis_instagram_slider.php:293
132
+ msgid "Count of images to show:"
133
+ msgstr ""
134
+
135
+ #. Author of the plugin
136
+ msgid "creativemotion"
137
+ msgstr ""
138
+
139
+ #: includes/class-wis_instagram_slider.php:442
140
+ msgid "Custom Link"
141
+ msgstr ""
142
+
143
+ #: includes/class-wis_instagram_slider.php:448
144
+ msgid "Custom link:"
145
+ msgstr ""
146
+
147
+ #: includes/class-wis_instagram_slider.php:427
148
+ msgid "Date - Ascending"
149
+ msgstr ""
150
+
151
+ #: includes/class-wis_instagram_slider.php:428
152
+ msgid "Date - Descending"
153
+ msgstr ""
154
+
155
+ #: admin/views/tab-license.php:105
156
+ msgid "day(s)"
157
+ msgstr ""
158
+
159
+ #: admin/views/tab-settings.php:72
160
+ msgid "Delete"
161
+ msgstr ""
162
+
163
+ #: admin/views/tab-license.php:31
164
+ msgid "Delete Key"
165
+ msgstr ""
166
+
167
+ #: admin/views/tab-about.php:123
168
+ msgid ""
169
+ "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
170
+ "shortcodes."
171
+ msgstr ""
172
+
173
+ #: admin/views/tab-license.php:72
174
+ msgid "domain"
175
+ msgstr ""
176
+
177
+ #: includes/class-wis_instagram_slider.php:384
178
+ msgid "Dotted"
179
+ msgstr ""
180
+
181
+ #: includes/class-wis_instagram_slider.php:277
182
+ msgid "Enter usernames separated by commas whose images you don't want to show"
183
+ msgstr ""
184
+
185
+ #: admin/views/tab-license.php:94
186
+ msgid "EXPIRED!"
187
+ msgstr ""
188
+
189
+ #: includes/class-wis_instagram_slider.php:389
190
+ msgid "Fade"
191
+ msgstr ""
192
+
193
+ #: admin/views/tab-about.php:128
194
+ msgid "FEATURES"
195
+ msgstr ""
196
+
197
+ #: admin/views/tab-about.php:200
198
+ msgid "FEEDBACK AND SUPPORT"
199
+ msgstr ""
200
+
201
+ #: includes/class-wis_instagram_slider.php:420
202
+ msgid "Full Size"
203
+ msgstr ""
204
+
205
+ #: admin/pages/settings.php:148
206
+ msgid "General"
207
+ msgstr ""
208
+
209
+ #: includes/class-wis_instagram_slider.php:272
210
+ msgid "Hashtag:"
211
+ msgstr ""
212
+
213
+ #: admin/views/tab-license.php:120
214
+ msgid "Have a key to activate the plugin? Paste it here:"
215
+ msgstr ""
216
+
217
+ #: admin/views/tab-license.php:118
218
+ msgid "Have a key to activate the premium version? Paste it here:"
219
+ msgstr ""
220
+
221
+ #: includes/class-wis_instagram_slider.php:402
222
+ msgid ""
223
+ "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
224
+ "all unselected to hide them all. Default all selected."
225
+ msgstr ""
226
+
227
+ #: includes/class-wis_instagram_slider.php:307
228
+ msgid "hours"
229
+ msgstr ""
230
+
231
+ #. Author URI of the plugin
232
+ msgid "https://cm-wp.com/"
233
+ msgstr ""
234
+
235
+ #. URI of the plugin
236
+ msgid "https://cm-wp.com/instagram-slider-widget"
237
+ msgstr ""
238
+
239
+ #: admin/views/tab-settings.php:47
240
+ msgid "ID"
241
+ msgstr ""
242
+
243
+ #: admin/views/tab-settings.php:46
244
+ msgid "Image"
245
+ msgstr ""
246
+
247
+ #: includes/class-wis_instagram_slider.php:415
248
+ msgid "Image format"
249
+ msgstr ""
250
+
251
+ #: includes/class-wis_instagram_slider.php:440
252
+ msgid "Image URL"
253
+ msgstr ""
254
+
255
+ #: includes/class-wis_instagram_slider.php:354
256
+ msgid "Image width:"
257
+ msgstr ""
258
+
259
+ #: admin/pages/settings.php:158
260
+ msgid "Instagram account"
261
+ msgstr ""
262
+
263
+ #: includes/class-wis_instagram_slider.php:438
264
+ msgid "Instagram Image"
265
+ msgstr ""
266
+
267
+ #: admin/pages/settings.php:166
268
+ msgid "Instagram password"
269
+ msgstr ""
270
+
271
+ #: includes/class-wis_instagram_slider.php:439
272
+ msgid "Instagram Profile"
273
+ msgstr ""
274
+
275
+ #: includes/class-wis_instagram_slider.php:1161
276
+ msgid ""
277
+ "Instagram requires authorization to view a user profile. Use autorized "
278
+ "account in widget settings"
279
+ msgstr ""
280
+
281
+ #: admin/pages/license.php:90
282
+ msgid "License"
283
+ msgstr ""
284
+
285
+ #: admin/ajax/check-license.php:39
286
+ msgid ""
287
+ "License key is empty or license key too long (license key is 32 characters "
288
+ "long)"
289
+ msgstr ""
290
+
291
+ #: admin/pages/license.php:91
292
+ msgid "License of Social Slider Widget"
293
+ msgstr ""
294
+
295
+ #: admin/ajax/check-license.php:27
296
+ msgid "Licensing action not passed or this action is prohibited!"
297
+ msgstr ""
298
+
299
+ #: includes/class-wis_instagram_slider.php:436
300
+ msgid "Link to"
301
+ msgstr ""
302
+
303
+ #: includes/class-wis_instagram_slider.php:418
304
+ msgid "Low - 320x320"
305
+ msgstr ""
306
+
307
+ #: includes/class-wis_instagram_slider.php:345
308
+ msgid "max is 10 ( only for thumbnails template )"
309
+ msgstr ""
310
+
311
+ #: includes/class-wis_instagram_slider.php:297
312
+ msgid "Maximum 20 images in free version."
313
+ msgstr ""
314
+
315
+ #: includes/class-wis_instagram_slider.php:393
316
+ msgid "milliseconds"
317
+ msgstr ""
318
+
319
+ #: admin/views/tab-settings.php:33
320
+ #, php-format
321
+ msgid "More accounts in <a href='%s'>PRO version</a>"
322
+ msgstr ""
323
+
324
+ #: includes/class-wis_instagram_slider.php:298
325
+ #, php-format
326
+ msgid "More in <a href='%s'>PRO version</a>"
327
+ msgstr ""
328
+
329
+ #: admin/views/tab-settings.php:49
330
+ msgid "Name"
331
+ msgstr ""
332
+
333
+ #: includes/class-wis_instagram_slider.php:1214
334
+ msgid "No images found"
335
+ msgstr ""
336
+
337
+ #: includes/class-wis_instagram_slider.php:688
338
+ msgid "No images found! <br> Try some other hashtag or username"
339
+ msgstr ""
340
+
341
+ #: includes/class-wis_instagram_slider.php:385
342
+ msgid "No Navigation"
343
+ msgstr ""
344
+
345
+ #: includes/class-wis_instagram_slider.php:443
346
+ msgid "None"
347
+ msgstr ""
348
+
349
+ #: includes/class-wis_instagram_slider.php:1100
350
+ msgid "Nothing to search for"
351
+ msgstr ""
352
+
353
+ #: includes/class-wis_instagram_slider.php:343
354
+ msgid "Number of Columns:"
355
+ msgstr ""
356
+
357
+ #: includes/class-wis_instagram_slider.php:410
358
+ msgid "Number of words in caption:"
359
+ msgstr ""
360
+
361
+ #: admin/views/tab-license.php:82
362
+ msgid "of"
363
+ msgstr ""
364
+
365
+ #: includes/class-wis_instagram_slider.php:372
366
+ msgid "Offset"
367
+ msgstr ""
368
+
369
+ #: includes/class-wis_instagram_slider.php:425
370
+ msgid "Order by"
371
+ msgstr ""
372
+
373
+ #: admin/pages/settings.php:168
374
+ msgid "Password of your Instagram account"
375
+ msgstr ""
376
+
377
+ #: includes/class-wis_instagram_slider.php:376
378
+ msgid "Pattern"
379
+ msgstr ""
380
+
381
+ #: includes/class-wis_instagram_slider.php:362
382
+ msgid "pictures"
383
+ msgstr ""
384
+
385
+ #: includes/class-wis_instagram_slider.php:360
386
+ msgid "Pictures per slide:"
387
+ msgstr ""
388
+
389
+ #: admin/views/tab-license.php:76
390
+ msgid "plan"
391
+ msgstr ""
392
+
393
+ #: admin/views/tab-license.php:95
394
+ msgid "please update the key"
395
+ msgstr ""
396
+
397
+ #: includes/class-wis_instagram_slider.php:429
398
+ msgid "Popularity - Ascending"
399
+ msgstr ""
400
+
401
+ #: includes/class-wis_instagram_slider.php:430
402
+ msgid "Popularity - Descending"
403
+ msgstr ""
404
+
405
+ #: includes/class-wis_instagram_slider.php:383
406
+ msgid "Prev & Next"
407
+ msgstr ""
408
+
409
+ #: admin/views/tab-about.php:163
410
+ msgid "PRO VERSION"
411
+ msgstr ""
412
+
413
+ #: admin/views/tab-license.php:54
414
+ msgid ""
415
+ "Public License is a GPLv2 compatible license allowing you to change and use "
416
+ "this version of the plugin for free. Please keep in mind this license covers "
417
+ "only free edition of the plugin. Premium versions are distributed with other "
418
+ "type of a license."
419
+ msgstr ""
420
+
421
+ #: includes/class-wis_instagram_slider.php:351
422
+ #: includes/class-wis_instagram_slider.php:356
423
+ msgid "px"
424
+ msgstr ""
425
+
426
+ #: includes/class-wis_instagram_slider.php:431
427
+ msgid "Random"
428
+ msgstr ""
429
+
430
+ #: admin/views/tab-license.php:107
431
+ msgid "remained"
432
+ msgstr ""
433
+
434
+ #: includes/class-wis_instagram_slider.php:279
435
+ msgid "Save in Media Library: "
436
+ msgstr ""
437
+
438
+ #: includes/class-wis_instagram_slider.php:246
439
+ msgid "Search Instagram for:"
440
+ msgstr ""
441
+
442
+ #: admin/pages/settings.php:108
443
+ msgid "Settings"
444
+ msgstr ""
445
+
446
+ #: admin/pages/settings.php:107
447
+ msgid "Settings of Social Slider Widget"
448
+ msgstr ""
449
+
450
+ #: includes/class-wis_instagram_slider.php:486
451
+ msgid "Shortcode of this Widget:"
452
+ msgstr ""
453
+
454
+ #: includes/class-wis_instagram_slider.php:311
455
+ msgid "Show feed header:"
456
+ msgstr ""
457
+
458
+ #: includes/class-wis_instagram_slider.php:388
459
+ msgid "Slide"
460
+ msgstr ""
461
+
462
+ #: includes/class-wis_instagram_slider.php:391
463
+ msgid "Slide Speed:"
464
+ msgstr ""
465
+
466
+ #: includes/class-wis_instagram_slider.php:387
467
+ msgid "Slider Animation:"
468
+ msgstr ""
469
+
470
+ #: includes/class-wis_instagram_slider.php:382
471
+ msgid "Slider Navigation Controls:"
472
+ msgstr ""
473
+
474
+ #: includes/class-wis_instagram_slider.php:396
475
+ msgid "Slider Text Description:"
476
+ msgstr ""
477
+
478
+ #: includes/class-wis_instagram_slider.php:40
479
+ #: includes/class-wis_instagram_slider.php:204
480
+ msgid "Social Slider"
481
+ msgstr ""
482
+
483
+ #: includes/class-wis_instagram_slider.php:92
484
+ msgid "Social Slider - Shortcode Generator"
485
+ msgstr ""
486
+
487
+ #. Name of the plugin
488
+ #: instaram_slider.php:26 admin/views/tab-about.php:122
489
+ msgid "Social Slider Widget"
490
+ msgstr ""
491
+
492
+ #. Description of the plugin
493
+ msgid ""
494
+ "Social Slider Widget is a responsive slider widget that shows 12 latest "
495
+ "images from a public Instagram user and up to 18 images from a hashtag."
496
+ msgstr ""
497
+
498
+ #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
499
+ msgid "Social Slider Widgets"
500
+ msgstr ""
501
+
502
+ #: includes/class-wis_instagram_slider.php:365
503
+ msgid "Space between pictures:"
504
+ msgstr ""
505
+
506
+ #: includes/class-wis_instagram_slider.php:419
507
+ msgid "Standard - 640x640"
508
+ msgstr ""
509
+
510
+ #: admin/views/tab-license.php:126
511
+ msgid "Submit Key"
512
+ msgstr ""
513
+
514
+ #: admin/ajax/check-license.php:55
515
+ msgid "Subscription success cancelled"
516
+ msgstr ""
517
+
518
+ #: admin/views/tab-license.php:35
519
+ msgid "Synchronization"
520
+ msgstr ""
521
+
522
+ #: includes/class-wis_instagram_slider.php:318
523
+ msgid "Template"
524
+ msgstr ""
525
+
526
+ #: admin/ajax/check-license.php:51
527
+ msgid "The license has been updated"
528
+ msgstr ""
529
+
530
+ #: admin/ajax/check-license.php:47
531
+ msgid "The license is deactivated"
532
+ msgstr ""
533
+
534
+ #: includes/class-wis_instagram_slider.php:1182
535
+ msgid "There are no publications in this account yet"
536
+ msgstr ""
537
+
538
+ #: includes/class-wis_instagram_slider.php:417
539
+ msgid "Thumbnail - 150x150"
540
+ msgstr ""
541
+
542
+ #: includes/class-wis_instagram_slider.php:399
543
+ msgid "Time"
544
+ msgstr ""
545
+
546
+ #: includes/class-wis_instagram_slider.php:242
547
+ msgid "Title:"
548
+ msgstr ""
549
+
550
+ #: admin/views/tab-settings.php:50
551
+ msgid "Token"
552
+ msgstr ""
553
+
554
+ #: admin/views/tab-license.php:22
555
+ #, php-format
556
+ msgid "Upgrade to Premium for $%s"
557
+ msgstr ""
558
+
559
+ #: includes/class-wis_instagram_slider.php:488
560
+ msgid ""
561
+ "Use this shortcode in any page or post to display images with this widget "
562
+ "configuration!"
563
+ msgstr ""
564
+
565
+ #: admin/views/tab-settings.php:48
566
+ msgid "User"
567
+ msgstr ""
568
+
569
+ #: includes/class-wis_instagram_slider.php:398
570
+ msgid "Username"
571
+ msgstr ""
572
+
573
+ #: admin/pages/settings.php:160
574
+ msgid "Username of your Instagram account"
575
+ msgstr ""
576
+
577
+ #: includes/class-wis_instagram_slider.php:271
578
+ msgid "Username:"
579
+ msgstr ""
580
+
581
+ #: admin/views/tab-license.php:89
582
+ msgid "version"
583
+ msgstr ""
584
+
585
+ #: includes/class-wis_instagram_slider.php:349
586
+ msgid "Vertical space between item elements:"
587
+ msgstr ""
588
+
589
+ #: admin/views/tab-about.php:209
590
+ msgid "WHY DO YOU NEED IT?"
591
+ msgstr ""
592
+
593
+ #: admin/pages/widgets.php:109
594
+ msgid "Widgets"
595
+ msgstr ""
596
+
597
+ #: includes/class-wis_instagram_slider.php:272
598
+ msgid "without # sign"
599
+ msgstr ""
600
+
601
+ #: admin/views/tab-settings.php:21
602
+ msgid ""
603
+ "Without authorization Instagram limits the number of requests, and after "
604
+ "exceeding the limit asks to log in, so an error is displayed that no images "
605
+ "were found."
606
+ msgstr ""
607
+
608
+ #: admin/views/tab-license.php:58
609
+ msgid ""
610
+ "You use a paid subscription for the plugin updates. In case you don’t want "
611
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
612
+ "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
613
+ msgstr ""
614
+
615
+ #: admin/views/tab-license.php:25
616
+ #, php-format
617
+ msgid "Your current license for %1$s:"
618
+ msgstr ""
619
+
620
+ #: admin/ajax/check-license.php:42
621
+ msgid "Your license has been successfully activated"
622
+ msgstr ""
623
+
624
+ #: admin/views/tab-license.php:64
625
+ msgid ""
626
+ "Your license has expired, please extend the license to get updates and "
627
+ "support."
628
+ msgstr ""
languages/instagram-slider-widget-ru_RU.po CHANGED
@@ -1,644 +1,644 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Social Slider Widget\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2019-11-08 05:43+0000\n"
6
- "PO-Revision-Date: 2019-11-08 07:03+0000\n"
7
- "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
- "Language-Team: Русский\n"
9
- "Language: ru_RU\n"
10
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
11
- "n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
12
- "MIME-Version: 1.0\n"
13
- "Content-Type: text/plain; charset=UTF-8\n"
14
- "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Loco https://localise.biz/\n"
16
- "X-Loco-Version: 2.3.1; wp-5.2.4"
17
-
18
- #: includes/class-wis_instagram_slider.php:283
19
- msgid " Turn on to save Instagram Images into WordPress media library."
20
- msgstr "Сохранять изображения в медиабиблиотеке Wordpress"
21
-
22
- #: includes/class-wis_instagram_slider.php:450
23
- msgid ""
24
- "* use this field only if the above option is set to <strong>Custom "
25
- "Link</strong>"
26
- msgstr ""
27
- "* используйте это поле только в том случае, если для параметра выше задано "
28
- "значение <strong>Произвольная ссылка</strong>"
29
-
30
- #: includes/class-wis_instagram_slider.php:94
31
- msgid ""
32
- "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
33
- "Copy the shortocde generated at the bottom of the widget form and use it on "
34
- "posts or pages."
35
- msgstr ""
36
- "1. Перетащите Social Slider Widget сюда. 2. Заполните поля и нажмите "
37
- "Сохранить. 3. Скопируйте шорткод, созданный в нижней части формы виджета, и "
38
- "используйте его в постах или страницах."
39
-
40
- #: includes/class-wis_instagram_slider.php:394
41
- msgid "1000 milliseconds = 1 second"
42
- msgstr "1000 миллисекунд = 1 секунда"
43
-
44
- #: admin/views/tab-license.php:134
45
- #, php-format
46
- msgid ""
47
- "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
48
- "premium version and get the license key to activate it now!"
49
- msgstr ""
50
- "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Узнайте больше</a> о "
51
- "премиум версии и получите лицензионный ключ, чтобы активировать его сейчас!"
52
-
53
- #: includes/class-wis_instagram_slider.php:422
54
- msgid ""
55
- "<strong>Square - Cropped</strong> - option will show square cropped images "
56
- "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
57
- "the original user uploaded image size."
58
- msgstr ""
59
-
60
- #: includes/class-wis_instagram_slider.php:42
61
- msgid "A widget that displays a slider with instagram images "
62
- msgstr "Виджет, который отображает слайдер с изображениями instagram"
63
-
64
- #: admin/pages/about.php:44
65
- msgid "About"
66
- msgstr "О плагине"
67
-
68
- #: admin/pages/about.php:43
69
- msgid "About Social Slider Widget"
70
- msgstr "Описание Social Slider Widget"
71
-
72
- #: includes/class-wis_instagram_slider.php:1552
73
- msgid "Account deleted successfully"
74
- msgstr ""
75
-
76
- #: includes/class-wis_instagram_slider.php:1131
77
- msgid ""
78
- "Account not found or for this account there are restrictions on Instagram by "
79
- "age"
80
- msgstr ""
81
- "Аккаунт не найден или для этого аккаунта действуют возрастные ограничения"
82
-
83
- #: includes/class-wis_instagram_slider.php:250
84
- msgid "Account:"
85
- msgstr "Аккаунт:"
86
-
87
- #: admin/views/tab-settings.php:51
88
- msgid "Action"
89
- msgstr "Действия"
90
-
91
- #: admin/views/tab-license.php:11
92
- #, php-format
93
- msgid "Activate %s"
94
- msgstr ""
95
-
96
- #: admin/views/tab-license.php:84
97
- msgid "active sites"
98
- msgstr ""
99
-
100
- #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
101
- msgid "Add Account"
102
- msgstr "Добавить аккаунт"
103
-
104
- #: includes/class-wis_instagram_slider.php:267
105
- msgid "Add account in settings"
106
- msgstr "Добавить аккаунт в настройках"
107
-
108
- #: includes/class-wis-plugin.php:127
109
- msgid "Are you sure want to delete this account?"
110
- msgstr "Вы уверена, что хотите удалить этот аккаунт?"
111
-
112
- #: includes/class-wis_instagram_slider.php:441
113
- msgid "Attachment Page"
114
- msgstr ""
115
-
116
- #: admin/views/tab-about.php:149
117
- msgid "BENEFITS"
118
- msgstr ""
119
-
120
- #: includes/class-wis_instagram_slider.php:275
121
- msgid "Block Users"
122
- msgstr "Заблокированные пользователи"
123
-
124
- #: admin/views/tab-license.php:138
125
- #, php-format
126
- msgid ""
127
- "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
128
- "this page</a> and login using the e-mail address associated with your "
129
- "purchase."
130
- msgstr ""
131
-
132
- #: includes/class-wis_instagram_slider.php:400
133
- msgid "Caption"
134
- msgstr "Заголовок"
135
-
136
- #: includes/class-wis_instagram_slider.php:305
137
- msgid "Check for new images every:"
138
- msgstr "Проверять новые изображения каждые:"
139
-
140
- #: includes/class-wis_instagram_slider.php:293
141
- msgid "Count of images to show:"
142
- msgstr "Кол-во изображений для показа:"
143
-
144
- #. Author of the plugin
145
- msgid "creativemotion"
146
- msgstr "creativemotion"
147
-
148
- #: includes/class-wis_instagram_slider.php:442
149
- msgid "Custom Link"
150
- msgstr "Произвольная ссылка"
151
-
152
- #: includes/class-wis_instagram_slider.php:448
153
- msgid "Custom link:"
154
- msgstr "Произвольная ссылка:"
155
-
156
- #: includes/class-wis_instagram_slider.php:427
157
- msgid "Date - Ascending"
158
- msgstr "Дата - по возрастанию"
159
-
160
- #: includes/class-wis_instagram_slider.php:428
161
- msgid "Date - Descending"
162
- msgstr "Дата - по убыванию"
163
-
164
- #: admin/views/tab-license.php:105
165
- msgid "day(s)"
166
- msgstr ""
167
-
168
- #: admin/views/tab-settings.php:72
169
- msgid "Delete"
170
- msgstr ""
171
-
172
- #: admin/views/tab-license.php:31
173
- msgid "Delete Key"
174
- msgstr ""
175
-
176
- #: admin/views/tab-about.php:123
177
- msgid ""
178
- "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
179
- "shortcodes."
180
- msgstr ""
181
-
182
- #: admin/views/tab-license.php:72
183
- msgid "domain"
184
- msgstr ""
185
-
186
- #: includes/class-wis_instagram_slider.php:384
187
- msgid "Dotted"
188
- msgstr ""
189
-
190
- #: includes/class-wis_instagram_slider.php:277
191
- msgid "Enter usernames separated by commas whose images you don't want to show"
192
- msgstr ""
193
- "Введите имена пользователей, разделенные запятыми, изображения которых вы не "
194
- "хотите показывать"
195
-
196
- #: admin/views/tab-license.php:94
197
- msgid "EXPIRED!"
198
- msgstr ""
199
-
200
- #: includes/class-wis_instagram_slider.php:389
201
- msgid "Fade"
202
- msgstr ""
203
-
204
- #: admin/views/tab-about.php:128
205
- msgid "FEATURES"
206
- msgstr ""
207
-
208
- #: admin/views/tab-about.php:200
209
- msgid "FEEDBACK AND SUPPORT"
210
- msgstr ""
211
-
212
- #: includes/class-wis_instagram_slider.php:420
213
- msgid "Full Size"
214
- msgstr ""
215
-
216
- #: admin/pages/settings.php:148
217
- msgid "General"
218
- msgstr ""
219
-
220
- #: includes/class-wis_instagram_slider.php:272
221
- msgid "Hashtag:"
222
- msgstr "Хэштэг:"
223
-
224
- #: admin/views/tab-license.php:120
225
- msgid "Have a key to activate the plugin? Paste it here:"
226
- msgstr ""
227
-
228
- #: admin/views/tab-license.php:118
229
- msgid "Have a key to activate the premium version? Paste it here:"
230
- msgstr ""
231
-
232
- #: includes/class-wis_instagram_slider.php:402
233
- msgid ""
234
- "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
235
- "all unselected to hide them all. Default all selected."
236
- msgstr ""
237
-
238
- #: includes/class-wis_instagram_slider.php:307
239
- msgid "hours"
240
- msgstr "часов"
241
-
242
- #. Author URI of the plugin
243
- msgid "https://cm-wp.com/"
244
- msgstr ""
245
-
246
- #. URI of the plugin
247
- msgid "https://cm-wp.com/instagram-slider-widget"
248
- msgstr ""
249
-
250
- #: admin/views/tab-settings.php:47
251
- msgid "ID"
252
- msgstr ""
253
-
254
- #: admin/views/tab-settings.php:46
255
- msgid "Image"
256
- msgstr "Аватар"
257
-
258
- #: includes/class-wis_instagram_slider.php:415
259
- msgid "Image format"
260
- msgstr "Формат изображения"
261
-
262
- #: includes/class-wis_instagram_slider.php:440
263
- msgid "Image URL"
264
- msgstr "Ссылка на изображение"
265
-
266
- #: includes/class-wis_instagram_slider.php:354
267
- msgid "Image width:"
268
- msgstr "Ширина изображения:"
269
-
270
- #: admin/pages/settings.php:158
271
- msgid "Instagram account"
272
- msgstr ""
273
-
274
- #: includes/class-wis_instagram_slider.php:438
275
- msgid "Instagram Image"
276
- msgstr "Страница поста"
277
-
278
- #: admin/pages/settings.php:166
279
- msgid "Instagram password"
280
- msgstr ""
281
-
282
- #: includes/class-wis_instagram_slider.php:439
283
- msgid "Instagram Profile"
284
- msgstr "Страница Инстаграм"
285
-
286
- #: includes/class-wis_instagram_slider.php:1161
287
- msgid ""
288
- "Instagram requires authorization to view a user profile. Use autorized "
289
- "account in widget settings"
290
- msgstr ""
291
-
292
- #: admin/pages/license.php:90
293
- msgid "License"
294
- msgstr ""
295
-
296
- #: admin/ajax/check-license.php:39
297
- msgid ""
298
- "License key is empty or license key too long (license key is 32 characters "
299
- "long)"
300
- msgstr ""
301
-
302
- #: admin/pages/license.php:91
303
- msgid "License of Social Slider Widget"
304
- msgstr ""
305
-
306
- #: admin/ajax/check-license.php:27
307
- msgid "Licensing action not passed or this action is prohibited!"
308
- msgstr ""
309
-
310
- #: includes/class-wis_instagram_slider.php:436
311
- msgid "Link to"
312
- msgstr "Ссылка на:"
313
-
314
- #: includes/class-wis_instagram_slider.php:418
315
- msgid "Low - 320x320"
316
- msgstr ""
317
-
318
- #: includes/class-wis_instagram_slider.php:345
319
- msgid "max is 10 ( only for thumbnails template )"
320
- msgstr "максимум 10 (только для шаблона thumbnails)"
321
-
322
- #: includes/class-wis_instagram_slider.php:297
323
- msgid "Maximum 20 images in free version."
324
- msgstr "Максимум 20 изображений в бесплатной версии"
325
-
326
- #: includes/class-wis_instagram_slider.php:393
327
- msgid "milliseconds"
328
- msgstr "миллисекунд"
329
-
330
- #: admin/views/tab-settings.php:33
331
- #, php-format
332
- msgid "More accounts in <a href='%s'>PRO version</a>"
333
- msgstr "Больше аккаунтов в <a href='%s'>PRO версии</a>"
334
-
335
- #: includes/class-wis_instagram_slider.php:298
336
- #, php-format
337
- msgid "More in <a href='%s'>PRO version</a>"
338
- msgstr "Больше в <a href='%s'>PRO версии</a>"
339
-
340
- #: admin/views/tab-settings.php:49
341
- msgid "Name"
342
- msgstr "Имя"
343
-
344
- #: includes/class-wis_instagram_slider.php:1214
345
- msgid "No images found"
346
- msgstr ""
347
-
348
- #: includes/class-wis_instagram_slider.php:688
349
- msgid "No images found! <br> Try some other hashtag or username"
350
- msgstr ""
351
-
352
- #: includes/class-wis_instagram_slider.php:385
353
- msgid "No Navigation"
354
- msgstr ""
355
-
356
- #: includes/class-wis_instagram_slider.php:443
357
- msgid "None"
358
- msgstr ""
359
-
360
- #: includes/class-wis_instagram_slider.php:1100
361
- msgid "Nothing to search for"
362
- msgstr ""
363
-
364
- #: includes/class-wis_instagram_slider.php:343
365
- msgid "Number of Columns:"
366
- msgstr "Кол-во колонок:"
367
-
368
- #: includes/class-wis_instagram_slider.php:410
369
- msgid "Number of words in caption:"
370
- msgstr "Кол-во слов в тексте:"
371
-
372
- #: admin/views/tab-license.php:82
373
- msgid "of"
374
- msgstr ""
375
-
376
- #: includes/class-wis_instagram_slider.php:372
377
- msgid "Offset"
378
- msgstr ""
379
-
380
- #: includes/class-wis_instagram_slider.php:425
381
- msgid "Order by"
382
- msgstr "Сортировка"
383
-
384
- #: admin/pages/settings.php:168
385
- msgid "Password of your Instagram account"
386
- msgstr ""
387
-
388
- #: includes/class-wis_instagram_slider.php:376
389
- msgid "Pattern"
390
- msgstr ""
391
-
392
- #: includes/class-wis_instagram_slider.php:362
393
- msgid "pictures"
394
- msgstr "изображений"
395
-
396
- #: includes/class-wis_instagram_slider.php:360
397
- msgid "Pictures per slide:"
398
- msgstr "Изображений на слайд:"
399
-
400
- #: admin/views/tab-license.php:76
401
- msgid "plan"
402
- msgstr ""
403
-
404
- #: admin/views/tab-license.php:95
405
- msgid "please update the key"
406
- msgstr ""
407
-
408
- #: includes/class-wis_instagram_slider.php:429
409
- msgid "Popularity - Ascending"
410
- msgstr "Популярность - по возрастанию"
411
-
412
- #: includes/class-wis_instagram_slider.php:430
413
- msgid "Popularity - Descending"
414
- msgstr "Популярность - по убыванию"
415
-
416
- #: includes/class-wis_instagram_slider.php:383
417
- msgid "Prev & Next"
418
- msgstr ""
419
-
420
- #: admin/views/tab-about.php:163
421
- msgid "PRO VERSION"
422
- msgstr ""
423
-
424
- #: admin/views/tab-license.php:54
425
- msgid ""
426
- "Public License is a GPLv2 compatible license allowing you to change and use "
427
- "this version of the plugin for free. Please keep in mind this license covers "
428
- "only free edition of the plugin. Premium versions are distributed with other "
429
- "type of a license."
430
- msgstr ""
431
-
432
- #: includes/class-wis_instagram_slider.php:351
433
- #: includes/class-wis_instagram_slider.php:356
434
- msgid "px"
435
- msgstr ""
436
-
437
- #: includes/class-wis_instagram_slider.php:431
438
- msgid "Random"
439
- msgstr "Рандом"
440
-
441
- #: admin/views/tab-license.php:107
442
- msgid "remained"
443
- msgstr ""
444
-
445
- #: includes/class-wis_instagram_slider.php:279
446
- msgid "Save in Media Library: "
447
- msgstr "Сохранять в медиабиблиотеке:"
448
-
449
- #: includes/class-wis_instagram_slider.php:246
450
- msgid "Search Instagram for:"
451
- msgstr "Искать в Instagram по:"
452
-
453
- #: admin/pages/settings.php:108
454
- msgid "Settings"
455
- msgstr "Настройки"
456
-
457
- #: admin/pages/settings.php:107
458
- msgid "Settings of Social Slider Widget"
459
- msgstr "Настройки Social Slider Widget"
460
-
461
- #: includes/class-wis_instagram_slider.php:486
462
- msgid "Shortcode of this Widget:"
463
- msgstr "Шорткод виджета:"
464
-
465
- #: includes/class-wis_instagram_slider.php:311
466
- msgid "Show feed header:"
467
- msgstr "Отображать шапку:"
468
-
469
- #: includes/class-wis_instagram_slider.php:388
470
- msgid "Slide"
471
- msgstr ""
472
-
473
- #: includes/class-wis_instagram_slider.php:391
474
- msgid "Slide Speed:"
475
- msgstr ""
476
-
477
- #: includes/class-wis_instagram_slider.php:387
478
- msgid "Slider Animation:"
479
- msgstr ""
480
-
481
- #: includes/class-wis_instagram_slider.php:382
482
- msgid "Slider Navigation Controls:"
483
- msgstr ""
484
-
485
- #: includes/class-wis_instagram_slider.php:396
486
- msgid "Slider Text Description:"
487
- msgstr ""
488
-
489
- #: includes/class-wis_instagram_slider.php:40
490
- #: includes/class-wis_instagram_slider.php:204
491
- msgid "Social Slider"
492
- msgstr ""
493
-
494
- #: includes/class-wis_instagram_slider.php:92
495
- msgid "Social Slider - Shortcode Generator"
496
- msgstr ""
497
-
498
- #. Name of the plugin
499
- #: instaram_slider.php:26 admin/views/tab-about.php:122
500
- msgid "Social Slider Widget"
501
- msgstr ""
502
-
503
- #. Description of the plugin
504
- msgid ""
505
- "Social Slider Widget is a responsive slider widget that shows 12 latest "
506
- "images from a public Instagram user and up to 18 images from a hashtag."
507
- msgstr ""
508
-
509
- #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
510
- msgid "Social Slider Widgets"
511
- msgstr ""
512
-
513
- #: includes/class-wis_instagram_slider.php:365
514
- msgid "Space between pictures:"
515
- msgstr "Расстояние между изображениями:"
516
-
517
- #: includes/class-wis_instagram_slider.php:419
518
- msgid "Standard - 640x640"
519
- msgstr ""
520
-
521
- #: admin/views/tab-license.php:126
522
- msgid "Submit Key"
523
- msgstr ""
524
-
525
- #: admin/ajax/check-license.php:55
526
- msgid "Subscription success cancelled"
527
- msgstr ""
528
-
529
- #: admin/views/tab-license.php:35
530
- msgid "Synchronization"
531
- msgstr ""
532
-
533
- #: includes/class-wis_instagram_slider.php:318
534
- msgid "Template"
535
- msgstr "Шаблон"
536
-
537
- #: admin/ajax/check-license.php:51
538
- msgid "The license has been updated"
539
- msgstr ""
540
-
541
- #: admin/ajax/check-license.php:47
542
- msgid "The license is deactivated"
543
- msgstr ""
544
-
545
- #: includes/class-wis_instagram_slider.php:1182
546
- msgid "There are no publications in this account yet"
547
- msgstr ""
548
-
549
- #: includes/class-wis_instagram_slider.php:417
550
- msgid "Thumbnail - 150x150"
551
- msgstr ""
552
-
553
- #: includes/class-wis_instagram_slider.php:399
554
- msgid "Time"
555
- msgstr ""
556
-
557
- #: includes/class-wis_instagram_slider.php:242
558
- msgid "Title:"
559
- msgstr "Заголовок:"
560
-
561
- #: admin/views/tab-settings.php:50
562
- msgid "Token"
563
- msgstr "Токен"
564
-
565
- #: admin/views/tab-license.php:22
566
- #, php-format
567
- msgid "Upgrade to Premium for $%s"
568
- msgstr ""
569
-
570
- #: includes/class-wis_instagram_slider.php:488
571
- msgid ""
572
- "Use this shortcode in any page or post to display images with this widget "
573
- "configuration!"
574
- msgstr ""
575
- "Используйте этот шорткод на любой странице или посте для отображения "
576
- "изображений с этой конфигурацией виджета."
577
-
578
- #: admin/views/tab-settings.php:48
579
- msgid "User"
580
- msgstr "Аккаунт"
581
-
582
- #: includes/class-wis_instagram_slider.php:398
583
- msgid "Username"
584
- msgstr ""
585
-
586
- #: admin/pages/settings.php:160
587
- msgid "Username of your Instagram account"
588
- msgstr ""
589
-
590
- #: includes/class-wis_instagram_slider.php:271
591
- msgid "Username:"
592
- msgstr "Имя аккаунта:"
593
-
594
- #: admin/views/tab-license.php:89
595
- msgid "version"
596
- msgstr ""
597
-
598
- #: includes/class-wis_instagram_slider.php:349
599
- msgid "Vertical space between item elements:"
600
- msgstr "Вертикальное расстояние между элементами:"
601
-
602
- #: admin/views/tab-about.php:209
603
- msgid "WHY DO YOU NEED IT?"
604
- msgstr ""
605
-
606
- #: admin/pages/widgets.php:109
607
- msgid "Widgets"
608
- msgstr "Виджеты"
609
-
610
- #: includes/class-wis_instagram_slider.php:272
611
- msgid "without # sign"
612
- msgstr "без #"
613
-
614
- #: admin/views/tab-settings.php:21
615
- msgid ""
616
- "Without authorization Instagram limits the number of requests, and after "
617
- "exceeding the limit asks to log in, so an error is displayed that no images "
618
- "were found."
619
- msgstr ""
620
- "Без авторизации Instagram ограничивает количество запросов, а после "
621
- "превышения лимита просит войти в систему, поэтому выводится сообщение, что "
622
- "изображения не найдены."
623
-
624
- #: admin/views/tab-license.php:58
625
- msgid ""
626
- "You use a paid subscription for the plugin updates. In case you don’t want "
627
- "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
628
- "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
629
- msgstr ""
630
-
631
- #: admin/views/tab-license.php:25
632
- #, php-format
633
- msgid "Your current license for %1$s:"
634
- msgstr ""
635
-
636
- #: admin/ajax/check-license.php:42
637
- msgid "Your license has been successfully activated"
638
- msgstr ""
639
-
640
- #: admin/views/tab-license.php:64
641
- msgid ""
642
- "Your license has expired, please extend the license to get updates and "
643
- "support."
644
- msgstr ""
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Social Slider Widget\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-11-08 05:43+0000\n"
6
+ "PO-Revision-Date: 2019-11-08 07:03+0000\n"
7
+ "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
+ "Language-Team: Русский\n"
9
+ "Language: ru_RU\n"
10
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
11
+ "n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.3.1; wp-5.2.4"
17
+
18
+ #: includes/class-wis_instagram_slider.php:283
19
+ msgid " Turn on to save Instagram Images into WordPress media library."
20
+ msgstr "Сохранять изображения в медиабиблиотеке Wordpress"
21
+
22
+ #: includes/class-wis_instagram_slider.php:450
23
+ msgid ""
24
+ "* use this field only if the above option is set to <strong>Custom "
25
+ "Link</strong>"
26
+ msgstr ""
27
+ "* используйте это поле только в том случае, если для параметра выше задано "
28
+ "значение <strong>Произвольная ссылка</strong>"
29
+
30
+ #: includes/class-wis_instagram_slider.php:94
31
+ msgid ""
32
+ "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
33
+ "Copy the shortocde generated at the bottom of the widget form and use it on "
34
+ "posts or pages."
35
+ msgstr ""
36
+ "1. Перетащите Social Slider Widget сюда. 2. Заполните поля и нажмите "
37
+ "Сохранить. 3. Скопируйте шорткод, созданный в нижней части формы виджета, и "
38
+ "используйте его в постах или страницах."
39
+
40
+ #: includes/class-wis_instagram_slider.php:394
41
+ msgid "1000 milliseconds = 1 second"
42
+ msgstr "1000 миллисекунд = 1 секунда"
43
+
44
+ #: admin/views/tab-license.php:134
45
+ #, php-format
46
+ msgid ""
47
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
48
+ "premium version and get the license key to activate it now!"
49
+ msgstr ""
50
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Узнайте больше</a> о "
51
+ "премиум версии и получите лицензионный ключ, чтобы активировать его сейчас!"
52
+
53
+ #: includes/class-wis_instagram_slider.php:422
54
+ msgid ""
55
+ "<strong>Square - Cropped</strong> - option will show square cropped images "
56
+ "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
57
+ "the original user uploaded image size."
58
+ msgstr ""
59
+
60
+ #: includes/class-wis_instagram_slider.php:42
61
+ msgid "A widget that displays a slider with instagram images "
62
+ msgstr "Виджет, который отображает слайдер с изображениями instagram"
63
+
64
+ #: admin/pages/about.php:44
65
+ msgid "About"
66
+ msgstr "О плагине"
67
+
68
+ #: admin/pages/about.php:43
69
+ msgid "About Social Slider Widget"
70
+ msgstr "Описание Social Slider Widget"
71
+
72
+ #: includes/class-wis_instagram_slider.php:1552
73
+ msgid "Account deleted successfully"
74
+ msgstr ""
75
+
76
+ #: includes/class-wis_instagram_slider.php:1131
77
+ msgid ""
78
+ "Account not found or for this account there are restrictions on Instagram by "
79
+ "age"
80
+ msgstr ""
81
+ "Аккаунт не найден или для этого аккаунта действуют возрастные ограничения"
82
+
83
+ #: includes/class-wis_instagram_slider.php:250
84
+ msgid "Account:"
85
+ msgstr "Аккаунт:"
86
+
87
+ #: admin/views/tab-settings.php:51
88
+ msgid "Action"
89
+ msgstr "Действия"
90
+
91
+ #: admin/views/tab-license.php:11
92
+ #, php-format
93
+ msgid "Activate %s"
94
+ msgstr ""
95
+
96
+ #: admin/views/tab-license.php:84
97
+ msgid "active sites"
98
+ msgstr ""
99
+
100
+ #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
101
+ msgid "Add Account"
102
+ msgstr "Добавить аккаунт"
103
+
104
+ #: includes/class-wis_instagram_slider.php:267
105
+ msgid "Add account in settings"
106
+ msgstr "Добавить аккаунт в настройках"
107
+
108
+ #: includes/class-wis-plugin.php:127
109
+ msgid "Are you sure want to delete this account?"
110
+ msgstr "Вы уверена, что хотите удалить этот аккаунт?"
111
+
112
+ #: includes/class-wis_instagram_slider.php:441
113
+ msgid "Attachment Page"
114
+ msgstr ""
115
+
116
+ #: admin/views/tab-about.php:149
117
+ msgid "BENEFITS"
118
+ msgstr ""
119
+
120
+ #: includes/class-wis_instagram_slider.php:275
121
+ msgid "Block Users"
122
+ msgstr "Заблокированные пользователи"
123
+
124
+ #: admin/views/tab-license.php:138
125
+ #, php-format
126
+ msgid ""
127
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
128
+ "this page</a> and login using the e-mail address associated with your "
129
+ "purchase."
130
+ msgstr ""
131
+
132
+ #: includes/class-wis_instagram_slider.php:400
133
+ msgid "Caption"
134
+ msgstr "Заголовок"
135
+
136
+ #: includes/class-wis_instagram_slider.php:305
137
+ msgid "Check for new images every:"
138
+ msgstr "Проверять новые изображения каждые:"
139
+
140
+ #: includes/class-wis_instagram_slider.php:293
141
+ msgid "Count of images to show:"
142
+ msgstr "Кол-во изображений для показа:"
143
+
144
+ #. Author of the plugin
145
+ msgid "creativemotion"
146
+ msgstr "creativemotion"
147
+
148
+ #: includes/class-wis_instagram_slider.php:442
149
+ msgid "Custom Link"
150
+ msgstr "Произвольная ссылка"
151
+
152
+ #: includes/class-wis_instagram_slider.php:448
153
+ msgid "Custom link:"
154
+ msgstr "Произвольная ссылка:"
155
+
156
+ #: includes/class-wis_instagram_slider.php:427
157
+ msgid "Date - Ascending"
158
+ msgstr "Дата - по возрастанию"
159
+
160
+ #: includes/class-wis_instagram_slider.php:428
161
+ msgid "Date - Descending"
162
+ msgstr "Дата - по убыванию"
163
+
164
+ #: admin/views/tab-license.php:105
165
+ msgid "day(s)"
166
+ msgstr ""
167
+
168
+ #: admin/views/tab-settings.php:72
169
+ msgid "Delete"
170
+ msgstr ""
171
+
172
+ #: admin/views/tab-license.php:31
173
+ msgid "Delete Key"
174
+ msgstr ""
175
+
176
+ #: admin/views/tab-about.php:123
177
+ msgid ""
178
+ "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
179
+ "shortcodes."
180
+ msgstr ""
181
+
182
+ #: admin/views/tab-license.php:72
183
+ msgid "domain"
184
+ msgstr ""
185
+
186
+ #: includes/class-wis_instagram_slider.php:384
187
+ msgid "Dotted"
188
+ msgstr ""
189
+
190
+ #: includes/class-wis_instagram_slider.php:277
191
+ msgid "Enter usernames separated by commas whose images you don't want to show"
192
+ msgstr ""
193
+ "Введите имена пользователей, разделенные запятыми, изображения которых вы не "
194
+ "хотите показывать"
195
+
196
+ #: admin/views/tab-license.php:94
197
+ msgid "EXPIRED!"
198
+ msgstr ""
199
+
200
+ #: includes/class-wis_instagram_slider.php:389
201
+ msgid "Fade"
202
+ msgstr ""
203
+
204
+ #: admin/views/tab-about.php:128
205
+ msgid "FEATURES"
206
+ msgstr ""
207
+
208
+ #: admin/views/tab-about.php:200
209
+ msgid "FEEDBACK AND SUPPORT"
210
+ msgstr ""
211
+
212
+ #: includes/class-wis_instagram_slider.php:420
213
+ msgid "Full Size"
214
+ msgstr ""
215
+
216
+ #: admin/pages/settings.php:148
217
+ msgid "General"
218
+ msgstr ""
219
+
220
+ #: includes/class-wis_instagram_slider.php:272
221
+ msgid "Hashtag:"
222
+ msgstr "Хэштэг:"
223
+
224
+ #: admin/views/tab-license.php:120
225
+ msgid "Have a key to activate the plugin? Paste it here:"
226
+ msgstr ""
227
+
228
+ #: admin/views/tab-license.php:118
229
+ msgid "Have a key to activate the premium version? Paste it here:"
230
+ msgstr ""
231
+
232
+ #: includes/class-wis_instagram_slider.php:402
233
+ msgid ""
234
+ "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
235
+ "all unselected to hide them all. Default all selected."
236
+ msgstr ""
237
+
238
+ #: includes/class-wis_instagram_slider.php:307
239
+ msgid "hours"
240
+ msgstr "часов"
241
+
242
+ #. Author URI of the plugin
243
+ msgid "https://cm-wp.com/"
244
+ msgstr ""
245
+
246
+ #. URI of the plugin
247
+ msgid "https://cm-wp.com/instagram-slider-widget"
248
+ msgstr ""
249
+
250
+ #: admin/views/tab-settings.php:47
251
+ msgid "ID"
252
+ msgstr ""
253
+
254
+ #: admin/views/tab-settings.php:46
255
+ msgid "Image"
256
+ msgstr "Аватар"
257
+
258
+ #: includes/class-wis_instagram_slider.php:415
259
+ msgid "Image format"
260
+ msgstr "Формат изображения"
261
+
262
+ #: includes/class-wis_instagram_slider.php:440
263
+ msgid "Image URL"
264
+ msgstr "Ссылка на изображение"
265
+
266
+ #: includes/class-wis_instagram_slider.php:354
267
+ msgid "Image width:"
268
+ msgstr "Ширина изображения:"
269
+
270
+ #: admin/pages/settings.php:158
271
+ msgid "Instagram account"
272
+ msgstr ""
273
+
274
+ #: includes/class-wis_instagram_slider.php:438
275
+ msgid "Instagram Image"
276
+ msgstr "Страница поста"
277
+
278
+ #: admin/pages/settings.php:166
279
+ msgid "Instagram password"
280
+ msgstr ""
281
+
282
+ #: includes/class-wis_instagram_slider.php:439
283
+ msgid "Instagram Profile"
284
+ msgstr "Страница Инстаграм"
285
+
286
+ #: includes/class-wis_instagram_slider.php:1161
287
+ msgid ""
288
+ "Instagram requires authorization to view a user profile. Use autorized "
289
+ "account in widget settings"
290
+ msgstr ""
291
+
292
+ #: admin/pages/license.php:90
293
+ msgid "License"
294
+ msgstr ""
295
+
296
+ #: admin/ajax/check-license.php:39
297
+ msgid ""
298
+ "License key is empty or license key too long (license key is 32 characters "
299
+ "long)"
300
+ msgstr ""
301
+
302
+ #: admin/pages/license.php:91
303
+ msgid "License of Social Slider Widget"
304
+ msgstr ""
305
+
306
+ #: admin/ajax/check-license.php:27
307
+ msgid "Licensing action not passed or this action is prohibited!"
308
+ msgstr ""
309
+
310
+ #: includes/class-wis_instagram_slider.php:436
311
+ msgid "Link to"
312
+ msgstr "Ссылка на:"
313
+
314
+ #: includes/class-wis_instagram_slider.php:418
315
+ msgid "Low - 320x320"
316
+ msgstr ""
317
+
318
+ #: includes/class-wis_instagram_slider.php:345
319
+ msgid "max is 10 ( only for thumbnails template )"
320
+ msgstr "максимум 10 (только для шаблона thumbnails)"
321
+
322
+ #: includes/class-wis_instagram_slider.php:297
323
+ msgid "Maximum 20 images in free version."
324
+ msgstr "Максимум 20 изображений в бесплатной версии"
325
+
326
+ #: includes/class-wis_instagram_slider.php:393
327
+ msgid "milliseconds"
328
+ msgstr "миллисекунд"
329
+
330
+ #: admin/views/tab-settings.php:33
331
+ #, php-format
332
+ msgid "More accounts in <a href='%s'>PRO version</a>"
333
+ msgstr "Больше аккаунтов в <a href='%s'>PRO версии</a>"
334
+
335
+ #: includes/class-wis_instagram_slider.php:298
336
+ #, php-format
337
+ msgid "More in <a href='%s'>PRO version</a>"
338
+ msgstr "Больше в <a href='%s'>PRO версии</a>"
339
+
340
+ #: admin/views/tab-settings.php:49
341
+ msgid "Name"
342
+ msgstr "Имя"
343
+
344
+ #: includes/class-wis_instagram_slider.php:1214
345
+ msgid "No images found"
346
+ msgstr ""
347
+
348
+ #: includes/class-wis_instagram_slider.php:688
349
+ msgid "No images found! <br> Try some other hashtag or username"
350
+ msgstr ""
351
+
352
+ #: includes/class-wis_instagram_slider.php:385
353
+ msgid "No Navigation"
354
+ msgstr ""
355
+
356
+ #: includes/class-wis_instagram_slider.php:443
357
+ msgid "None"
358
+ msgstr ""
359
+
360
+ #: includes/class-wis_instagram_slider.php:1100
361
+ msgid "Nothing to search for"
362
+ msgstr ""
363
+
364
+ #: includes/class-wis_instagram_slider.php:343
365
+ msgid "Number of Columns:"
366
+ msgstr "Кол-во колонок:"
367
+
368
+ #: includes/class-wis_instagram_slider.php:410
369
+ msgid "Number of words in caption:"
370
+ msgstr "Кол-во слов в тексте:"
371
+
372
+ #: admin/views/tab-license.php:82
373
+ msgid "of"
374
+ msgstr ""
375
+
376
+ #: includes/class-wis_instagram_slider.php:372
377
+ msgid "Offset"
378
+ msgstr ""
379
+
380
+ #: includes/class-wis_instagram_slider.php:425
381
+ msgid "Order by"
382
+ msgstr "Сортировка"
383
+
384
+ #: admin/pages/settings.php:168
385
+ msgid "Password of your Instagram account"
386
+ msgstr ""
387
+
388
+ #: includes/class-wis_instagram_slider.php:376
389
+ msgid "Pattern"
390
+ msgstr ""
391
+
392
+ #: includes/class-wis_instagram_slider.php:362
393
+ msgid "pictures"
394
+ msgstr "изображений"
395
+
396
+ #: includes/class-wis_instagram_slider.php:360
397
+ msgid "Pictures per slide:"
398
+ msgstr "Изображений на слайд:"
399
+
400
+ #: admin/views/tab-license.php:76
401
+ msgid "plan"
402
+ msgstr ""
403
+
404
+ #: admin/views/tab-license.php:95
405
+ msgid "please update the key"
406
+ msgstr ""
407
+
408
+ #: includes/class-wis_instagram_slider.php:429
409
+ msgid "Popularity - Ascending"
410
+ msgstr "Популярность - по возрастанию"
411
+
412
+ #: includes/class-wis_instagram_slider.php:430
413
+ msgid "Popularity - Descending"
414
+ msgstr "Популярность - по убыванию"
415
+
416
+ #: includes/class-wis_instagram_slider.php:383
417
+ msgid "Prev & Next"
418
+ msgstr ""
419
+
420
+ #: admin/views/tab-about.php:163
421
+ msgid "PRO VERSION"
422
+ msgstr ""
423
+
424
+ #: admin/views/tab-license.php:54
425
+ msgid ""
426
+ "Public License is a GPLv2 compatible license allowing you to change and use "
427
+ "this version of the plugin for free. Please keep in mind this license covers "
428
+ "only free edition of the plugin. Premium versions are distributed with other "
429
+ "type of a license."
430
+ msgstr ""
431
+
432
+ #: includes/class-wis_instagram_slider.php:351
433
+ #: includes/class-wis_instagram_slider.php:356
434
+ msgid "px"
435
+ msgstr ""
436
+
437
+ #: includes/class-wis_instagram_slider.php:431
438
+ msgid "Random"
439
+ msgstr "Рандом"
440
+
441
+ #: admin/views/tab-license.php:107
442
+ msgid "remained"
443
+ msgstr ""
444
+
445
+ #: includes/class-wis_instagram_slider.php:279
446
+ msgid "Save in Media Library: "
447
+ msgstr "Сохранять в медиабиблиотеке:"
448
+
449
+ #: includes/class-wis_instagram_slider.php:246
450
+ msgid "Search Instagram for:"
451
+ msgstr "Искать в Instagram по:"
452
+
453
+ #: admin/pages/settings.php:108
454
+ msgid "Settings"
455
+ msgstr "Настройки"
456
+
457
+ #: admin/pages/settings.php:107
458
+ msgid "Settings of Social Slider Widget"
459
+ msgstr "Настройки Social Slider Widget"
460
+
461
+ #: includes/class-wis_instagram_slider.php:486
462
+ msgid "Shortcode of this Widget:"
463
+ msgstr "Шорткод виджета:"
464
+
465
+ #: includes/class-wis_instagram_slider.php:311
466
+ msgid "Show feed header:"
467
+ msgstr "Отображать шапку:"
468
+
469
+ #: includes/class-wis_instagram_slider.php:388
470
+ msgid "Slide"
471
+ msgstr ""
472
+
473
+ #: includes/class-wis_instagram_slider.php:391
474
+ msgid "Slide Speed:"
475
+ msgstr ""
476
+
477
+ #: includes/class-wis_instagram_slider.php:387
478
+ msgid "Slider Animation:"
479
+ msgstr ""
480
+
481
+ #: includes/class-wis_instagram_slider.php:382
482
+ msgid "Slider Navigation Controls:"
483
+ msgstr ""
484
+
485
+ #: includes/class-wis_instagram_slider.php:396
486
+ msgid "Slider Text Description:"
487
+ msgstr ""
488
+
489
+ #: includes/class-wis_instagram_slider.php:40
490
+ #: includes/class-wis_instagram_slider.php:204
491
+ msgid "Social Slider"
492
+ msgstr ""
493
+
494
+ #: includes/class-wis_instagram_slider.php:92
495
+ msgid "Social Slider - Shortcode Generator"
496
+ msgstr ""
497
+
498
+ #. Name of the plugin
499
+ #: instaram_slider.php:26 admin/views/tab-about.php:122
500
+ msgid "Social Slider Widget"
501
+ msgstr ""
502
+
503
+ #. Description of the plugin
504
+ msgid ""
505
+ "Social Slider Widget is a responsive slider widget that shows 12 latest "
506
+ "images from a public Instagram user and up to 18 images from a hashtag."
507
+ msgstr ""
508
+
509
+ #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
510
+ msgid "Social Slider Widgets"
511
+ msgstr ""
512
+
513
+ #: includes/class-wis_instagram_slider.php:365
514
+ msgid "Space between pictures:"
515
+ msgstr "Расстояние между изображениями:"
516
+
517
+ #: includes/class-wis_instagram_slider.php:419
518
+ msgid "Standard - 640x640"
519
+ msgstr ""
520
+
521
+ #: admin/views/tab-license.php:126
522
+ msgid "Submit Key"
523
+ msgstr ""
524
+
525
+ #: admin/ajax/check-license.php:55
526
+ msgid "Subscription success cancelled"
527
+ msgstr ""
528
+
529
+ #: admin/views/tab-license.php:35
530
+ msgid "Synchronization"
531
+ msgstr ""
532
+
533
+ #: includes/class-wis_instagram_slider.php:318
534
+ msgid "Template"
535
+ msgstr "Шаблон"
536
+
537
+ #: admin/ajax/check-license.php:51
538
+ msgid "The license has been updated"
539
+ msgstr ""
540
+
541
+ #: admin/ajax/check-license.php:47
542
+ msgid "The license is deactivated"
543
+ msgstr ""
544
+
545
+ #: includes/class-wis_instagram_slider.php:1182
546
+ msgid "There are no publications in this account yet"
547
+ msgstr ""
548
+
549
+ #: includes/class-wis_instagram_slider.php:417
550
+ msgid "Thumbnail - 150x150"
551
+ msgstr ""
552
+
553
+ #: includes/class-wis_instagram_slider.php:399
554
+ msgid "Time"
555
+ msgstr ""
556
+
557
+ #: includes/class-wis_instagram_slider.php:242
558
+ msgid "Title:"
559
+ msgstr "Заголовок:"
560
+
561
+ #: admin/views/tab-settings.php:50
562
+ msgid "Token"
563
+ msgstr "Токен"
564
+
565
+ #: admin/views/tab-license.php:22
566
+ #, php-format
567
+ msgid "Upgrade to Premium for $%s"
568
+ msgstr ""
569
+
570
+ #: includes/class-wis_instagram_slider.php:488
571
+ msgid ""
572
+ "Use this shortcode in any page or post to display images with this widget "
573
+ "configuration!"
574
+ msgstr ""
575
+ "Используйте этот шорткод на любой странице или посте для отображения "
576
+ "изображений с этой конфигурацией виджета."
577
+
578
+ #: admin/views/tab-settings.php:48
579
+ msgid "User"
580
+ msgstr "Аккаунт"
581
+
582
+ #: includes/class-wis_instagram_slider.php:398
583
+ msgid "Username"
584
+ msgstr ""
585
+
586
+ #: admin/pages/settings.php:160
587
+ msgid "Username of your Instagram account"
588
+ msgstr ""
589
+
590
+ #: includes/class-wis_instagram_slider.php:271
591
+ msgid "Username:"
592
+ msgstr "Имя аккаунта:"
593
+
594
+ #: admin/views/tab-license.php:89
595
+ msgid "version"
596
+ msgstr ""
597
+
598
+ #: includes/class-wis_instagram_slider.php:349
599
+ msgid "Vertical space between item elements:"
600
+ msgstr "Вертикальное расстояние между элементами:"
601
+
602
+ #: admin/views/tab-about.php:209
603
+ msgid "WHY DO YOU NEED IT?"
604
+ msgstr ""
605
+
606
+ #: admin/pages/widgets.php:109
607
+ msgid "Widgets"
608
+ msgstr "Виджеты"
609
+
610
+ #: includes/class-wis_instagram_slider.php:272
611
+ msgid "without # sign"
612
+ msgstr "без #"
613
+
614
+ #: admin/views/tab-settings.php:21
615
+ msgid ""
616
+ "Without authorization Instagram limits the number of requests, and after "
617
+ "exceeding the limit asks to log in, so an error is displayed that no images "
618
+ "were found."
619
+ msgstr ""
620
+ "Без авторизации Instagram ограничивает количество запросов, а после "
621
+ "превышения лимита просит войти в систему, поэтому выводится сообщение, что "
622
+ "изображения не найдены."
623
+
624
+ #: admin/views/tab-license.php:58
625
+ msgid ""
626
+ "You use a paid subscription for the plugin updates. In case you don’t want "
627
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
628
+ "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
629
+ msgstr ""
630
+
631
+ #: admin/views/tab-license.php:25
632
+ #, php-format
633
+ msgid "Your current license for %1$s:"
634
+ msgstr ""
635
+
636
+ #: admin/ajax/check-license.php:42
637
+ msgid "Your license has been successfully activated"
638
+ msgstr ""
639
+
640
+ #: admin/views/tab-license.php:64
641
+ msgid ""
642
+ "Your license has expired, please extend the license to get updates and "
643
+ "support."
644
+ msgstr ""
languages/instagram-slider-widget.pot CHANGED
@@ -1,629 +1,629 @@
1
- #, fuzzy
2
- msgid ""
3
- msgstr ""
4
- "Project-Id-Version: Social Slider Widget\n"
5
- "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2019-11-08 05:43+0000\n"
7
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
- "Language-Team: \n"
10
- "Language: \n"
11
- "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
12
- "MIME-Version: 1.0\n"
13
- "Content-Type: text/plain; charset=UTF-8\n"
14
- "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Loco https://localise.biz/\n"
16
- "X-Loco-Version: 2.3.1; wp-5.2.4"
17
-
18
- #: includes/class-wis_instagram_slider.php:283
19
- msgid " Turn on to save Instagram Images into WordPress media library."
20
- msgstr ""
21
-
22
- #: includes/class-wis_instagram_slider.php:450
23
- msgid ""
24
- "* use this field only if the above option is set to <strong>Custom "
25
- "Link</strong>"
26
- msgstr ""
27
-
28
- #: includes/class-wis_instagram_slider.php:94
29
- msgid ""
30
- "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
31
- "Copy the shortocde generated at the bottom of the widget form and use it on "
32
- "posts or pages."
33
- msgstr ""
34
-
35
- #: includes/class-wis_instagram_slider.php:394
36
- msgid "1000 milliseconds = 1 second"
37
- msgstr ""
38
-
39
- #: admin/views/tab-license.php:134
40
- #, php-format
41
- msgid ""
42
- "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
43
- "premium version and get the license key to activate it now!"
44
- msgstr ""
45
-
46
- #: includes/class-wis_instagram_slider.php:422
47
- msgid ""
48
- "<strong>Square - Cropped</strong> - option will show square cropped images "
49
- "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
50
- "the original user uploaded image size."
51
- msgstr ""
52
-
53
- #: includes/class-wis_instagram_slider.php:42
54
- msgid "A widget that displays a slider with instagram images "
55
- msgstr ""
56
-
57
- #: admin/pages/about.php:44
58
- msgid "About"
59
- msgstr ""
60
-
61
- #: admin/pages/about.php:43
62
- msgid "About Social Slider Widget"
63
- msgstr ""
64
-
65
- #: includes/class-wis_instagram_slider.php:1552
66
- msgid "Account deleted successfully"
67
- msgstr ""
68
-
69
- #: includes/class-wis_instagram_slider.php:1131
70
- msgid ""
71
- "Account not found or for this account there are restrictions on Instagram by "
72
- "age"
73
- msgstr ""
74
-
75
- #: includes/class-wis_instagram_slider.php:250
76
- msgid "Account:"
77
- msgstr ""
78
-
79
- #: admin/views/tab-settings.php:51
80
- msgid "Action"
81
- msgstr ""
82
-
83
- #: admin/views/tab-license.php:11
84
- #, php-format
85
- msgid "Activate %s"
86
- msgstr ""
87
-
88
- #: admin/views/tab-license.php:84
89
- msgid "active sites"
90
- msgstr ""
91
-
92
- #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
93
- msgid "Add Account"
94
- msgstr ""
95
-
96
- #: includes/class-wis_instagram_slider.php:267
97
- msgid "Add account in settings"
98
- msgstr ""
99
-
100
- #: includes/class-wis-plugin.php:127
101
- msgid "Are you sure want to delete this account?"
102
- msgstr ""
103
-
104
- #: includes/class-wis_instagram_slider.php:441
105
- msgid "Attachment Page"
106
- msgstr ""
107
-
108
- #: admin/views/tab-about.php:149
109
- msgid "BENEFITS"
110
- msgstr ""
111
-
112
- #: includes/class-wis_instagram_slider.php:275
113
- msgid "Block Users"
114
- msgstr ""
115
-
116
- #: admin/views/tab-license.php:138
117
- #, php-format
118
- msgid ""
119
- "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
120
- "this page</a> and login using the e-mail address associated with your "
121
- "purchase."
122
- msgstr ""
123
-
124
- #: includes/class-wis_instagram_slider.php:400
125
- msgid "Caption"
126
- msgstr ""
127
-
128
- #: includes/class-wis_instagram_slider.php:305
129
- msgid "Check for new images every:"
130
- msgstr ""
131
-
132
- #: includes/class-wis_instagram_slider.php:293
133
- msgid "Count of images to show:"
134
- msgstr ""
135
-
136
- #. Author of the plugin
137
- msgid "creativemotion"
138
- msgstr ""
139
-
140
- #: includes/class-wis_instagram_slider.php:442
141
- msgid "Custom Link"
142
- msgstr ""
143
-
144
- #: includes/class-wis_instagram_slider.php:448
145
- msgid "Custom link:"
146
- msgstr ""
147
-
148
- #: includes/class-wis_instagram_slider.php:427
149
- msgid "Date - Ascending"
150
- msgstr ""
151
-
152
- #: includes/class-wis_instagram_slider.php:428
153
- msgid "Date - Descending"
154
- msgstr ""
155
-
156
- #: admin/views/tab-license.php:105
157
- msgid "day(s)"
158
- msgstr ""
159
-
160
- #: admin/views/tab-settings.php:72
161
- msgid "Delete"
162
- msgstr ""
163
-
164
- #: admin/views/tab-license.php:31
165
- msgid "Delete Key"
166
- msgstr ""
167
-
168
- #: admin/views/tab-about.php:123
169
- msgid ""
170
- "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
171
- "shortcodes."
172
- msgstr ""
173
-
174
- #: admin/views/tab-license.php:72
175
- msgid "domain"
176
- msgstr ""
177
-
178
- #: includes/class-wis_instagram_slider.php:384
179
- msgid "Dotted"
180
- msgstr ""
181
-
182
- #: includes/class-wis_instagram_slider.php:277
183
- msgid "Enter usernames separated by commas whose images you don't want to show"
184
- msgstr ""
185
-
186
- #: admin/views/tab-license.php:94
187
- msgid "EXPIRED!"
188
- msgstr ""
189
-
190
- #: includes/class-wis_instagram_slider.php:389
191
- msgid "Fade"
192
- msgstr ""
193
-
194
- #: admin/views/tab-about.php:128
195
- msgid "FEATURES"
196
- msgstr ""
197
-
198
- #: admin/views/tab-about.php:200
199
- msgid "FEEDBACK AND SUPPORT"
200
- msgstr ""
201
-
202
- #: includes/class-wis_instagram_slider.php:420
203
- msgid "Full Size"
204
- msgstr ""
205
-
206
- #: admin/pages/settings.php:148
207
- msgid "General"
208
- msgstr ""
209
-
210
- #: includes/class-wis_instagram_slider.php:272
211
- msgid "Hashtag:"
212
- msgstr ""
213
-
214
- #: admin/views/tab-license.php:120
215
- msgid "Have a key to activate the plugin? Paste it here:"
216
- msgstr ""
217
-
218
- #: admin/views/tab-license.php:118
219
- msgid "Have a key to activate the premium version? Paste it here:"
220
- msgstr ""
221
-
222
- #: includes/class-wis_instagram_slider.php:402
223
- msgid ""
224
- "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
225
- "all unselected to hide them all. Default all selected."
226
- msgstr ""
227
-
228
- #: includes/class-wis_instagram_slider.php:307
229
- msgid "hours"
230
- msgstr ""
231
-
232
- #. Author URI of the plugin
233
- msgid "https://cm-wp.com/"
234
- msgstr ""
235
-
236
- #. URI of the plugin
237
- msgid "https://cm-wp.com/instagram-slider-widget"
238
- msgstr ""
239
-
240
- #: admin/views/tab-settings.php:47
241
- msgid "ID"
242
- msgstr ""
243
-
244
- #: admin/views/tab-settings.php:46
245
- msgid "Image"
246
- msgstr ""
247
-
248
- #: includes/class-wis_instagram_slider.php:415
249
- msgid "Image format"
250
- msgstr ""
251
-
252
- #: includes/class-wis_instagram_slider.php:440
253
- msgid "Image URL"
254
- msgstr ""
255
-
256
- #: includes/class-wis_instagram_slider.php:354
257
- msgid "Image width:"
258
- msgstr ""
259
-
260
- #: admin/pages/settings.php:158
261
- msgid "Instagram account"
262
- msgstr ""
263
-
264
- #: includes/class-wis_instagram_slider.php:438
265
- msgid "Instagram Image"
266
- msgstr ""
267
-
268
- #: admin/pages/settings.php:166
269
- msgid "Instagram password"
270
- msgstr ""
271
-
272
- #: includes/class-wis_instagram_slider.php:439
273
- msgid "Instagram Profile"
274
- msgstr ""
275
-
276
- #: includes/class-wis_instagram_slider.php:1161
277
- msgid ""
278
- "Instagram requires authorization to view a user profile. Use autorized "
279
- "account in widget settings"
280
- msgstr ""
281
-
282
- #: admin/pages/license.php:90
283
- msgid "License"
284
- msgstr ""
285
-
286
- #: admin/ajax/check-license.php:39
287
- msgid ""
288
- "License key is empty or license key too long (license key is 32 characters "
289
- "long)"
290
- msgstr ""
291
-
292
- #: admin/pages/license.php:91
293
- msgid "License of Social Slider Widget"
294
- msgstr ""
295
-
296
- #: admin/ajax/check-license.php:27
297
- msgid "Licensing action not passed or this action is prohibited!"
298
- msgstr ""
299
-
300
- #: includes/class-wis_instagram_slider.php:436
301
- msgid "Link to"
302
- msgstr ""
303
-
304
- #: includes/class-wis_instagram_slider.php:418
305
- msgid "Low - 320x320"
306
- msgstr ""
307
-
308
- #: includes/class-wis_instagram_slider.php:345
309
- msgid "max is 10 ( only for thumbnails template )"
310
- msgstr ""
311
-
312
- #: includes/class-wis_instagram_slider.php:297
313
- msgid "Maximum 20 images in free version."
314
- msgstr ""
315
-
316
- #: includes/class-wis_instagram_slider.php:393
317
- msgid "milliseconds"
318
- msgstr ""
319
-
320
- #: admin/views/tab-settings.php:33
321
- #, php-format
322
- msgid "More accounts in <a href='%s'>PRO version</a>"
323
- msgstr ""
324
-
325
- #: includes/class-wis_instagram_slider.php:298
326
- #, php-format
327
- msgid "More in <a href='%s'>PRO version</a>"
328
- msgstr ""
329
-
330
- #: admin/views/tab-settings.php:49
331
- msgid "Name"
332
- msgstr ""
333
-
334
- #: includes/class-wis_instagram_slider.php:1214
335
- msgid "No images found"
336
- msgstr ""
337
-
338
- #: includes/class-wis_instagram_slider.php:688
339
- msgid "No images found! <br> Try some other hashtag or username"
340
- msgstr ""
341
-
342
- #: includes/class-wis_instagram_slider.php:385
343
- msgid "No Navigation"
344
- msgstr ""
345
-
346
- #: includes/class-wis_instagram_slider.php:443
347
- msgid "None"
348
- msgstr ""
349
-
350
- #: includes/class-wis_instagram_slider.php:1100
351
- msgid "Nothing to search for"
352
- msgstr ""
353
-
354
- #: includes/class-wis_instagram_slider.php:343
355
- msgid "Number of Columns:"
356
- msgstr ""
357
-
358
- #: includes/class-wis_instagram_slider.php:410
359
- msgid "Number of words in caption:"
360
- msgstr ""
361
-
362
- #: admin/views/tab-license.php:82
363
- msgid "of"
364
- msgstr ""
365
-
366
- #: includes/class-wis_instagram_slider.php:372
367
- msgid "Offset"
368
- msgstr ""
369
-
370
- #: includes/class-wis_instagram_slider.php:425
371
- msgid "Order by"
372
- msgstr ""
373
-
374
- #: admin/pages/settings.php:168
375
- msgid "Password of your Instagram account"
376
- msgstr ""
377
-
378
- #: includes/class-wis_instagram_slider.php:376
379
- msgid "Pattern"
380
- msgstr ""
381
-
382
- #: includes/class-wis_instagram_slider.php:362
383
- msgid "pictures"
384
- msgstr ""
385
-
386
- #: includes/class-wis_instagram_slider.php:360
387
- msgid "Pictures per slide:"
388
- msgstr ""
389
-
390
- #: admin/views/tab-license.php:76
391
- msgid "plan"
392
- msgstr ""
393
-
394
- #: admin/views/tab-license.php:95
395
- msgid "please update the key"
396
- msgstr ""
397
-
398
- #: includes/class-wis_instagram_slider.php:429
399
- msgid "Popularity - Ascending"
400
- msgstr ""
401
-
402
- #: includes/class-wis_instagram_slider.php:430
403
- msgid "Popularity - Descending"
404
- msgstr ""
405
-
406
- #: includes/class-wis_instagram_slider.php:383
407
- msgid "Prev & Next"
408
- msgstr ""
409
-
410
- #: admin/views/tab-about.php:163
411
- msgid "PRO VERSION"
412
- msgstr ""
413
-
414
- #: admin/views/tab-license.php:54
415
- msgid ""
416
- "Public License is a GPLv2 compatible license allowing you to change and use "
417
- "this version of the plugin for free. Please keep in mind this license covers "
418
- "only free edition of the plugin. Premium versions are distributed with other "
419
- "type of a license."
420
- msgstr ""
421
-
422
- #: includes/class-wis_instagram_slider.php:351
423
- #: includes/class-wis_instagram_slider.php:356
424
- msgid "px"
425
- msgstr ""
426
-
427
- #: includes/class-wis_instagram_slider.php:431
428
- msgid "Random"
429
- msgstr ""
430
-
431
- #: admin/views/tab-license.php:107
432
- msgid "remained"
433
- msgstr ""
434
-
435
- #: includes/class-wis_instagram_slider.php:279
436
- msgid "Save in Media Library: "
437
- msgstr ""
438
-
439
- #: includes/class-wis_instagram_slider.php:246
440
- msgid "Search Instagram for:"
441
- msgstr ""
442
-
443
- #: admin/pages/settings.php:108
444
- msgid "Settings"
445
- msgstr ""
446
-
447
- #: admin/pages/settings.php:107
448
- msgid "Settings of Social Slider Widget"
449
- msgstr ""
450
-
451
- #: includes/class-wis_instagram_slider.php:486
452
- msgid "Shortcode of this Widget:"
453
- msgstr ""
454
-
455
- #: includes/class-wis_instagram_slider.php:311
456
- msgid "Show feed header:"
457
- msgstr ""
458
-
459
- #: includes/class-wis_instagram_slider.php:388
460
- msgid "Slide"
461
- msgstr ""
462
-
463
- #: includes/class-wis_instagram_slider.php:391
464
- msgid "Slide Speed:"
465
- msgstr ""
466
-
467
- #: includes/class-wis_instagram_slider.php:387
468
- msgid "Slider Animation:"
469
- msgstr ""
470
-
471
- #: includes/class-wis_instagram_slider.php:382
472
- msgid "Slider Navigation Controls:"
473
- msgstr ""
474
-
475
- #: includes/class-wis_instagram_slider.php:396
476
- msgid "Slider Text Description:"
477
- msgstr ""
478
-
479
- #: includes/class-wis_instagram_slider.php:40
480
- #: includes/class-wis_instagram_slider.php:204
481
- msgid "Social Slider"
482
- msgstr ""
483
-
484
- #: includes/class-wis_instagram_slider.php:92
485
- msgid "Social Slider - Shortcode Generator"
486
- msgstr ""
487
-
488
- #. Name of the plugin
489
- #: instaram_slider.php:26 admin/views/tab-about.php:122
490
- msgid "Social Slider Widget"
491
- msgstr ""
492
-
493
- #. Description of the plugin
494
- msgid ""
495
- "Social Slider Widget is a responsive slider widget that shows 12 latest "
496
- "images from a public Instagram user and up to 18 images from a hashtag."
497
- msgstr ""
498
-
499
- #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
500
- msgid "Social Slider Widgets"
501
- msgstr ""
502
-
503
- #: includes/class-wis_instagram_slider.php:365
504
- msgid "Space between pictures:"
505
- msgstr ""
506
-
507
- #: includes/class-wis_instagram_slider.php:419
508
- msgid "Standard - 640x640"
509
- msgstr ""
510
-
511
- #: admin/views/tab-license.php:126
512
- msgid "Submit Key"
513
- msgstr ""
514
-
515
- #: admin/ajax/check-license.php:55
516
- msgid "Subscription success cancelled"
517
- msgstr ""
518
-
519
- #: admin/views/tab-license.php:35
520
- msgid "Synchronization"
521
- msgstr ""
522
-
523
- #: includes/class-wis_instagram_slider.php:318
524
- msgid "Template"
525
- msgstr ""
526
-
527
- #: admin/ajax/check-license.php:51
528
- msgid "The license has been updated"
529
- msgstr ""
530
-
531
- #: admin/ajax/check-license.php:47
532
- msgid "The license is deactivated"
533
- msgstr ""
534
-
535
- #: includes/class-wis_instagram_slider.php:1182
536
- msgid "There are no publications in this account yet"
537
- msgstr ""
538
-
539
- #: includes/class-wis_instagram_slider.php:417
540
- msgid "Thumbnail - 150x150"
541
- msgstr ""
542
-
543
- #: includes/class-wis_instagram_slider.php:399
544
- msgid "Time"
545
- msgstr ""
546
-
547
- #: includes/class-wis_instagram_slider.php:242
548
- msgid "Title:"
549
- msgstr ""
550
-
551
- #: admin/views/tab-settings.php:50
552
- msgid "Token"
553
- msgstr ""
554
-
555
- #: admin/views/tab-license.php:22
556
- #, php-format
557
- msgid "Upgrade to Premium for $%s"
558
- msgstr ""
559
-
560
- #: includes/class-wis_instagram_slider.php:488
561
- msgid ""
562
- "Use this shortcode in any page or post to display images with this widget "
563
- "configuration!"
564
- msgstr ""
565
-
566
- #: admin/views/tab-settings.php:48
567
- msgid "User"
568
- msgstr ""
569
-
570
- #: includes/class-wis_instagram_slider.php:398
571
- msgid "Username"
572
- msgstr ""
573
-
574
- #: admin/pages/settings.php:160
575
- msgid "Username of your Instagram account"
576
- msgstr ""
577
-
578
- #: includes/class-wis_instagram_slider.php:271
579
- msgid "Username:"
580
- msgstr ""
581
-
582
- #: admin/views/tab-license.php:89
583
- msgid "version"
584
- msgstr ""
585
-
586
- #: includes/class-wis_instagram_slider.php:349
587
- msgid "Vertical space between item elements:"
588
- msgstr ""
589
-
590
- #: admin/views/tab-about.php:209
591
- msgid "WHY DO YOU NEED IT?"
592
- msgstr ""
593
-
594
- #: admin/pages/widgets.php:109
595
- msgid "Widgets"
596
- msgstr ""
597
-
598
- #: includes/class-wis_instagram_slider.php:272
599
- msgid "without # sign"
600
- msgstr ""
601
-
602
- #: admin/views/tab-settings.php:21
603
- msgid ""
604
- "Without authorization Instagram limits the number of requests, and after "
605
- "exceeding the limit asks to log in, so an error is displayed that no images "
606
- "were found."
607
- msgstr ""
608
-
609
- #: admin/views/tab-license.php:58
610
- msgid ""
611
- "You use a paid subscription for the plugin updates. In case you don’t want "
612
- "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
613
- "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
614
- msgstr ""
615
-
616
- #: admin/views/tab-license.php:25
617
- #, php-format
618
- msgid "Your current license for %1$s:"
619
- msgstr ""
620
-
621
- #: admin/ajax/check-license.php:42
622
- msgid "Your license has been successfully activated"
623
- msgstr ""
624
-
625
- #: admin/views/tab-license.php:64
626
- msgid ""
627
- "Your license has expired, please extend the license to get updates and "
628
- "support."
629
- msgstr ""
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Project-Id-Version: Social Slider Widget\n"
5
+ "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2019-11-08 05:43+0000\n"
7
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
+ "Language-Team: \n"
10
+ "Language: \n"
11
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.3.1; wp-5.2.4"
17
+
18
+ #: includes/class-wis_instagram_slider.php:283
19
+ msgid " Turn on to save Instagram Images into WordPress media library."
20
+ msgstr ""
21
+
22
+ #: includes/class-wis_instagram_slider.php:450
23
+ msgid ""
24
+ "* use this field only if the above option is set to <strong>Custom "
25
+ "Link</strong>"
26
+ msgstr ""
27
+
28
+ #: includes/class-wis_instagram_slider.php:94
29
+ msgid ""
30
+ "1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
31
+ "Copy the shortocde generated at the bottom of the widget form and use it on "
32
+ "posts or pages."
33
+ msgstr ""
34
+
35
+ #: includes/class-wis_instagram_slider.php:394
36
+ msgid "1000 milliseconds = 1 second"
37
+ msgstr ""
38
+
39
+ #: admin/views/tab-license.php:134
40
+ #, php-format
41
+ msgid ""
42
+ "<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
43
+ "premium version and get the license key to activate it now!"
44
+ msgstr ""
45
+
46
+ #: includes/class-wis_instagram_slider.php:422
47
+ msgid ""
48
+ "<strong>Square - Cropped</strong> - option will show square cropped images "
49
+ "in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
50
+ "the original user uploaded image size."
51
+ msgstr ""
52
+
53
+ #: includes/class-wis_instagram_slider.php:42
54
+ msgid "A widget that displays a slider with instagram images "
55
+ msgstr ""
56
+
57
+ #: admin/pages/about.php:44
58
+ msgid "About"
59
+ msgstr ""
60
+
61
+ #: admin/pages/about.php:43
62
+ msgid "About Social Slider Widget"
63
+ msgstr ""
64
+
65
+ #: includes/class-wis_instagram_slider.php:1552
66
+ msgid "Account deleted successfully"
67
+ msgstr ""
68
+
69
+ #: includes/class-wis_instagram_slider.php:1131
70
+ msgid ""
71
+ "Account not found or for this account there are restrictions on Instagram by "
72
+ "age"
73
+ msgstr ""
74
+
75
+ #: includes/class-wis_instagram_slider.php:250
76
+ msgid "Account:"
77
+ msgstr ""
78
+
79
+ #: admin/views/tab-settings.php:51
80
+ msgid "Action"
81
+ msgstr ""
82
+
83
+ #: admin/views/tab-license.php:11
84
+ #, php-format
85
+ msgid "Activate %s"
86
+ msgstr ""
87
+
88
+ #: admin/views/tab-license.php:84
89
+ msgid "active sites"
90
+ msgstr ""
91
+
92
+ #: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
93
+ msgid "Add Account"
94
+ msgstr ""
95
+
96
+ #: includes/class-wis_instagram_slider.php:267
97
+ msgid "Add account in settings"
98
+ msgstr ""
99
+
100
+ #: includes/class-wis-plugin.php:127
101
+ msgid "Are you sure want to delete this account?"
102
+ msgstr ""
103
+
104
+ #: includes/class-wis_instagram_slider.php:441
105
+ msgid "Attachment Page"
106
+ msgstr ""
107
+
108
+ #: admin/views/tab-about.php:149
109
+ msgid "BENEFITS"
110
+ msgstr ""
111
+
112
+ #: includes/class-wis_instagram_slider.php:275
113
+ msgid "Block Users"
114
+ msgstr ""
115
+
116
+ #: admin/views/tab-license.php:138
117
+ #, php-format
118
+ msgid ""
119
+ "Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
120
+ "this page</a> and login using the e-mail address associated with your "
121
+ "purchase."
122
+ msgstr ""
123
+
124
+ #: includes/class-wis_instagram_slider.php:400
125
+ msgid "Caption"
126
+ msgstr ""
127
+
128
+ #: includes/class-wis_instagram_slider.php:305
129
+ msgid "Check for new images every:"
130
+ msgstr ""
131
+
132
+ #: includes/class-wis_instagram_slider.php:293
133
+ msgid "Count of images to show:"
134
+ msgstr ""
135
+
136
+ #. Author of the plugin
137
+ msgid "creativemotion"
138
+ msgstr ""
139
+
140
+ #: includes/class-wis_instagram_slider.php:442
141
+ msgid "Custom Link"
142
+ msgstr ""
143
+
144
+ #: includes/class-wis_instagram_slider.php:448
145
+ msgid "Custom link:"
146
+ msgstr ""
147
+
148
+ #: includes/class-wis_instagram_slider.php:427
149
+ msgid "Date - Ascending"
150
+ msgstr ""
151
+
152
+ #: includes/class-wis_instagram_slider.php:428
153
+ msgid "Date - Descending"
154
+ msgstr ""
155
+
156
+ #: admin/views/tab-license.php:105
157
+ msgid "day(s)"
158
+ msgstr ""
159
+
160
+ #: admin/views/tab-settings.php:72
161
+ msgid "Delete"
162
+ msgstr ""
163
+
164
+ #: admin/views/tab-license.php:31
165
+ msgid "Delete Key"
166
+ msgstr ""
167
+
168
+ #: admin/views/tab-about.php:123
169
+ msgid ""
170
+ "Display Instagram feeds in widgets, posts, pages, or anywhere else using "
171
+ "shortcodes."
172
+ msgstr ""
173
+
174
+ #: admin/views/tab-license.php:72
175
+ msgid "domain"
176
+ msgstr ""
177
+
178
+ #: includes/class-wis_instagram_slider.php:384
179
+ msgid "Dotted"
180
+ msgstr ""
181
+
182
+ #: includes/class-wis_instagram_slider.php:277
183
+ msgid "Enter usernames separated by commas whose images you don't want to show"
184
+ msgstr ""
185
+
186
+ #: admin/views/tab-license.php:94
187
+ msgid "EXPIRED!"
188
+ msgstr ""
189
+
190
+ #: includes/class-wis_instagram_slider.php:389
191
+ msgid "Fade"
192
+ msgstr ""
193
+
194
+ #: admin/views/tab-about.php:128
195
+ msgid "FEATURES"
196
+ msgstr ""
197
+
198
+ #: admin/views/tab-about.php:200
199
+ msgid "FEEDBACK AND SUPPORT"
200
+ msgstr ""
201
+
202
+ #: includes/class-wis_instagram_slider.php:420
203
+ msgid "Full Size"
204
+ msgstr ""
205
+
206
+ #: admin/pages/settings.php:148
207
+ msgid "General"
208
+ msgstr ""
209
+
210
+ #: includes/class-wis_instagram_slider.php:272
211
+ msgid "Hashtag:"
212
+ msgstr ""
213
+
214
+ #: admin/views/tab-license.php:120
215
+ msgid "Have a key to activate the plugin? Paste it here:"
216
+ msgstr ""
217
+
218
+ #: admin/views/tab-license.php:118
219
+ msgid "Have a key to activate the premium version? Paste it here:"
220
+ msgstr ""
221
+
222
+ #: includes/class-wis_instagram_slider.php:402
223
+ msgid ""
224
+ "Hold ctrl and click the fields you want to show/hide on your slider. Leave "
225
+ "all unselected to hide them all. Default all selected."
226
+ msgstr ""
227
+
228
+ #: includes/class-wis_instagram_slider.php:307
229
+ msgid "hours"
230
+ msgstr ""
231
+
232
+ #. Author URI of the plugin
233
+ msgid "https://cm-wp.com/"
234
+ msgstr ""
235
+
236
+ #. URI of the plugin
237
+ msgid "https://cm-wp.com/instagram-slider-widget"
238
+ msgstr ""
239
+
240
+ #: admin/views/tab-settings.php:47
241
+ msgid "ID"
242
+ msgstr ""
243
+
244
+ #: admin/views/tab-settings.php:46
245
+ msgid "Image"
246
+ msgstr ""
247
+
248
+ #: includes/class-wis_instagram_slider.php:415
249
+ msgid "Image format"
250
+ msgstr ""
251
+
252
+ #: includes/class-wis_instagram_slider.php:440
253
+ msgid "Image URL"
254
+ msgstr ""
255
+
256
+ #: includes/class-wis_instagram_slider.php:354
257
+ msgid "Image width:"
258
+ msgstr ""
259
+
260
+ #: admin/pages/settings.php:158
261
+ msgid "Instagram account"
262
+ msgstr ""
263
+
264
+ #: includes/class-wis_instagram_slider.php:438
265
+ msgid "Instagram Image"
266
+ msgstr ""
267
+
268
+ #: admin/pages/settings.php:166
269
+ msgid "Instagram password"
270
+ msgstr ""
271
+
272
+ #: includes/class-wis_instagram_slider.php:439
273
+ msgid "Instagram Profile"
274
+ msgstr ""
275
+
276
+ #: includes/class-wis_instagram_slider.php:1161
277
+ msgid ""
278
+ "Instagram requires authorization to view a user profile. Use autorized "
279
+ "account in widget settings"
280
+ msgstr ""
281
+
282
+ #: admin/pages/license.php:90
283
+ msgid "License"
284
+ msgstr ""
285
+
286
+ #: admin/ajax/check-license.php:39
287
+ msgid ""
288
+ "License key is empty or license key too long (license key is 32 characters "
289
+ "long)"
290
+ msgstr ""
291
+
292
+ #: admin/pages/license.php:91
293
+ msgid "License of Social Slider Widget"
294
+ msgstr ""
295
+
296
+ #: admin/ajax/check-license.php:27
297
+ msgid "Licensing action not passed or this action is prohibited!"
298
+ msgstr ""
299
+
300
+ #: includes/class-wis_instagram_slider.php:436
301
+ msgid "Link to"
302
+ msgstr ""
303
+
304
+ #: includes/class-wis_instagram_slider.php:418
305
+ msgid "Low - 320x320"
306
+ msgstr ""
307
+
308
+ #: includes/class-wis_instagram_slider.php:345
309
+ msgid "max is 10 ( only for thumbnails template )"
310
+ msgstr ""
311
+
312
+ #: includes/class-wis_instagram_slider.php:297
313
+ msgid "Maximum 20 images in free version."
314
+ msgstr ""
315
+
316
+ #: includes/class-wis_instagram_slider.php:393
317
+ msgid "milliseconds"
318
+ msgstr ""
319
+
320
+ #: admin/views/tab-settings.php:33
321
+ #, php-format
322
+ msgid "More accounts in <a href='%s'>PRO version</a>"
323
+ msgstr ""
324
+
325
+ #: includes/class-wis_instagram_slider.php:298
326
+ #, php-format
327
+ msgid "More in <a href='%s'>PRO version</a>"
328
+ msgstr ""
329
+
330
+ #: admin/views/tab-settings.php:49
331
+ msgid "Name"
332
+ msgstr ""
333
+
334
+ #: includes/class-wis_instagram_slider.php:1214
335
+ msgid "No images found"
336
+ msgstr ""
337
+
338
+ #: includes/class-wis_instagram_slider.php:688
339
+ msgid "No images found! <br> Try some other hashtag or username"
340
+ msgstr ""
341
+
342
+ #: includes/class-wis_instagram_slider.php:385
343
+ msgid "No Navigation"
344
+ msgstr ""
345
+
346
+ #: includes/class-wis_instagram_slider.php:443
347
+ msgid "None"
348
+ msgstr ""
349
+
350
+ #: includes/class-wis_instagram_slider.php:1100
351
+ msgid "Nothing to search for"
352
+ msgstr ""
353
+
354
+ #: includes/class-wis_instagram_slider.php:343
355
+ msgid "Number of Columns:"
356
+ msgstr ""
357
+
358
+ #: includes/class-wis_instagram_slider.php:410
359
+ msgid "Number of words in caption:"
360
+ msgstr ""
361
+
362
+ #: admin/views/tab-license.php:82
363
+ msgid "of"
364
+ msgstr ""
365
+
366
+ #: includes/class-wis_instagram_slider.php:372
367
+ msgid "Offset"
368
+ msgstr ""
369
+
370
+ #: includes/class-wis_instagram_slider.php:425
371
+ msgid "Order by"
372
+ msgstr ""
373
+
374
+ #: admin/pages/settings.php:168
375
+ msgid "Password of your Instagram account"
376
+ msgstr ""
377
+
378
+ #: includes/class-wis_instagram_slider.php:376
379
+ msgid "Pattern"
380
+ msgstr ""
381
+
382
+ #: includes/class-wis_instagram_slider.php:362
383
+ msgid "pictures"
384
+ msgstr ""
385
+
386
+ #: includes/class-wis_instagram_slider.php:360
387
+ msgid "Pictures per slide:"
388
+ msgstr ""
389
+
390
+ #: admin/views/tab-license.php:76
391
+ msgid "plan"
392
+ msgstr ""
393
+
394
+ #: admin/views/tab-license.php:95
395
+ msgid "please update the key"
396
+ msgstr ""
397
+
398
+ #: includes/class-wis_instagram_slider.php:429
399
+ msgid "Popularity - Ascending"
400
+ msgstr ""
401
+
402
+ #: includes/class-wis_instagram_slider.php:430
403
+ msgid "Popularity - Descending"
404
+ msgstr ""
405
+
406
+ #: includes/class-wis_instagram_slider.php:383
407
+ msgid "Prev & Next"
408
+ msgstr ""
409
+
410
+ #: admin/views/tab-about.php:163
411
+ msgid "PRO VERSION"
412
+ msgstr ""
413
+
414
+ #: admin/views/tab-license.php:54
415
+ msgid ""
416
+ "Public License is a GPLv2 compatible license allowing you to change and use "
417
+ "this version of the plugin for free. Please keep in mind this license covers "
418
+ "only free edition of the plugin. Premium versions are distributed with other "
419
+ "type of a license."
420
+ msgstr ""
421
+
422
+ #: includes/class-wis_instagram_slider.php:351
423
+ #: includes/class-wis_instagram_slider.php:356
424
+ msgid "px"
425
+ msgstr ""
426
+
427
+ #: includes/class-wis_instagram_slider.php:431
428
+ msgid "Random"
429
+ msgstr ""
430
+
431
+ #: admin/views/tab-license.php:107
432
+ msgid "remained"
433
+ msgstr ""
434
+
435
+ #: includes/class-wis_instagram_slider.php:279
436
+ msgid "Save in Media Library: "
437
+ msgstr ""
438
+
439
+ #: includes/class-wis_instagram_slider.php:246
440
+ msgid "Search Instagram for:"
441
+ msgstr ""
442
+
443
+ #: admin/pages/settings.php:108
444
+ msgid "Settings"
445
+ msgstr ""
446
+
447
+ #: admin/pages/settings.php:107
448
+ msgid "Settings of Social Slider Widget"
449
+ msgstr ""
450
+
451
+ #: includes/class-wis_instagram_slider.php:486
452
+ msgid "Shortcode of this Widget:"
453
+ msgstr ""
454
+
455
+ #: includes/class-wis_instagram_slider.php:311
456
+ msgid "Show feed header:"
457
+ msgstr ""
458
+
459
+ #: includes/class-wis_instagram_slider.php:388
460
+ msgid "Slide"
461
+ msgstr ""
462
+
463
+ #: includes/class-wis_instagram_slider.php:391
464
+ msgid "Slide Speed:"
465
+ msgstr ""
466
+
467
+ #: includes/class-wis_instagram_slider.php:387
468
+ msgid "Slider Animation:"
469
+ msgstr ""
470
+
471
+ #: includes/class-wis_instagram_slider.php:382
472
+ msgid "Slider Navigation Controls:"
473
+ msgstr ""
474
+
475
+ #: includes/class-wis_instagram_slider.php:396
476
+ msgid "Slider Text Description:"
477
+ msgstr ""
478
+
479
+ #: includes/class-wis_instagram_slider.php:40
480
+ #: includes/class-wis_instagram_slider.php:204
481
+ msgid "Social Slider"
482
+ msgstr ""
483
+
484
+ #: includes/class-wis_instagram_slider.php:92
485
+ msgid "Social Slider - Shortcode Generator"
486
+ msgstr ""
487
+
488
+ #. Name of the plugin
489
+ #: instaram_slider.php:26 admin/views/tab-about.php:122
490
+ msgid "Social Slider Widget"
491
+ msgstr ""
492
+
493
+ #. Description of the plugin
494
+ msgid ""
495
+ "Social Slider Widget is a responsive slider widget that shows 12 latest "
496
+ "images from a public Instagram user and up to 18 images from a hashtag."
497
+ msgstr ""
498
+
499
+ #: admin/pages/widgets.php:107 admin/pages/widgets.php:108
500
+ msgid "Social Slider Widgets"
501
+ msgstr ""
502
+
503
+ #: includes/class-wis_instagram_slider.php:365
504
+ msgid "Space between pictures:"
505
+ msgstr ""
506
+
507
+ #: includes/class-wis_instagram_slider.php:419
508
+ msgid "Standard - 640x640"
509
+ msgstr ""
510
+
511
+ #: admin/views/tab-license.php:126
512
+ msgid "Submit Key"
513
+ msgstr ""
514
+
515
+ #: admin/ajax/check-license.php:55
516
+ msgid "Subscription success cancelled"
517
+ msgstr ""
518
+
519
+ #: admin/views/tab-license.php:35
520
+ msgid "Synchronization"
521
+ msgstr ""
522
+
523
+ #: includes/class-wis_instagram_slider.php:318
524
+ msgid "Template"
525
+ msgstr ""
526
+
527
+ #: admin/ajax/check-license.php:51
528
+ msgid "The license has been updated"
529
+ msgstr ""
530
+
531
+ #: admin/ajax/check-license.php:47
532
+ msgid "The license is deactivated"
533
+ msgstr ""
534
+
535
+ #: includes/class-wis_instagram_slider.php:1182
536
+ msgid "There are no publications in this account yet"
537
+ msgstr ""
538
+
539
+ #: includes/class-wis_instagram_slider.php:417
540
+ msgid "Thumbnail - 150x150"
541
+ msgstr ""
542
+
543
+ #: includes/class-wis_instagram_slider.php:399
544
+ msgid "Time"
545
+ msgstr ""
546
+
547
+ #: includes/class-wis_instagram_slider.php:242
548
+ msgid "Title:"
549
+ msgstr ""
550
+
551
+ #: admin/views/tab-settings.php:50
552
+ msgid "Token"
553
+ msgstr ""
554
+
555
+ #: admin/views/tab-license.php:22
556
+ #, php-format
557
+ msgid "Upgrade to Premium for $%s"
558
+ msgstr ""
559
+
560
+ #: includes/class-wis_instagram_slider.php:488
561
+ msgid ""
562
+ "Use this shortcode in any page or post to display images with this widget "
563
+ "configuration!"
564
+ msgstr ""
565
+
566
+ #: admin/views/tab-settings.php:48
567
+ msgid "User"
568
+ msgstr ""
569
+
570
+ #: includes/class-wis_instagram_slider.php:398
571
+ msgid "Username"
572
+ msgstr ""
573
+
574
+ #: admin/pages/settings.php:160
575
+ msgid "Username of your Instagram account"
576
+ msgstr ""
577
+
578
+ #: includes/class-wis_instagram_slider.php:271
579
+ msgid "Username:"
580
+ msgstr ""
581
+
582
+ #: admin/views/tab-license.php:89
583
+ msgid "version"
584
+ msgstr ""
585
+
586
+ #: includes/class-wis_instagram_slider.php:349
587
+ msgid "Vertical space between item elements:"
588
+ msgstr ""
589
+
590
+ #: admin/views/tab-about.php:209
591
+ msgid "WHY DO YOU NEED IT?"
592
+ msgstr ""
593
+
594
+ #: admin/pages/widgets.php:109
595
+ msgid "Widgets"
596
+ msgstr ""
597
+
598
+ #: includes/class-wis_instagram_slider.php:272
599
+ msgid "without # sign"
600
+ msgstr ""
601
+
602
+ #: admin/views/tab-settings.php:21
603
+ msgid ""
604
+ "Without authorization Instagram limits the number of requests, and after "
605
+ "exceeding the limit asks to log in, so an error is displayed that no images "
606
+ "were found."
607
+ msgstr ""
608
+
609
+ #: admin/views/tab-license.php:58
610
+ msgid ""
611
+ "You use a paid subscription for the plugin updates. In case you don’t want "
612
+ "to receive paid updates, please, click <a data-action=\"unsubscribe\" "
613
+ "class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
614
+ msgstr ""
615
+
616
+ #: admin/views/tab-license.php:25
617
+ #, php-format
618
+ msgid "Your current license for %1$s:"
619
+ msgstr ""
620
+
621
+ #: admin/ajax/check-license.php:42
622
+ msgid "Your license has been successfully activated"
623
+ msgstr ""
624
+
625
+ #: admin/views/tab-license.php:64
626
+ msgid ""
627
+ "Your license has expired, please extend the license to get updates and "
628
+ "support."
629
+ msgstr ""
{vendor → libs/factory/adverts/assets}/index.php RENAMED
File without changes
libs/factory/adverts/assets/js/index.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php
2
+ // Silence is golden.
libs/factory/adverts/assets/js/script.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready( function($) {
2
+ // Отправдяем запрос на маркировку нотиса, если пользователь его закрыл
3
+ $( '.wbcr-advt-notice' ).click( function() {
4
+ $.post(
5
+ ajaxurl,
6
+ {
7
+ action: 'wbcr_advt_mark_notice'
8
+ },
9
+ function(data) {
10
+ }
11
+ );
12
+ });
13
+ });
libs/factory/adverts/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Adverts_104\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -16,35 +16,35 @@ use WBCR\Factory_Adverts_104\Base;
16
  */
17
 
18
  // Exit if accessed directly
19
- if ( ! defined( 'ABSPATH' ) ) {
20
  exit;
21
  }
22
 
23
- if ( defined( 'FACTORY_ADVERTS_104_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
- define( 'FACTORY_ADVERTS_104_LOADED', true );
29
 
30
  # Устанавливаем версию модуля
31
- define( 'FACTORY_ADVERTS_104_VERSION', '1.0.4' );
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
- load_plugin_textdomain( 'wbcr_factory_adverts_104', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
35
 
36
  # Устанавливаем директорию модуля
37
- define( 'FACTORY_ADVERTS_104_DIR', dirname( __FILE__ ) );
38
 
39
  # Устанавливаем url модуля
40
- define( 'FACTORY_ADVERTS_104_URL', plugins_url( null, __FILE__ ) );
41
 
42
- require_once( FACTORY_ADVERTS_104_DIR . '/includes/class-rest-request.php' );
43
- require_once( FACTORY_ADVERTS_104_DIR . '/includes/class-base.php' );
44
 
45
  /**
46
- * @param Wbcr_Factory422_Plugin $plugin
47
  */
48
- add_action( 'wbcr_factory_adverts_104_plugin_created', function ( $plugin ) {
49
- $plugin->set_adverts_manager( "WBCR\Factory_Adverts_104\Base" );
50
- } );
1
  <?php
2
 
3
+ use WBCR\Factory_Adverts_114\Base;
4
 
5
  /**
6
  * Factory Adverts
16
  */
17
 
18
  // Exit if accessed directly
19
+ if( !defined('ABSPATH') ) {
20
  exit;
21
  }
22
 
23
+ if( defined('FACTORY_ADVERTS_114_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
+ define('FACTORY_ADVERTS_114_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
+ define('FACTORY_ADVERTS_114_VERSION', '1.1.4');
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
+ load_plugin_textdomain('wbcr_factory_adverts_114', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
+ define('FACTORY_ADVERTS_114_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
+ define('FACTORY_ADVERTS_114_URL', plugins_url(null, __FILE__));
41
 
42
+ require_once(FACTORY_ADVERTS_114_DIR . '/includes/class-rest-request.php');
43
+ require_once(FACTORY_ADVERTS_114_DIR . '/includes/class-base.php');
44
 
45
  /**
46
+ * @param Wbcr_Factory436_Plugin $plugin
47
  */
48
+ add_action('wbcr_factory_adverts_114_plugin_created', function ($plugin) {
49
+ $plugin->set_adverts_manager("WBCR\Factory_Adverts_114\Base");
50
+ });
libs/factory/adverts/includes/class-adverts-base.php ADDED
@@ -0,0 +1,261 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WBCR\Factory_Adverts_102;
4
+
5
+ // Exit if accessed directly
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit;
8
+ }
9
+
10
+ /**
11
+ * Base class for adverts module.
12
+ *
13
+ * Contains methods for retrieving banner data for a specific position.
14
+ * With this class user cat get advert content for a specific position.
15
+ * This class use functional design pattern.
16
+ * It used in the main plugin file. Also some methods may used in any place of plugin.
17
+ *
18
+ * Example (main plugin file):
19
+ * // FRAMEWORK MODULES
20
+ * 'load_factory_modules' => array(
21
+ * ...
22
+ * array( 'libs/factory/adverts', 'factory_adverts_102', 'admin' ),
23
+ * ),
24
+ *
25
+ * if ( is_admin() ) {
26
+ * global $wbcr_PLUGIN_NAME_adinserter;
27
+ *
28
+ * $wbcr_PLUGIN_NAME_adinserter = new WBCR\Factory_Adverts_102\Base(
29
+ * __FILE__,
30
+ * array_merge(
31
+ * $plugin_info,
32
+ * array(
33
+ * 'dashboard_widget' => true, // show dashboard widget (default: false)
34
+ * 'right_sidebar' => true, // show adverts sidebar (default: false)
35
+ * 'notice' => true, // show notice message (default: false)
36
+ * )
37
+ * )
38
+ * );
39
+ * }
40
+ *
41
+ * Example (in any place):
42
+ * <?php
43
+ * global $wbcr_PLUGIN_NAME_adinserter;
44
+ * echo $wbcr_PLUGIN_NAME_adinserter->get_adverts( 'right_sidebar' );
45
+ * ?>
46
+ *
47
+ * Replace in the variable the phrase PLUGIN_NAME with the current plugin name!
48
+ *
49
+ * @author Alexander Vitkalov <nechin.va@gmail.com>
50
+ * @since 1.0.0 Added
51
+ * @package factory-adverts
52
+ * @copyright (c) 2019 Webcraftic Ltd
53
+ */
54
+ class Base {
55
+
56
+ /*
57
+ * Contain array data with the plugin information and the module settings.
58
+ * Mainly used to get the name of the plugin and how to get the adverts blocks.
59
+ *
60
+ * @since 1.0.0 Added
61
+ *
62
+ * @var array Example: array(
63
+ * 'prefix' => 'wbcr_inp_',
64
+ * 'plugin_name' => 'wbcr_insert_php',
65
+ * 'plugin_title' => 'Woody ad snippets',
66
+ * 'plugin_text_domain' => 'insert-php',
67
+ * 'dashboard_widget' => true,
68
+ * 'right_sidebar' => true,
69
+ * 'notice' => true,
70
+ * ...
71
+ * )
72
+ *
73
+ */
74
+ private $data = [];
75
+
76
+ /**
77
+ * Wbcr_Factory_Adinserter constructor.
78
+ *
79
+ * - Store plugin information and settings.
80
+ * - Add filter and actions.
81
+ * - Include dashboard widget.
82
+ *
83
+ * @since 1.0.0 Added
84
+ *
85
+ * @param string $plugin_path Path to plugin base file
86
+ * @param array $data Array data with plugin information and settings (@see $data property example)
87
+ */
88
+ public function __construct( $plugin_path, $data ) {
89
+ $this->data = $data;
90
+
91
+ add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_widgets' ], 10, 3 );
92
+
93
+ add_action( 'init', [ $this, 'add_notices' ] );
94
+ add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
95
+ add_action( 'wp_ajax_wbcr_advt_mark_notice', [ $this, 'mark_notice' ] );
96
+
97
+ $this->include_dashboard();
98
+ }
99
+
100
+ /**
101
+ * Include dashboard widget
102
+ *
103
+ * Include functionality the output of the widget on the dashboard.
104
+ * Only one dashboard widget must be shown for some plugins with this setting (dashboard_widget).
105
+ *
106
+ * @since 1.0.0 Added
107
+ */
108
+ private function include_dashboard() {
109
+ if ( isset( $this->data['dashboard_widget'] ) && $this->data['dashboard_widget'] && ! defined( 'FACTORY_ADVERTS_DASHBOARD_WIDGET' ) ) {
110
+ /**
111
+ * Dashboard widget is displays.
112
+ *
113
+ * Used only in this function.
114
+ *
115
+ * @since 1.0.0
116
+ * @var boolean Notes that the dashboard widget already displays.
117
+ */
118
+ define( 'FACTORY_ADVERTS_DASHBOARD_WIDGET', true );
119
+ require_once FACTORY_ADVERTS_102_DIR . '/includes/class-adverts-dashboard-widget.php';
120
+
121
+ new Dashboard_Widget( $this->data['plugin_name'] );
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Get advert content for selected position.
127
+ *
128
+ * @since 1.0.0 Added
129
+ *
130
+ * @param string $position The position for advert
131
+ *
132
+ * @return string
133
+ */
134
+ private function get_content( $position ) {
135
+ $request = new Rest_Request( $this->data['plugin_name'], $position );
136
+
137
+ return $request->get_content();
138
+ }
139
+
140
+ /**
141
+ * Register widgets.
142
+ *
143
+ * Depending on the settings, register new widgets.
144
+ *
145
+ * @since 1.0.0 Added
146
+ *
147
+ * @param array $widgets Already existing registered widgets
148
+ * @param string $position Position for the widget
149
+ * @param string $plugin Plugin object for which the hook is run
150
+ *
151
+ * @return array array(
152
+ * 'adverts_widget' => '<p></p>',
153
+ * 'businnes_suggetion' => '<p></p>',
154
+ * 'support' => '<p></p>',
155
+ * ...
156
+ * )
157
+ */
158
+ public function register_widgets( $widgets, $position, $plugin ) {
159
+ if ( $plugin->getPluginName() == $this->data['plugin_name'] && ! empty( $this->data ) && 'right' == $position ) {
160
+ if ( isset( $this->data['right_sidebar'] ) && $this->data['right_sidebar'] ) {
161
+ $content = $this->get_content( 'right_sidebar' );
162
+
163
+ $widgets['adverts_widget'] = $content;
164
+ }
165
+
166
+ if ( isset( $this->data['businnes_suggetion'] ) && $this->data['businnes_suggetion'] ) {
167
+ $content = $this->get_content( 'businnes_suggetion' );
168
+
169
+ $widgets['businnes_suggetion'] = $content;
170
+ }
171
+
172
+ if ( isset( $this->data['support'] ) && $this->data['support'] ) {
173
+ $content = $this->get_content( 'support' );
174
+
175
+ $widgets['support'] = $content;
176
+ }
177
+ }
178
+
179
+ return $widgets;
180
+ }
181
+
182
+ /**
183
+ * Add notice message.
184
+ *
185
+ * Only one notice must be shown for some plugins with this setting (notice).
186
+ *
187
+ * @since 1.0.0 Added
188
+ */
189
+ public function add_notices() {
190
+ if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! defined( 'FACTORY_ADINSERTER_NOTICE' ) ) {
191
+ /**
192
+ * Notice is displays.
193
+ *
194
+ * Used only in this function.
195
+ *
196
+ * @since 1.0.0
197
+ * @var boolean Notes that the notice already displays.
198
+ */
199
+ define( 'FACTORY_ADINSERTER_NOTICE', true );
200
+
201
+ $content = $this->get_content( 'notice' );
202
+ $hash = md5( $content );
203
+
204
+ /* If the notice has not been closed by the user or the content of the notice has changed,
205
+ then we show the notice. */
206
+ if ( ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) || get_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'] ) != $hash ) {
207
+ update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], false );
208
+ update_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'], $hash );
209
+ add_action( 'admin_notices', function () {
210
+ echo $this->get_content( 'notice' );
211
+ } );
212
+ }
213
+ }
214
+ }
215
+
216
+ /**
217
+ * Add javascript file.
218
+ *
219
+ * File contains code for intercept the click event and post ajax request.
220
+ *
221
+ * @since 1.0.0 Added
222
+ */
223
+ public function enqueue_scripts() {
224
+ if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) ) {
225
+ wp_enqueue_script( 'factory-adverts-notice', FACTORY_ADVERTS_102_URL . '/assets/js/script.js' );
226
+ }
227
+ }
228
+
229
+ /**
230
+ * Mark notice closed for this plugin.
231
+ *
232
+ * Callback for ajax action. Execute when user close the notice.
233
+ *
234
+ * @since 1.0.0 Added
235
+ * @see enqueue_scripts()
236
+ */
237
+ public function mark_notice() {
238
+ update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], true );
239
+ exit();
240
+ }
241
+
242
+ /**
243
+ * Directly get advert content for selected position.
244
+ *
245
+ * @since 1.0.0 Added
246
+ *
247
+ * @param string $position Custom position name
248
+ *
249
+ * @return string
250
+ */
251
+ public function get_adverts( $position ) {
252
+ $content = '';
253
+
254
+ if ( $position ) {
255
+ $content = $this->get_content( $position );
256
+ }
257
+
258
+ return $content;
259
+ }
260
+
261
+ }
libs/factory/adverts/includes/class-adverts-dashboard-widget.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WBCR\Factory_Adverts_102;
4
+
5
+ // Exit if accessed directly
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit;
8
+ }
9
+
10
+ /**
11
+ * Adverts Dashboard Widget.
12
+ *
13
+ * Adds a widget with a banner or a list of news.
14
+ *
15
+ * @author Alexander Vitkalov <nechin.va@gmail.com>
16
+ * @since 1.0.0 Added
17
+ * @package factory-adverts
18
+ * @copyright (c) 2019 Webcraftic Ltd
19
+ */
20
+ class Dashboard_Widget extends Rest_Request {
21
+
22
+ /**
23
+ * Dashboard_Widget constructor.
24
+ *
25
+ * Call parent constructor. Registration hooks.
26
+ *
27
+ * @since 1.0.0 Added
28
+ *
29
+ * @param string $plugin_name Plugin name from parameter plugin_name
30
+ */
31
+ public function __construct( $plugin_name ) {
32
+ parent::__construct( $plugin_name, 'dashboard' );
33
+
34
+ $this->register_hooks();
35
+ }
36
+
37
+ /**
38
+ * Registration hooks.
39
+ *
40
+ * @since 1.0.0 Added
41
+ */
42
+ public function register_hooks() {
43
+ add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) );
44
+ }
45
+
46
+ /**
47
+ * Add the News widget to the dashboard.
48
+ *
49
+ * @since 1.0.0 Added
50
+ */
51
+ public function add_dashboard_widgets() {
52
+ $widget_id = 'wbcr-adinserter-dashboard-widget';
53
+ wp_add_dashboard_widget(
54
+ $widget_id,
55
+ __( 'News', '' ),
56
+ array( $this, 'dashboard_widget_adverts' )
57
+ );
58
+
59
+ /**
60
+ * Set dashboard widget first in order
61
+ *
62
+ * @since 1.2.3 Added
63
+ */
64
+ global $wp_meta_boxes;
65
+
66
+ $normal_core = $wp_meta_boxes['dashboard']['normal']['core'];
67
+ $widget_backup = array( $widget_id => $normal_core[ $widget_id ] );
68
+ unset( $normal_core[ $widget_id ] );
69
+ $sorted_core = array_merge( $widget_backup, $normal_core );
70
+
71
+ $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
72
+ }
73
+
74
+ /**
75
+ * Create the function to output the contents of the Dashboard Widget.
76
+ *
77
+ * @since 1.0.0 Added
78
+ */
79
+ public function dashboard_widget_adverts() {
80
+ $content = $this->get_content();
81
+ if ( ! empty( $content ) ) {
82
+ ?>
83
+ <div class="wordpress-news hide-if-no-js">
84
+ <?php $this->show_adverts( $content ); ?>
85
+ </div>
86
+ <?php
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Output advert content.
92
+ *
93
+ * @since 1.0.0 Added
94
+ *
95
+ * @param $content string
96
+ */
97
+ public function show_adverts( $content ) {
98
+ if ( ! empty( $content ) ) :
99
+ ?>
100
+ <div class="rss-widget">
101
+ <?php echo $content; ?>
102
+ </div>
103
+ <?php
104
+ endif;
105
+ }
106
+
107
+ }
libs/factory/adverts/includes/class-adverts-rest-request.php ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WBCR\Factory_Adverts_102;
4
+
5
+ // Exit if accessed directly
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit;
8
+ }
9
+
10
+ /**
11
+ * Factory request class.
12
+ *
13
+ * Performs a server request, retrieves banner data and stores it in the cache.
14
+ *
15
+ * @author Alexander Vitkalov <nechin.va@gmail.com>
16
+ * @since 1.0.0 Added
17
+ * @package factory-adverts
18
+ * @copyright (c) 2019 Webcraftic Ltd
19
+ */
20
+ class Rest_Request {
21
+
22
+ /**
23
+ * Rest route path.
24
+ *
25
+ * Define rest route path for rest request.
26
+ *
27
+ * @since 1.0.0
28
+ * @var string
29
+ * @uses do_rest_request()
30
+ */
31
+ const FACTORY_ADVERTS_REST_ROUTE = '/adverds/v1/advt';
32
+
33
+ /**
34
+ * Plugin name.
35
+ *
36
+ * Set on class initialization from parameter plugin_name.
37
+ * Used as query parameter in rest request.
38
+ *
39
+ * @since 1.0.0 Added
40
+ *
41
+ * @var string
42
+ */
43
+ private $plugin_name = '';
44
+
45
+ /**
46
+ * Adverts position.
47
+ *
48
+ * Position for advert (dashboard_widget, right_sidebar, notice, businnes_suggetion, support)
49
+ *
50
+ * Set on class initialization.
51
+ * Used as query parameter in rest request.
52
+ *
53
+ * @since 1.0.0 Added
54
+ *
55
+ * @var string
56
+ */
57
+ private $ad_position = '';
58
+
59
+ /**
60
+ * Request constructor.
61
+ *
62
+ * Variable initialization.
63
+ *
64
+ * @since 1.0.0 Added
65
+ *
66
+ * @param string $plugin_name Plugin name from parameter plugin_name
67
+ * @param string $position Position for advert
68
+ */
69
+ public function __construct( $plugin_name, $position ) {
70
+ $this->plugin_name = $plugin_name;
71
+ $this->ad_position = $position;
72
+ }
73
+
74
+ /**
75
+ * Get key for cached data.
76
+ *
77
+ * Used for store and get cached data for current plugin and position.
78
+ *
79
+ * @since 1.0.0 Added
80
+ *
81
+ * @return string
82
+ */
83
+ private function get_key() {
84
+ return md5( self::FACTORY_ADVERTS_REST_ROUTE . $this->plugin_name . $this->ad_position );
85
+ }
86
+
87
+ /**
88
+ * Get data from cache.
89
+ *
90
+ * If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
91
+ *
92
+ * @since 1.0.0 Added
93
+ *
94
+ * @return mixed array(
95
+ * 'plugin' => 'wbcr_insert_php',
96
+ * 'content' => '<p></p>',
97
+ * 'expires' => 1563542199,
98
+ * );
99
+ */
100
+ private function get_cache() {
101
+
102
+ $cached_data = defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ? false : get_option( $this->get_key() );
103
+
104
+ if ( empty( $cached_data ) || ! isset( $cached_data['expires'] ) || ! isset( $cached_data['content'] ) || empty( $cached_data['expires'] ) || $cached_data['expires'] <= current_time( 'timestamp' ) ) {
105
+ $data = $this->do_rest_request();
106
+
107
+ if ( ! empty( $data ) && isset( $data['content'] ) && isset( $data['expires'] ) ) {
108
+ update_option( $this->get_key(), $data );
109
+ }
110
+ } else {
111
+ $data = $cached_data;
112
+ }
113
+
114
+ return $data;
115
+ }
116
+
117
+ /**
118
+ * Get adverts content.
119
+ *
120
+ * @since 1.0.0 Added
121
+ *
122
+ * @return string
123
+ */
124
+ public function get_content() {
125
+ $content = '';
126
+
127
+ $data = $this->get_cache();
128
+
129
+ if ( $data && isset( $data['content'] ) ) {
130
+ $content = $data['content'];
131
+ }
132
+
133
+ return $content;
134
+ }
135
+
136
+ /**
137
+ * Performs rest api request.
138
+ *
139
+ * If defined WBCR_ADINSERTER_REST_URL, then data requested from the remote server.
140
+ * Otherwise data will be requested from the same server.
141
+ * Defined in boot.php
142
+ *
143
+ * In some case on the server (Apache) in the .htaccess must be set
144
+ * RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
145
+ *
146
+ * @since 1.0.0 Added
147
+ *
148
+ * @return mixed array(
149
+ * 'plugin' => 'wbcr_insert_php',
150
+ * 'content' => '<p></p>',
151
+ * 'expires' => 1563542199,
152
+ * );
153
+ */
154
+ private function do_rest_request() {
155
+ $empty_data = [
156
+ 'plugin' => $this->plugin_name,
157
+ 'content' => '',
158
+ 'expires' => current_time( 'timestamp' ) + 60 * 60,
159
+ ];
160
+
161
+ $url = site_url();
162
+ if ( defined( 'WBCR_ADINSERTER_REST_URL' ) && '' != WBCR_ADINSERTER_REST_URL ) {
163
+ $url = WBCR_ADINSERTER_REST_URL;
164
+ }
165
+
166
+ // Remote rest request
167
+ $url = rtrim( $url, '/' ) . '/wp-json' . self::FACTORY_ADVERTS_REST_ROUTE;
168
+ $url = add_query_arg( 'plugin', $this->plugin_name, $url );
169
+ $url = add_query_arg( 'position', $this->ad_position, $url );
170
+
171
+ $response = wp_remote_get( $url );
172
+
173
+ $code = wp_remote_retrieve_response_code( $response );
174
+ $body = wp_remote_retrieve_body( $response );
175
+ $data = (array) json_decode( $body );
176
+
177
+ return 200 == $code && $data && isset( $data['expires'] ) ? $data : $empty_data;
178
+ }
179
+
180
+ }
libs/factory/adverts/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_104;
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_Factory422_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_104\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_Factory422_Plugin $plugin
86
  */
87
- public function __construct( \Wbcr_Factory422_Plugin $plugin, $settings ) {
88
  $this->plugin = $plugin;
89
 
90
  $this->settings = wp_parse_args( $settings, [
@@ -257,7 +257,7 @@ class Base {
257
  $content = $this->get_debug_message( 'dashboard_widget' );
258
  }
259
 
260
- require_once FACTORY_ADVERTS_104_DIR . '/includes/class-dashboard-widget.php';
261
  new Dashboard_Widget( $this->plugin, $content );
262
  }
263
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_114;
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_Factory436_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_114\Creative_Motion_API
57
  */
58
  private $api;
59
 
82
  *
83
  * @since 1.0.0 Added
84
  *
85
+ * @param \Wbcr_Factory436_Plugin $plugin
86
  */
87
+ public function __construct( \Wbcr_Factory436_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_114_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_104;
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_Factory422_Plugin
39
  */
40
  private $plugin;
41
 
@@ -46,10 +46,10 @@ class Dashboard_Widget {
46
  *
47
  * @since 1.0.0 Added
48
  *
49
- * @param \Wbcr_Factory422_Plugin $plugin
50
  * @param string $content
51
  */
52
- public function __construct( \Wbcr_Factory422_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_114;
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_Factory436_Plugin
39
  */
40
  private $plugin;
41
 
46
  *
47
  * @since 1.0.0 Added
48
  *
49
+ * @param \Wbcr_Factory436_Plugin $plugin
50
  * @param string $content
51
  */
52
+ public function __construct( \Wbcr_Factory436_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
libs/factory/adverts/includes/class-rest-request.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_104;
4
 
5
  // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
  exit;
8
  }
9
 
@@ -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_Factory422_Plugin
69
  */
70
  private $plugin;
71
 
@@ -75,32 +75,34 @@ class Creative_Motion_API {
75
  *
76
  * Variable initialization.
77
  *
 
78
  * @since 1.0.0 Added
79
  *
80
- * @param \Wbcr_Factory422_Plugin $plugin_name
81
  */
82
- public function __construct( \Wbcr_Factory422_Plugin $plugin ) {
 
83
  $this->plugin = $plugin;
84
  }
85
 
86
  /**
87
  * Get adverts content.
88
  *
89
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
90
- * @since 1.0.1
91
- *
92
  * @param $position
93
  *
94
  * @return string|\WP_Error
 
 
 
95
  */
96
- public function get_content( $position ) {
97
- $data = $this->get_cache( $position );
 
98
 
99
- if ( is_wp_error( $data ) ) {
100
  return $data;
101
  }
102
 
103
- return strip_tags( $data['content'], '<b>,<a>,<i>,<strong>,<img>,<ul>,<ol>,<li>' );
104
  }
105
 
106
  /**
@@ -108,47 +110,52 @@ class Creative_Motion_API {
108
  *
109
  * If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
110
  *
111
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
112
- *
113
- * @since 1.0.1 Полностью переписан, с перехватом api ошибок
114
- * @since 1.0.0 Added
115
- *
116
  * @return mixed array(
117
  * 'plugin' => 'wbcr_insert_php',
118
  * 'content' => '<p></p>',
119
  * 'expires' => 1563542199,
120
  * );
 
 
 
 
 
121
  */
122
- private function get_cache( $position ) {
 
123
 
124
- if ( defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ) {
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
 
132
- if ( $cached !== false ) {
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
 
140
- $data = $this->do_api_request( $position );
141
 
142
- if ( is_wp_error( $data ) ) {
143
- set_transient( $key, [
144
- 'error' => $data->get_error_message(),
145
  'error_code' => $data->get_error_code()
146
- ], self::SERVER_UNAVAILABLE_INTERVAL * HOUR_IN_SECONDS );
147
 
148
  return $data;
149
  }
150
 
151
- set_transient( $key, $data, $data['expires'] );
152
 
153
  return $data;
154
  }
@@ -159,39 +166,52 @@ class Creative_Motion_API {
159
  * In some case on the server (Apache) in the .htaccess must be set
160
  * RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
161
  *
162
- * @since 1.0.1 Добавлен перехват ошибок, рефакторинг кода.
163
- * @since 1.0.0 Added
164
- *
165
  * @return mixed array(
166
  * 'plugin' => 'wbcr_insert_php',
167
  * 'content' => '<p></p>',
168
  * 'expires' => 1563542199,
169
  * );
 
 
 
170
  */
171
- private function do_api_request( $position ) {
 
172
  $default_result = [
173
  'content' => '',
174
  'expires' => self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS,
175
  ];
176
 
177
- $url = untrailingslashit( self::SERVER_URL ) . '/wp-json' . self::REST_ROUTE;
178
- $url = add_query_arg( [ 'plugin' => $this->plugin->getPluginName(), 'position' => $position ], $url );
 
 
 
 
 
 
 
 
 
 
 
 
179
 
180
- $response = wp_remote_get( $url );
181
 
182
- $code = wp_remote_retrieve_response_code( $response );
183
- $body = wp_remote_retrieve_body( $response );
184
 
185
- $data = @json_decode( $body, true );
186
 
187
- if ( is_wp_error( $response ) ) {
188
  return $response;
189
  }
190
 
191
- if ( 200 !== $code ) {
192
- return new \WP_Error( 'http_request_error', 'Failed request to the remote server. Code: ' . $code );
193
  }
194
 
195
- return wp_parse_args( $data, $default_result );
196
  }
197
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_114;
4
 
5
  // Exit if accessed directly
6
+ if( !defined('ABSPATH') ) {
7
  exit;
8
  }
9
 
65
  *
66
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
67
  * @since 1.0.1
68
+ * @var \Wbcr_Factory436_Plugin
69
  */
70
  private $plugin;
71
 
75
  *
76
  * Variable initialization.
77
  *
78
+ * @param \Wbcr_Factory436_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
 
81
  */
82
+ public function __construct(\Wbcr_Factory436_Plugin $plugin)
83
+ {
84
  $this->plugin = $plugin;
85
  }
86
 
87
  /**
88
  * Get adverts content.
89
  *
 
 
 
90
  * @param $position
91
  *
92
  * @return string|\WP_Error
93
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
94
+ * @since 1.0.1
95
+ *
96
  */
97
+ public function get_content($position)
98
+ {
99
+ $data = $this->get_cache($position);
100
 
101
+ if( is_wp_error($data) ) {
102
  return $data;
103
  }
104
 
105
+ return strip_tags($data['content'], '<b>,<a>,<i>,<strong>,<img>,<ul>,<ol>,<li>');
106
  }
107
 
108
  /**
110
  *
111
  * If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
112
  *
 
 
 
 
 
113
  * @return mixed array(
114
  * 'plugin' => 'wbcr_insert_php',
115
  * 'content' => '<p></p>',
116
  * 'expires' => 1563542199,
117
  * );
118
+ * @since 1.0.1 Полностью переписан, с перехватом api ошибок
119
+ * @since 1.0.0 Added
120
+ *
121
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
122
+ *
123
  */
124
+ private function get_cache($position)
125
+ {
126
 
127
+ if( defined('FACTORY_ADVERTS_DEBUG') && FACTORY_ADVERTS_DEBUG ) {
128
+ return $this->do_api_request($position);
129
  }
130
 
131
+ $key = $this->plugin->getPrefix() . md5($position . 'adverts_transient_');
132
+
133
+ if( 'ru_RU' === get_locale() ) {
134
+ $key .= 'ru_';
135
+ }
136
 
137
+ $cached = get_transient($key);
138
 
139
+ if( $cached !== false ) {
140
+ if( isset($cached['error_code']) && isset($cached['error']) ) {
141
+ return new \WP_Error($cached['error_code'], $cached['error']);
142
  }
143
 
144
  return $cached;
145
  }
146
 
147
+ $data = $this->do_api_request($position);
148
 
149
+ if( is_wp_error($data) ) {
150
+ set_transient($key, [
151
+ 'error' => $data->get_error_message(),
152
  'error_code' => $data->get_error_code()
153
+ ], self::SERVER_UNAVAILABLE_INTERVAL * HOUR_IN_SECONDS);
154
 
155
  return $data;
156
  }
157
 
158
+ set_transient($key, $data, self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS);
159
 
160
  return $data;
161
  }
166
  * In some case on the server (Apache) in the .htaccess must be set
167
  * RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
168
  *
 
 
 
169
  * @return mixed array(
170
  * 'plugin' => 'wbcr_insert_php',
171
  * 'content' => '<p></p>',
172
  * 'expires' => 1563542199,
173
  * );
174
+ * @since 1.0.0 Added
175
+ *
176
+ * @since 1.0.1 Добавлен перехват ошибок, рефакторинг кода.
177
  */
178
+ private function do_api_request($position)
179
+ {
180
  $default_result = [
181
  'content' => '',
182
  'expires' => self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS,
183
  ];
184
 
185
+ $url = untrailingslashit(self::SERVER_URL) . '/wp-json' . self::REST_ROUTE;
186
+
187
+ $ads_ID = $this->plugin->getPluginName();
188
+
189
+ if( 'ru_RU' === get_locale() ) {
190
+ $ads_ID .= '-ru';
191
+ }
192
+
193
+ $url = add_query_arg([
194
+ 'plugin' => $ads_ID,
195
+ 'position' => $position,
196
+ 'plugin_title' => $this->plugin->getPluginTitle(),
197
+ 'lang' => get_locale()
198
+ ], $url);
199
 
200
+ $response = wp_remote_get($url);
201
 
202
+ $code = wp_remote_retrieve_response_code($response);
203
+ $body = wp_remote_retrieve_body($response);
204
 
205
+ $data = @json_decode($body, true);
206
 
207
+ if( is_wp_error($response) ) {
208
  return $response;
209
  }
210
 
211
+ if( 200 !== $code ) {
212
+ return new \WP_Error('http_request_error', 'Failed request to the remote server. Code: ' . $code);
213
  }
214
 
215
+ return wp_parse_args($data, $default_result);
216
  }
217
  }
libs/factory/adverts/langs/wbcr_factory_adverts_102-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_102-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/adverts/langs/wbcr_factory_adverts_105-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_105-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/adverts/langs/wbcr_factory_adverts_107-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_107-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/adverts/langs/wbcr_factory_adverts_108-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_108-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/adverts/langs/wbcr_factory_adverts_109-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_109-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/adverts/langs/wbcr_factory_adverts_114-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_114-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/adverts/readme.txt ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Plugin Name ===
2
+ Contributors: nechii
3
+ Tags: ad, advertisment, module
4
+ Requires at least: 4.2
5
+ Tested up to: 5.2
6
+ Stable tag: 1.2.0
7
+ Requires PHP: 5.4
8
+
9
+ Module adds ad units to plugins.
10
+
11
+ == Description ==
12
+
13
+ The module allows you to add the specified ad blocks to the plugins.
14
+
15
+ Managing and storing the content of each block occurs in special side plugin.
16
+
17
+ To add the necessary blocks, you need to add the following code to the main plugin file:
18
+ if ( is_admin() ) {
19
+ global $wbcr_plugin_name_adinserter;
20
+
21
+ $wbcr_plugin_name_adinserter = new WBCR\Factory_Adverts_000\Base(
22
+ __FILE__,
23
+ array_merge(
24
+ $plugin_info,
25
+ array(
26
+ 'dashboard_widget' => true, // show dashboard widget (default: false)
27
+ 'right_sidebar' => true, // show adverts sidebar (default: false)
28
+ 'notice' => true, // show notice message (default: false)
29
+ )
30
+ )
31
+ );
32
+ }
33
+ In this example, three ad blocks will be added: dashboard_widget, right_sidebar and notice.
34
+
35
+ It is possible to add an ad block manually. To do this, in the specific place of the code you need to insert the following code:
36
+ global $wbcr_plugin_name_adinserter;
37
+ echo $wbcr_plugin_name_adinserter->get_adverts( 'right_sidebar' );
38
+ In this example will be displayed content for ad block 'right_sidebar';
39
+
40
+ == Changelog ==
41
+
42
+ = 1.2.3 =
43
+ * Set dashboard widget first in order
44
+
45
+ = 1.2.2 =
46
+ * Changed the name of a global variable and its use rule
47
+
48
+ = 1.2.1 =
49
+ * Moved constant for rest request url from wp-config.php to boot.php
50
+
51
+ = 1.2.0 =
52
+ * Removed rest request. Only get request available.
53
+ * Cleaning and refactoring code.
54
+
55
+ = 1.1.0 =
56
+ * Add new notice functions.
57
+ * Cleaning and refactoring code.
58
+
59
+ = 1.0.0 =
60
+ * Cleaning and refactoring code.
61
+ * Add doc blocks.
62
+ * Some fixes and changes.
63
+
64
+ = 0.9.0 =
65
+ * Added new blocks.
66
+ * Fixed widget functions.
67
+
68
+ = 0.8.0 =
69
+ * Added notice block.
70
+ * Added constants for unique dashboard notice.
71
+ * Fixed widget functions.
72
+
73
+ = 0.7.0 =
74
+ * Added constants for unique dashboard widget.
75
+ * Fixed widget functions.
76
+
77
+ = 0.6.0 =
78
+ * Improve widget functions.
79
+ * Fixed cache functions.
80
+
81
+ = 0.5.0 =
82
+ * Added default rest response.
83
+ * Fixed rest request.
84
+
85
+ = 0.4.0 =
86
+ * Fixed rest request response.
87
+ * Fixed base functions.
88
+
89
+ = 0.3.0 =
90
+ * Improve rest request.
91
+ * Fixed requests functions.
92
+
93
+ = 0.2.0 =
94
+ * Added expiration time for cached data.
95
+ * Fixed cache functions.
96
+
97
+ = 0.1.0 =
98
+ * Version with base functions.
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-423 .factory-accordion{margin:0 0 30px;border-top:1px solid #DDD;border-right:1px solid #DDD;border-left:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.factory-bootstrap-423 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-423 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-423 .factory-accordion-item{display:none}.factory-bootstrap-423 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-423 .factory-accordion>h3.active:hover{cursor:default}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-436 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-436 .factory-accordion-item{display:none}.factory-bootstrap-436 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-436 .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-423 .btn-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:active{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-423 .btn-group .btn.active.value{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .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-436 .btn-primary:disabled,.factory-bootstrap-436 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-436 .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-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .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-423 .btn-primary{background:#c7a589;border-color:#b78a66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:active{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-423 .btn-group .btn.active.value{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .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-436 .btn-primary:disabled,.factory-bootstrap-436 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-436 .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-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .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-423 article,.factory-bootstrap-423 aside,.factory-bootstrap-423 details,.factory-bootstrap-423 figcaption,.factory-bootstrap-423 figure,.factory-bootstrap-423 footer,.factory-bootstrap-423 header,.factory-bootstrap-423 hgroup,.factory-bootstrap-423 main,.factory-bootstrap-423 nav,.factory-bootstrap-423 section,.factory-bootstrap-423 summary{display:block}.factory-bootstrap-423 audio,.factory-bootstrap-423 canvas,.factory-bootstrap-423 video{display:inline-block}.factory-bootstrap-423 audio:not([controls]){display:none;height:0}.factory-bootstrap-423 [hidden],.factory-bootstrap-423 template{display:none}.factory-bootstrap-423 body{margin:0}.factory-bootstrap-423 a{background:0 0}.factory-bootstrap-423 a:focus{outline:thin dotted}.factory-bootstrap-423 a:active,.factory-bootstrap-423 a:hover{outline:0}.factory-bootstrap-423 h1{margin:.67em 0}.factory-bootstrap-423 b,.factory-bootstrap-423 strong{font-weight:700}.factory-bootstrap-423 dfn{font-style:italic}.factory-bootstrap-423 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 mark{color:#000;background:#ff0}.factory-bootstrap-423 code,.factory-bootstrap-423 kbd,.factory-bootstrap-423 pre,.factory-bootstrap-423 samp{font-size:1em}.factory-bootstrap-423 pre{white-space:pre-wrap}.factory-bootstrap-423 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-423 sub,.factory-bootstrap-423 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-423 sup{top:-.5em}.factory-bootstrap-423 sub{bottom:-.25em}.factory-bootstrap-423 img{border:0}.factory-bootstrap-423 svg:not(:root){overflow:hidden}.factory-bootstrap-423 figure{margin:0}.factory-bootstrap-423 button,.factory-bootstrap-423 input,.factory-bootstrap-423 select,.factory-bootstrap-423 textarea{margin:0}.factory-bootstrap-423 button,.factory-bootstrap-423 select{text-transform:none}.factory-bootstrap-423 select{padding-right:4px!important}.factory-bootstrap-423 button,.factory-bootstrap-423 input[type=reset],.factory-bootstrap-423 input[type=submit],html .factory-bootstrap-423 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-423 button[disabled],html .factory-bootstrap-423 input[disabled]{cursor:default}.factory-bootstrap-423 input[type=checkbox],.factory-bootstrap-423 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-423 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-423 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-423 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-423 button::-moz-focus-inner,.factory-bootstrap-423 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-423 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-423 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-423 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-423 a,.factory-bootstrap-423 a:visited{text-decoration:underline}.factory-bootstrap-423 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-423 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-423 a[href^="javascript:"]:after,.factory-bootstrap-423 a[href^="#"]:after{content:""}.factory-bootstrap-423 blockquote,.factory-bootstrap-423 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-423 thead{display:table-header-group}.factory-bootstrap-423 img,.factory-bootstrap-423 tr{page-break-inside:avoid}.factory-bootstrap-423 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-423 h2,.factory-bootstrap-423 h3,.factory-bootstrap-423 p{orphans:3;widows:3}.factory-bootstrap-423 h2,.factory-bootstrap-423 h3{page-break-after:avoid}.factory-bootstrap-423 select{background:#fff!important}.factory-bootstrap-423 .navbar{display:none}.factory-bootstrap-423 .table td,.factory-bootstrap-423 .table th{background-color:#fff!important}.factory-bootstrap-423 .btn>.caret,.factory-bootstrap-423 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-423 .label{border:1px solid #000}.factory-bootstrap-423 .table{border-collapse:collapse!important}.factory-bootstrap-423 .table-bordered td,.factory-bootstrap-423 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-423 *,.factory-bootstrap-423 :after,.factory-bootstrap-423 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-423{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-423 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-423 button,.factory-bootstrap-423 input,.factory-bootstrap-423 select,.factory-bootstrap-423 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-423 img{vertical-align:middle}.factory-bootstrap-423 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-423 .img-rounded{border-radius:6px}.factory-bootstrap-423 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-423 .img-circle{border-radius:50%}.factory-bootstrap-423 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-423 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-423 .h1,.factory-bootstrap-423 .h2,.factory-bootstrap-423 .h3,.factory-bootstrap-423 .h4,.factory-bootstrap-423 .h5,.factory-bootstrap-423 .h6,.factory-bootstrap-423 h1,.factory-bootstrap-423 h2,.factory-bootstrap-423 h3,.factory-bootstrap-423 h4,.factory-bootstrap-423 h5,.factory-bootstrap-423 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-423 .h1 .small,.factory-bootstrap-423 .h1 small,.factory-bootstrap-423 .h2 .small,.factory-bootstrap-423 .h2 small,.factory-bootstrap-423 .h3 .small,.factory-bootstrap-423 .h3 small,.factory-bootstrap-423 .h4 .small,.factory-bootstrap-423 .h4 small,.factory-bootstrap-423 .h5 .small,.factory-bootstrap-423 .h5 small,.factory-bootstrap-423 .h6 .small,.factory-bootstrap-423 .h6 small,.factory-bootstrap-423 h1 .small,.factory-bootstrap-423 h1 small,.factory-bootstrap-423 h2 .small,.factory-bootstrap-423 h2 small,.factory-bootstrap-423 h3 .small,.factory-bootstrap-423 h3 small,.factory-bootstrap-423 h4 .small,.factory-bootstrap-423 h4 small,.factory-bootstrap-423 h5 .small,.factory-bootstrap-423 h5 small,.factory-bootstrap-423 h6 .small,.factory-bootstrap-423 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-423 h1,.factory-bootstrap-423 h2,.factory-bootstrap-423 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-423 h1 .small,.factory-bootstrap-423 h1 small,.factory-bootstrap-423 h2 .small,.factory-bootstrap-423 h2 small,.factory-bootstrap-423 h3 .small,.factory-bootstrap-423 h3 small{font-size:65%}.factory-bootstrap-423 h4,.factory-bootstrap-423 h5,.factory-bootstrap-423 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-423 h4 .small,.factory-bootstrap-423 h4 small,.factory-bootstrap-423 h5 .small,.factory-bootstrap-423 h5 small,.factory-bootstrap-423 h6 .small,.factory-bootstrap-423 h6 small{font-size:75%}.factory-bootstrap-423 .h1,.factory-bootstrap-423 h1{font-size:36px}.factory-bootstrap-423 .h2,.factory-bootstrap-423 h2{font-size:30px}.factory-bootstrap-423 .h3,.factory-bootstrap-423 h3{font-size:24px}.factory-bootstrap-423 .h4,.factory-bootstrap-423 h4{font-size:18px}.factory-bootstrap-423 .h5,.factory-bootstrap-423 h5{font-size:14px}.factory-bootstrap-423 .h6,.factory-bootstrap-423 h6{font-size:12px}.factory-bootstrap-423 p{margin:0 0 10px}.factory-bootstrap-423 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-423 .small,.factory-bootstrap-423 small{font-size:85%}.factory-bootstrap-423 cite{font-style:normal}.factory-bootstrap-423 .text-muted{color:#999}.factory-bootstrap-423 .text-primary{color:#428bca}.factory-bootstrap-423 .text-primary:hover{color:#3071a9}.factory-bootstrap-423 .text-warning{color:#8a6d3b}.factory-bootstrap-423 .text-warning:hover{color:#66512c}.factory-bootstrap-423 .text-danger{color:#a94442}.factory-bootstrap-423 .text-danger:hover{color:#843534}.factory-bootstrap-423 .text-success{color:#3c763d}.factory-bootstrap-423 .text-success:hover{color:#2b542c}.factory-bootstrap-423 .text-info{color:#31708f}.factory-bootstrap-423 .text-info:hover{color:#245269}.factory-bootstrap-423 .text-left{text-align:left}.factory-bootstrap-423 .text-right{text-align:right}.factory-bootstrap-423 .text-center{text-align:center}.factory-bootstrap-423 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-423 ol,.factory-bootstrap-423 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-423 ol ol,.factory-bootstrap-423 ol ul,.factory-bootstrap-423 ul ol,.factory-bootstrap-423 ul ul{margin-bottom:0}.factory-bootstrap-423 .list-inline,.factory-bootstrap-423 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-423 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-423 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-423 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-423 dd,.factory-bootstrap-423 dt{line-height:1.428571429}.factory-bootstrap-423 dt{font-weight:700}.factory-bootstrap-423 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-423 abbr[data-original-title],.factory-bootstrap-423 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-423 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-423 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-423 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-423 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-423 blockquote .small,.factory-bootstrap-423 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-423 blockquote .small:before,.factory-bootstrap-423 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-423 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-423 blockquote.pull-right .small,.factory-bootstrap-423 blockquote.pull-right p,.factory-bootstrap-423 blockquote.pull-right small{text-align:right}.factory-bootstrap-423 blockquote.pull-right .small:before,.factory-bootstrap-423 blockquote.pull-right small:before{content:''}.factory-bootstrap-423 blockquote.pull-right .small:after,.factory-bootstrap-423 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-423 blockquote:after,.factory-bootstrap-423 blockquote:before{content:""}.factory-bootstrap-423 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-423 code,.factory-bootstrap-423 kbd,.factory-bootstrap-423 pre,.factory-bootstrap-423 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-423 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-423 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-423 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-423 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-423 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-423 .container:after,.factory-bootstrap-423 .container:before{display:table;content:" "}.factory-bootstrap-423 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-423 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-423 .row:after,.factory-bootstrap-423 .row:before{display:table;content:" "}.factory-bootstrap-423 .row:after{clear:both}.factory-bootstrap-423 .col-lg-1,.factory-bootstrap-423 .col-lg-10,.factory-bootstrap-423 .col-lg-11,.factory-bootstrap-423 .col-lg-12,.factory-bootstrap-423 .col-lg-2,.factory-bootstrap-423 .col-lg-3,.factory-bootstrap-423 .col-lg-4,.factory-bootstrap-423 .col-lg-5,.factory-bootstrap-423 .col-lg-6,.factory-bootstrap-423 .col-lg-7,.factory-bootstrap-423 .col-lg-8,.factory-bootstrap-423 .col-lg-9,.factory-bootstrap-423 .col-md-1,.factory-bootstrap-423 .col-md-10,.factory-bootstrap-423 .col-md-11,.factory-bootstrap-423 .col-md-12,.factory-bootstrap-423 .col-md-2,.factory-bootstrap-423 .col-md-3,.factory-bootstrap-423 .col-md-4,.factory-bootstrap-423 .col-md-5,.factory-bootstrap-423 .col-md-6,.factory-bootstrap-423 .col-md-7,.factory-bootstrap-423 .col-md-8,.factory-bootstrap-423 .col-md-9,.factory-bootstrap-423 .col-sm-1,.factory-bootstrap-423 .col-sm-10,.factory-bootstrap-423 .col-sm-11,.factory-bootstrap-423 .col-sm-12,.factory-bootstrap-423 .col-sm-2,.factory-bootstrap-423 .col-sm-3,.factory-bootstrap-423 .col-sm-4,.factory-bootstrap-423 .col-sm-5,.factory-bootstrap-423 .col-sm-6,.factory-bootstrap-423 .col-sm-7,.factory-bootstrap-423 .col-sm-8,.factory-bootstrap-423 .col-sm-9,.factory-bootstrap-423 .col-xs-1,.factory-bootstrap-423 .col-xs-10,.factory-bootstrap-423 .col-xs-11,.factory-bootstrap-423 .col-xs-12,.factory-bootstrap-423 .col-xs-2,.factory-bootstrap-423 .col-xs-3,.factory-bootstrap-423 .col-xs-4,.factory-bootstrap-423 .col-xs-5,.factory-bootstrap-423 .col-xs-6,.factory-bootstrap-423 .col-xs-7,.factory-bootstrap-423 .col-xs-8,.factory-bootstrap-423 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-423 .col-xs-1,.factory-bootstrap-423 .col-xs-10,.factory-bootstrap-423 .col-xs-11,.factory-bootstrap-423 .col-xs-12,.factory-bootstrap-423 .col-xs-2,.factory-bootstrap-423 .col-xs-3,.factory-bootstrap-423 .col-xs-4,.factory-bootstrap-423 .col-xs-5,.factory-bootstrap-423 .col-xs-6,.factory-bootstrap-423 .col-xs-7,.factory-bootstrap-423 .col-xs-8,.factory-bootstrap-423 .col-xs-9{float:left}.factory-bootstrap-423 .col-xs-12{width:100%}.factory-bootstrap-423 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-423 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-423 .col-xs-9{width:75%}.factory-bootstrap-423 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-423 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-423 .col-xs-6{width:50%}.factory-bootstrap-423 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-423 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-423 .col-xs-3{width:25%}.factory-bootstrap-423 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-423 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-423 .col-xs-pull-12{right:100%}.factory-bootstrap-423 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-423 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-423 .col-xs-pull-9{right:75%}.factory-bootstrap-423 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-423 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-423 .col-xs-pull-6{right:50%}.factory-bootstrap-423 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-423 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-423 .col-xs-pull-3{right:25%}.factory-bootstrap-423 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-423 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-423 .col-xs-pull-0{right:0}.factory-bootstrap-423 .col-xs-push-12{left:100%}.factory-bootstrap-423 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-423 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-423 .col-xs-push-9{left:75%}.factory-bootstrap-423 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-423 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-423 .col-xs-push-6{left:50%}.factory-bootstrap-423 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-423 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-423 .col-xs-push-3{left:25%}.factory-bootstrap-423 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-423 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-423 .col-xs-push-0{left:0}.factory-bootstrap-423 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-423 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-423 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-423 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-423 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-423 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-423 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-423 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-423 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-423 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-423 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-423 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-423 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-423 table{max-width:100%;background-color:transparent}.factory-bootstrap-423 th{text-align:left}.factory-bootstrap-423 .table{width:100%;margin-bottom:20px}.factory-bootstrap-423 .table>tbody>tr>td,.factory-bootstrap-423 .table>tbody>tr>th,.factory-bootstrap-423 .table>tfoot>tr>td,.factory-bootstrap-423 .table>tfoot>tr>th,.factory-bootstrap-423 .table>thead>tr>td,.factory-bootstrap-423 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-423 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-423 .table>caption+thead>tr:first-child>td,.factory-bootstrap-423 .table>caption+thead>tr:first-child>th,.factory-bootstrap-423 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-423 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-423 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-423 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-423 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-423 .table .table{background-color:#fff}.factory-bootstrap-423 .table-condensed>tbody>tr>td,.factory-bootstrap-423 .table-condensed>tbody>tr>th,.factory-bootstrap-423 .table-condensed>tfoot>tr>td,.factory-bootstrap-423 .table-condensed>tfoot>tr>th,.factory-bootstrap-423 .table-condensed>thead>tr>td,.factory-bootstrap-423 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-423 .table-bordered,.factory-bootstrap-423 .table-bordered>tbody>tr>td,.factory-bootstrap-423 .table-bordered>tbody>tr>th,.factory-bootstrap-423 .table-bordered>tfoot>tr>td,.factory-bootstrap-423 .table-bordered>tfoot>tr>th,.factory-bootstrap-423 .table-bordered>thead>tr>td,.factory-bootstrap-423 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-423 .table-bordered>thead>tr>td,.factory-bootstrap-423 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-423 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-423 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-423 .table-hover>tbody>tr:hover>td,.factory-bootstrap-423 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-423 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-423 table td[class*=col-],.factory-bootstrap-423 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-423 .table>tbody>.active>td,.factory-bootstrap-423 .table>tbody>.active>th,.factory-bootstrap-423 .table>tbody>tr>.active,.factory-bootstrap-423 .table>tfoot>.active>td,.factory-bootstrap-423 .table>tfoot>.active>th,.factory-bootstrap-423 .table>tfoot>tr>.active,.factory-bootstrap-423 .table>thead>.active>td,.factory-bootstrap-423 .table>thead>.active>th,.factory-bootstrap-423 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-423 .table-hover>tbody>.active:hover>td,.factory-bootstrap-423 .table-hover>tbody>.active:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-423 .table>tbody>.success>td,.factory-bootstrap-423 .table>tbody>.success>th,.factory-bootstrap-423 .table>tbody>tr>.success,.factory-bootstrap-423 .table>tfoot>.success>td,.factory-bootstrap-423 .table>tfoot>.success>th,.factory-bootstrap-423 .table>tfoot>tr>.success,.factory-bootstrap-423 .table>thead>.success>td,.factory-bootstrap-423 .table>thead>.success>th,.factory-bootstrap-423 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-423 .table-hover>tbody>.success:hover>td,.factory-bootstrap-423 .table-hover>tbody>.success:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-423 .table>tbody>.danger>td,.factory-bootstrap-423 .table>tbody>.danger>th,.factory-bootstrap-423 .table>tbody>tr>.danger,.factory-bootstrap-423 .table>tfoot>.danger>td,.factory-bootstrap-423 .table>tfoot>.danger>th,.factory-bootstrap-423 .table>tfoot>tr>.danger,.factory-bootstrap-423 .table>thead>.danger>td,.factory-bootstrap-423 .table>thead>.danger>th,.factory-bootstrap-423 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-423 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-423 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-423 .table>tbody>.warning>td,.factory-bootstrap-423 .table>tbody>.warning>th,.factory-bootstrap-423 .table>tbody>tr>.warning,.factory-bootstrap-423 .table>tfoot>.warning>td,.factory-bootstrap-423 .table>tfoot>.warning>th,.factory-bootstrap-423 .table>tfoot>tr>.warning,.factory-bootstrap-423 .table>thead>.warning>td,.factory-bootstrap-423 .table>thead>.warning>th,.factory-bootstrap-423 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-423 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-423 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-423 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-423 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-423 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-423 input[type=checkbox],.factory-bootstrap-423 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-423 input[type=file]{display:block}.factory-bootstrap-423 select[multiple],.factory-bootstrap-423 select[size]{height:auto}.factory-bootstrap-423 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-423 input[type=checkbox]:focus,.factory-bootstrap-423 input[type=file]:focus,.factory-bootstrap-423 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-423 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-423 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-423 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-423 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-423 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-423 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-423 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-423 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-423 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-423 .form-control[disabled],.factory-bootstrap-423 .form-control[readonly],.factory-bootstrap-423 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-423 textarea.form-control{height:auto}.factory-bootstrap-423 .form-group{margin-bottom:15px}.factory-bootstrap-423 .checkbox,.factory-bootstrap-423 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-423 .checkbox label,.factory-bootstrap-423 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-423 .checkbox input[type=checkbox],.factory-bootstrap-423 .checkbox-inline input[type=checkbox],.factory-bootstrap-423 .radio input[type=radio],.factory-bootstrap-423 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-423 .checkbox+.checkbox,.factory-bootstrap-423 .radio+.radio{margin-top:-5px}.factory-bootstrap-423 .checkbox-inline,.factory-bootstrap-423 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-423 .checkbox-inline+.checkbox-inline,.factory-bootstrap-423 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-423 .checkbox-inline[disabled],.factory-bootstrap-423 .checkbox[disabled],.factory-bootstrap-423 .radio-inline[disabled],.factory-bootstrap-423 .radio[disabled],.factory-bootstrap-423 fieldset[disabled] .checkbox,.factory-bootstrap-423 fieldset[disabled] .checkbox-inline,.factory-bootstrap-423 fieldset[disabled] .radio,.factory-bootstrap-423 fieldset[disabled] .radio-inline,.factory-bootstrap-423 fieldset[disabled] input[type=checkbox],.factory-bootstrap-423 fieldset[disabled] input[type=radio],.factory-bootstrap-423 input[type=checkbox][disabled],.factory-bootstrap-423 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-423 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-423 textarea.input-sm{height:auto}.factory-bootstrap-423 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-423 textarea.input-lg{height:auto}.factory-bootstrap-423 .has-warning .checkbox,.factory-bootstrap-423 .has-warning .checkbox-inline,.factory-bootstrap-423 .has-warning .control-label,.factory-bootstrap-423 .has-warning .help-block,.factory-bootstrap-423 .has-warning .radio,.factory-bootstrap-423 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-423 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-423 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-423 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-423 .has-error .checkbox,.factory-bootstrap-423 .has-error .checkbox-inline,.factory-bootstrap-423 .has-error .control-label,.factory-bootstrap-423 .has-error .help-block,.factory-bootstrap-423 .has-error .radio,.factory-bootstrap-423 .has-error .radio-inline{color:#a94442}.factory-bootstrap-423 .controls{display:block}.factory-bootstrap-423 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-423 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-423 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-423 .has-success .checkbox,.factory-bootstrap-423 .has-success .checkbox-inline,.factory-bootstrap-423 .has-success .control-label,.factory-bootstrap-423 .has-success .help-block,.factory-bootstrap-423 .has-success .radio,.factory-bootstrap-423 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-423 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-423 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-423 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-423 .form-control-static{margin-bottom:0}.factory-bootstrap-423 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-423 .form-horizontal .checkbox,.factory-bootstrap-423 .form-horizontal .checkbox-inline,.factory-bootstrap-423 .form-horizontal .control-label,.factory-bootstrap-423 .form-horizontal .radio,.factory-bootstrap-423 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-423 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-423 .form-horizontal .checkbox,.factory-bootstrap-423 .form-horizontal .radio{min-height:27px}.factory-bootstrap-423 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-423 .form-horizontal .form-group:after,.factory-bootstrap-423 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-423 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-423 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-423 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-423 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-423 .btn{text-decoration:none}.factory-bootstrap-423 .btn:focus,.factory-bootstrap-423 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-423 .btn.disabled,.factory-bootstrap-423 .btn[disabled],.factory-bootstrap-423 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .btn-default:focus,.factory-bootstrap-423 .btn-default:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-423 .btn-default.disabled,.factory-bootstrap-423 .btn-default.disabled.active,.factory-bootstrap-423 .btn-default.disabled:active,.factory-bootstrap-423 .btn-default.disabled:focus,.factory-bootstrap-423 .btn-default.disabled:hover,.factory-bootstrap-423 .btn-default[disabled],.factory-bootstrap-423 .btn-default[disabled].active,.factory-bootstrap-423 .btn-default[disabled]:active,.factory-bootstrap-423 .btn-default[disabled]:focus,.factory-bootstrap-423 .btn-default[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-default,.factory-bootstrap-423 fieldset[disabled] .btn-default.active,.factory-bootstrap-423 fieldset[disabled] .btn-default:active,.factory-bootstrap-423 fieldset[disabled] .btn-default:focus,.factory-bootstrap-423 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-423 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-423 .btn-primary.disabled,.factory-bootstrap-423 .btn-primary.disabled.active,.factory-bootstrap-423 .btn-primary.disabled:active,.factory-bootstrap-423 .btn-primary.disabled:focus,.factory-bootstrap-423 .btn-primary.disabled:hover,.factory-bootstrap-423 .btn-primary[disabled],.factory-bootstrap-423 .btn-primary[disabled].active,.factory-bootstrap-423 .btn-primary[disabled]:active,.factory-bootstrap-423 .btn-primary[disabled]:focus,.factory-bootstrap-423 .btn-primary[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-primary,.factory-bootstrap-423 fieldset[disabled] .btn-primary.active,.factory-bootstrap-423 fieldset[disabled] .btn-primary:active,.factory-bootstrap-423 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-423 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-423 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-423 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active,.factory-bootstrap-423 .btn-warning:focus,.factory-bootstrap-423 .btn-warning:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-423 .btn-warning.disabled,.factory-bootstrap-423 .btn-warning.disabled.active,.factory-bootstrap-423 .btn-warning.disabled:active,.factory-bootstrap-423 .btn-warning.disabled:focus,.factory-bootstrap-423 .btn-warning.disabled:hover,.factory-bootstrap-423 .btn-warning[disabled],.factory-bootstrap-423 .btn-warning[disabled].active,.factory-bootstrap-423 .btn-warning[disabled]:active,.factory-bootstrap-423 .btn-warning[disabled]:focus,.factory-bootstrap-423 .btn-warning[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-warning,.factory-bootstrap-423 fieldset[disabled] .btn-warning.active,.factory-bootstrap-423 fieldset[disabled] .btn-warning:active,.factory-bootstrap-423 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-423 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-423 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-423 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .btn-success:focus,.factory-bootstrap-423 .btn-success:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-423 .btn-success.disabled,.factory-bootstrap-423 .btn-success.disabled.active,.factory-bootstrap-423 .btn-success.disabled:active,.factory-bootstrap-423 .btn-success.disabled:focus,.factory-bootstrap-423 .btn-success.disabled:hover,.factory-bootstrap-423 .btn-success[disabled],.factory-bootstrap-423 .btn-success[disabled].active,.factory-bootstrap-423 .btn-success[disabled]:active,.factory-bootstrap-423 .btn-success[disabled]:focus,.factory-bootstrap-423 .btn-success[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-success,.factory-bootstrap-423 fieldset[disabled] .btn-success.active,.factory-bootstrap-423 fieldset[disabled] .btn-success:active,.factory-bootstrap-423 fieldset[disabled] .btn-success:focus,.factory-bootstrap-423 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-423 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-423 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .btn-info:focus,.factory-bootstrap-423 .btn-info:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-423 .btn-info.disabled,.factory-bootstrap-423 .btn-info.disabled.active,.factory-bootstrap-423 .btn-info.disabled:active,.factory-bootstrap-423 .btn-info.disabled:focus,.factory-bootstrap-423 .btn-info.disabled:hover,.factory-bootstrap-423 .btn-info[disabled],.factory-bootstrap-423 .btn-info[disabled].active,.factory-bootstrap-423 .btn-info[disabled]:active,.factory-bootstrap-423 .btn-info[disabled]:focus,.factory-bootstrap-423 .btn-info[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-info,.factory-bootstrap-423 fieldset[disabled] .btn-info.active,.factory-bootstrap-423 fieldset[disabled] .btn-info:active,.factory-bootstrap-423 fieldset[disabled] .btn-info:focus,.factory-bootstrap-423 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-423 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-423 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-423 .btn-link,.factory-bootstrap-423 .btn-link:active,.factory-bootstrap-423 .btn-link[disabled],.factory-bootstrap-423 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-link,.factory-bootstrap-423 .btn-link:active,.factory-bootstrap-423 .btn-link:focus,.factory-bootstrap-423 .btn-link:hover{border-color:transparent}.factory-bootstrap-423 .btn-link:focus,.factory-bootstrap-423 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-423 .btn-link[disabled]:focus,.factory-bootstrap-423 .btn-link[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-link:focus,.factory-bootstrap-423 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-423 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-423 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-423 input[type=button].btn-block,.factory-bootstrap-423 input[type=reset].btn-block,.factory-bootstrap-423 input[type=submit].btn-block{width:100%}.factory-bootstrap-423 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-423 .fade.in{opacity:1}.factory-bootstrap-423 .collapse{display:none}.factory-bootstrap-423 .collapse.in{display:block}.factory-bootstrap-423 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-423 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-423 .glyphicon:empty{width:1em}.factory-bootstrap-423 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-423 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-423 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-423 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-423 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-423 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-423 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-423 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-423 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-423 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-423 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-423 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-423 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-423 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-423 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-423 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-423 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-423 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-423 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-423 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-423 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-423 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-423 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-423 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-423 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-423 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-423 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-423 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-423 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-423 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-423 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-423 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-423 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-423 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-423 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-423 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-423 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-423 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-423 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-423 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-423 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-423 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-423 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-423 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-423 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-423 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-423 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-423 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-423 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-423 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-423 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-423 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-423 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-423 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-423 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-423 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-423 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-423 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-423 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-423 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-423 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-423 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-423 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-423 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-423 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-423 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-423 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-423 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-423 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-423 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-423 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-423 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-423 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-423 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-423 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-423 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-423 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-423 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-423 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-423 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-423 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-423 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-423 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-423 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-423 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-423 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-423 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-423 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-423 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-423 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-423 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-423 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-423 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-423 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-423 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-423 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-423 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-423 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-423 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-423 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-423 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-423 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-423 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-423 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-423 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-423 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-423 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-423 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-423 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-423 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-423 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-423 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-423 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-423 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-423 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-423 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-423 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-423 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-423 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-423 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-423 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-423 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-423 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-423 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-423 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-423 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-423 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-423 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-423 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-423 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-423 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-423 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-423 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-423 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-423 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-423 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-423 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-423 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-423 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-423 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-423 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-423 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-423 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-423 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-423 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-423 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-423 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-423 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-423 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-423 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-423 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-423 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-423 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-423 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-423 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-423 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-423 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-423 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-423 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-423 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-423 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-423 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-423 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-423 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-423 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-423 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-423 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-423 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-423 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-423 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-423 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-423 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-423 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-423 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-423 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-423 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-423 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-423 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-423 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-423 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-423 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-423 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-423 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-423 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-423 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-423 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-423 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-423 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-423 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-423 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-423 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-423 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-423 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-423 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-423 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-423 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-423 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-423 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-423 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-423 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-423 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-423 .dropdown{position:relative}.factory-bootstrap-423 .dropdown-toggle:focus{outline:0}.factory-bootstrap-423 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-423 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-423 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-423 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-423 .dropdown-menu>li>a:focus,.factory-bootstrap-423 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-423 .dropdown-menu>.active>a,.factory-bootstrap-423 .dropdown-menu>.active>a:focus,.factory-bootstrap-423 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-423 .dropdown-menu>.disabled>a,.factory-bootstrap-423 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-423 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-423 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-423 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-423 .open>.dropdown-menu{display:block}.factory-bootstrap-423 .open>a{outline:0}.factory-bootstrap-423 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-423 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-423 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-423 .dropup .caret,.factory-bootstrap-423 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-423 .dropup .dropdown-menu,.factory-bootstrap-423 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-423 .btn-group,.factory-bootstrap-423 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-423 .btn-group-vertical>.btn,.factory-bootstrap-423 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-423 .btn-group-vertical>.btn.active,.factory-bootstrap-423 .btn-group-vertical>.btn:active,.factory-bootstrap-423 .btn-group-vertical>.btn:focus,.factory-bootstrap-423 .btn-group-vertical>.btn:hover,.factory-bootstrap-423 .btn-group>.btn.active,.factory-bootstrap-423 .btn-group>.btn:active,.factory-bootstrap-423 .btn-group>.btn:focus,.factory-bootstrap-423 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-423 .btn-group-vertical>.btn:focus,.factory-bootstrap-423 .btn-group>.btn:focus{outline:0}.factory-bootstrap-423 .btn-group .btn+.btn,.factory-bootstrap-423 .btn-group .btn+.btn-group,.factory-bootstrap-423 .btn-group .btn-group+.btn,.factory-bootstrap-423 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-423 .btn-toolbar:after,.factory-bootstrap-423 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-423 .btn-toolbar:after{clear:both}.factory-bootstrap-423 .btn-toolbar .btn-group{float:left}.factory-bootstrap-423 .btn-toolbar>.btn+.btn,.factory-bootstrap-423 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-423 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-423 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-423 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-423 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-423 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-423 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group>.btn-group{float:left}.factory-bootstrap-423 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-423 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-423 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group .dropdown-toggle:active,.factory-bootstrap-423 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-423 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-423 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-423 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-423 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-423 .btn .caret{margin-left:0}.factory-bootstrap-423 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-423 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-423 .btn-group-vertical>.btn,.factory-bootstrap-423 .btn-group-vertical>.btn-group,.factory-bootstrap-423 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-423 .btn-group-vertical>.btn-group:after,.factory-bootstrap-423 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-423 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-423 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-423 .btn-group-vertical>.btn+.btn,.factory-bootstrap-423 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-423 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-423 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-423 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-423 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-423 .btn-group-justified>.btn,.factory-bootstrap-423 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-423 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-423 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-423 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-423 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-423 .input-group-lg>.form-control,.factory-bootstrap-423 .input-group-lg>.input-group-addon,.factory-bootstrap-423 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 select.input-group-lg>.form-control,.factory-bootstrap-423 select.input-group-lg>.input-group-addon,.factory-bootstrap-423 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-423 textarea.input-group-lg>.form-control,.factory-bootstrap-423 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-423 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-423 .input-group-sm>.form-control,.factory-bootstrap-423 .input-group-sm>.input-group-addon,.factory-bootstrap-423 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 select.input-group-sm>.form-control,.factory-bootstrap-423 select.input-group-sm>.input-group-addon,.factory-bootstrap-423 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-423 textarea.input-group-sm>.form-control,.factory-bootstrap-423 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-423 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-423 .input-group .form-control,.factory-bootstrap-423 .input-group-addon,.factory-bootstrap-423 .input-group-btn{display:table-cell}.factory-bootstrap-423 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-423 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-423 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-423 .input-group-addon,.factory-bootstrap-423 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-423 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-423 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-423 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-423 .input-group-addon input[type=checkbox],.factory-bootstrap-423 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-423 .input-group .form-control:first-child,.factory-bootstrap-423 .input-group-addon:first-child,.factory-bootstrap-423 .input-group-btn:first-child>.btn,.factory-bootstrap-423 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-423 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .input-group-addon:first-child{border-right:0}.factory-bootstrap-423 .input-group .form-control:last-child,.factory-bootstrap-423 .input-group-addon:last-child,.factory-bootstrap-423 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-423 .input-group-btn:last-child>.btn,.factory-bootstrap-423 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .input-group-addon:last-child{border-left:0}.factory-bootstrap-423 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-423 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-423 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-423 .input-group-btn>.btn{position:relative}.factory-bootstrap-423 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-423 .input-group-btn>.btn:active,.factory-bootstrap-423 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-423 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-423 .nav:after,.factory-bootstrap-423 .nav:before{display:table;content:" "}.factory-bootstrap-423 .nav:after{clear:both}.factory-bootstrap-423 .nav>li{position:relative;display:block}.factory-bootstrap-423 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-423 .nav>li>a:focus,.factory-bootstrap-423 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-423 .nav>li.disabled>a{color:#999}.factory-bootstrap-423 .nav>li.disabled>a:focus,.factory-bootstrap-423 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-423 .nav .open>a,.factory-bootstrap-423 .nav .open>a:focus,.factory-bootstrap-423 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-423 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-423 .nav>li>a>img{max-width:none}.factory-bootstrap-423 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-423 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-423 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-423 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-423 .nav-tabs>li.active>a,.factory-bootstrap-423 .nav-tabs>li.active>a:focus,.factory-bootstrap-423 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-423 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-423 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-423 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-423 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-423 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-423 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-423 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-423 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-423 .nav-pills>li{float:left}.factory-bootstrap-423 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-423 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-423 .nav-pills>li.active>a,.factory-bootstrap-423 .nav-pills>li.active>a:focus,.factory-bootstrap-423 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-423 .nav-stacked>li{float:none}.factory-bootstrap-423 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-423 .nav-justified{width:100%}.factory-bootstrap-423 .nav-justified>li{float:none}.factory-bootstrap-423 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-423 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-423 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-423 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-423 .nav-tabs-justified>.active>a,.factory-bootstrap-423 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-423 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-423 .tab-content>.tab-pane{display:none}.factory-bootstrap-423 .tab-content>.active{display:block}.factory-bootstrap-423 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-423 .navbar:after,.factory-bootstrap-423 .navbar:before{display:table;content:" "}.factory-bootstrap-423 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-423 .navbar-header:after,.factory-bootstrap-423 .navbar-header:before{display:table;content:" "}.factory-bootstrap-423 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-423 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-423 .navbar-collapse:after,.factory-bootstrap-423 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-423 .navbar-collapse:after{clear:both}.factory-bootstrap-423 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-423 .container>.navbar-collapse,.factory-bootstrap-423 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-423 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-423 .navbar-fixed-bottom,.factory-bootstrap-423 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-423 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-423 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-423 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-423 .navbar-brand:focus,.factory-bootstrap-423 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-423 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-423 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-423 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-423 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-423 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-423 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-423 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-423 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-423 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-423 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-423 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-423 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-423 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-423 .navbar-default .navbar-brand:focus,.factory-bootstrap-423 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-nav>li>a,.factory-bootstrap-423 .navbar-default .navbar-text{color:#777}.factory-bootstrap-423 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-423 .navbar-default .navbar-toggle:focus,.factory-bootstrap-423 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-423 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-423 .navbar-default .navbar-collapse,.factory-bootstrap-423 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-423 .navbar-default .navbar-link{color:#777}.factory-bootstrap-423 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-423 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-423 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-423 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-423 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-423 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-423 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-423 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-423 .navbar-inverse .navbar-collapse,.factory-bootstrap-423 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-423 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-423 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-423 .breadcrumb>li{display:inline-block}.factory-bootstrap-423 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-423 .breadcrumb>.active{color:#999}.factory-bootstrap-423 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-423 .pagination>li{display:inline}.factory-bootstrap-423 .pagination>li>a,.factory-bootstrap-423 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-423 .pagination>li:first-child>a,.factory-bootstrap-423 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-423 .pagination>li:last-child>a,.factory-bootstrap-423 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-423 .pagination>li>a:focus,.factory-bootstrap-423 .pagination>li>a:hover,.factory-bootstrap-423 .pagination>li>span:focus,.factory-bootstrap-423 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-423 .pagination>.disabled>a,.factory-bootstrap-423 .pagination>.disabled>a:focus,.factory-bootstrap-423 .pagination>.disabled>a:hover,.factory-bootstrap-423 .pagination>.disabled>span,.factory-bootstrap-423 .pagination>.disabled>span:focus,.factory-bootstrap-423 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-423 .pagination-lg>li>a,.factory-bootstrap-423 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-423 .pagination-lg>li:first-child>a,.factory-bootstrap-423 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-423 .pagination-lg>li:last-child>a,.factory-bootstrap-423 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-423 .pagination-sm>li>a,.factory-bootstrap-423 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-423 .pagination-sm>li:first-child>a,.factory-bootstrap-423 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-423 .pagination-sm>li:last-child>a,.factory-bootstrap-423 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-423 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-423 .pager:after,.factory-bootstrap-423 .pager:before{display:table;content:" "}.factory-bootstrap-423 .pager:after{clear:both}.factory-bootstrap-423 .pager li{display:inline}.factory-bootstrap-423 .pager li>a,.factory-bootstrap-423 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-423 .pager li>a:focus,.factory-bootstrap-423 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-423 .pager .next>a,.factory-bootstrap-423 .pager .next>span{float:right}.factory-bootstrap-423 .pager .previous>a,.factory-bootstrap-423 .pager .previous>span{float:left}.factory-bootstrap-423 .pager .disabled>a,.factory-bootstrap-423 .pager .disabled>a:focus,.factory-bootstrap-423 .pager .disabled>a:hover,.factory-bootstrap-423 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-423 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-423 .label[href]:focus,.factory-bootstrap-423 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-423 .label:empty{display:none}.factory-bootstrap-423 .btn .label{position:relative;top:-1px}.factory-bootstrap-423 .label-default{background-color:#999}.factory-bootstrap-423 .label-default[href]:focus,.factory-bootstrap-423 .label-default[href]:hover{background-color:gray}.factory-bootstrap-423 .label-primary{background-color:#428bca}.factory-bootstrap-423 .label-primary[href]:focus,.factory-bootstrap-423 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-423 .label-success{background-color:#5cb85c}.factory-bootstrap-423 .label-success[href]:focus,.factory-bootstrap-423 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-423 .label-info{background-color:#5bc0de}.factory-bootstrap-423 .label-info[href]:focus,.factory-bootstrap-423 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-423 .label-warning{background-color:#f0ad4e}.factory-bootstrap-423 .label-warning[href]:focus,.factory-bootstrap-423 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-423 .label-danger{background-color:#d9534f}.factory-bootstrap-423 .label-danger[href]:focus,.factory-bootstrap-423 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-423 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-423 .badge:empty{display:none}.factory-bootstrap-423 .btn .badge{position:relative;top:-1px}.factory-bootstrap-423 a.badge:focus,.factory-bootstrap-423 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-423 .nav-pills>.active>a>.badge,.factory-bootstrap-423 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-423 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-423 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-423 .jumbotron .h1,.factory-bootstrap-423 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-423 .jumbotron p{line-height:1.4}.factory-bootstrap-423 .container .jumbotron{border-radius:6px}.factory-bootstrap-423 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-423 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-423 .thumbnail a>img,.factory-bootstrap-423 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-423 a.thumbnail.active,.factory-bootstrap-423 a.thumbnail:focus,.factory-bootstrap-423 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-423 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-423 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-423 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-423 .alert .alert-link{font-weight:700}.factory-bootstrap-423 .alert>p,.factory-bootstrap-423 .alert>ul{margin-bottom:0}.factory-bootstrap-423 .alert>p+p{margin-top:5px}.factory-bootstrap-423 .alert-dismissable{padding-right:35px}.factory-bootstrap-423 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-423 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-423 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-423 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-423 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-423 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-423 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-423 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-423 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-423 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-423 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-423 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-423 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-423 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-423 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-423 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-423 .media,.factory-bootstrap-423 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-423 .media,.factory-bootstrap-423 .media .media{margin-top:15px}.factory-bootstrap-423 .media:first-child{margin-top:0}.factory-bootstrap-423 .media-object{display:block}.factory-bootstrap-423 .media-heading{margin:0 0 5px}.factory-bootstrap-423 .media>.pull-left{margin-right:10px}.factory-bootstrap-423 .media>.pull-right{margin-left:10px}.factory-bootstrap-423 .media-list{padding-left:0;list-style:none}.factory-bootstrap-423 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-423 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-423 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-423 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-423 .list-group-item>.badge{float:right}.factory-bootstrap-423 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-423 a.list-group-item{color:#555}.factory-bootstrap-423 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-423 a.list-group-item:focus,.factory-bootstrap-423 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-423 a.list-group-item.active,.factory-bootstrap-423 a.list-group-item.active:focus,.factory-bootstrap-423 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-423 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-423 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-423 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-423 a.list-group-item.active .list-group-item-text,.factory-bootstrap-423 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-423 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-423 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-423 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-423 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-423 .panel-body{padding:15px}.factory-bootstrap-423 .panel-body:after,.factory-bootstrap-423 .panel-body:before{display:table;content:" "}.factory-bootstrap-423 .panel-body:after{clear:both}.factory-bootstrap-423 .panel>.list-group{margin-bottom:0}.factory-bootstrap-423 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-423 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-423 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-423 .panel>.table,.factory-bootstrap-423 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-423 .panel>.panel-body+.table,.factory-bootstrap-423 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-423 .panel>.table>tbody:first-child td,.factory-bootstrap-423 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-423 .panel>.table-bordered,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-423 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-423 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-423 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-423 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-423 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-423 .panel-title>a{color:inherit}.factory-bootstrap-423 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-423 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-423 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-423 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-423 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-423 .panel-group .panel-footer{border-top:0}.factory-bootstrap-423 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-423 .panel-default{border-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-423 .panel-primary{border-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-423 .panel-success{border-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-423 .panel-warning{border-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-423 .panel-danger{border-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-423 .panel-info{border-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-423 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-423 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-423 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-423 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-423 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-423 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-423 .close:focus,.factory-bootstrap-423 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-423 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-423 .modal-open{overflow:hidden}.factory-bootstrap-423 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-423 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-423 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-423 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-423 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-423 .modal-backdrop,.factory-bootstrap-423-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-423 .modal-backdrop.fade,.factory-bootstrap-423-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-423 .modal-backdrop.in,.factory-bootstrap-423-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-423 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-423 .modal-header .close{margin-top:-2px}.factory-bootstrap-423 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-423 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-423 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-423 .modal-footer:after,.factory-bootstrap-423 .modal-footer:before{display:table;content:" "}.factory-bootstrap-423 .modal-footer:after{clear:both}.factory-bootstrap-423 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-423 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-423 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-423 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-423 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-423 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-423 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-423 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-423 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-423 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-423 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-423 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-423 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-423 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-423 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-423 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-423 .popover.top{margin-top:-10px}.factory-bootstrap-423 .popover.right{margin-left:10px}.factory-bootstrap-423 .popover.bottom{margin-top:10px}.factory-bootstrap-423 .popover.left{margin-left:-10px}.factory-bootstrap-423 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-423 .popover-content{padding:9px 14px}.factory-bootstrap-423 .popover .arrow,.factory-bootstrap-423 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-423 .popover .arrow{border-width:11px}.factory-bootstrap-423 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-423 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-423 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-423 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-423 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-423 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-423 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-423 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-423 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-423 .carousel{position:relative}.factory-bootstrap-423 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-423 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-423 .carousel-inner>.item>a>img,.factory-bootstrap-423 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-423 .carousel-inner>.active,.factory-bootstrap-423 .carousel-inner>.next,.factory-bootstrap-423 .carousel-inner>.prev{display:block}.factory-bootstrap-423 .carousel-inner>.active{left:0}.factory-bootstrap-423 .carousel-inner>.next,.factory-bootstrap-423 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-423 .carousel-inner>.next{left:100%}.factory-bootstrap-423 .carousel-inner>.prev{left:-100%}.factory-bootstrap-423 .carousel-inner>.next.left,.factory-bootstrap-423 .carousel-inner>.prev.right{left:0}.factory-bootstrap-423 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-423 .carousel-inner>.active.right{left:100%}.factory-bootstrap-423 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-423 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-423 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-423 .carousel-control:focus,.factory-bootstrap-423 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-423 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-423 .carousel-control .icon-next,.factory-bootstrap-423 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-423 .carousel-control .icon-prev{left:50%}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-423 .carousel-control .icon-next{right:50%}.factory-bootstrap-423 .carousel-control .icon-next,.factory-bootstrap-423 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-423 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-423 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-423 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-423 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-423 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-423 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-423 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-423 .clearfix:after,.factory-bootstrap-423 .clearfix:before{display:table;content:" "}.factory-bootstrap-423 .clearfix:after{clear:both}.factory-bootstrap-423 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-423 .pull-right{float:right!important}.factory-bootstrap-423 .pull-left{float:left!important}.factory-bootstrap-423 .hide{display:none!important}.factory-bootstrap-423 .show{display:block!important}.factory-bootstrap-423 .invisible{visibility:hidden}.factory-bootstrap-423 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-423 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-423 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-423 .visible-lg,.factory-bootstrap-423 .visible-md,.factory-bootstrap-423 .visible-sm,.factory-bootstrap-423 .visible-xs,.factory-bootstrap-423 td.visible-lg,.factory-bootstrap-423 td.visible-md,.factory-bootstrap-423 td.visible-sm,.factory-bootstrap-423 td.visible-xs,.factory-bootstrap-423 th.visible-lg,.factory-bootstrap-423 th.visible-md,.factory-bootstrap-423 th.visible-sm,.factory-bootstrap-423 th.visible-xs,.factory-bootstrap-423 tr.visible-lg,.factory-bootstrap-423 tr.visible-md,.factory-bootstrap-423 tr.visible-sm,.factory-bootstrap-423 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-423 .hidden-xs{display:block!important}.factory-bootstrap-423 table.hidden-xs{display:table}.factory-bootstrap-423 tr.hidden-xs{display:table-row!important}.factory-bootstrap-423 td.hidden-xs,.factory-bootstrap-423 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-423 .hidden-sm{display:block!important}.factory-bootstrap-423 table.hidden-sm{display:table}.factory-bootstrap-423 tr.hidden-sm{display:table-row!important}.factory-bootstrap-423 td.hidden-sm,.factory-bootstrap-423 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-423 .hidden-md{display:block!important}.factory-bootstrap-423 table.hidden-md{display:table}.factory-bootstrap-423 tr.hidden-md{display:table-row!important}.factory-bootstrap-423 td.hidden-md,.factory-bootstrap-423 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-423 .hidden-lg{display:block!important}.factory-bootstrap-423 table.hidden-lg{display:table}.factory-bootstrap-423 tr.hidden-lg{display:table-row!important}.factory-bootstrap-423 td.hidden-lg,.factory-bootstrap-423 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-423 .hidden-lg.hidden-xs,.factory-bootstrap-423 td.hidden-lg.hidden-xs,.factory-bootstrap-423 th.hidden-lg.hidden-xs,.factory-bootstrap-423 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-423 .hidden-lg.hidden-sm,.factory-bootstrap-423 td.hidden-lg.hidden-sm,.factory-bootstrap-423 th.hidden-lg.hidden-sm,.factory-bootstrap-423 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-423 .hidden-lg.hidden-md,.factory-bootstrap-423 td.hidden-lg.hidden-md,.factory-bootstrap-423 th.hidden-lg.hidden-md,.factory-bootstrap-423 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-423 .hidden-lg,.factory-bootstrap-423 td.hidden-lg,.factory-bootstrap-423 th.hidden-lg,.factory-bootstrap-423 tr.hidden-lg{display:none!important}}.factory-bootstrap-423 .visible-print,.factory-bootstrap-423 td.visible-print,.factory-bootstrap-423 th.visible-print,.factory-bootstrap-423 tr.visible-print{display:none!important}@media print{.factory-bootstrap-423 .visible-print{display:block!important}.factory-bootstrap-423 table.visible-print{display:table}.factory-bootstrap-423 tr.visible-print{display:table-row!important}.factory-bootstrap-423 td.visible-print,.factory-bootstrap-423 th.visible-print{display:table-cell!important}.factory-bootstrap-423 .hidden-print,.factory-bootstrap-423 td.hidden-print,.factory-bootstrap-423 th.hidden-print,.factory-bootstrap-423 tr.hidden-print{display:none!important}}/*!
12
  * Factory Default Bootstrap Theme
13
  *
14
  * The code is based on Bootstrap v2.1.1
@@ -22,4 +22,4 @@
22
  *
23
  * @package factory-bootstrap
24
  * @since 1.0.0
25
- */.factory-bootstrap-423 .btn-danger,.factory-bootstrap-423 .btn-default,.factory-bootstrap-423 .btn-info,.factory-bootstrap-423 .btn-primary,.factory-bootstrap-423 .btn-success,.factory-bootstrap-423 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-423 .btn-danger.active,.factory-bootstrap-423 .btn-danger:active,.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-423 .btn.active,.factory-bootstrap-423 .btn:active{background-image:none}.factory-bootstrap-423 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-423 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-423 .btn-gold:focus,.factory-bootstrap-423 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-423 .btn-gold.active,.factory-bootstrap-423 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-423 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-423 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-423 .btn-success:focus,.factory-bootstrap-423 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-423 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-423 .btn-warning:focus,.factory-bootstrap-423 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-423 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-423 .btn-danger.active,.factory-bootstrap-423 .btn-danger:active,.factory-bootstrap-423 .btn-danger:focus,.factory-bootstrap-423 .btn-danger:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-423 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-423 .btn-info:focus,.factory-bootstrap-423 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-423 .img-thumbnail,.factory-bootstrap-423 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-423 .dropdown-menu>li>a:focus,.factory-bootstrap-423 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-423 .dropdown-menu>.active>a,.factory-bootstrap-423 .dropdown-menu>.active>a:focus,.factory-bootstrap-423 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-423 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-423 .navbar-brand,.factory-bootstrap-423 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-423 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-423 .navbar-inverse .navbar-brand,.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .navbar-fixed-bottom,.factory-bootstrap-423 .navbar-fixed-top,.factory-bootstrap-423 .navbar-static-top{border-radius:0}.factory-bootstrap-423 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-423 .alert .actions{padding-top:10px}.factory-bootstrap-423 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-423 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-423 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-423 .alert-normal,.factory-bootstrap-423 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-423 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-423 .alert-danger a:not(.btn),.factory-bootstrap-423 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-423 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-423 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-423 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-423 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-423 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-423 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-423 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-423 .list-group-item.active,.factory-bootstrap-423 .list-group-item.active:focus,.factory-bootstrap-423 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-423 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-423 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-423 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-423 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-423 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-423 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-423 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-423 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-423 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-423 .factory-hidden{display:none}.factory-bootstrap-423 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 article,.factory-bootstrap-436 aside,.factory-bootstrap-436 details,.factory-bootstrap-436 figcaption,.factory-bootstrap-436 figure,.factory-bootstrap-436 footer,.factory-bootstrap-436 header,.factory-bootstrap-436 hgroup,.factory-bootstrap-436 main,.factory-bootstrap-436 nav,.factory-bootstrap-436 section,.factory-bootstrap-436 summary{display:block}.factory-bootstrap-436 audio,.factory-bootstrap-436 canvas,.factory-bootstrap-436 video{display:inline-block}.factory-bootstrap-436 audio:not([controls]){display:none;height:0}.factory-bootstrap-436 [hidden],.factory-bootstrap-436 template{display:none}.factory-bootstrap-436 body{margin:0}.factory-bootstrap-436 a{background:0 0}.factory-bootstrap-436 a:focus{outline:thin dotted}.factory-bootstrap-436 a:active,.factory-bootstrap-436 a:hover{outline:0}.factory-bootstrap-436 h1{margin:.67em 0}.factory-bootstrap-436 b,.factory-bootstrap-436 strong{font-weight:700}.factory-bootstrap-436 dfn{font-style:italic}.factory-bootstrap-436 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-436 mark{color:#000;background:#ff0}.factory-bootstrap-436 code,.factory-bootstrap-436 kbd,.factory-bootstrap-436 pre,.factory-bootstrap-436 samp{font-size:1em}.factory-bootstrap-436 pre{white-space:pre-wrap}.factory-bootstrap-436 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-436 sub,.factory-bootstrap-436 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-436 sup{top:-.5em}.factory-bootstrap-436 sub{bottom:-.25em}.factory-bootstrap-436 img{border:0}.factory-bootstrap-436 svg:not(:root){overflow:hidden}.factory-bootstrap-436 figure{margin:0}.factory-bootstrap-436 button,.factory-bootstrap-436 input,.factory-bootstrap-436 select,.factory-bootstrap-436 textarea{margin:0}.factory-bootstrap-436 button,.factory-bootstrap-436 select{text-transform:none}.factory-bootstrap-436 select{padding-right:4px!important}.factory-bootstrap-436 button,.factory-bootstrap-436 input[type=reset],.factory-bootstrap-436 input[type=submit],html .factory-bootstrap-436 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-436 button[disabled],html .factory-bootstrap-436 input[disabled]{cursor:default}.factory-bootstrap-436 input[type=checkbox],.factory-bootstrap-436 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-436 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-436 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-436 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-436 button::-moz-focus-inner,.factory-bootstrap-436 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-436 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-436 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-436 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-436 a,.factory-bootstrap-436 a:visited{text-decoration:underline}.factory-bootstrap-436 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-436 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-436 a[href^="javascript:"]:after,.factory-bootstrap-436 a[href^="#"]:after{content:""}.factory-bootstrap-436 blockquote,.factory-bootstrap-436 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-436 thead{display:table-header-group}.factory-bootstrap-436 img,.factory-bootstrap-436 tr{page-break-inside:avoid}.factory-bootstrap-436 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-436 h2,.factory-bootstrap-436 h3,.factory-bootstrap-436 p{orphans:3;widows:3}.factory-bootstrap-436 h2,.factory-bootstrap-436 h3{page-break-after:avoid}.factory-bootstrap-436 select{background:#fff!important}.factory-bootstrap-436 .navbar{display:none}.factory-bootstrap-436 .table td,.factory-bootstrap-436 .table th{background-color:#fff!important}.factory-bootstrap-436 .btn>.caret,.factory-bootstrap-436 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-436 .label{border:1px solid #000}.factory-bootstrap-436 .table{border-collapse:collapse!important}.factory-bootstrap-436 .table-bordered td,.factory-bootstrap-436 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-436 *,.factory-bootstrap-436 :after,.factory-bootstrap-436 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-436{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-436 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-436 button,.factory-bootstrap-436 input,.factory-bootstrap-436 select,.factory-bootstrap-436 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-436 img{vertical-align:middle}.factory-bootstrap-436 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-436 .img-rounded{border-radius:6px}.factory-bootstrap-436 .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-436 .img-circle{border-radius:50%}.factory-bootstrap-436 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-436 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-436 .h1,.factory-bootstrap-436 .h2,.factory-bootstrap-436 .h3,.factory-bootstrap-436 .h4,.factory-bootstrap-436 .h5,.factory-bootstrap-436 .h6,.factory-bootstrap-436 h1,.factory-bootstrap-436 h2,.factory-bootstrap-436 h3,.factory-bootstrap-436 h4,.factory-bootstrap-436 h5,.factory-bootstrap-436 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-436 .h1 .small,.factory-bootstrap-436 .h1 small,.factory-bootstrap-436 .h2 .small,.factory-bootstrap-436 .h2 small,.factory-bootstrap-436 .h3 .small,.factory-bootstrap-436 .h3 small,.factory-bootstrap-436 .h4 .small,.factory-bootstrap-436 .h4 small,.factory-bootstrap-436 .h5 .small,.factory-bootstrap-436 .h5 small,.factory-bootstrap-436 .h6 .small,.factory-bootstrap-436 .h6 small,.factory-bootstrap-436 h1 .small,.factory-bootstrap-436 h1 small,.factory-bootstrap-436 h2 .small,.factory-bootstrap-436 h2 small,.factory-bootstrap-436 h3 .small,.factory-bootstrap-436 h3 small,.factory-bootstrap-436 h4 .small,.factory-bootstrap-436 h4 small,.factory-bootstrap-436 h5 .small,.factory-bootstrap-436 h5 small,.factory-bootstrap-436 h6 .small,.factory-bootstrap-436 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-436 h1,.factory-bootstrap-436 h2,.factory-bootstrap-436 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-436 h1 .small,.factory-bootstrap-436 h1 small,.factory-bootstrap-436 h2 .small,.factory-bootstrap-436 h2 small,.factory-bootstrap-436 h3 .small,.factory-bootstrap-436 h3 small{font-size:65%}.factory-bootstrap-436 h4,.factory-bootstrap-436 h5,.factory-bootstrap-436 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-436 h4 .small,.factory-bootstrap-436 h4 small,.factory-bootstrap-436 h5 .small,.factory-bootstrap-436 h5 small,.factory-bootstrap-436 h6 .small,.factory-bootstrap-436 h6 small{font-size:75%}.factory-bootstrap-436 .h1,.factory-bootstrap-436 h1{font-size:36px}.factory-bootstrap-436 .h2,.factory-bootstrap-436 h2{font-size:30px}.factory-bootstrap-436 .h3,.factory-bootstrap-436 h3{font-size:24px}.factory-bootstrap-436 .h4,.factory-bootstrap-436 h4{font-size:18px}.factory-bootstrap-436 .h5,.factory-bootstrap-436 h5{font-size:14px}.factory-bootstrap-436 .h6,.factory-bootstrap-436 h6{font-size:12px}.factory-bootstrap-436 p{margin:0 0 10px}.factory-bootstrap-436 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-436 .small,.factory-bootstrap-436 small{font-size:85%}.factory-bootstrap-436 cite{font-style:normal}.factory-bootstrap-436 .text-muted{color:#999}.factory-bootstrap-436 .text-primary{color:#428bca}.factory-bootstrap-436 .text-primary:hover{color:#3071a9}.factory-bootstrap-436 .text-warning{color:#8a6d3b}.factory-bootstrap-436 .text-warning:hover{color:#66512c}.factory-bootstrap-436 .text-danger{color:#a94442}.factory-bootstrap-436 .text-danger:hover{color:#843534}.factory-bootstrap-436 .text-success{color:#3c763d}.factory-bootstrap-436 .text-success:hover{color:#2b542c}.factory-bootstrap-436 .text-info{color:#31708f}.factory-bootstrap-436 .text-info:hover{color:#245269}.factory-bootstrap-436 .text-left{text-align:left}.factory-bootstrap-436 .text-right{text-align:right}.factory-bootstrap-436 .text-center{text-align:center}.factory-bootstrap-436 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-436 ol,.factory-bootstrap-436 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-436 ol ol,.factory-bootstrap-436 ol ul,.factory-bootstrap-436 ul ol,.factory-bootstrap-436 ul ul{margin-bottom:0}.factory-bootstrap-436 .list-inline,.factory-bootstrap-436 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-436 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-436 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-436 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-436 dd,.factory-bootstrap-436 dt{line-height:1.428571429}.factory-bootstrap-436 dt{font-weight:700}.factory-bootstrap-436 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-436 abbr[data-original-title],.factory-bootstrap-436 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-436 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-436 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-436 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-436 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-436 blockquote .small,.factory-bootstrap-436 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-436 blockquote .small:before,.factory-bootstrap-436 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-436 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-436 blockquote.pull-right .small,.factory-bootstrap-436 blockquote.pull-right p,.factory-bootstrap-436 blockquote.pull-right small{text-align:right}.factory-bootstrap-436 blockquote.pull-right .small:before,.factory-bootstrap-436 blockquote.pull-right small:before{content:''}.factory-bootstrap-436 blockquote.pull-right .small:after,.factory-bootstrap-436 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-436 blockquote:after,.factory-bootstrap-436 blockquote:before{content:""}.factory-bootstrap-436 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-436 code,.factory-bootstrap-436 kbd,.factory-bootstrap-436 pre,.factory-bootstrap-436 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-436 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-436 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-436 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-436 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-436 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-436 .container:after,.factory-bootstrap-436 .container:before{display:table;content:" "}.factory-bootstrap-436 .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-436 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-436 .row:after,.factory-bootstrap-436 .row:before{display:table;content:" "}.factory-bootstrap-436 .row:after{clear:both}.factory-bootstrap-436 .col-lg-1,.factory-bootstrap-436 .col-lg-10,.factory-bootstrap-436 .col-lg-11,.factory-bootstrap-436 .col-lg-12,.factory-bootstrap-436 .col-lg-2,.factory-bootstrap-436 .col-lg-3,.factory-bootstrap-436 .col-lg-4,.factory-bootstrap-436 .col-lg-5,.factory-bootstrap-436 .col-lg-6,.factory-bootstrap-436 .col-lg-7,.factory-bootstrap-436 .col-lg-8,.factory-bootstrap-436 .col-lg-9,.factory-bootstrap-436 .col-md-1,.factory-bootstrap-436 .col-md-10,.factory-bootstrap-436 .col-md-11,.factory-bootstrap-436 .col-md-12,.factory-bootstrap-436 .col-md-2,.factory-bootstrap-436 .col-md-3,.factory-bootstrap-436 .col-md-4,.factory-bootstrap-436 .col-md-5,.factory-bootstrap-436 .col-md-6,.factory-bootstrap-436 .col-md-7,.factory-bootstrap-436 .col-md-8,.factory-bootstrap-436 .col-md-9,.factory-bootstrap-436 .col-sm-1,.factory-bootstrap-436 .col-sm-10,.factory-bootstrap-436 .col-sm-11,.factory-bootstrap-436 .col-sm-12,.factory-bootstrap-436 .col-sm-2,.factory-bootstrap-436 .col-sm-3,.factory-bootstrap-436 .col-sm-4,.factory-bootstrap-436 .col-sm-5,.factory-bootstrap-436 .col-sm-6,.factory-bootstrap-436 .col-sm-7,.factory-bootstrap-436 .col-sm-8,.factory-bootstrap-436 .col-sm-9,.factory-bootstrap-436 .col-xs-1,.factory-bootstrap-436 .col-xs-10,.factory-bootstrap-436 .col-xs-11,.factory-bootstrap-436 .col-xs-12,.factory-bootstrap-436 .col-xs-2,.factory-bootstrap-436 .col-xs-3,.factory-bootstrap-436 .col-xs-4,.factory-bootstrap-436 .col-xs-5,.factory-bootstrap-436 .col-xs-6,.factory-bootstrap-436 .col-xs-7,.factory-bootstrap-436 .col-xs-8,.factory-bootstrap-436 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-436 .col-xs-1,.factory-bootstrap-436 .col-xs-10,.factory-bootstrap-436 .col-xs-11,.factory-bootstrap-436 .col-xs-12,.factory-bootstrap-436 .col-xs-2,.factory-bootstrap-436 .col-xs-3,.factory-bootstrap-436 .col-xs-4,.factory-bootstrap-436 .col-xs-5,.factory-bootstrap-436 .col-xs-6,.factory-bootstrap-436 .col-xs-7,.factory-bootstrap-436 .col-xs-8,.factory-bootstrap-436 .col-xs-9{float:left}.factory-bootstrap-436 .col-xs-12{width:100%}.factory-bootstrap-436 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-436 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-436 .col-xs-9{width:75%}.factory-bootstrap-436 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-436 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-436 .col-xs-6{width:50%}.factory-bootstrap-436 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-436 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-436 .col-xs-3{width:25%}.factory-bootstrap-436 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-436 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-436 .col-xs-pull-12{right:100%}.factory-bootstrap-436 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-436 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-436 .col-xs-pull-9{right:75%}.factory-bootstrap-436 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-436 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-436 .col-xs-pull-6{right:50%}.factory-bootstrap-436 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-436 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-436 .col-xs-pull-3{right:25%}.factory-bootstrap-436 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-436 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-436 .col-xs-pull-0{right:0}.factory-bootstrap-436 .col-xs-push-12{left:100%}.factory-bootstrap-436 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-436 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-436 .col-xs-push-9{left:75%}.factory-bootstrap-436 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-436 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-436 .col-xs-push-6{left:50%}.factory-bootstrap-436 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-436 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-436 .col-xs-push-3{left:25%}.factory-bootstrap-436 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-436 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-436 .col-xs-push-0{left:0}.factory-bootstrap-436 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-436 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-436 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-436 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-436 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-436 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-436 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-436 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-436 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-436 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-436 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-436 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-436 .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-436 table{max-width:100%;background-color:transparent}.factory-bootstrap-436 th{text-align:left}.factory-bootstrap-436 .table{width:100%;margin-bottom:20px}.factory-bootstrap-436 .table>tbody>tr>td,.factory-bootstrap-436 .table>tbody>tr>th,.factory-bootstrap-436 .table>tfoot>tr>td,.factory-bootstrap-436 .table>tfoot>tr>th,.factory-bootstrap-436 .table>thead>tr>td,.factory-bootstrap-436 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-436 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-436 .table>caption+thead>tr:first-child>td,.factory-bootstrap-436 .table>caption+thead>tr:first-child>th,.factory-bootstrap-436 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-436 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-436 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-436 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-436 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-436 .table .table{background-color:#fff}.factory-bootstrap-436 .table-condensed>tbody>tr>td,.factory-bootstrap-436 .table-condensed>tbody>tr>th,.factory-bootstrap-436 .table-condensed>tfoot>tr>td,.factory-bootstrap-436 .table-condensed>tfoot>tr>th,.factory-bootstrap-436 .table-condensed>thead>tr>td,.factory-bootstrap-436 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-436 .table-bordered,.factory-bootstrap-436 .table-bordered>tbody>tr>td,.factory-bootstrap-436 .table-bordered>tbody>tr>th,.factory-bootstrap-436 .table-bordered>tfoot>tr>td,.factory-bootstrap-436 .table-bordered>tfoot>tr>th,.factory-bootstrap-436 .table-bordered>thead>tr>td,.factory-bootstrap-436 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-436 .table-bordered>thead>tr>td,.factory-bootstrap-436 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-436 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-436 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-436 .table-hover>tbody>tr:hover>td,.factory-bootstrap-436 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-436 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-436 table td[class*=col-],.factory-bootstrap-436 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-436 .table>tbody>.active>td,.factory-bootstrap-436 .table>tbody>.active>th,.factory-bootstrap-436 .table>tbody>tr>.active,.factory-bootstrap-436 .table>tfoot>.active>td,.factory-bootstrap-436 .table>tfoot>.active>th,.factory-bootstrap-436 .table>tfoot>tr>.active,.factory-bootstrap-436 .table>thead>.active>td,.factory-bootstrap-436 .table>thead>.active>th,.factory-bootstrap-436 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-436 .table-hover>tbody>.active:hover>td,.factory-bootstrap-436 .table-hover>tbody>.active:hover>th,.factory-bootstrap-436 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-436 .table>tbody>.success>td,.factory-bootstrap-436 .table>tbody>.success>th,.factory-bootstrap-436 .table>tbody>tr>.success,.factory-bootstrap-436 .table>tfoot>.success>td,.factory-bootstrap-436 .table>tfoot>.success>th,.factory-bootstrap-436 .table>tfoot>tr>.success,.factory-bootstrap-436 .table>thead>.success>td,.factory-bootstrap-436 .table>thead>.success>th,.factory-bootstrap-436 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-436 .table-hover>tbody>.success:hover>td,.factory-bootstrap-436 .table-hover>tbody>.success:hover>th,.factory-bootstrap-436 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-436 .table>tbody>.danger>td,.factory-bootstrap-436 .table>tbody>.danger>th,.factory-bootstrap-436 .table>tbody>tr>.danger,.factory-bootstrap-436 .table>tfoot>.danger>td,.factory-bootstrap-436 .table>tfoot>.danger>th,.factory-bootstrap-436 .table>tfoot>tr>.danger,.factory-bootstrap-436 .table>thead>.danger>td,.factory-bootstrap-436 .table>thead>.danger>th,.factory-bootstrap-436 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-436 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-436 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-436 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-436 .table>tbody>.warning>td,.factory-bootstrap-436 .table>tbody>.warning>th,.factory-bootstrap-436 .table>tbody>tr>.warning,.factory-bootstrap-436 .table>tfoot>.warning>td,.factory-bootstrap-436 .table>tfoot>.warning>th,.factory-bootstrap-436 .table>tfoot>tr>.warning,.factory-bootstrap-436 .table>thead>.warning>td,.factory-bootstrap-436 .table>thead>.warning>th,.factory-bootstrap-436 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-436 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-436 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-436 .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-436 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-436 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-436 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-436 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-436 input[type=checkbox],.factory-bootstrap-436 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-436 input[type=file]{display:block}.factory-bootstrap-436 select[multiple],.factory-bootstrap-436 select[size]{height:auto}.factory-bootstrap-436 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-436 input[type=checkbox]:focus,.factory-bootstrap-436 input[type=file]:focus,.factory-bootstrap-436 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-436 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-436 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-436 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-436 .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-436 .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-436 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-436 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-436 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-436 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-436 .form-control[disabled],.factory-bootstrap-436 .form-control[readonly],.factory-bootstrap-436 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-436 textarea.form-control{height:auto}.factory-bootstrap-436 .form-group{margin-bottom:15px}.factory-bootstrap-436 .checkbox,.factory-bootstrap-436 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-436 .checkbox label,.factory-bootstrap-436 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-436 .checkbox input[type=checkbox],.factory-bootstrap-436 .checkbox-inline input[type=checkbox],.factory-bootstrap-436 .radio input[type=radio],.factory-bootstrap-436 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-436 .checkbox+.checkbox,.factory-bootstrap-436 .radio+.radio{margin-top:-5px}.factory-bootstrap-436 .checkbox-inline,.factory-bootstrap-436 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-436 .checkbox-inline+.checkbox-inline,.factory-bootstrap-436 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-436 .checkbox-inline[disabled],.factory-bootstrap-436 .checkbox[disabled],.factory-bootstrap-436 .radio-inline[disabled],.factory-bootstrap-436 .radio[disabled],.factory-bootstrap-436 fieldset[disabled] .checkbox,.factory-bootstrap-436 fieldset[disabled] .checkbox-inline,.factory-bootstrap-436 fieldset[disabled] .radio,.factory-bootstrap-436 fieldset[disabled] .radio-inline,.factory-bootstrap-436 fieldset[disabled] input[type=checkbox],.factory-bootstrap-436 fieldset[disabled] input[type=radio],.factory-bootstrap-436 input[type=checkbox][disabled],.factory-bootstrap-436 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-436 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-436 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-436 textarea.input-sm{height:auto}.factory-bootstrap-436 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-436 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-436 textarea.input-lg{height:auto}.factory-bootstrap-436 .has-warning .checkbox,.factory-bootstrap-436 .has-warning .checkbox-inline,.factory-bootstrap-436 .has-warning .control-label,.factory-bootstrap-436 .has-warning .help-block,.factory-bootstrap-436 .has-warning .radio,.factory-bootstrap-436 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-436 .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-436 .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-436 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-436 .has-error .checkbox,.factory-bootstrap-436 .has-error .checkbox-inline,.factory-bootstrap-436 .has-error .control-label,.factory-bootstrap-436 .has-error .help-block,.factory-bootstrap-436 .has-error .radio,.factory-bootstrap-436 .has-error .radio-inline{color:#a94442}.factory-bootstrap-436 .controls{display:block}.factory-bootstrap-436 .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-436 .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-436 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-436 .has-success .checkbox,.factory-bootstrap-436 .has-success .checkbox-inline,.factory-bootstrap-436 .has-success .control-label,.factory-bootstrap-436 .has-success .help-block,.factory-bootstrap-436 .has-success .radio,.factory-bootstrap-436 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-436 .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-436 .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-436 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-436 .form-control-static{margin-bottom:0}.factory-bootstrap-436 .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-436 .form-horizontal .checkbox,.factory-bootstrap-436 .form-horizontal .checkbox-inline,.factory-bootstrap-436 .form-horizontal .control-label,.factory-bootstrap-436 .form-horizontal .radio,.factory-bootstrap-436 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-436 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-436 .form-horizontal .checkbox,.factory-bootstrap-436 .form-horizontal .radio{min-height:27px}.factory-bootstrap-436 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-436 .form-horizontal .form-group:after,.factory-bootstrap-436 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-436 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-436 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-436 .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-436 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-436 .btn{text-decoration:none}.factory-bootstrap-436 .btn:focus,.factory-bootstrap-436 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-436 .btn.disabled,.factory-bootstrap-436 .btn[disabled],.factory-bootstrap-436 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-436 .btn-default.active,.factory-bootstrap-436 .btn-default:active,.factory-bootstrap-436 .btn-default:focus,.factory-bootstrap-436 .btn-default:hover,.factory-bootstrap-436 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-436 .btn-default.active,.factory-bootstrap-436 .btn-default:active,.factory-bootstrap-436 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-436 .btn-default.disabled,.factory-bootstrap-436 .btn-default.disabled.active,.factory-bootstrap-436 .btn-default.disabled:active,.factory-bootstrap-436 .btn-default.disabled:focus,.factory-bootstrap-436 .btn-default.disabled:hover,.factory-bootstrap-436 .btn-default[disabled],.factory-bootstrap-436 .btn-default[disabled].active,.factory-bootstrap-436 .btn-default[disabled]:active,.factory-bootstrap-436 .btn-default[disabled]:focus,.factory-bootstrap-436 .btn-default[disabled]:hover,.factory-bootstrap-436 fieldset[disabled] .btn-default,.factory-bootstrap-436 fieldset[disabled] .btn-default.active,.factory-bootstrap-436 fieldset[disabled] .btn-default:active,.factory-bootstrap-436 fieldset[disabled] .btn-default:focus,.factory-bootstrap-436 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-436 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-436 .btn-primary.active,.factory-bootstrap-436 .btn-primary:active,.factory-bootstrap-436 .btn-primary:focus,.factory-bootstrap-436 .btn-primary:hover,.factory-bootstrap-436 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-436 .btn-primary.active,.factory-bootstrap-436 .btn-primary:active,.factory-bootstrap-436 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-436 .btn-primary.disabled,.factory-bootstrap-436 .btn-primary.disabled.active,.factory-bootstrap-436 .btn-primary.disabled:active,.factory-bootstrap-436 .btn-primary.disabled:focus,.factory-bootstrap-436 .btn-primary.disabled:hover,.factory-bootstrap-436 .btn-primary[disabled],.factory-bootstrap-436 .btn-primary[disabled].active,.factory-bootstrap-436 .btn-primary[disabled]:active,.factory-bootstrap-436 .btn-primary[disabled]:focus,.factory-bootstrap-436 .btn-primary[disabled]:hover,.factory-bootstrap-436 fieldset[disabled] .btn-primary,.factory-bootstrap-436 fieldset[disabled] .btn-primary.active,.factory-bootstrap-436 fieldset[disabled] .btn-primary:active,.factory-bootstrap-436 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-436 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-436 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-436 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-436 .btn-warning.active,.factory-bootstrap-436 .btn-warning:active,.factory-bootstrap-436 .btn-warning:focus,.factory-bootstrap-436 .btn-warning:hover,.factory-bootstrap-436 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-436 .btn-warning.active,.factory-bootstrap-436 .btn-warning:active,.factory-bootstrap-436 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-436 .btn-warning.disabled,.factory-bootstrap-436 .btn-warning.disabled.active,.factory-bootstrap-436 .btn-warning.disabled:active,.factory-bootstrap-436 .btn-warning.disabled:focus,.factory-bootstrap-436 .btn-warning.disabled:hover,.factory-bootstrap-436 .btn-warning[disabled],.factory-bootstrap-436 .btn-warning[disabled].active,.factory-bootstrap-436 .btn-warning[disabled]:active,.factory-bootstrap-436 .btn-warning[disabled]:focus,.factory-bootstrap-436 .btn-warning[disabled]:hover,.factory-bootstrap-436 fieldset[disabled] .btn-warning,.factory-bootstrap-436 fieldset[disabled] .btn-warning.active,.factory-bootstrap-436 fieldset[disabled] .btn-warning:active,.factory-bootstrap-436 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-436 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-436 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-436 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-436 .btn-success.active,.factory-bootstrap-436 .btn-success:active,.factory-bootstrap-436 .btn-success:focus,.factory-bootstrap-436 .btn-success:hover,.factory-bootstrap-436 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-436 .btn-success.active,.factory-bootstrap-436 .btn-success:active,.factory-bootstrap-436 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-436 .btn-success.disabled,.factory-bootstrap-436 .btn-success.disabled.active,.factory-bootstrap-436 .btn-success.disabled:active,.factory-bootstrap-436 .btn-success.disabled:focus,.factory-bootstrap-436 .btn-success.disabled:hover,.factory-bootstrap-436 .btn-success[disabled],.factory-bootstrap-436 .btn-success[disabled].active,.factory-bootstrap-436 .btn-success[disabled]:active,.factory-bootstrap-436 .btn-success[disabled]:focus,.factory-bootstrap-436 .btn-success[disabled]:hover,.factory-bootstrap-436 fieldset[disabled] .btn-success,.factory-bootstrap-436 fieldset[disabled] .btn-success.active,.factory-bootstrap-436 fieldset[disabled] .btn-success:active,.factory-bootstrap-436 fieldset[disabled] .btn-success:focus,.factory-bootstrap-436 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-436 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-436 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-436 .btn-info.active,.factory-bootstrap-436 .btn-info:active,.factory-bootstrap-436 .btn-info:focus,.factory-bootstrap-436 .btn-info:hover,.factory-bootstrap-436 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-436 .btn-info.active,.factory-bootstrap-436 .btn-info:active,.factory-bootstrap-436 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-436 .btn-info.disabled,.factory-bootstrap-436 .btn-info.disabled.active,.factory-bootstrap-436 .btn-info.disabled:active,.factory-bootstrap-436 .btn-info.disabled:focus,.factory-bootstrap-436 .btn-info.disabled:hover,.factory-bootstrap-436 .btn-info[disabled],.factory-bootstrap-436 .btn-info[disabled].active,.factory-bootstrap-436 .btn-info[disabled]:active,.factory-bootstrap-436 .btn-info[disabled]:focus,.factory-bootstrap-436 .btn-info[disabled]:hover,.factory-bootstrap-436 fieldset[disabled] .btn-info,.factory-bootstrap-436 fieldset[disabled] .btn-info.active,.factory-bootstrap-436 fieldset[disabled] .btn-info:active,.factory-bootstrap-436 fieldset[disabled] .btn-info:focus,.factory-bootstrap-436 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-436 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-436 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-436 .btn-link,.factory-bootstrap-436 .btn-link:active,.factory-bootstrap-436 .btn-link[disabled],.factory-bootstrap-436 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-436 .btn-link,.factory-bootstrap-436 .btn-link:active,.factory-bootstrap-436 .btn-link:focus,.factory-bootstrap-436 .btn-link:hover{border-color:transparent}.factory-bootstrap-436 .btn-link:focus,.factory-bootstrap-436 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-436 .btn-link[disabled]:focus,.factory-bootstrap-436 .btn-link[disabled]:hover,.factory-bootstrap-436 fieldset[disabled] .btn-link:focus,.factory-bootstrap-436 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-436 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-436 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-436 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-436 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-436 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-436 input[type=button].btn-block,.factory-bootstrap-436 input[type=reset].btn-block,.factory-bootstrap-436 input[type=submit].btn-block{width:100%}.factory-bootstrap-436 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-436 .fade.in{opacity:1}.factory-bootstrap-436 .collapse{display:none}.factory-bootstrap-436 .collapse.in{display:block}.factory-bootstrap-436 .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-436 .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-436 .glyphicon:empty{width:1em}.factory-bootstrap-436 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-436 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-436 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-436 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-436 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-436 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-436 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-436 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-436 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-436 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-436 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-436 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-436 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-436 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-436 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-436 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-436 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-436 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-436 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-436 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-436 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-436 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-436 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-436 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-436 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-436 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-436 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-436 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-436 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-436 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-436 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-436 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-436 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-436 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-436 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-436 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-436 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-436 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-436 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-436 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-436 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-436 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-436 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-436 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-436 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-436 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-436 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-436 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-436 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-436 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-436 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-436 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-436 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-436 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-436 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-436 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-436 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-436 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-436 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-436 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-436 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-436 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-436 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-436 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-436 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-436 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-436 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-436 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-436 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-436 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-436 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-436 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-436 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-436 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-436 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-436 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-436 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-436 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-436 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-436 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-436 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-436 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-436 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-436 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-436 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-436 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-436 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-436 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-436 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-436 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-436 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-436 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-436 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-436 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-436 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-436 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-436 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-436 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-436 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-436 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-436 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-436 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-436 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-436 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-436 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-436 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-436 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-436 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-436 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-436 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-436 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-436 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-436 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-436 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-436 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-436 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-436 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-436 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-436 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-436 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-436 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-436 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-436 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-436 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-436 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-436 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-436 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-436 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-436 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-436 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-436 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-436 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-436 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-436 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-436 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-436 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-436 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-436 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-436 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-436 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-436 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-436 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-436 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-436 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-436 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-436 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-436 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-436 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-436 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-436 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-436 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-436 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-436 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-436 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-436 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-436 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-436 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-436 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-436 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-436 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-436 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-436 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-436 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-436 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-436 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-436 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-436 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-436 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-436 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-436 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-436 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-436 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-436 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-436 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-436 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-436 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-436 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-436 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-436 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-436 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-436 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-436 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-436 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-436 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-436 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-436 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-436 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-436 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-436 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-436 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-436 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-436 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-436 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-436 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-436 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-436 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-436 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-436 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-436 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-436 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-436 .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-436 .dropdown{position:relative}.factory-bootstrap-436 .dropdown-toggle:focus{outline:0}.factory-bootstrap-436 .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-436 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-436 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-436 .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-436 .dropdown-menu>li>a:focus,.factory-bootstrap-436 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-436 .dropdown-menu>.active>a,.factory-bootstrap-436 .dropdown-menu>.active>a:focus,.factory-bootstrap-436 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-436 .dropdown-menu>.disabled>a,.factory-bootstrap-436 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-436 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-436 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-436 .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-436 .open>.dropdown-menu{display:block}.factory-bootstrap-436 .open>a{outline:0}.factory-bootstrap-436 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-436 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-436 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-436 .dropup .caret,.factory-bootstrap-436 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-436 .dropup .dropdown-menu,.factory-bootstrap-436 .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-436 .btn-group,.factory-bootstrap-436 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-436 .btn-group-vertical>.btn,.factory-bootstrap-436 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-436 .btn-group-vertical>.btn.active,.factory-bootstrap-436 .btn-group-vertical>.btn:active,.factory-bootstrap-436 .btn-group-vertical>.btn:focus,.factory-bootstrap-436 .btn-group-vertical>.btn:hover,.factory-bootstrap-436 .btn-group>.btn.active,.factory-bootstrap-436 .btn-group>.btn:active,.factory-bootstrap-436 .btn-group>.btn:focus,.factory-bootstrap-436 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-436 .btn-group-vertical>.btn:focus,.factory-bootstrap-436 .btn-group>.btn:focus{outline:0}.factory-bootstrap-436 .btn-group .btn+.btn,.factory-bootstrap-436 .btn-group .btn+.btn-group,.factory-bootstrap-436 .btn-group .btn-group+.btn,.factory-bootstrap-436 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-436 .btn-toolbar:after,.factory-bootstrap-436 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-436 .btn-toolbar:after{clear:both}.factory-bootstrap-436 .btn-toolbar .btn-group{float:left}.factory-bootstrap-436 .btn-toolbar>.btn+.btn,.factory-bootstrap-436 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-436 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-436 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-436 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-436 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-436 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-436 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-436 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-436 .btn-group>.btn-group{float:left}.factory-bootstrap-436 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-436 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-436 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-436 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-436 .btn-group .dropdown-toggle:active,.factory-bootstrap-436 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-436 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-436 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-436 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-436 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-436 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-436 .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-436 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-436 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-436 .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-436 .btn .caret{margin-left:0}.factory-bootstrap-436 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-436 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-436 .btn-group-vertical>.btn,.factory-bootstrap-436 .btn-group-vertical>.btn-group,.factory-bootstrap-436 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-436 .btn-group-vertical>.btn-group:after,.factory-bootstrap-436 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-436 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-436 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-436 .btn-group-vertical>.btn+.btn,.factory-bootstrap-436 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-436 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-436 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-436 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-436 .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-436 .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-436 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-436 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-436 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-436 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-436 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-436 .btn-group-justified>.btn,.factory-bootstrap-436 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-436 .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-436 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-436 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-436 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-436 .input-group-lg>.form-control,.factory-bootstrap-436 .input-group-lg>.input-group-addon,.factory-bootstrap-436 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-436 select.input-group-lg>.form-control,.factory-bootstrap-436 select.input-group-lg>.input-group-addon,.factory-bootstrap-436 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-436 textarea.input-group-lg>.form-control,.factory-bootstrap-436 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-436 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-436 .input-group-sm>.form-control,.factory-bootstrap-436 .input-group-sm>.input-group-addon,.factory-bootstrap-436 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-436 select.input-group-sm>.form-control,.factory-bootstrap-436 select.input-group-sm>.input-group-addon,.factory-bootstrap-436 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-436 textarea.input-group-sm>.form-control,.factory-bootstrap-436 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-436 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-436 .input-group .form-control,.factory-bootstrap-436 .input-group-addon,.factory-bootstrap-436 .input-group-btn{display:table-cell}.factory-bootstrap-436 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-436 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-436 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-436 .input-group-addon,.factory-bootstrap-436 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-436 .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-436 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-436 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-436 .input-group-addon input[type=checkbox],.factory-bootstrap-436 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-436 .input-group .form-control:first-child,.factory-bootstrap-436 .input-group-addon:first-child,.factory-bootstrap-436 .input-group-btn:first-child>.btn,.factory-bootstrap-436 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-436 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-436 .input-group-addon:first-child{border-right:0}.factory-bootstrap-436 .input-group .form-control:last-child,.factory-bootstrap-436 .input-group-addon:last-child,.factory-bootstrap-436 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-436 .input-group-btn:last-child>.btn,.factory-bootstrap-436 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-436 .input-group-addon:last-child{border-left:0}.factory-bootstrap-436 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-436 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-436 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-436 .input-group-btn>.btn{position:relative}.factory-bootstrap-436 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-436 .input-group-btn>.btn:active,.factory-bootstrap-436 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-436 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-436 .nav:after,.factory-bootstrap-436 .nav:before{display:table;content:" "}.factory-bootstrap-436 .nav:after{clear:both}.factory-bootstrap-436 .nav>li{position:relative;display:block}.factory-bootstrap-436 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-436 .nav>li>a:focus,.factory-bootstrap-436 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-436 .nav>li.disabled>a{color:#999}.factory-bootstrap-436 .nav>li.disabled>a:focus,.factory-bootstrap-436 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-436 .nav .open>a,.factory-bootstrap-436 .nav .open>a:focus,.factory-bootstrap-436 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-436 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-436 .nav>li>a>img{max-width:none}.factory-bootstrap-436 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-436 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-436 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-436 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-436 .nav-tabs>li.active>a,.factory-bootstrap-436 .nav-tabs>li.active>a:focus,.factory-bootstrap-436 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-436 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-436 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-436 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-436 .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-436 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-436 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-436 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-436 .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-436 .nav-pills>li{float:left}.factory-bootstrap-436 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-436 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-436 .nav-pills>li.active>a,.factory-bootstrap-436 .nav-pills>li.active>a:focus,.factory-bootstrap-436 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-436 .nav-stacked>li{float:none}.factory-bootstrap-436 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-436 .nav-justified{width:100%}.factory-bootstrap-436 .nav-justified>li{float:none}.factory-bootstrap-436 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-436 .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-436 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-436 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-436 .nav-tabs-justified>.active>a,.factory-bootstrap-436 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-436 .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-436 .tab-content>.tab-pane{display:none}.factory-bootstrap-436 .tab-content>.active{display:block}.factory-bootstrap-436 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-436 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-436 .navbar:after,.factory-bootstrap-436 .navbar:before{display:table;content:" "}.factory-bootstrap-436 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-436 .navbar-header:after,.factory-bootstrap-436 .navbar-header:before{display:table;content:" "}.factory-bootstrap-436 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-436 .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-436 .navbar-collapse:after,.factory-bootstrap-436 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-436 .navbar-collapse:after{clear:both}.factory-bootstrap-436 .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-436 .container>.navbar-collapse,.factory-bootstrap-436 .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-436 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-436 .navbar-fixed-bottom,.factory-bootstrap-436 .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-436 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-436 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-436 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-436 .navbar-brand:focus,.factory-bootstrap-436 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-436 .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-436 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-436 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-436 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-436 .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-436 .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-436 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-436 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-436 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-436 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-436 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-436 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-436 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-436 .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-436 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-436 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-436 .navbar-default .navbar-brand:focus,.factory-bootstrap-436 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-436 .navbar-default .navbar-nav>li>a,.factory-bootstrap-436 .navbar-default .navbar-text{color:#777}.factory-bootstrap-436 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-436 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-436 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-436 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-436 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-436 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-436 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-436 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-436 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-436 .navbar-default .navbar-toggle:focus,.factory-bootstrap-436 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-436 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-436 .navbar-default .navbar-collapse,.factory-bootstrap-436 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-436 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-436 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-436 .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-436 .navbar-default .navbar-link{color:#777}.factory-bootstrap-436 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-436 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-436 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-436 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-436 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-436 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-436 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-436 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-436 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-436 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-436 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-436 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-436 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-436 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-436 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-436 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-436 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-436 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-436 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-436 .navbar-inverse .navbar-collapse,.factory-bootstrap-436 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-436 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-436 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-436 .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-436 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-436 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-436 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-436 .breadcrumb>li{display:inline-block}.factory-bootstrap-436 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-436 .breadcrumb>.active{color:#999}.factory-bootstrap-436 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-436 .pagination>li{display:inline}.factory-bootstrap-436 .pagination>li>a,.factory-bootstrap-436 .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-436 .pagination>li:first-child>a,.factory-bootstrap-436 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-436 .pagination>li:last-child>a,.factory-bootstrap-436 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-436 .pagination>li>a:focus,.factory-bootstrap-436 .pagination>li>a:hover,.factory-bootstrap-436 .pagination>li>span:focus,.factory-bootstrap-436 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-436 .pagination>.disabled>a,.factory-bootstrap-436 .pagination>.disabled>a:focus,.factory-bootstrap-436 .pagination>.disabled>a:hover,.factory-bootstrap-436 .pagination>.disabled>span,.factory-bootstrap-436 .pagination>.disabled>span:focus,.factory-bootstrap-436 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-436 .pagination-lg>li>a,.factory-bootstrap-436 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-436 .pagination-lg>li:first-child>a,.factory-bootstrap-436 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-436 .pagination-lg>li:last-child>a,.factory-bootstrap-436 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-436 .pagination-sm>li>a,.factory-bootstrap-436 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-436 .pagination-sm>li:first-child>a,.factory-bootstrap-436 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-436 .pagination-sm>li:last-child>a,.factory-bootstrap-436 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-436 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-436 .pager:after,.factory-bootstrap-436 .pager:before{display:table;content:" "}.factory-bootstrap-436 .pager:after{clear:both}.factory-bootstrap-436 .pager li{display:inline}.factory-bootstrap-436 .pager li>a,.factory-bootstrap-436 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-436 .pager li>a:focus,.factory-bootstrap-436 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-436 .pager .next>a,.factory-bootstrap-436 .pager .next>span{float:right}.factory-bootstrap-436 .pager .previous>a,.factory-bootstrap-436 .pager .previous>span{float:left}.factory-bootstrap-436 .pager .disabled>a,.factory-bootstrap-436 .pager .disabled>a:focus,.factory-bootstrap-436 .pager .disabled>a:hover,.factory-bootstrap-436 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-436 .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-436 .label[href]:focus,.factory-bootstrap-436 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-436 .label:empty{display:none}.factory-bootstrap-436 .btn .label{position:relative;top:-1px}.factory-bootstrap-436 .label-default{background-color:#999}.factory-bootstrap-436 .label-default[href]:focus,.factory-bootstrap-436 .label-default[href]:hover{background-color:gray}.factory-bootstrap-436 .label-primary{background-color:#428bca}.factory-bootstrap-436 .label-primary[href]:focus,.factory-bootstrap-436 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-436 .label-success{background-color:#5cb85c}.factory-bootstrap-436 .label-success[href]:focus,.factory-bootstrap-436 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-436 .label-info{background-color:#5bc0de}.factory-bootstrap-436 .label-info[href]:focus,.factory-bootstrap-436 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-436 .label-warning{background-color:#f0ad4e}.factory-bootstrap-436 .label-warning[href]:focus,.factory-bootstrap-436 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-436 .label-danger{background-color:#d9534f}.factory-bootstrap-436 .label-danger[href]:focus,.factory-bootstrap-436 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-436 .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-436 .badge:empty{display:none}.factory-bootstrap-436 .btn .badge{position:relative;top:-1px}.factory-bootstrap-436 a.badge:focus,.factory-bootstrap-436 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-436 .nav-pills>.active>a>.badge,.factory-bootstrap-436 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-436 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-436 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-436 .jumbotron .h1,.factory-bootstrap-436 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-436 .jumbotron p{line-height:1.4}.factory-bootstrap-436 .container .jumbotron{border-radius:6px}.factory-bootstrap-436 .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-436 .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-436 .thumbnail a>img,.factory-bootstrap-436 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-436 a.thumbnail.active,.factory-bootstrap-436 a.thumbnail:focus,.factory-bootstrap-436 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-436 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-436 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-436 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-436 .alert .alert-link{font-weight:700}.factory-bootstrap-436 .alert>p,.factory-bootstrap-436 .alert>ul{margin-bottom:0}.factory-bootstrap-436 .alert>p+p{margin-top:5px}.factory-bootstrap-436 .alert-dismissable{padding-right:35px}.factory-bootstrap-436 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-436 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-436 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-436 .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-436 .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-436 .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-436 .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-436 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-436 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-436 .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-436 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-436 .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-436 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-436 .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-436 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-436 .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-436 .media,.factory-bootstrap-436 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-436 .media,.factory-bootstrap-436 .media .media{margin-top:15px}.factory-bootstrap-436 .media:first-child{margin-top:0}.factory-bootstrap-436 .media-object{display:block}.factory-bootstrap-436 .media-heading{margin:0 0 5px}.factory-bootstrap-436 .media>.pull-left{margin-right:10px}.factory-bootstrap-436 .media>.pull-right{margin-left:10px}.factory-bootstrap-436 .media-list{padding-left:0;list-style:none}.factory-bootstrap-436 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-436 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-436 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-436 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-436 .list-group-item>.badge{float:right}.factory-bootstrap-436 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-436 a.list-group-item{color:#555}.factory-bootstrap-436 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-436 a.list-group-item:focus,.factory-bootstrap-436 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-436 a.list-group-item.active,.factory-bootstrap-436 a.list-group-item.active:focus,.factory-bootstrap-436 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-436 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-436 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-436 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-436 a.list-group-item.active .list-group-item-text,.factory-bootstrap-436 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-436 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-436 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-436 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-436 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-436 .panel-body{padding:15px}.factory-bootstrap-436 .panel-body:after,.factory-bootstrap-436 .panel-body:before{display:table;content:" "}.factory-bootstrap-436 .panel-body:after{clear:both}.factory-bootstrap-436 .panel>.list-group{margin-bottom:0}.factory-bootstrap-436 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-436 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-436 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-436 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-436 .panel>.table,.factory-bootstrap-436 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-436 .panel>.panel-body+.table,.factory-bootstrap-436 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-436 .panel>.table>tbody:first-child td,.factory-bootstrap-436 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-436 .panel>.table-bordered,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-436 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-436 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-436 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-436 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-436 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-436 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-436 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-436 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-436 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-436 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-436 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-436 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-436 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-436 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-436 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-436 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-436 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-436 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-436 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-436 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-436 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-436 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-436 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-436 .panel-title>a{color:inherit}.factory-bootstrap-436 .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-436 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-436 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-436 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-436 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-436 .panel-group .panel-footer{border-top:0}.factory-bootstrap-436 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-436 .panel-default{border-color:#ddd}.factory-bootstrap-436 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-436 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-436 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-436 .panel-primary{border-color:#428bca}.factory-bootstrap-436 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-436 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-436 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-436 .panel-success{border-color:#d6e9c6}.factory-bootstrap-436 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-436 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-436 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-436 .panel-warning{border-color:#faebcc}.factory-bootstrap-436 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-436 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-436 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-436 .panel-danger{border-color:#ebccd1}.factory-bootstrap-436 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-436 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-436 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-436 .panel-info{border-color:#bce8f1}.factory-bootstrap-436 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-436 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-436 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-436 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-436 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-436 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-436 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-436 .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-436 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-436 .close:focus,.factory-bootstrap-436 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-436 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-436 .modal-open{overflow:hidden}.factory-bootstrap-436 .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-436 .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-436 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-436 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-436 .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-436 .modal-backdrop,.factory-bootstrap-436-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-436 .modal-backdrop.fade,.factory-bootstrap-436-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-436 .modal-backdrop.in,.factory-bootstrap-436-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-436 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-436 .modal-header .close{margin-top:-2px}.factory-bootstrap-436 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-436 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-436 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-436 .modal-footer:after,.factory-bootstrap-436 .modal-footer:before{display:table;content:" "}.factory-bootstrap-436 .modal-footer:after{clear:both}.factory-bootstrap-436 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-436 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-436 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-436 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-436 .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-436 .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-436 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-436 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-436 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-436 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-436 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-436 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-436 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-436 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-436 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-436 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-436 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-436 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-436 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-436 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-436 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-436 .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-436 .popover.top{margin-top:-10px}.factory-bootstrap-436 .popover.right{margin-left:10px}.factory-bootstrap-436 .popover.bottom{margin-top:10px}.factory-bootstrap-436 .popover.left{margin-left:-10px}.factory-bootstrap-436 .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-436 .popover-content{padding:9px 14px}.factory-bootstrap-436 .popover .arrow,.factory-bootstrap-436 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-436 .popover .arrow{border-width:11px}.factory-bootstrap-436 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-436 .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-436 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-436 .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-436 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-436 .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-436 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-436 .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-436 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-436 .carousel{position:relative}.factory-bootstrap-436 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-436 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-436 .carousel-inner>.item>a>img,.factory-bootstrap-436 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-436 .carousel-inner>.active,.factory-bootstrap-436 .carousel-inner>.next,.factory-bootstrap-436 .carousel-inner>.prev{display:block}.factory-bootstrap-436 .carousel-inner>.active{left:0}.factory-bootstrap-436 .carousel-inner>.next,.factory-bootstrap-436 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-436 .carousel-inner>.next{left:100%}.factory-bootstrap-436 .carousel-inner>.prev{left:-100%}.factory-bootstrap-436 .carousel-inner>.next.left,.factory-bootstrap-436 .carousel-inner>.prev.right{left:0}.factory-bootstrap-436 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-436 .carousel-inner>.active.right{left:100%}.factory-bootstrap-436 .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-436 .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-436 .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-436 .carousel-control:focus,.factory-bootstrap-436 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-436 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-436 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-436 .carousel-control .icon-next,.factory-bootstrap-436 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-436 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-436 .carousel-control .icon-prev{left:50%}.factory-bootstrap-436 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-436 .carousel-control .icon-next{right:50%}.factory-bootstrap-436 .carousel-control .icon-next,.factory-bootstrap-436 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-436 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-436 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-436 .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-436 .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-436 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-436 .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-436 .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-436 .clearfix:after,.factory-bootstrap-436 .clearfix:before{display:table;content:" "}.factory-bootstrap-436 .clearfix:after{clear:both}.factory-bootstrap-436 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-436 .pull-right{float:right!important}.factory-bootstrap-436 .pull-left{float:left!important}.factory-bootstrap-436 .hide{display:none!important}.factory-bootstrap-436 .show{display:block!important}.factory-bootstrap-436 .invisible{visibility:hidden}.factory-bootstrap-436 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-436 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-436 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-436 .visible-lg,.factory-bootstrap-436 .visible-md,.factory-bootstrap-436 .visible-sm,.factory-bootstrap-436 .visible-xs,.factory-bootstrap-436 td.visible-lg,.factory-bootstrap-436 td.visible-md,.factory-bootstrap-436 td.visible-sm,.factory-bootstrap-436 td.visible-xs,.factory-bootstrap-436 th.visible-lg,.factory-bootstrap-436 th.visible-md,.factory-bootstrap-436 th.visible-sm,.factory-bootstrap-436 th.visible-xs,.factory-bootstrap-436 tr.visible-lg,.factory-bootstrap-436 tr.visible-md,.factory-bootstrap-436 tr.visible-sm,.factory-bootstrap-436 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-436 .hidden-xs{display:block!important}.factory-bootstrap-436 table.hidden-xs{display:table}.factory-bootstrap-436 tr.hidden-xs{display:table-row!important}.factory-bootstrap-436 td.hidden-xs,.factory-bootstrap-436 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-436 .hidden-sm{display:block!important}.factory-bootstrap-436 table.hidden-sm{display:table}.factory-bootstrap-436 tr.hidden-sm{display:table-row!important}.factory-bootstrap-436 td.hidden-sm,.factory-bootstrap-436 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-436 .hidden-md{display:block!important}.factory-bootstrap-436 table.hidden-md{display:table}.factory-bootstrap-436 tr.hidden-md{display:table-row!important}.factory-bootstrap-436 td.hidden-md,.factory-bootstrap-436 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-436 .hidden-lg{display:block!important}.factory-bootstrap-436 table.hidden-lg{display:table}.factory-bootstrap-436 tr.hidden-lg{display:table-row!important}.factory-bootstrap-436 td.hidden-lg,.factory-bootstrap-436 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-436 .hidden-lg.hidden-xs,.factory-bootstrap-436 td.hidden-lg.hidden-xs,.factory-bootstrap-436 th.hidden-lg.hidden-xs,.factory-bootstrap-436 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-436 .hidden-lg.hidden-sm,.factory-bootstrap-436 td.hidden-lg.hidden-sm,.factory-bootstrap-436 th.hidden-lg.hidden-sm,.factory-bootstrap-436 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-436 .hidden-lg.hidden-md,.factory-bootstrap-436 td.hidden-lg.hidden-md,.factory-bootstrap-436 th.hidden-lg.hidden-md,.factory-bootstrap-436 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-436 .hidden-lg,.factory-bootstrap-436 td.hidden-lg,.factory-bootstrap-436 th.hidden-lg,.factory-bootstrap-436 tr.hidden-lg{display:none!important}}.factory-bootstrap-436 .visible-print,.factory-bootstrap-436 td.visible-print,.factory-bootstrap-436 th.visible-print,.factory-bootstrap-436 tr.visible-print{display:none!important}@media print{.factory-bootstrap-436 .visible-print{display:block!important}.factory-bootstrap-436 table.visible-print{display:table}.factory-bootstrap-436 tr.visible-print{display:table-row!important}.factory-bootstrap-436 td.visible-print,.factory-bootstrap-436 th.visible-print{display:table-cell!important}.factory-bootstrap-436 .hidden-print,.factory-bootstrap-436 td.hidden-print,.factory-bootstrap-436 th.hidden-print,.factory-bootstrap-436 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-436 .btn-danger,.factory-bootstrap-436 .btn-default,.factory-bootstrap-436 .btn-info,.factory-bootstrap-436 .btn-primary,.factory-bootstrap-436 .btn-success,.factory-bootstrap-436 .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-436 .btn-danger.active,.factory-bootstrap-436 .btn-danger:active,.factory-bootstrap-436 .btn-default.active,.factory-bootstrap-436 .btn-default:active,.factory-bootstrap-436 .btn-info.active,.factory-bootstrap-436 .btn-info:active,.factory-bootstrap-436 .btn-primary.active,.factory-bootstrap-436 .btn-primary:active,.factory-bootstrap-436 .btn-success.active,.factory-bootstrap-436 .btn-success:active,.factory-bootstrap-436 .btn-warning.active,.factory-bootstrap-436 .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-436 .btn.active,.factory-bootstrap-436 .btn:active{background-image:none}.factory-bootstrap-436 .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-436 .btn-default.active,.factory-bootstrap-436 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-436 .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-436 .btn-gold:focus,.factory-bootstrap-436 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-436 .btn-gold.active,.factory-bootstrap-436 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .btn-primary.active,.factory-bootstrap-436 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-436 .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-436 .btn-success:focus,.factory-bootstrap-436 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-436 .btn-success.active,.factory-bootstrap-436 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-436 .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-436 .btn-warning:focus,.factory-bootstrap-436 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-436 .btn-warning.active,.factory-bootstrap-436 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-436 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-436 .btn-danger.active,.factory-bootstrap-436 .btn-danger:active,.factory-bootstrap-436 .btn-danger:focus,.factory-bootstrap-436 .btn-danger:hover,.factory-bootstrap-436 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-436 .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-436 .btn-info:focus,.factory-bootstrap-436 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-436 .btn-info.active,.factory-bootstrap-436 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-436 .img-thumbnail,.factory-bootstrap-436 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-436 .dropdown-menu>li>a:focus,.factory-bootstrap-436 .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-436 .dropdown-menu>.active>a,.factory-bootstrap-436 .dropdown-menu>.active>a:focus,.factory-bootstrap-436 .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-436 .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-436 .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-436 .navbar-brand,.factory-bootstrap-436 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-436 .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-436 .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-436 .navbar-inverse .navbar-brand,.factory-bootstrap-436 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-436 .navbar-fixed-bottom,.factory-bootstrap-436 .navbar-fixed-top,.factory-bootstrap-436 .navbar-static-top{border-radius:0}.factory-bootstrap-436 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-436 .alert .actions{padding-top:10px}.factory-bootstrap-436 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-436 .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-436 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-436 .alert-normal,.factory-bootstrap-436 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-436 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-436 .alert-danger a:not(.btn),.factory-bootstrap-436 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .list-group-item.active,.factory-bootstrap-436 .list-group-item.active:focus,.factory-bootstrap-436 .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-436 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-436 .factory-hidden{display:none}.factory-bootstrap-436 .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-423 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-423 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-423 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
12
  * Datetimepicker for Bootstrap 3
13
  * version : 4.17.47
14
  * https://github.com/Eonasdan/bootstrap-datetimepicker/
15
+ */.factory-bootstrap-436 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-436 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-436 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-436 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-436 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-436 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-436 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-436 .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-436 .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-436 .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-436 .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-436 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-436 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-436 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-436 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-436 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-436 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-436 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-436 .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-436 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-436 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-436 .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-436 .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-436 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-436 .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-436 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-436 .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-436 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-436 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-436 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-436 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-436 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-436 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-436 .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-423 .btn-primary{background:#a3b745;border-color:#839237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:active{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-423 .btn-group .btn.active.value{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .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-436 .btn-primary:disabled,.factory-bootstrap-436 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-436 .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-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .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-423 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-423 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-423 .factory-form-group .factory-hint-icon{display:block;width:16px;height:16px;line-height:13px;padding:0;font-size:11px;text-align:center;position:absolute;top:-5px;right:-3px;color:#fff;background:#E91E63;border-radius:3px}.factory-bootstrap-423 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-423 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-423 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-423 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-423 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-423 .factory-form-group legend+.control-group{margin-top:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-436 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-436 .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-436 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-436 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-436 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-436 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-436 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-436 .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-423 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-423 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-423 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-423 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-423 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-423 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
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-436 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-436 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-436 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-436 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-436 .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-436 .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-423 .btn-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:active{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-423 .btn-group .btn.active.value{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .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-436 .btn-primary:disabled,.factory-bootstrap-436 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-436 .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-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .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-423 .btn-primary{background:#e14d43;border-color:#d02a21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:active{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-423 .btn-group .btn.active.value{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .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-436 .btn-primary:disabled,.factory-bootstrap-436 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-436 .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-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .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-423 .btn-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:active{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-423 .btn-group .btn.active.value{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .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-436 .btn-primary:disabled,.factory-bootstrap-436 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-436 .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-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .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-423 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-423 .btn-primary{background:#dd823b;border-color:#c36822;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-423 .btn-primary:active{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-423 .btn-group .btn.active.value{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .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-436 .btn-primary:focus,.factory-bootstrap-436 .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-436 .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-436 .btn-primary:disabled,.factory-bootstrap-436 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-436 .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-436 .pagination>.active>a,.factory-bootstrap-436 .pagination>.active>a:focus,.factory-bootstrap-436 .pagination>.active>a:hover,.factory-bootstrap-436 .pagination>.active>span,.factory-bootstrap-436 .pagination>.active>span:focus,.factory-bootstrap-436 .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-423 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-423 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-423 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-423 .nav-tabs a{text-decoration:none}.factory-bootstrap-423 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-423 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-423 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-423 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-423 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-423 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-423 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-423 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-423 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-423 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-423 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-423 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-423 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-423 .factory-align-vertical .control-group textarea{width:90%}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-436 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-436 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-436 .nav-tabs a{text-decoration:none}.factory-bootstrap-436 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-436 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-436 .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-436 .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-436 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-436 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-436 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-436 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-436 .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-436 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-436 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-436 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-436 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-436 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-436 .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-423 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 .wp-editor-wrap .button,.factory-bootstrap-423 .wp-editor-wrap input,.factory-bootstrap-423 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-423 .switch-html,.factory-bootstrap-423 .switch-tmce{color:#777}.factory-bootstrap-423 .html-active .switch-html,.factory-bootstrap-423 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-423 .switch-html:hover,.factory-bootstrap-423 .switch-tmce:hover{color:#777}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-436 .wp-editor-wrap .button,.factory-bootstrap-436 .wp-editor-wrap input,.factory-bootstrap-436 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-436 .switch-html,.factory-bootstrap-436 .switch-tmce{color:#777}.factory-bootstrap-436 .html-active .switch-html,.factory-bootstrap-436 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-436 .switch-html:hover,.factory-bootstrap-436 .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-423 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-423 .factory-buttons-way .factory-on.active{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-423 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-423 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-423 .factory-buttons-way .factory-on.active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-423 .factory-buttons-way .factory-on.active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-423 .factory-buttons-way .factory-on.active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-423 .factory-buttons-way .factory-on.active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-423 .factory-buttons-way .factory-on.active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-423 .factory-buttons-way .factory-on.active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-423 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
8
  */
9
 
10
 
11
+ #side-sortables .factory-bootstrap-436 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-436 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-436 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-436 .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-436 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-436 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-423 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-423 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-423 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-423 .iris-picker{margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-436 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-436 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-436 .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-423 .factory-color{position:relative}.factory-bootstrap-423 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .factory-color .factory-background,.factory-bootstrap-423 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-423 .factory-color .factory-background{z-index:2;border-radius:3px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-color{position:relative}.factory-bootstrap-436 .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-436 .factory-color .factory-background,.factory-bootstrap-436 .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-436 .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-423 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-423 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-423 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-436 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-436 .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-423 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-423 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-423 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-423 .factory-dropdown.factory-buttons-way .active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-436 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-436 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .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-436 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-436 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-436 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-436 .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-423 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-423 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-423 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-423 .iris-picker{margin-top:10px}.factory-bootstrap-423 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-423 .factory-font .chosen-results{max-height:150px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-436 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-436 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-436 .iris-picker{margin-top:10px}.factory-bootstrap-436 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-436 .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-423 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-423 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-423 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-423 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-423 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-423 .factory-list .factory-error-text,.factory-bootstrap-423 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-423 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-423 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-423 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-423 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-423 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-423 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-436 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-436 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-436 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-436 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-436 .factory-list .factory-error-text,.factory-bootstrap-436 .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-436 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-436 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-436 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-436 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-436 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-436 .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-423 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-423 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-423 .factory-mtextbox-item .factory-mtextbox-remove-item{position:absolute;top:0;right:0;bottom:0;width:40px;border-radius:0 3px 3px 0;outline:0}.factory-bootstrap-423 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-423 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-423 .factory-mtextbox-add-item{display:block;margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-436 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-436 .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-436 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-436 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-436 .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-423 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-423 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-423 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-423 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-423 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-423 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-423 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-423 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-423 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-423 .factory-pattern .factory-color,.factory-bootstrap-423 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-423 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-423 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-423 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-423 .factory-pattern .factory-patterns-item,.factory-bootstrap-423 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-423 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-423 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-423 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-423 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-423 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-423 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-423 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-423 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-423 .factory-pattern .factory-change-color-btn{margin-left:5px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-436 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-436 .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-436 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-436 .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-436 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-436 .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-436 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-436 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-436 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-436 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-436 .factory-pattern .factory-color,.factory-bootstrap-436 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-436 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-436 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-436 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-436 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-436 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-436 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-436 .factory-pattern .factory-patterns-item,.factory-bootstrap-436 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-436 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-436 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-436 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-436 .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-436 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-436 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-436 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-436 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-436 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-436 .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-423 .factory-from-radio-label,.factory-bootstrap-423 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-423 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-423 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-423 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-423 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-423 .factory-radio-color{opacity:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-from-radio-label,.factory-bootstrap-436 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-436 .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-436 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-436 .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-436 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-436 .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-423 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-423 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-423 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-423 .factory-tab .factory-more-link-hide{position:absolute;margin-top:-35px;background-color:#fff;padding:0 5px;right:20px;color:#bbb;text-decoration:none}.factory-bootstrap-423 .factory-tab .factory-more-link-hide:hover{color:#999}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-436 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-436 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-436 .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-436 .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-423 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-423 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-423 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-423 .factory-point,.factory-bootstrap-423 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-423 .factory-point-color{border-radius:0}.factory-bootstrap-423 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-423 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-423 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-423 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-423 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-423 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-423 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-423 .factory-preset-gradient,.factory-bootstrap-423 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-423 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-423 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-423 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-423 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-423 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-423 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-423 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-423 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-423 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-436 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-436 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-436 .factory-point,.factory-bootstrap-436 .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-436 .factory-point-color{border-radius:0}.factory-bootstrap-436 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-436 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-436 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-436 .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-436 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-436 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-436 .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-436 .factory-preset-gradient,.factory-bootstrap-436 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-436 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-436 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-436 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-436 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-436 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-436 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-436 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-436 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-436 .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-423 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-423 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-423 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-423 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-423 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-423 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-423 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-423 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-423 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-423 .factory-paddings-editor .factory-side-left,.factory-bootstrap-423 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-423 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-423 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-436 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-436 .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-436 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-436 .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-436 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-436 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-436 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-436 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-436 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-436 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-436 .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-436 .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-436 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-436 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-436 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-436 .factory-paddings-editor .factory-side-left,.factory-bootstrap-436 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-436 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-436 .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.factoryBootstrap423_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-423 .factory-accordion").factoryBootstrap423_accordion()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";a.fn.factoryBootstrap436_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-436 .factory-accordion").factoryBootstrap436_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.factoryBootstrap423_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap423_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
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.factoryBootstrap436_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.factoryBootstrap436_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.factoryBootstrap423_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap423_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap423_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap423_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-423 .factory-datetimepicker").factoryBootstrap423_DatetimePickerControl(),a(".factory-bootstrap-423 .factory-datetimepicker-range-0").factoryBootstrap423_DatetimePickerControl(),a(".factory-bootstrap-423 .factory-datetimepicker-range-1").factoryBootstrap423_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-423 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-423 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-423 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-423 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
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.factoryBootstrap436_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.factoryBootstrap436_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.factoryBootstrap436_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.factoryBootstrap436_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-436 .factory-datetimepicker").factoryBootstrap436_DatetimePickerControl(),a(".factory-bootstrap-436 .factory-datetimepicker-range-0").factoryBootstrap436_DatetimePickerControl(),a(".factory-bootstrap-436 .factory-datetimepicker-range-1").factoryBootstrap436_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-436 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-436 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-436 .factory-datetimepicker-r