Royal Elementor Addons (Header Footer Builder, Mega Menu Builder, Popups, Post Grid, Woocommerce Product Grid, Slider, Parallax Image, Free Elementor Widgets & Elementor Templates. Elementor WooCommerce Builder) - Version 1.3.53

Version Description

Download this release

Release Info

Developer wproyal
Plugin Icon wp plugin Royal Elementor Addons (Header Footer Builder, Mega Menu Builder, Popups, Post Grid, Woocommerce Product Grid, Slider, Parallax Image, Free Elementor Widgets & Elementor Templates. Elementor WooCommerce Builder)
Version 1.3.53
Comparing to
See all releases

Code changes from version 1.3.52 to 1.3.53

Files changed (35) hide show
  1. admin/import/class-parsers.php +1041 -1041
  2. admin/import/class-wordpress-importer.php +1370 -1370
  3. admin/includes/wpr-conditions-manager.php +206 -206
  4. admin/includes/wpr-render-templates.php +250 -250
  5. admin/includes/wpr-templates-actions.php +313 -313
  6. admin/includes/wpr-templates-library.php +133 -133
  7. admin/includes/wpr-templates-loop.php +364 -364
  8. admin/includes/wpr-templates-modal-popups.php +233 -233
  9. admin/includes/wpr-templates-shortcode.php +69 -69
  10. admin/mega-menu.php +375 -375
  11. admin/plugin-options.php +570 -565
  12. admin/popups.php +86 -81
  13. admin/premade-blocks.php +39 -39
  14. admin/templates-kit.php +622 -622
  15. admin/templates/views/astra/class-astra-compat.php +84 -84
  16. admin/templates/views/oceanwp/class-oceanwp-compat.php +72 -72
  17. admin/templates/views/royal/theme-footer-royal.php +23 -23
  18. admin/templates/views/royal/theme-header-royal.php +39 -39
  19. admin/templates/views/storefront/class-storefront-compat.php +105 -105
  20. admin/templates/views/theme-footer.php +19 -19
  21. admin/templates/views/theme-header.php +32 -32
  22. admin/templates/wpr-canvas.php +66 -66
  23. admin/templates/wpr-templates-data.php +879 -879
  24. admin/templates/wpr-templates-library-blocks.php +167 -167
  25. admin/templates/wpr-templates-library-popups.php +108 -108
  26. admin/templates/wpr-templates-pages.php +51 -51
  27. admin/theme-builder.php +163 -158
  28. assets/css/admin/mega-menu.css +443 -443
  29. assets/css/admin/plugin-options.css +1125 -1089
  30. assets/css/admin/premade-blocks.css +436 -436
  31. assets/css/admin/templates-kit.css +603 -603
  32. assets/css/admin/wporg-theme-notice.css +2 -2
  33. assets/css/editor.css +943 -943
  34. assets/css/editor.min.css +1008 -959
  35. assets/css/frontend.css +0 -7400
admin/import/class-parsers.php CHANGED
@@ -1,1041 +1,1041 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit; // Exit if accessed directly.
4
- }
5
-
6
- /**
7
- * WordPress eXtended RSS file parser implementations
8
- *
9
- * @package WordPress
10
- * @subpackage Importer
11
- */
12
-
13
- /**
14
- * WXR Parser that uses regular expressions. Fallback for installs without an XML parser.
15
- */
16
- class WXR_Parser_Regex {
17
- /**
18
- * @var bool
19
- */
20
- private $has_gzip;
21
-
22
- private $authors = [];
23
- private $posts = [];
24
- private $categories = [];
25
- private $tags = [];
26
- private $terms = [];
27
- private $base_url = '';
28
- private $base_blog_url = '';
29
-
30
- /**
31
- * @param string $file
32
- *
33
- * @return array|\WP_Error
34
- */
35
- public function parse( $file ) {
36
- $wxr_version = '';
37
- $in_multiline = false;
38
-
39
- $multiline_content = '';
40
-
41
- $multiline_tags = [
42
- 'item' => [
43
- 'posts',
44
- function ( $post ) {
45
- return $this->process_post( $post );
46
- },
47
- ],
48
- 'wp:category' => [
49
- 'categories',
50
- function ( $category ) {
51
- return $this->process_category( $category );
52
- },
53
- ],
54
- 'wp:tag' => [
55
- 'tags',
56
- function ( $tag ) {
57
- return $this->process_tag( $tag );
58
- },
59
- ],
60
- 'wp:term' => [
61
- 'terms',
62
- function ( $term ) {
63
- return $this->process_term( $term );
64
- },
65
- ],
66
- ];
67
-
68
- $fp = $this->fopen( $file, 'r' );
69
- if ( $fp ) {
70
- while ( ! $this->feof( $fp ) ) {
71
- $importline = rtrim( $this->fgets( $fp ) );
72
-
73
- if ( ! $wxr_version && preg_match( '|<wp:wxr_version>(\d+\.\d+)</wp:wxr_version>|', $importline, $version ) ) {
74
- $wxr_version = $version[1];
75
- }
76
-
77
- if ( false !== strpos( $importline, '<wp:base_site_url>' ) ) {
78
- preg_match( '|<wp:base_site_url>(.*?)</wp:base_site_url>|is', $importline, $url );
79
- $this->base_url = $url[1];
80
- continue;
81
- }
82
-
83
- if ( false !== strpos( $importline, '<wp:base_blog_url>' ) ) {
84
- preg_match( '|<wp:base_blog_url>(.*?)</wp:base_blog_url>|is', $importline, $blog_url );
85
- $this->base_blog_url = $blog_url[1];
86
- continue;
87
- } else {
88
- $this->base_blog_url = $this->base_url;
89
- }
90
-
91
- if ( false !== strpos( $importline, '<wp:author>' ) ) {
92
- preg_match( '|<wp:author>(.*?)</wp:author>|is', $importline, $author );
93
- $a = $this->process_author( $author[1] );
94
- $this->authors[ $a['author_login'] ] = $a;
95
- continue;
96
- }
97
-
98
- foreach ( $multiline_tags as $tag => $handler ) {
99
- // Handle multi-line tags on a singular line.
100
- if ( preg_match( '|<'. $tag .'>(.*?)</'. $tag .'>|is', $importline, $matches ) ) {
101
- $this->{$handler[0]}[] = call_user_func( $handler[1], $matches[1] );
102
-
103
- continue;
104
- }
105
-
106
- $pos = strpos( $importline, "<$tag>" );
107
-
108
- if ( false !== $pos ) {
109
- // Take note of any content after the opening tag.
110
- $multiline_content = trim( substr( $importline, $pos + strlen( $tag ) + 2 ) );
111
-
112
- // We don't want to have this line added to `$is_multiline` below.
113
- $importline = '';
114
- $in_multiline = $tag;
115
-
116
- continue;
117
- }
118
-
119
- $pos = strpos( $importline, "</$tag>" );
120
-
121
- if ( false !== $pos ) {
122
- $in_multiline = false;
123
- $multiline_content .= trim( substr( $importline, 0, $pos ) );
124
-
125
- $this->{$handler[0]}[] = call_user_func( $handler[1], $multiline_content );
126
- }
127
- }
128
-
129
- if ( $in_multiline && $importline ) {
130
- $multiline_content .= $importline . "\n";
131
- }
132
- }
133
-
134
- $this->fclose( $fp );
135
- }
136
-
137
- if ( ! $wxr_version ) {
138
- return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
139
- }
140
-
141
- return [
142
- 'authors' => $this->authors,
143
- 'posts' => $this->posts,
144
- 'categories' => $this->categories,
145
- 'tags' => $this->tags,
146
- 'terms' => $this->terms,
147
- 'base_url' => $this->base_url,
148
- 'base_blog_url' => $this->base_blog_url,
149
- 'version' => $wxr_version,
150
- ];
151
- }
152
-
153
- private function process_category( $category ) {
154
- $term = [
155
- 'term_id' => $this->get_tag( $category, 'wp:term_id' ),
156
- 'cat_name' => $this->get_tag( $category, 'wp:cat_name' ),
157
- 'category_nicename' => $this->get_tag( $category, 'wp:category_nicename' ),
158
- 'category_parent' => $this->get_tag( $category, 'wp:category_parent' ),
159
- 'category_description' => $this->get_tag( $category, 'wp:category_description' ),
160
- ];
161
-
162
- $term_meta = $this->process_meta( $category, 'wp:termmeta' );
163
- if ( ! empty( $term_meta ) ) {
164
- $term['termmeta'] = $term_meta;
165
- }
166
-
167
- return $term;
168
- }
169
-
170
- private function process_tag( $tag ) {
171
- $term = [
172
- 'term_id' => $this->get_tag( $tag, 'wp:term_id' ),
173
- 'tag_name' => $this->get_tag( $tag, 'wp:tag_name' ),
174
- 'tag_slug' => $this->get_tag( $tag, 'wp:tag_slug' ),
175
- 'tag_description' => $this->get_tag( $tag, 'wp:tag_description' ),
176
- ];
177
-
178
- $term_meta = $this->process_meta( $tag, 'wp:termmeta' );
179
- if ( ! empty( $term_meta ) ) {
180
- $term['termmeta'] = $term_meta;
181
- }
182
-
183
- return $term;
184
- }
185
-
186
- private function process_term( $term ) {
187
- $term_data = [
188
- 'term_id' => $this->get_tag( $term, 'wp:term_id' ),
189
- 'term_taxonomy' => $this->get_tag( $term, 'wp:term_taxonomy' ),
190
- 'slug' => $this->get_tag( $term, 'wp:term_slug' ),
191
- 'term_parent' => $this->get_tag( $term, 'wp:term_parent' ),
192
- 'term_name' => $this->get_tag( $term, 'wp:term_name' ),
193
- 'term_description' => $this->get_tag( $term, 'wp:term_description' ),
194
- ];
195
-
196
- $term_meta = $this->process_meta( $term, 'wp:termmeta' );
197
- if ( ! empty( $term_meta ) ) {
198
- $term_data['termmeta'] = $term_meta;
199
- }
200
-
201
- return $term_data;
202
- }
203
-
204
- private function process_meta( $string, $tag ) {
205
- $parsed_meta = [];
206
-
207
- preg_match_all( "|<$tag>(.+?)</$tag>|is", $string, $meta );
208
-
209
- if ( ! isset( $meta[1] ) ) {
210
- return $parsed_meta;
211
- }
212
-
213
- foreach ( $meta[1] as $m ) {
214
- $parsed_meta[] = [
215
- 'key' => $this->get_tag( $m, 'wp:meta_key' ),
216
- 'value' => $this->get_tag( $m, 'wp:meta_value' ),
217
- ];
218
- }
219
-
220
- return $parsed_meta;
221
- }
222
-
223
- private function process_author( $a ) {
224
- return [
225
- 'author_id' => $this->get_tag( $a, 'wp:author_id' ),
226
- 'author_login' => $this->get_tag( $a, 'wp:author_login' ),
227
- 'author_email' => $this->get_tag( $a, 'wp:author_email' ),
228
- 'author_display_name' => $this->get_tag( $a, 'wp:author_display_name' ),
229
- 'author_first_name' => $this->get_tag( $a, 'wp:author_first_name' ),
230
- 'author_last_name' => $this->get_tag( $a, 'wp:author_last_name' ),
231
- ];
232
- }
233
-
234
- private function process_post( $post ) {
235
- $normalize_tag_callback = function ( $matches ) {
236
- return $this->normalize_tag( $matches );
237
- };
238
-
239
- $post_id = $this->get_tag( $post, 'wp:post_id' );
240
- $post_title = $this->get_tag( $post, 'title' );
241
- $post_date = $this->get_tag( $post, 'wp:post_date' );
242
- $post_date_gmt = $this->get_tag( $post, 'wp:post_date_gmt' );
243
- $comment_status = $this->get_tag( $post, 'wp:comment_status' );
244
- $ping_status = $this->get_tag( $post, 'wp:ping_status' );
245
- $status = $this->get_tag( $post, 'wp:status' );
246
- $post_name = $this->get_tag( $post, 'wp:post_name' );
247
- $post_parent = $this->get_tag( $post, 'wp:post_parent' );
248
- $menu_order = $this->get_tag( $post, 'wp:menu_order' );
249
- $post_type = $this->get_tag( $post, 'wp:post_type' );
250
- $post_password = $this->get_tag( $post, 'wp:post_password' );
251
- $is_sticky = $this->get_tag( $post, 'wp:is_sticky' );
252
- $guid = $this->get_tag( $post, 'guid' );
253
- $post_author = $this->get_tag( $post, 'dc:creator' );
254
-
255
- $post_excerpt = $this->get_tag( $post, 'excerpt:encoded' );
256
- $post_excerpt = preg_replace_callback( '|<(/?[A-Z]+)|', $normalize_tag_callback, $post_excerpt );
257
- $post_excerpt = str_replace( '<br>', '<br />', $post_excerpt );
258
- $post_excerpt = str_replace( '<hr>', '<hr />', $post_excerpt );
259
-
260
- $post_content = $this->get_tag( $post, 'content:encoded' );
261
- $post_content = preg_replace_callback( '|<(/?[A-Z]+)|', $normalize_tag_callback, $post_content );
262
- $post_content = str_replace( '<br>', '<br />', $post_content );
263
- $post_content = str_replace( '<hr>', '<hr />', $post_content );
264
-
265
- $postdata = compact( 'post_id', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_excerpt', 'post_title', 'status', 'post_name', 'comment_status', 'ping_status', 'guid', 'post_parent', 'menu_order', 'post_type', 'post_password', 'is_sticky' );
266
-
267
- $attachment_url = $this->get_tag( $post, 'wp:attachment_url' );
268
- if ( $attachment_url ) {
269
- $postdata['attachment_url'] = $attachment_url;
270
- }
271
-
272
- preg_match_all( '|<category domain="([^"]+?)" nicename="([^"]+?)">(.+?)</category>|is', $post, $terms, PREG_SET_ORDER );
273
- foreach ( $terms as $t ) {
274
- $post_terms[] = [
275
- 'slug' => $t[2],
276
- 'domain' => $t[1],
277
- 'name' => str_replace( [ '<![CDATA[', ']]>' ], '', $t[3] ),
278
- ];
279
- }
280
- if ( ! empty( $post_terms ) ) {
281
- $postdata['terms'] = $post_terms;
282
- }
283
-
284
- preg_match_all( '|<wp:comment>(.+?)</wp:comment>|is', $post, $comments );
285
- $comments = $comments[1];
286
- if ( $comments ) {
287
- foreach ( $comments as $comment ) {
288
- $post_comments[] = [
289
- 'comment_id' => $this->get_tag( $comment, 'wp:comment_id' ),
290
- 'comment_author' => $this->get_tag( $comment, 'wp:comment_author' ),
291
- 'comment_author_email' => $this->get_tag( $comment, 'wp:comment_author_email' ),
292
- 'comment_author_IP' => $this->get_tag( $comment, 'wp:comment_author_IP' ),
293
- 'comment_author_url' => $this->get_tag( $comment, 'wp:comment_author_url' ),
294
- 'comment_date' => $this->get_tag( $comment, 'wp:comment_date' ),
295
- 'comment_date_gmt' => $this->get_tag( $comment, 'wp:comment_date_gmt' ),
296
- 'comment_content' => $this->get_tag( $comment, 'wp:comment_content' ),
297
- 'comment_approved' => $this->get_tag( $comment, 'wp:comment_approved' ),
298
- 'comment_type' => $this->get_tag( $comment, 'wp:comment_type' ),
299
- 'comment_parent' => $this->get_tag( $comment, 'wp:comment_parent' ),
300
- 'comment_user_id' => $this->get_tag( $comment, 'wp:comment_user_id' ),
301
- 'commentmeta' => $this->process_meta( $comment, 'wp:commentmeta' ),
302
- ];
303
- }
304
- }
305
- if ( ! empty( $post_comments ) ) {
306
- $postdata['comments'] = $post_comments;
307
- }
308
-
309
- $post_meta = $this->process_meta( $post, 'wp:postmeta' );
310
- if ( ! empty( $post_meta ) ) {
311
- $postdata['postmeta'] = $post_meta;
312
- }
313
-
314
- return $postdata;
315
- }
316
-
317
- private function get_tag( $string, $tag ) {
318
- preg_match( "|<$tag.*?>(.*?)</$tag>|is", $string, $return );
319
- if ( isset( $return[1] ) ) {
320
- if ( substr( $return[1], 0, 9 ) == '<![CDATA[' ) {
321
- if ( strpos( $return[1], ']]]]><![CDATA[>' ) !== false ) {
322
- preg_match_all( '|<!\[CDATA\[(.*?)\]\]>|s', $return[1], $matches );
323
- $return = '';
324
- foreach ( $matches[1] as $match ) {
325
- $return .= $match;
326
- }
327
- } else {
328
- $return = preg_replace( '|^<!\[CDATA\[(.*)\]\]>$|s', '$1', $return[1] );
329
- }
330
- } else {
331
- $return = $return[1];
332
- }
333
- } else {
334
- $return = '';
335
- }
336
-
337
- return $return;
338
- }
339
-
340
- private function normalize_tag( $matches ) {
341
- return '<' . strtolower( $matches[1] );
342
- }
343
-
344
- private function fopen( $filename, $mode = 'r' ) {
345
- if ( $this->has_gzip ) {
346
- return gzopen( $filename, $mode );
347
- }
348
-
349
- return fopen( $filename, $mode );
350
- }
351
-
352
- private function feof( $fp ) {
353
- if ( $this->has_gzip ) {
354
- return gzeof( $fp );
355
- }
356
-
357
- return feof( $fp );
358
- }
359
-
360
- private function fgets( $fp, $len = 8192 ) {
361
- if ( $this->has_gzip ) {
362
- return gzgets( $fp, $len );
363
- }
364
-
365
- return fgets( $fp, $len );
366
- }
367
-
368
- private function fclose( $fp ) {
369
- if ( $this->has_gzip ) {
370
- return gzclose( $fp );
371
- }
372
-
373
- return fclose( $fp );
374
- }
375
-
376
- public function __construct() {
377
- $this->has_gzip = is_callable( 'gzopen' );
378
- }
379
- }
380
-
381
- /**
382
- * WordPress eXtended RSS file parser implementations,
383
- * Originally made by WordPress part of WordPress/Importer.
384
- * https://plugins.trac.wordpress.org/browser/wordpress-importer/trunk/parsers/class-wxr-parser-simplexml.php
385
- *
386
- * What was done:
387
- * Reformat of the code.
388
- * Removed variable '$internal_errors'.
389
- * Changed text domain.
390
- */
391
-
392
- /**
393
- * WXR Parser that makes use of the SimpleXML PHP extension.
394
- */
395
- class WXR_Parser_SimpleXML {
396
-
397
- /**
398
- * @param string $file
399
- *
400
- * @return array|\WP_Error
401
- */
402
- public function parse( $file ) {
403
- $authors = [];
404
- $posts = [];
405
- $categories = [];
406
- $tags = [];
407
- $terms = [];
408
-
409
- libxml_use_internal_errors( true );
410
-
411
- $dom = new \DOMDocument();
412
- $old_value = null;
413
-
414
- $libxml_disable_entity_loader_exists = function_exists( 'libxml_disable_entity_loader' );
415
-
416
- if ( $libxml_disable_entity_loader_exists ) {
417
- $old_value = libxml_disable_entity_loader( true ); // phpcs:ignore Generic.PHP.DeprecatedFunctions.Deprecated
418
- }
419
-
420
- $success = $dom->loadXML( file_get_contents( $file ) );
421
-
422
- if ( $libxml_disable_entity_loader_exists && ! is_null( $old_value ) ) {
423
- libxml_disable_entity_loader( $old_value ); // phpcs:ignore Generic.PHP.DeprecatedFunctions.Deprecated
424
- }
425
-
426
- if ( ! $success || isset( $dom->doctype ) ) {
427
- return new WP_Error( 'SimpleXML_parse_error', esc_html__( 'There was an error when reading this WXR file', 'wpr-addons' ), libxml_get_errors() );
428
- }
429
-
430
- $xml = simplexml_import_dom( $dom );
431
- unset( $dom );
432
-
433
- // Halt if loading produces an error.
434
- if ( ! $xml ) {
435
- return new WP_Error( 'SimpleXML_parse_error', esc_html__( 'There was an error when reading this WXR file', 'wpr-addons' ), libxml_get_errors() );
436
- }
437
-
438
- $wxr_version = $xml->xpath( '/rss/channel/wp:wxr_version' );
439
- if ( ! $wxr_version ) {
440
- return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
441
- }
442
-
443
- $wxr_version = (string) trim( $wxr_version[0] );
444
- // Confirm that we are dealing with the correct file format.
445
- if ( ! preg_match( '/^\d+\.\d+$/', $wxr_version ) ) {
446
- return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
447
- }
448
-
449
- $base_url = $xml->xpath( '/rss/channel/wp:base_site_url' );
450
- $base_url = (string) trim( isset( $base_url[0] ) ? $base_url[0] : '' );
451
-
452
- $base_blog_url = $xml->xpath( '/rss/channel/wp:base_blog_url' );
453
- if ( $base_blog_url ) {
454
- $base_blog_url = (string) trim( $base_blog_url[0] );
455
- } else {
456
- $base_blog_url = $base_url;
457
- }
458
-
459
- $page_on_front = $xml->xpath( '/rss/channel/wp:page_on_front' );
460
-
461
- if ( $page_on_front ) {
462
- $page_on_front = (int) $page_on_front[0];
463
- }
464
-
465
- $namespaces = $xml->getDocNamespaces();
466
- if ( ! isset( $namespaces['wp'] ) ) {
467
- $namespaces['wp'] = 'http://wordpress.org/export/1.1/';
468
- }
469
- if ( ! isset( $namespaces['excerpt'] ) ) {
470
- $namespaces['excerpt'] = 'http://wordpress.org/export/1.1/excerpt/';
471
- }
472
-
473
- // Grab authors.
474
- foreach ( $xml->xpath( '/rss/channel/wp:author' ) as $author_arr ) {
475
- $a = $author_arr->children( $namespaces['wp'] );
476
- $login = (string) $a->author_login;
477
- $authors[ $login ] = [
478
- 'author_id' => (int) $a->author_id,
479
- 'author_login' => $login,
480
- 'author_email' => (string) $a->author_email,
481
- 'author_display_name' => (string) $a->author_display_name,
482
- 'author_first_name' => (string) $a->author_first_name,
483
- 'author_last_name' => (string) $a->author_last_name,
484
- ];
485
- }
486
-
487
- // Grab cats, tags and terms.
488
- foreach ( $xml->xpath( '/rss/channel/wp:category' ) as $term_arr ) {
489
- $t = $term_arr->children( $namespaces['wp'] );
490
- $category = [
491
- 'term_id' => (int) $t->term_id,
492
- 'category_nicename' => (string) $t->category_nicename,
493
- 'category_parent' => (string) $t->category_parent,
494
- 'cat_name' => (string) $t->cat_name,
495
- 'category_description' => (string) $t->category_description,
496
- ];
497
-
498
- foreach ( $t->termmeta as $meta ) {
499
- $category['termmeta'][] = [
500
- 'key' => (string) $meta->meta_key,
501
- 'value' => (string) $meta->meta_value,
502
- ];
503
- }
504
-
505
- $categories[] = $category;
506
- }
507
-
508
- foreach ( $xml->xpath( '/rss/channel/wp:tag' ) as $term_arr ) {
509
- $t = $term_arr->children( $namespaces['wp'] );
510
- $tag = [
511
- 'term_id' => (int) $t->term_id,
512
- 'tag_slug' => (string) $t->tag_slug,
513
- 'tag_name' => (string) $t->tag_name,
514
- 'tag_description' => (string) $t->tag_description,
515
- ];
516
-
517
- foreach ( $t->termmeta as $meta ) {
518
- $tag['termmeta'][] = [
519
- 'key' => (string) $meta->meta_key,
520
- 'value' => (string) $meta->meta_value,
521
- ];
522
- }
523
-
524
- $tags[] = $tag;
525
- }
526
-
527
- foreach ( $xml->xpath( '/rss/channel/wp:term' ) as $term_arr ) {
528
- $t = $term_arr->children( $namespaces['wp'] );
529
- $term = [
530
- 'term_id' => (int) $t->term_id,
531
- 'term_taxonomy' => (string) $t->term_taxonomy,
532
- 'slug' => (string) $t->term_slug,
533
- 'term_parent' => (string) $t->term_parent,
534
- 'term_name' => (string) $t->term_name,
535
- 'term_description' => (string) $t->term_description,
536
- ];
537
-
538
- foreach ( $t->termmeta as $meta ) {
539
- $term['termmeta'][] = [
540
- 'key' => (string) $meta->meta_key,
541
- 'value' => (string) $meta->meta_value,
542
- ];
543
- }
544
-
545
- $terms[] = $term;
546
- }
547
-
548
- // Grab posts.
549
- foreach ( $xml->channel->item as $item ) {
550
- $post = [
551
- 'post_title' => (string) $item->title,
552
- 'guid' => (string) $item->guid,
553
- ];
554
-
555
- $dc = $item->children( 'http://purl.org/dc/elements/1.1/' );
556
- $post['post_author'] = (string) $dc->creator;
557
-
558
- $content = $item->children( 'http://purl.org/rss/1.0/modules/content/' );
559
- $excerpt = $item->children( $namespaces['excerpt'] );
560
- $post['post_content'] = (string) $content->encoded;
561
- $post['post_excerpt'] = (string) $excerpt->encoded;
562
-
563
- $wp = $item->children( $namespaces['wp'] );
564
- $post['post_id'] = (int) $wp->post_id;
565
- $post['post_date'] = (string) $wp->post_date;
566
- $post['post_date_gmt'] = (string) $wp->post_date_gmt;
567
- $post['comment_status'] = (string) $wp->comment_status;
568
- $post['ping_status'] = (string) $wp->ping_status;
569
- $post['post_name'] = (string) $wp->post_name;
570
- $post['status'] = (string) $wp->status;
571
- $post['post_parent'] = (int) $wp->post_parent;
572
- $post['menu_order'] = (int) $wp->menu_order;
573
- $post['post_type'] = (string) $wp->post_type;
574
- $post['post_password'] = (string) $wp->post_password;
575
- $post['is_sticky'] = (int) $wp->is_sticky;
576
-
577
- if ( isset( $wp->attachment_url ) ) {
578
- $post['attachment_url'] = (string) $wp->attachment_url;
579
- }
580
-
581
- foreach ( $item->category as $c ) {
582
- $att = $c->attributes();
583
- if ( isset( $att['nicename'] ) ) {
584
- $post['terms'][] = [
585
- 'name' => (string) $c,
586
- 'slug' => (string) $att['nicename'],
587
- 'domain' => (string) $att['domain'],
588
- ];
589
- }
590
- }
591
-
592
- foreach ( $wp->postmeta as $meta ) {
593
- $post['postmeta'][] = [
594
- 'key' => (string) $meta->meta_key,
595
- 'value' => (string) $meta->meta_value,
596
- ];
597
- }
598
-
599
- foreach ( $wp->comment as $comment ) {
600
- $meta = [];
601
- if ( isset( $comment->commentmeta ) ) {
602
- foreach ( $comment->commentmeta as $m ) {
603
- $meta[] = [
604
- 'key' => (string) $m->meta_key,
605
- 'value' => (string) $m->meta_value,
606
- ];
607
- }
608
- }
609
-
610
- $post['comments'][] = [
611
- 'comment_id' => (int) $comment->comment_id,
612
- 'comment_author' => (string) $comment->comment_author,
613
- 'comment_author_email' => (string) $comment->comment_author_email,
614
- 'comment_author_IP' => (string) $comment->comment_author_IP,
615
- 'comment_author_url' => (string) $comment->comment_author_url,
616
- 'comment_date' => (string) $comment->comment_date,
617
- 'comment_date_gmt' => (string) $comment->comment_date_gmt,
618
- 'comment_content' => (string) $comment->comment_content,
619
- 'comment_approved' => (string) $comment->comment_approved,
620
- 'comment_type' => (string) $comment->comment_type,
621
- 'comment_parent' => (string) $comment->comment_parent,
622
- 'comment_user_id' => (int) $comment->comment_user_id,
623
- 'commentmeta' => $meta,
624
- ];
625
- }
626
-
627
- $posts[] = $post;
628
- }
629
-
630
- return [
631
- 'authors' => $authors,
632
- 'posts' => $posts,
633
- 'categories' => $categories,
634
- 'tags' => $tags,
635
- 'terms' => $terms,
636
- 'base_url' => $base_url,
637
- 'base_blog_url' => $base_blog_url,
638
- 'page_on_front' => $page_on_front,
639
- 'version' => $wxr_version,
640
- ];
641
- }
642
- }
643
-
644
-
645
- /**
646
- * WordPress eXtended RSS file parser implementations,
647
- * Originally made by WordPress part of WordPress/Importer.
648
- * https://plugins.trac.wordpress.org/browser/wordpress-importer/trunk/parsers/class-wxr-parser-xml.php
649
- *
650
- * What was done:
651
- * Reformat of the code.
652
- * Added PHPDOC.
653
- * Changed text domain.
654
- * Added clear() method.
655
- * Added undeclared class properties.
656
- * Changed methods visibility.
657
- */
658
-
659
- /**
660
- * WXR Parser that makes use of the XML Parser PHP extension.
661
- */
662
- class WXR_Parser_XML {
663
- private static $wp_tags = [
664
- 'wp:post_id',
665
- 'wp:post_date',
666
- 'wp:post_date_gmt',
667
- 'wp:comment_status',
668
- 'wp:ping_status',
669
- 'wp:attachment_url',
670
- 'wp:status',
671
- 'wp:post_name',
672
- 'wp:post_parent',
673
- 'wp:menu_order',
674
- 'wp:post_type',
675
- 'wp:post_password',
676
- 'wp:is_sticky',
677
- 'wp:term_id',
678
- 'wp:category_nicename',
679
- 'wp:category_parent',
680
- 'wp:cat_name',
681
- 'wp:category_description',
682
- 'wp:tag_slug',
683
- 'wp:tag_name',
684
- 'wp:tag_description',
685
- 'wp:term_taxonomy',
686
- 'wp:term_parent',
687
- 'wp:term_name',
688
- 'wp:term_description',
689
- 'wp:author_id',
690
- 'wp:author_login',
691
- 'wp:author_email',
692
- 'wp:author_display_name',
693
- 'wp:author_first_name',
694
- 'wp:author_last_name',
695
- ];
696
-
697
- private static $wp_sub_tags = [
698
- 'wp:comment_id',
699
- 'wp:comment_author',
700
- 'wp:comment_author_email',
701
- 'wp:comment_author_url',
702
- 'wp:comment_author_IP',
703
- 'wp:comment_date',
704
- 'wp:comment_date_gmt',
705
- 'wp:comment_content',
706
- 'wp:comment_approved',
707
- 'wp:comment_type',
708
- 'wp:comment_parent',
709
- 'wp:comment_user_id',
710
- ];
711
-
712
- /**
713
- * @var string
714
- */
715
- private $wxr_version;
716
-
717
- /**
718
- * @var string
719
- */
720
- private $cdata;
721
-
722
- /**
723
- * @var array
724
- */
725
- private $data;
726
-
727
- /**
728
- * @var array
729
- */
730
- private $sub_data;
731
-
732
- /**
733
- * @var boolean
734
- */
735
- private $in_post;
736
-
737
- /**
738
- * @var boolean
739
- */
740
- private $in_tag;
741
-
742
- /**
743
- * @var boolean
744
- */
745
- private $in_sub_tag;
746
-
747
- /**
748
- * @var array
749
- */
750
- private $authors;
751
-
752
- /**
753
- * @var array
754
- */
755
- private $posts;
756
-
757
- /**
758
- * @var array
759
- */
760
- private $term;
761
-
762
- /**
763
- * @var array
764
- */
765
- private $category;
766
-
767
- /**
768
- * @var array
769
- */
770
- private $tag;
771
-
772
- /**
773
- * @var string
774
- */
775
- private $base_url;
776
-
777
- /**
778
- * @var string
779
- */
780
- private $base_blog_url;
781
-
782
- /**
783
- * @param string $file
784
- *
785
- * @return array|WP_Error
786
- */
787
- public function parse( $file ) {
788
- $this->clear();
789
-
790
- $xml = xml_parser_create( 'UTF-8' );
791
- xml_parser_set_option( $xml, XML_OPTION_SKIP_WHITE, 1 );
792
- xml_parser_set_option( $xml, XML_OPTION_CASE_FOLDING, 0 );
793
- xml_set_object( $xml, $this );
794
-
795
- xml_set_character_data_handler( $xml, function ( $parser, $cdata ) {
796
- $this->cdata( $cdata );
797
- } );
798
-
799
- $tag_open_callback = function ( $parse, $tag, $attr ) {
800
- $this->tag_open( $tag, $attr );
801
- };
802
-
803
- $tag_close_callback = function ( $parser, $tag ) {
804
- $this->tag_close( $tag );
805
- };
806
-
807
- xml_set_element_handler( $xml, $tag_open_callback, $tag_close_callback );
808
-
809
- if ( ! xml_parse( $xml, file_get_contents( $file ), true ) ) {
810
- $current_line = xml_get_current_line_number( $xml );
811
- $current_column = xml_get_current_column_number( $xml );
812
- $error_code = xml_get_error_code( $xml );
813
- $error_string = xml_error_string( $error_code );
814
-
815
- return new WP_Error( 'XML_parse_error', 'There was an error when reading this WXR file', [
816
- $current_line,
817
- $current_column,
818
- $error_string,
819
- ] );
820
- }
821
- xml_parser_free( $xml );
822
-
823
- if ( ! preg_match( '/^\d+\.\d+$/', $this->wxr_version ) ) {
824
- return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
825
- }
826
-
827
- return array(
828
- 'authors' => $this->authors,
829
- 'posts' => $this->posts,
830
- 'categories' => $this->category,
831
- 'tags' => $this->tag,
832
- 'terms' => $this->term,
833
- 'base_url' => $this->base_url,
834
- 'base_blog_url' => $this->base_blog_url,
835
- 'version' => $this->wxr_version,
836
- );
837
- }
838
-
839
- private function tag_open( $tag, $attr ) {
840
- if ( in_array( $tag, self::$wp_tags ) ) {
841
- $this->in_tag = substr( $tag, 3 );
842
-
843
- return;
844
- }
845
-
846
- if ( in_array( $tag, self::$wp_sub_tags ) ) {
847
- $this->in_sub_tag = substr( $tag, 3 );
848
-
849
- return;
850
- }
851
-
852
- switch ( $tag ) {
853
- case 'category':
854
- if ( isset( $attr['domain'], $attr['nicename'] ) ) {
855
- $this->sub_data['domain'] = $attr['domain'];
856
- $this->sub_data['slug'] = $attr['nicename'];
857
- }
858
- break;
859
- case 'item':
860
- $this->in_post = true;
861
- // No break !!!.
862
- case 'title':
863
- if ( $this->in_post ) {
864
- $this->in_tag = 'post_title';
865
- }
866
- break;
867
- case 'guid':
868
- $this->in_tag = 'guid';
869
- break;
870
- case 'dc:creator':
871
- $this->in_tag = 'post_author';
872
- break;
873
- case 'content:encoded':
874
- $this->in_tag = 'post_content';
875
- break;
876
- case 'excerpt:encoded':
877
- $this->in_tag = 'post_excerpt';
878
- break;
879
-
880
- case 'wp:term_slug':
881
- $this->in_tag = 'slug';
882
- break;
883
- case 'wp:meta_key':
884
- $this->in_sub_tag = 'key';
885
- break;
886
- case 'wp:meta_value':
887
- $this->in_sub_tag = 'value';
888
- break;
889
- }
890
- }
891
-
892
- private function cdata( $cdata ) {
893
- if ( ! trim( $cdata ) ) {
894
- return;
895
- }
896
-
897
- if ( false !== $this->in_tag || false !== $this->in_sub_tag ) {
898
- $this->cdata .= $cdata;
899
- } else {
900
- $this->cdata .= trim( $cdata );
901
- }
902
- }
903
-
904
- private function tag_close( $tag ) {
905
- switch ( $tag ) {
906
- case 'wp:comment':
907
- unset( $this->sub_data['key'], $this->sub_data['value'] ); // Remove meta sub_data.
908
- if ( ! empty( $this->sub_data ) ) {
909
- $this->data['comments'][] = $this->sub_data;
910
- }
911
- $this->sub_data = [];
912
- break;
913
- case 'wp:commentmeta':
914
- $this->sub_data['commentmeta'][] = [
915
- 'key' => $this->sub_data['key'],
916
- 'value' => $this->sub_data['value'],
917
- ];
918
- break;
919
- case 'category':
920
- if ( ! empty( $this->sub_data ) ) {
921
- $this->sub_data['name'] = $this->cdata;
922
- $this->data['terms'][] = $this->sub_data;
923
- }
924
- $this->sub_data = [];
925
- break;
926
- case 'wp:postmeta':
927
- if ( ! empty( $this->sub_data ) ) {
928
- $this->data['postmeta'][] = $this->sub_data;
929
- }
930
- $this->sub_data = [];
931
- break;
932
- case 'item':
933
- $this->posts[] = $this->data;
934
- $this->data = [];
935
- break;
936
- case 'wp:category':
937
- case 'wp:tag':
938
- case 'wp:term':
939
- $n = substr( $tag, 3 );
940
- array_push( $this->$n, $this->data );
941
- $this->data = [];
942
- break;
943
- case 'wp:termmeta':
944
- if ( ! empty( $this->sub_data ) ) {
945
- $this->data['termmeta'][] = $this->sub_data;
946
- }
947
- $this->sub_data = [];
948
- break;
949
- case 'wp:author':
950
- if ( ! empty( $this->data['author_login'] ) ) {
951
- $this->authors[ $this->data['author_login'] ] = $this->data;
952
- }
953
- $this->data = [];
954
- break;
955
- case 'wp:base_site_url':
956
- $this->base_url = $this->cdata;
957
- if ( ! isset( $this->base_blog_url ) ) {
958
- $this->base_blog_url = $this->cdata;
959
- }
960
- break;
961
- case 'wp:base_blog_url':
962
- $this->base_blog_url = $this->cdata;
963
- break;
964
- case 'wp:wxr_version':
965
- $this->wxr_version = $this->cdata;
966
- break;
967
-
968
- default:
969
- if ( $this->in_sub_tag ) {
970
- $this->sub_data[ $this->in_sub_tag ] = $this->cdata;
971
- $this->in_sub_tag = false;
972
- } elseif ( $this->in_tag ) {
973
- $this->data[ $this->in_tag ] = $this->cdata;
974
- $this->in_tag = false;
975
- }
976
- }
977
-
978
- $this->cdata = '';
979
- }
980
-
981
- private function clear() {
982
- $this->wxr_version = '';
983
-
984
- $this->cdata = '';
985
- $this->data = [];
986
- $this->sub_data = [];
987
-
988
- $this->in_post = false;
989
- $this->in_tag = false;
990
- $this->in_sub_tag = false;
991
-
992
- $this->authors = [];
993
- $this->posts = [];
994
- $this->term = [];
995
- $this->category = [];
996
- $this->tag = [];
997
- }
998
- }
999
-
1000
-
1001
- /**
1002
- * WordPress eXtended RSS file parser implementations,
1003
- * Originally made by WordPress part of WordPress/Importer.
1004
- * https://plugins.trac.wordpress.org/browser/wordpress-importer/trunk/parsers/class-wxr-parser.php
1005
- *
1006
- * What was done:
1007
- * Reformat of the code.
1008
- * Changed text domain.
1009
- */
1010
-
1011
- /**
1012
- * WordPress Importer class for managing parsing of WXR files.
1013
- */
1014
- class WXR_Parser {
1015
-
1016
- public function parse( $file ) {
1017
- // Attempt to use proper XML parsers first.
1018
- if ( extension_loaded( 'simplexml' ) ) {
1019
- $parser = new WXR_Parser_SimpleXML();
1020
- $result = $parser->parse( $file );
1021
-
1022
- // If SimpleXML succeeds or this is an invalid WXR file then return the results.
1023
- if ( ! is_wp_error( $result ) || 'SimpleXML_parse_error' != $result->get_error_code() ) {
1024
- return $result;
1025
- }
1026
- } elseif ( extension_loaded( 'xml' ) ) {
1027
- $parser = new WXR_Parser_XML();
1028
- $result = $parser->parse( $file );
1029
-
1030
- // If XMLParser succeeds or this is an invalid WXR file then return the results.
1031
- if ( ! is_wp_error( $result ) || 'XML_parse_error' != $result->get_error_code() ) {
1032
- return $result;
1033
- }
1034
- }
1035
-
1036
- // Use regular expressions if nothing else available or this is bad XML.
1037
- $parser = new WXR_Parser_Regex();
1038
-
1039
- return $parser->parse( $file );
1040
- }
1041
- }
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly.
4
+ }
5
+
6
+ /**
7
+ * WordPress eXtended RSS file parser implementations
8
+ *
9
+ * @package WordPress
10
+ * @subpackage Importer
11
+ */
12
+
13
+ /**
14
+ * WXR Parser that uses regular expressions. Fallback for installs without an XML parser.
15
+ */
16
+ class WXR_Parser_Regex {
17
+ /**
18
+ * @var bool
19
+ */
20
+ private $has_gzip;
21
+
22
+ private $authors = [];
23
+ private $posts = [];
24
+ private $categories = [];
25
+ private $tags = [];
26
+ private $terms = [];
27
+ private $base_url = '';
28
+ private $base_blog_url = '';
29
+
30
+ /**
31
+ * @param string $file
32
+ *
33
+ * @return array|\WP_Error
34
+ */
35
+ public function parse( $file ) {
36
+ $wxr_version = '';
37
+ $in_multiline = false;
38
+
39
+ $multiline_content = '';
40
+
41
+ $multiline_tags = [
42
+ 'item' => [
43
+ 'posts',
44
+ function ( $post ) {
45
+ return $this->process_post( $post );
46
+ },
47
+ ],
48
+ 'wp:category' => [
49
+ 'categories',
50
+ function ( $category ) {
51
+ return $this->process_category( $category );
52
+ },
53
+ ],
54
+ 'wp:tag' => [
55
+ 'tags',
56
+ function ( $tag ) {
57
+ return $this->process_tag( $tag );
58
+ },
59
+ ],
60
+ 'wp:term' => [
61
+ 'terms',
62
+ function ( $term ) {
63
+ return $this->process_term( $term );
64
+ },
65
+ ],
66
+ ];
67
+
68
+ $fp = $this->fopen( $file, 'r' );
69
+ if ( $fp ) {
70
+ while ( ! $this->feof( $fp ) ) {
71
+ $importline = rtrim( $this->fgets( $fp ) );
72
+
73
+ if ( ! $wxr_version && preg_match( '|<wp:wxr_version>(\d+\.\d+)</wp:wxr_version>|', $importline, $version ) ) {
74
+ $wxr_version = $version[1];
75
+ }
76
+
77
+ if ( false !== strpos( $importline, '<wp:base_site_url>' ) ) {
78
+ preg_match( '|<wp:base_site_url>(.*?)</wp:base_site_url>|is', $importline, $url );
79
+ $this->base_url = $url[1];
80
+ continue;
81
+ }
82
+
83
+ if ( false !== strpos( $importline, '<wp:base_blog_url>' ) ) {
84
+ preg_match( '|<wp:base_blog_url>(.*?)</wp:base_blog_url>|is', $importline, $blog_url );
85
+ $this->base_blog_url = $blog_url[1];
86
+ continue;
87
+ } else {
88
+ $this->base_blog_url = $this->base_url;
89
+ }
90
+
91
+ if ( false !== strpos( $importline, '<wp:author>' ) ) {
92
+ preg_match( '|<wp:author>(.*?)</wp:author>|is', $importline, $author );
93
+ $a = $this->process_author( $author[1] );
94
+ $this->authors[ $a['author_login'] ] = $a;
95
+ continue;
96
+ }
97
+
98
+ foreach ( $multiline_tags as $tag => $handler ) {
99
+ // Handle multi-line tags on a singular line.
100
+ if ( preg_match( '|<'. $tag .'>(.*?)</'. $tag .'>|is', $importline, $matches ) ) {
101
+ $this->{$handler[0]}[] = call_user_func( $handler[1], $matches[1] );
102
+
103
+ continue;
104
+ }
105
+
106
+ $pos = strpos( $importline, "<$tag>" );
107
+
108
+ if ( false !== $pos ) {
109
+ // Take note of any content after the opening tag.
110
+ $multiline_content = trim( substr( $importline, $pos + strlen( $tag ) + 2 ) );
111
+
112
+ // We don't want to have this line added to `$is_multiline` below.
113
+ $importline = '';
114
+ $in_multiline = $tag;
115
+
116
+ continue;
117
+ }
118
+
119
+ $pos = strpos( $importline, "</$tag>" );
120
+
121
+ if ( false !== $pos ) {
122
+ $in_multiline = false;
123
+ $multiline_content .= trim( substr( $importline, 0, $pos ) );
124
+
125
+ $this->{$handler[0]}[] = call_user_func( $handler[1], $multiline_content );
126
+ }
127
+ }
128
+
129
+ if ( $in_multiline && $importline ) {
130
+ $multiline_content .= $importline . "\n";
131
+ }
132
+ }
133
+
134
+ $this->fclose( $fp );
135
+ }
136
+
137
+ if ( ! $wxr_version ) {
138
+ return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
139
+ }
140
+
141
+ return [
142
+ 'authors' => $this->authors,
143
+ 'posts' => $this->posts,
144
+ 'categories' => $this->categories,
145
+ 'tags' => $this->tags,
146
+ 'terms' => $this->terms,
147
+ 'base_url' => $this->base_url,
148
+ 'base_blog_url' => $this->base_blog_url,
149
+ 'version' => $wxr_version,
150
+ ];
151
+ }
152
+
153
+ private function process_category( $category ) {
154
+ $term = [
155
+ 'term_id' => $this->get_tag( $category, 'wp:term_id' ),
156
+ 'cat_name' => $this->get_tag( $category, 'wp:cat_name' ),
157
+ 'category_nicename' => $this->get_tag( $category, 'wp:category_nicename' ),
158
+ 'category_parent' => $this->get_tag( $category, 'wp:category_parent' ),
159
+ 'category_description' => $this->get_tag( $category, 'wp:category_description' ),
160
+ ];
161
+
162
+ $term_meta = $this->process_meta( $category, 'wp:termmeta' );
163
+ if ( ! empty( $term_meta ) ) {
164
+ $term['termmeta'] = $term_meta;
165
+ }
166
+
167
+ return $term;
168
+ }
169
+
170
+ private function process_tag( $tag ) {
171
+ $term = [
172
+ 'term_id' => $this->get_tag( $tag, 'wp:term_id' ),
173
+ 'tag_name' => $this->get_tag( $tag, 'wp:tag_name' ),
174
+ 'tag_slug' => $this->get_tag( $tag, 'wp:tag_slug' ),
175
+ 'tag_description' => $this->get_tag( $tag, 'wp:tag_description' ),
176
+ ];
177
+
178
+ $term_meta = $this->process_meta( $tag, 'wp:termmeta' );
179
+ if ( ! empty( $term_meta ) ) {
180
+ $term['termmeta'] = $term_meta;
181
+ }
182
+
183
+ return $term;
184
+ }
185
+
186
+ private function process_term( $term ) {
187
+ $term_data = [
188
+ 'term_id' => $this->get_tag( $term, 'wp:term_id' ),
189
+ 'term_taxonomy' => $this->get_tag( $term, 'wp:term_taxonomy' ),
190
+ 'slug' => $this->get_tag( $term, 'wp:term_slug' ),
191
+ 'term_parent' => $this->get_tag( $term, 'wp:term_parent' ),
192
+ 'term_name' => $this->get_tag( $term, 'wp:term_name' ),
193
+ 'term_description' => $this->get_tag( $term, 'wp:term_description' ),
194
+ ];
195
+
196
+ $term_meta = $this->process_meta( $term, 'wp:termmeta' );
197
+ if ( ! empty( $term_meta ) ) {
198
+ $term_data['termmeta'] = $term_meta;
199
+ }
200
+
201
+ return $term_data;
202
+ }
203
+
204
+ private function process_meta( $string, $tag ) {
205
+ $parsed_meta = [];
206
+
207
+ preg_match_all( "|<$tag>(.+?)</$tag>|is", $string, $meta );
208
+
209
+ if ( ! isset( $meta[1] ) ) {
210
+ return $parsed_meta;
211
+ }
212
+
213
+ foreach ( $meta[1] as $m ) {
214
+ $parsed_meta[] = [
215
+ 'key' => $this->get_tag( $m, 'wp:meta_key' ),
216
+ 'value' => $this->get_tag( $m, 'wp:meta_value' ),
217
+ ];
218
+ }
219
+
220
+ return $parsed_meta;
221
+ }
222
+
223
+ private function process_author( $a ) {
224
+ return [
225
+ 'author_id' => $this->get_tag( $a, 'wp:author_id' ),
226
+ 'author_login' => $this->get_tag( $a, 'wp:author_login' ),
227
+ 'author_email' => $this->get_tag( $a, 'wp:author_email' ),
228
+ 'author_display_name' => $this->get_tag( $a, 'wp:author_display_name' ),
229
+ 'author_first_name' => $this->get_tag( $a, 'wp:author_first_name' ),
230
+ 'author_last_name' => $this->get_tag( $a, 'wp:author_last_name' ),
231
+ ];
232
+ }
233
+
234
+ private function process_post( $post ) {
235
+ $normalize_tag_callback = function ( $matches ) {
236
+ return $this->normalize_tag( $matches );
237
+ };
238
+
239
+ $post_id = $this->get_tag( $post, 'wp:post_id' );
240
+ $post_title = $this->get_tag( $post, 'title' );
241
+ $post_date = $this->get_tag( $post, 'wp:post_date' );
242
+ $post_date_gmt = $this->get_tag( $post, 'wp:post_date_gmt' );
243
+ $comment_status = $this->get_tag( $post, 'wp:comment_status' );
244
+ $ping_status = $this->get_tag( $post, 'wp:ping_status' );
245
+ $status = $this->get_tag( $post, 'wp:status' );
246
+ $post_name = $this->get_tag( $post, 'wp:post_name' );
247
+ $post_parent = $this->get_tag( $post, 'wp:post_parent' );
248
+ $menu_order = $this->get_tag( $post, 'wp:menu_order' );
249
+ $post_type = $this->get_tag( $post, 'wp:post_type' );
250
+ $post_password = $this->get_tag( $post, 'wp:post_password' );
251
+ $is_sticky = $this->get_tag( $post, 'wp:is_sticky' );
252
+ $guid = $this->get_tag( $post, 'guid' );
253
+ $post_author = $this->get_tag( $post, 'dc:creator' );
254
+
255
+ $post_excerpt = $this->get_tag( $post, 'excerpt:encoded' );
256
+ $post_excerpt = preg_replace_callback( '|<(/?[A-Z]+)|', $normalize_tag_callback, $post_excerpt );
257
+ $post_excerpt = str_replace( '<br>', '<br />', $post_excerpt );
258
+ $post_excerpt = str_replace( '<hr>', '<hr />', $post_excerpt );
259
+
260
+ $post_content = $this->get_tag( $post, 'content:encoded' );
261
+ $post_content = preg_replace_callback( '|<(/?[A-Z]+)|', $normalize_tag_callback, $post_content );
262
+ $post_content = str_replace( '<br>', '<br />', $post_content );
263
+ $post_content = str_replace( '<hr>', '<hr />', $post_content );
264
+
265
+ $postdata = compact( 'post_id', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_excerpt', 'post_title', 'status', 'post_name', 'comment_status', 'ping_status', 'guid', 'post_parent', 'menu_order', 'post_type', 'post_password', 'is_sticky' );
266
+
267
+ $attachment_url = $this->get_tag( $post, 'wp:attachment_url' );
268
+ if ( $attachment_url ) {
269
+ $postdata['attachment_url'] = $attachment_url;
270
+ }
271
+
272
+ preg_match_all( '|<category domain="([^"]+?)" nicename="([^"]+?)">(.+?)</category>|is', $post, $terms, PREG_SET_ORDER );
273
+ foreach ( $terms as $t ) {
274
+ $post_terms[] = [
275
+ 'slug' => $t[2],
276
+ 'domain' => $t[1],
277
+ 'name' => str_replace( [ '<![CDATA[', ']]>' ], '', $t[3] ),
278
+ ];
279
+ }
280
+ if ( ! empty( $post_terms ) ) {
281
+ $postdata['terms'] = $post_terms;
282
+ }
283
+
284
+ preg_match_all( '|<wp:comment>(.+?)</wp:comment>|is', $post, $comments );
285
+ $comments = $comments[1];
286
+ if ( $comments ) {
287
+ foreach ( $comments as $comment ) {
288
+ $post_comments[] = [
289
+ 'comment_id' => $this->get_tag( $comment, 'wp:comment_id' ),
290
+ 'comment_author' => $this->get_tag( $comment, 'wp:comment_author' ),
291
+ 'comment_author_email' => $this->get_tag( $comment, 'wp:comment_author_email' ),
292
+ 'comment_author_IP' => $this->get_tag( $comment, 'wp:comment_author_IP' ),
293
+ 'comment_author_url' => $this->get_tag( $comment, 'wp:comment_author_url' ),
294
+ 'comment_date' => $this->get_tag( $comment, 'wp:comment_date' ),
295
+ 'comment_date_gmt' => $this->get_tag( $comment, 'wp:comment_date_gmt' ),
296
+ 'comment_content' => $this->get_tag( $comment, 'wp:comment_content' ),
297
+ 'comment_approved' => $this->get_tag( $comment, 'wp:comment_approved' ),
298
+ 'comment_type' => $this->get_tag( $comment, 'wp:comment_type' ),
299
+ 'comment_parent' => $this->get_tag( $comment, 'wp:comment_parent' ),
300
+ 'comment_user_id' => $this->get_tag( $comment, 'wp:comment_user_id' ),
301
+ 'commentmeta' => $this->process_meta( $comment, 'wp:commentmeta' ),
302
+ ];
303
+ }
304
+ }
305
+ if ( ! empty( $post_comments ) ) {
306
+ $postdata['comments'] = $post_comments;
307
+ }
308
+
309
+ $post_meta = $this->process_meta( $post, 'wp:postmeta' );
310
+ if ( ! empty( $post_meta ) ) {
311
+ $postdata['postmeta'] = $post_meta;
312
+ }
313
+
314
+ return $postdata;
315
+ }
316
+
317
+ private function get_tag( $string, $tag ) {
318
+ preg_match( "|<$tag.*?>(.*?)</$tag>|is", $string, $return );
319
+ if ( isset( $return[1] ) ) {
320
+ if ( substr( $return[1], 0, 9 ) == '<![CDATA[' ) {
321
+ if ( strpos( $return[1], ']]]]><![CDATA[>' ) !== false ) {
322
+ preg_match_all( '|<!\[CDATA\[(.*?)\]\]>|s', $return[1], $matches );
323
+ $return = '';
324
+ foreach ( $matches[1] as $match ) {
325
+ $return .= $match;
326
+ }
327
+ } else {
328
+ $return = preg_replace( '|^<!\[CDATA\[(.*)\]\]>$|s', '$1', $return[1] );
329
+ }
330
+ } else {
331
+ $return = $return[1];
332
+ }
333
+ } else {
334
+ $return = '';
335
+ }
336
+
337
+ return $return;
338
+ }
339
+
340
+ private function normalize_tag( $matches ) {
341
+ return '<' . strtolower( $matches[1] );
342
+ }
343
+
344
+ private function fopen( $filename, $mode = 'r' ) {
345
+ if ( $this->has_gzip ) {
346
+ return gzopen( $filename, $mode );
347
+ }
348
+
349
+ return fopen( $filename, $mode );
350
+ }
351
+
352
+ private function feof( $fp ) {
353
+ if ( $this->has_gzip ) {
354
+ return gzeof( $fp );
355
+ }
356
+
357
+ return feof( $fp );
358
+ }
359
+
360
+ private function fgets( $fp, $len = 8192 ) {
361
+ if ( $this->has_gzip ) {
362
+ return gzgets( $fp, $len );
363
+ }
364
+
365
+ return fgets( $fp, $len );
366
+ }
367
+
368
+ private function fclose( $fp ) {
369
+ if ( $this->has_gzip ) {
370
+ return gzclose( $fp );
371
+ }
372
+
373
+ return fclose( $fp );
374
+ }
375
+
376
+ public function __construct() {
377
+ $this->has_gzip = is_callable( 'gzopen' );
378
+ }
379
+ }
380
+
381
+ /**
382
+ * WordPress eXtended RSS file parser implementations,
383
+ * Originally made by WordPress part of WordPress/Importer.
384
+ * https://plugins.trac.wordpress.org/browser/wordpress-importer/trunk/parsers/class-wxr-parser-simplexml.php
385
+ *
386
+ * What was done:
387
+ * Reformat of the code.
388
+ * Removed variable '$internal_errors'.
389
+ * Changed text domain.
390
+ */
391
+
392
+ /**
393
+ * WXR Parser that makes use of the SimpleXML PHP extension.
394
+ */
395
+ class WXR_Parser_SimpleXML {
396
+
397
+ /**
398
+ * @param string $file
399
+ *
400
+ * @return array|\WP_Error
401
+ */
402
+ public function parse( $file ) {
403
+ $authors = [];
404
+ $posts = [];
405
+ $categories = [];
406
+ $tags = [];
407
+ $terms = [];
408
+
409
+ libxml_use_internal_errors( true );
410
+
411
+ $dom = new \DOMDocument();
412
+ $old_value = null;
413
+
414
+ $libxml_disable_entity_loader_exists = function_exists( 'libxml_disable_entity_loader' );
415
+
416
+ if ( $libxml_disable_entity_loader_exists ) {
417
+ $old_value = libxml_disable_entity_loader( true ); // phpcs:ignore Generic.PHP.DeprecatedFunctions.Deprecated
418
+ }
419
+
420
+ $success = $dom->loadXML( file_get_contents( $file ) );
421
+
422
+ if ( $libxml_disable_entity_loader_exists && ! is_null( $old_value ) ) {
423
+ libxml_disable_entity_loader( $old_value ); // phpcs:ignore Generic.PHP.DeprecatedFunctions.Deprecated
424
+ }
425
+
426
+ if ( ! $success || isset( $dom->doctype ) ) {
427
+ return new WP_Error( 'SimpleXML_parse_error', esc_html__( 'There was an error when reading this WXR file', 'wpr-addons' ), libxml_get_errors() );
428
+ }
429
+
430
+ $xml = simplexml_import_dom( $dom );
431
+ unset( $dom );
432
+
433
+ // Halt if loading produces an error.
434
+ if ( ! $xml ) {
435
+ return new WP_Error( 'SimpleXML_parse_error', esc_html__( 'There was an error when reading this WXR file', 'wpr-addons' ), libxml_get_errors() );
436
+ }
437
+
438
+ $wxr_version = $xml->xpath( '/rss/channel/wp:wxr_version' );
439
+ if ( ! $wxr_version ) {
440
+ return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
441
+ }
442
+
443
+ $wxr_version = (string) trim( $wxr_version[0] );
444
+ // Confirm that we are dealing with the correct file format.
445
+ if ( ! preg_match( '/^\d+\.\d+$/', $wxr_version ) ) {
446
+ return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
447
+ }
448
+
449
+ $base_url = $xml->xpath( '/rss/channel/wp:base_site_url' );
450
+ $base_url = (string) trim( isset( $base_url[0] ) ? $base_url[0] : '' );
451
+
452
+ $base_blog_url = $xml->xpath( '/rss/channel/wp:base_blog_url' );
453
+ if ( $base_blog_url ) {
454
+ $base_blog_url = (string) trim( $base_blog_url[0] );
455
+ } else {
456
+ $base_blog_url = $base_url;
457
+ }
458
+
459
+ $page_on_front = $xml->xpath( '/rss/channel/wp:page_on_front' );
460
+
461
+ if ( $page_on_front ) {
462
+ $page_on_front = (int) $page_on_front[0];
463
+ }
464
+
465
+ $namespaces = $xml->getDocNamespaces();
466
+ if ( ! isset( $namespaces['wp'] ) ) {
467
+ $namespaces['wp'] = 'http://wordpress.org/export/1.1/';
468
+ }
469
+ if ( ! isset( $namespaces['excerpt'] ) ) {
470
+ $namespaces['excerpt'] = 'http://wordpress.org/export/1.1/excerpt/';
471
+ }
472
+
473
+ // Grab authors.
474
+ foreach ( $xml->xpath( '/rss/channel/wp:author' ) as $author_arr ) {
475
+ $a = $author_arr->children( $namespaces['wp'] );
476
+ $login = (string) $a->author_login;
477
+ $authors[ $login ] = [
478
+ 'author_id' => (int) $a->author_id,
479
+ 'author_login' => $login,
480
+ 'author_email' => (string) $a->author_email,
481
+ 'author_display_name' => (string) $a->author_display_name,
482
+ 'author_first_name' => (string) $a->author_first_name,
483
+ 'author_last_name' => (string) $a->author_last_name,
484
+ ];
485
+ }
486
+
487
+ // Grab cats, tags and terms.
488
+ foreach ( $xml->xpath( '/rss/channel/wp:category' ) as $term_arr ) {
489
+ $t = $term_arr->children( $namespaces['wp'] );
490
+ $category = [
491
+ 'term_id' => (int) $t->term_id,
492
+ 'category_nicename' => (string) $t->category_nicename,
493
+ 'category_parent' => (string) $t->category_parent,
494
+ 'cat_name' => (string) $t->cat_name,
495
+ 'category_description' => (string) $t->category_description,
496
+ ];
497
+
498
+ foreach ( $t->termmeta as $meta ) {
499
+ $category['termmeta'][] = [
500
+ 'key' => (string) $meta->meta_key,
501
+ 'value' => (string) $meta->meta_value,
502
+ ];
503
+ }
504
+
505
+ $categories[] = $category;
506
+ }
507
+
508
+ foreach ( $xml->xpath( '/rss/channel/wp:tag' ) as $term_arr ) {
509
+ $t = $term_arr->children( $namespaces['wp'] );
510
+ $tag = [
511
+ 'term_id' => (int) $t->term_id,
512
+ 'tag_slug' => (string) $t->tag_slug,
513
+ 'tag_name' => (string) $t->tag_name,
514
+ 'tag_description' => (string) $t->tag_description,
515
+ ];
516
+
517
+ foreach ( $t->termmeta as $meta ) {
518
+ $tag['termmeta'][] = [
519
+ 'key' => (string) $meta->meta_key,
520
+ 'value' => (string) $meta->meta_value,
521
+ ];
522
+ }
523
+
524
+ $tags[] = $tag;
525
+ }
526
+
527
+ foreach ( $xml->xpath( '/rss/channel/wp:term' ) as $term_arr ) {
528
+ $t = $term_arr->children( $namespaces['wp'] );
529
+ $term = [
530
+ 'term_id' => (int) $t->term_id,
531
+ 'term_taxonomy' => (string) $t->term_taxonomy,
532
+ 'slug' => (string) $t->term_slug,
533
+ 'term_parent' => (string) $t->term_parent,
534
+ 'term_name' => (string) $t->term_name,
535
+ 'term_description' => (string) $t->term_description,
536
+ ];
537
+
538
+ foreach ( $t->termmeta as $meta ) {
539
+ $term['termmeta'][] = [
540
+ 'key' => (string) $meta->meta_key,
541
+ 'value' => (string) $meta->meta_value,
542
+ ];
543
+ }
544
+
545
+ $terms[] = $term;
546
+ }
547
+
548
+ // Grab posts.
549
+ foreach ( $xml->channel->item as $item ) {
550
+ $post = [
551
+ 'post_title' => (string) $item->title,
552
+ 'guid' => (string) $item->guid,
553
+ ];
554
+
555
+ $dc = $item->children( 'http://purl.org/dc/elements/1.1/' );
556
+ $post['post_author'] = (string) $dc->creator;
557
+
558
+ $content = $item->children( 'http://purl.org/rss/1.0/modules/content/' );
559
+ $excerpt = $item->children( $namespaces['excerpt'] );
560
+ $post['post_content'] = (string) $content->encoded;
561
+ $post['post_excerpt'] = (string) $excerpt->encoded;
562
+
563
+ $wp = $item->children( $namespaces['wp'] );
564
+ $post['post_id'] = (int) $wp->post_id;
565
+ $post['post_date'] = (string) $wp->post_date;
566
+ $post['post_date_gmt'] = (string) $wp->post_date_gmt;
567
+ $post['comment_status'] = (string) $wp->comment_status;
568
+ $post['ping_status'] = (string) $wp->ping_status;
569
+ $post['post_name'] = (string) $wp->post_name;
570
+ $post['status'] = (string) $wp->status;
571
+ $post['post_parent'] = (int) $wp->post_parent;
572
+ $post['menu_order'] = (int) $wp->menu_order;
573
+ $post['post_type'] = (string) $wp->post_type;
574
+ $post['post_password'] = (string) $wp->post_password;
575
+ $post['is_sticky'] = (int) $wp->is_sticky;
576
+
577
+ if ( isset( $wp->attachment_url ) ) {
578
+ $post['attachment_url'] = (string) $wp->attachment_url;
579
+ }
580
+
581
+ foreach ( $item->category as $c ) {
582
+ $att = $c->attributes();
583
+ if ( isset( $att['nicename'] ) ) {
584
+ $post['terms'][] = [
585
+ 'name' => (string) $c,
586
+ 'slug' => (string) $att['nicename'],
587
+ 'domain' => (string) $att['domain'],
588
+ ];
589
+ }
590
+ }
591
+
592
+ foreach ( $wp->postmeta as $meta ) {
593
+ $post['postmeta'][] = [
594
+ 'key' => (string) $meta->meta_key,
595
+ 'value' => (string) $meta->meta_value,
596
+ ];
597
+ }
598
+
599
+ foreach ( $wp->comment as $comment ) {
600
+ $meta = [];
601
+ if ( isset( $comment->commentmeta ) ) {
602
+ foreach ( $comment->commentmeta as $m ) {
603
+ $meta[] = [
604
+ 'key' => (string) $m->meta_key,
605
+ 'value' => (string) $m->meta_value,
606
+ ];
607
+ }
608
+ }
609
+
610
+ $post['comments'][] = [
611
+ 'comment_id' => (int) $comment->comment_id,
612
+ 'comment_author' => (string) $comment->comment_author,
613
+ 'comment_author_email' => (string) $comment->comment_author_email,
614
+ 'comment_author_IP' => (string) $comment->comment_author_IP,
615
+ 'comment_author_url' => (string) $comment->comment_author_url,
616
+ 'comment_date' => (string) $comment->comment_date,
617
+ 'comment_date_gmt' => (string) $comment->comment_date_gmt,
618
+ 'comment_content' => (string) $comment->comment_content,
619
+ 'comment_approved' => (string) $comment->comment_approved,
620
+ 'comment_type' => (string) $comment->comment_type,
621
+ 'comment_parent' => (string) $comment->comment_parent,
622
+ 'comment_user_id' => (int) $comment->comment_user_id,
623
+ 'commentmeta' => $meta,
624
+ ];
625
+ }
626
+
627
+ $posts[] = $post;
628
+ }
629
+
630
+ return [
631
+ 'authors' => $authors,
632
+ 'posts' => $posts,
633
+ 'categories' => $categories,
634
+ 'tags' => $tags,
635
+ 'terms' => $terms,
636
+ 'base_url' => $base_url,
637
+ 'base_blog_url' => $base_blog_url,
638
+ 'page_on_front' => $page_on_front,
639
+ 'version' => $wxr_version,
640
+ ];
641
+ }
642
+ }
643
+
644
+
645
+ /**
646
+ * WordPress eXtended RSS file parser implementations,
647
+ * Originally made by WordPress part of WordPress/Importer.
648
+ * https://plugins.trac.wordpress.org/browser/wordpress-importer/trunk/parsers/class-wxr-parser-xml.php
649
+ *
650
+ * What was done:
651
+ * Reformat of the code.
652
+ * Added PHPDOC.
653
+ * Changed text domain.
654
+ * Added clear() method.
655
+ * Added undeclared class properties.
656
+ * Changed methods visibility.
657
+ */
658
+
659
+ /**
660
+ * WXR Parser that makes use of the XML Parser PHP extension.
661
+ */
662
+ class WXR_Parser_XML {
663
+ private static $wp_tags = [
664
+ 'wp:post_id',
665
+ 'wp:post_date',
666
+ 'wp:post_date_gmt',
667
+ 'wp:comment_status',
668
+ 'wp:ping_status',
669
+ 'wp:attachment_url',
670
+ 'wp:status',
671
+ 'wp:post_name',
672
+ 'wp:post_parent',
673
+ 'wp:menu_order',
674
+ 'wp:post_type',
675
+ 'wp:post_password',
676
+ 'wp:is_sticky',
677
+ 'wp:term_id',
678
+ 'wp:category_nicename',
679
+ 'wp:category_parent',
680
+ 'wp:cat_name',
681
+ 'wp:category_description',
682
+ 'wp:tag_slug',
683
+ 'wp:tag_name',
684
+ 'wp:tag_description',
685
+ 'wp:term_taxonomy',
686
+ 'wp:term_parent',
687
+ 'wp:term_name',
688
+ 'wp:term_description',
689
+ 'wp:author_id',
690
+ 'wp:author_login',
691
+ 'wp:author_email',
692
+ 'wp:author_display_name',
693
+ 'wp:author_first_name',
694
+ 'wp:author_last_name',
695
+ ];
696
+
697
+ private static $wp_sub_tags = [
698
+ 'wp:comment_id',
699
+ 'wp:comment_author',
700
+ 'wp:comment_author_email',
701
+ 'wp:comment_author_url',
702
+ 'wp:comment_author_IP',
703
+ 'wp:comment_date',
704
+ 'wp:comment_date_gmt',
705
+ 'wp:comment_content',
706
+ 'wp:comment_approved',
707
+ 'wp:comment_type',
708
+ 'wp:comment_parent',
709
+ 'wp:comment_user_id',
710
+ ];
711
+
712
+ /**
713
+ * @var string
714
+ */
715
+ private $wxr_version;
716
+
717
+ /**
718
+ * @var string
719
+ */
720
+ private $cdata;
721
+
722
+ /**
723
+ * @var array
724
+ */
725
+ private $data;
726
+
727
+ /**
728
+ * @var array
729
+ */
730
+ private $sub_data;
731
+
732
+ /**
733
+ * @var boolean
734
+ */
735
+ private $in_post;
736
+
737
+ /**
738
+ * @var boolean
739
+ */
740
+ private $in_tag;
741
+
742
+ /**
743
+ * @var boolean
744
+ */
745
+ private $in_sub_tag;
746
+
747
+ /**
748
+ * @var array
749
+ */
750
+ private $authors;
751
+
752
+ /**
753
+ * @var array
754
+ */
755
+ private $posts;
756
+
757
+ /**
758
+ * @var array
759
+ */
760
+ private $term;
761
+
762
+ /**
763
+ * @var array
764
+ */
765
+ private $category;
766
+
767
+ /**
768
+ * @var array
769
+ */
770
+ private $tag;
771
+
772
+ /**
773
+ * @var string
774
+ */
775
+ private $base_url;
776
+
777
+ /**
778
+ * @var string
779
+ */
780
+ private $base_blog_url;
781
+
782
+ /**
783
+ * @param string $file
784
+ *
785
+ * @return array|WP_Error
786
+ */
787
+ public function parse( $file ) {
788
+ $this->clear();
789
+
790
+ $xml = xml_parser_create( 'UTF-8' );
791
+ xml_parser_set_option( $xml, XML_OPTION_SKIP_WHITE, 1 );
792
+ xml_parser_set_option( $xml, XML_OPTION_CASE_FOLDING, 0 );
793
+ xml_set_object( $xml, $this );
794
+
795
+ xml_set_character_data_handler( $xml, function ( $parser, $cdata ) {
796
+ $this->cdata( $cdata );
797
+ } );
798
+
799
+ $tag_open_callback = function ( $parse, $tag, $attr ) {
800
+ $this->tag_open( $tag, $attr );
801
+ };
802
+
803
+ $tag_close_callback = function ( $parser, $tag ) {
804
+ $this->tag_close( $tag );
805
+ };
806
+
807
+ xml_set_element_handler( $xml, $tag_open_callback, $tag_close_callback );
808
+
809
+ if ( ! xml_parse( $xml, file_get_contents( $file ), true ) ) {
810
+ $current_line = xml_get_current_line_number( $xml );
811
+ $current_column = xml_get_current_column_number( $xml );
812
+ $error_code = xml_get_error_code( $xml );
813
+ $error_string = xml_error_string( $error_code );
814
+
815
+ return new WP_Error( 'XML_parse_error', 'There was an error when reading this WXR file', [
816
+ $current_line,
817
+ $current_column,
818
+ $error_string,
819
+ ] );
820
+ }
821
+ xml_parser_free( $xml );
822
+
823
+ if ( ! preg_match( '/^\d+\.\d+$/', $this->wxr_version ) ) {
824
+ return new WP_Error( 'WXR_parse_error', esc_html__( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wpr-addons' ) );
825
+ }
826
+
827
+ return array(
828
+ 'authors' => $this->authors,
829
+ 'posts' => $this->posts,
830
+ 'categories' => $this->category,
831
+ 'tags' => $this->tag,
832
+ 'terms' => $this->term,
833
+ 'base_url' => $this->base_url,
834
+ 'base_blog_url' => $this->base_blog_url,
835
+ 'version' => $this->wxr_version,
836
+ );
837
+ }
838
+
839
+ private function tag_open( $tag, $attr ) {
840
+ if ( in_array( $tag, self::$wp_tags ) ) {
841
+ $this->in_tag = substr( $tag, 3 );
842
+
843
+ return;
844
+ }
845
+
846
+ if ( in_array( $tag, self::$wp_sub_tags ) ) {
847
+ $this->in_sub_tag = substr( $tag, 3 );
848
+
849
+ return;
850
+ }
851
+
852
+ switch ( $tag ) {
853
+ case 'category':
854
+ if ( isset( $attr['domain'], $attr['nicename'] ) ) {
855
+ $this->sub_data['domain'] = $attr['domain'];
856
+ $this->sub_data['slug'] = $attr['nicename'];
857
+ }
858
+ break;
859
+ case 'item':
860
+ $this->in_post = true;
861
+ // No break !!!.
862
+ case 'title':
863
+ if ( $this->in_post ) {
864
+ $this->in_tag = 'post_title';
865
+ }
866
+ break;
867
+ case 'guid':
868
+ $this->in_tag = 'guid';
869
+ break;
870
+ case 'dc:creator':
871
+ $this->in_tag = 'post_author';
872
+ break;
873
+ case 'content:encoded':
874
+ $this->in_tag = 'post_content';
875
+ break;
876
+ case 'excerpt:encoded':
877
+ $this->in_tag = 'post_excerpt';
878
+ break;
879
+
880
+ case 'wp:term_slug':
881
+ $this->in_tag = 'slug';
882
+ break;
883
+ case 'wp:meta_key':
884
+ $this->in_sub_tag = 'key';
885
+ break;
886
+ case 'wp:meta_value':
887
+ $this->in_sub_tag = 'value';
888
+ break;
889
+ }
890
+ }
891
+
892
+ private function cdata( $cdata ) {
893
+ if ( ! trim( $cdata ) ) {
894
+ return;
895
+ }
896
+
897
+ if ( false !== $this->in_tag || false !== $this->in_sub_tag ) {
898
+ $this->cdata .= $cdata;
899
+ } else {
900
+ $this->cdata .= trim( $cdata );
901
+ }
902
+ }
903
+
904
+ private function tag_close( $tag ) {
905
+ switch ( $tag ) {
906
+ case 'wp:comment':
907
+ unset( $this->sub_data['key'], $this->sub_data['value'] ); // Remove meta sub_data.
908
+ if ( ! empty( $this->sub_data ) ) {
909
+ $this->data['comments'][] = $this->sub_data;
910
+ }
911
+ $this->sub_data = [];
912
+ break;
913
+ case 'wp:commentmeta':
914
+ $this->sub_data['commentmeta'][] = [
915
+ 'key' => $this->sub_data['key'],
916
+ 'value' => $this->sub_data['value'],
917
+ ];
918
+ break;
919
+ case 'category':
920
+ if ( ! empty( $this->sub_data ) ) {
921
+ $this->sub_data['name'] = $this->cdata;
922
+ $this->data['terms'][] = $this->sub_data;
923
+ }
924
+ $this->sub_data = [];
925
+ break;
926
+ case 'wp:postmeta':
927
+ if ( ! empty( $this->sub_data ) ) {
928
+ $this->data['postmeta'][] = $this->sub_data;
929
+ }
930
+ $this->sub_data = [];
931
+ break;
932
+ case 'item':
933
+ $this->posts[] = $this->data;
934
+ $this->data = [];
935
+ break;
936
+ case 'wp:category':
937
+ case 'wp:tag':
938
+ case 'wp:term':
939
+ $n = substr( $tag, 3 );
940
+ array_push( $this->$n, $this->data );
941
+ $this->data = [];
942
+ break;
943
+ case 'wp:termmeta':
944
+ if ( ! empty( $this->sub_data ) ) {
945
+ $this->data['termmeta'][] = $this->sub_data;
946
+ }
947
+ $this->sub_data = [];
948
+ break;
949
+ case 'wp:author':
950
+ if ( ! empty( $this->data['author_login'] ) ) {
951
+ $this->authors[ $this->data['author_login'] ] = $this->data;
952
+ }
953
+ $this->data = [];
954
+ break;
955
+ case 'wp:base_site_url':
956
+ $this->base_url = $this->cdata;
957
+ if ( ! isset( $this->base_blog_url ) ) {
958
+ $this->base_blog_url = $this->cdata;
959
+ }
960
+ break;
961
+ case 'wp:base_blog_url':
962
+ $this->base_blog_url = $this->cdata;
963
+ break;
964
+ case 'wp:wxr_version':
965
+ $this->wxr_version = $this->cdata;
966
+ break;
967
+
968
+ default:
969
+ if ( $this->in_sub_tag ) {
970
+ $this->sub_data[ $this->in_sub_tag ] = $this->cdata;
971
+ $this->in_sub_tag = false;
972
+ } elseif ( $this->in_tag ) {
973
+ $this->data[ $this->in_tag ] = $this->cdata;
974
+ $this->in_tag = false;
975
+ }
976
+ }
977
+
978
+ $this->cdata = '';
979
+ }
980
+
981
+ private function clear() {
982
+ $this->wxr_version = '';
983
+
984
+ $this->cdata = '';
985
+ $this->data = [];
986
+ $this->sub_data = [];
987
+
988
+ $this->in_post = false;
989
+ $this->in_tag = false;
990
+ $this->in_sub_tag = false;
991
+
992
+ $this->authors = [];
993
+ $this->posts = [];
994
+ $this->term = [];
995
+ $this->category = [];
996
+ $this->tag = [];
997
+ }
998
+ }
999
+
1000
+
1001
+ /**
1002
+ * WordPress eXtended RSS file parser implementations,
1003
+ * Originally made by WordPress part of WordPress/Importer.
1004
+ * https://plugins.trac.wordpress.org/browser/wordpress-importer/trunk/parsers/class-wxr-parser.php
1005
+ *
1006
+ * What was done:
1007
+ * Reformat of the code.
1008
+ * Changed text domain.
1009
+ */
1010
+
1011
+ /**
1012
+ * WordPress Importer class for managing parsing of WXR files.
1013
+ */
1014
+ class WXR_Parser {
1015
+
1016
+ public function parse( $file ) {
1017
+ // Attempt to use proper XML parsers first.
1018
+ if ( extension_loaded( 'simplexml' ) ) {
1019
+ $parser = new WXR_Parser_SimpleXML();
1020
+ $result = $parser->parse( $file );
1021
+
1022
+ // If SimpleXML succeeds or this is an invalid WXR file then return the results.
1023
+ if ( ! is_wp_error( $result ) || 'SimpleXML_parse_error' != $result->get_error_code() ) {
1024
+ return $result;
1025
+ }
1026
+ } elseif ( extension_loaded( 'xml' ) ) {
1027
+ $parser = new WXR_Parser_XML();
1028
+ $result = $parser->parse( $file );
1029
+
1030
+ // If XMLParser succeeds or this is an invalid WXR file then return the results.
1031
+ if ( ! is_wp_error( $result ) || 'XML_parse_error' != $result->get_error_code() ) {
1032
+ return $result;
1033
+ }
1034
+ }
1035
+
1036
+ // Use regular expressions if nothing else available or this is bad XML.
1037
+ $parser = new WXR_Parser_Regex();
1038
+
1039
+ return $parser->parse( $file );
1040
+ }
1041
+ }
admin/import/class-wordpress-importer.php CHANGED
@@ -1,1370 +1,1370 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- if ( ! defined( 'WP_LOAD_IMPORTERS' ) )
8
- return;
9
-
10
- /** Display verbose errors */
11
- define( 'IMPORT_DEBUG', false );
12
-
13
- // Load Importer API
14
- require_once ABSPATH . 'wp-admin/includes/import.php';
15
-
16
- if ( ! class_exists( 'WP_Importer' ) ) {
17
- $class_wp_importer = ABSPATH . 'wp-admin/includes/class-wp-importer.php';
18
- if ( file_exists( $class_wp_importer ) )
19
- require $class_wp_importer;
20
- }
21
-
22
- // include WXR file parsers
23
- require WPR_ADDONS_PATH .'admin/import/class-parsers.php';
24
-
25
- class WP_Import extends WP_Importer {
26
- const DEFAULT_BUMP_REQUEST_TIMEOUT = 60;
27
- const DEFAULT_ALLOW_CREATE_USERS = true;
28
- const DEFAULT_IMPORT_ATTACHMENT_SIZE_LIMIT = 0; // 0 = unlimited.
29
-
30
- /**
31
- * @var string
32
- */
33
- private $requested_file_path;
34
-
35
- /**
36
- * @var array
37
- */
38
- private $args;
39
-
40
- /**
41
- * @var array
42
- */
43
- private $output = [
44
- 'status' => 'failed',
45
- 'errors' => [],
46
- ];
47
-
48
- /*
49
- * WXR attachment ID
50
- */
51
- private $id;
52
-
53
- // Information to import from WXR file.
54
- private $version;
55
- private $authors = [];
56
- private $posts = [];
57
- private $terms = [];
58
- private $categories = [];
59
- private $tags = [];
60
- private $base_url = '';
61
- private $page_on_front;
62
-
63
- // Mappings from old information to new.
64
- private $processed_authors = [];
65
- private $author_mapping = [];
66
- private $processed_terms = [];
67
- private $processed_posts = [];
68
- private $post_orphans = [];
69
- private $processed_menu_items = [];
70
- private $menu_item_orphans = [];
71
- private $missing_menu_items = [];
72
-
73
- private $fetch_attachments = false;
74
- private $url_remap = [];
75
- private $featured_images = [];
76
-
77
- /**
78
- * Parses filename from a Content-Disposition header value.
79
- *
80
- * As per RFC6266:
81
- *
82
- * content-disposition = "Content-Disposition" ":"
83
- * disposition-type *( ";" disposition-parm )
84
- *
85
- * disposition-type = "inline" | "attachment" | disp-ext-type
86
- * ; case-insensitive
87
- * disp-ext-type = token
88
- *
89
- * disposition-parm = filename-parm | disp-ext-parm
90
- *
91
- * filename-parm = "filename" "=" value
92
- * | "filename*" "=" ext-value
93
- *
94
- * disp-ext-parm = token "=" value
95
- * | ext-token "=" ext-value
96
- * ext-token = <the characters in token, followed by "*">
97
- *
98
- * @param string[] $disposition_header List of Content-Disposition header values.
99
- *
100
- * @return string|null Filename if available, or null if not found.
101
- * @link http://tools.ietf.org/html/rfc2388
102
- * @link http://tools.ietf.org/html/rfc6266
103
- *
104
- * @see WP_REST_Attachments_Controller::get_filename_from_disposition()
105
- *
106
- */
107
- protected static function get_filename_from_disposition( $disposition_header ) {
108
- // Get the filename.
109
- $filename = null;
110
-
111
- foreach ( $disposition_header as $value ) {
112
- $value = trim( $value );
113
-
114
- if ( strpos( $value, ';' ) === false ) {
115
- continue;
116
- }
117
-
118
- list( $type, $attr_parts ) = explode( ';', $value, 2 );
119
-
120
- $attr_parts = explode( ';', $attr_parts );
121
- $attributes = [];
122
-
123
- foreach ( $attr_parts as $part ) {
124
- if ( strpos( $part, '=' ) === false ) {
125
- continue;
126
- }
127
-
128
- list( $key, $value ) = explode( '=', $part, 2 );
129
-
130
- $attributes[ trim( $key ) ] = trim( $value );
131
- }
132
-
133
- if ( empty( $attributes['filename'] ) ) {
134
- continue;
135
- }
136
-
137
- $filename = trim( $attributes['filename'] );
138
-
139
- // Unquote quoted filename, but after trimming.
140
- if ( substr( $filename, 0, 1 ) === '"' && substr( $filename, -1, 1 ) === '"' ) {
141
- $filename = substr( $filename, 1, -1 );
142
- }
143
- }
144
-
145
- return $filename;
146
- }
147
-
148
- /**
149
- * Retrieves file extension by mime type.
150
- *
151
- * @param string $mime_type Mime type to search extension for.
152
- *
153
- * @return string|null File extension if available, or null if not found.
154
- */
155
- protected static function get_file_extension_by_mime_type( $mime_type ) {
156
- static $map = null;
157
-
158
- if ( is_array( $map ) ) {
159
- return isset( $map[ $mime_type ] ) ? $map[ $mime_type ] : null;
160
- }
161
-
162
- $mime_types = wp_get_mime_types();
163
- $map = array_flip( $mime_types );
164
-
165
- // Some types have multiple extensions, use only the first one.
166
- foreach ( $map as $type => $extensions ) {
167
- $map[ $type ] = strtok( $extensions, '|' );
168
- }
169
-
170
- return isset( $map[ $mime_type ] ) ? $map[ $mime_type ] : null;
171
- }
172
-
173
- /**
174
- * The main controller for the actual import stage.
175
- *
176
- * @param string $file Path to the WXR file for importing
177
- */
178
- private function import( $file ) {
179
- add_filter( 'import_post_meta_key', function ( $key ) {
180
- return $this->is_valid_meta_key( $key );
181
- } );
182
- add_filter( 'http_request_timeout', function () {
183
- return self::DEFAULT_BUMP_REQUEST_TIMEOUT;
184
- } );
185
-
186
- if ( ! $this->import_start( $file ) ) {
187
- return;
188
- }
189
-
190
- $this->set_author_mapping();
191
-
192
- wp_suspend_cache_invalidation( true );
193
- $imported_summary = [
194
- 'categories' => $this->process_categories(),
195
- 'tags' => $this->process_tags(),
196
- 'terms' => $this->process_terms(),
197
- 'posts' => $this->process_posts(),
198
- ];
199
- wp_suspend_cache_invalidation( false );
200
-
201
- // Update incorrect/missing information in the DB.
202
- $this->backfill_parents();
203
- $this->backfill_attachment_urls();
204
- $this->remap_featured_images();
205
-
206
- $this->import_end();
207
-
208
- $is_some_succeed = false;
209
- foreach ( $imported_summary as $item ) {
210
- if ( $item > 0 ) {
211
- $is_some_succeed = true;
212
- break;
213
- }
214
- }
215
-
216
- if ( $is_some_succeed ) {
217
- $this->output['status'] = 'success';
218
- $this->output['summary'] = $imported_summary;
219
- }
220
- }
221
-
222
- /**
223
- * Parses the WXR file and prepares us for the task of processing parsed data.
224
- *
225
- * @param string $file Path to the WXR file for importing
226
- */
227
- private function import_start( $file ) {
228
- if ( ! is_file( $file ) ) {
229
- $this->output['errors'] = [ esc_html__( 'The file does not exist, please try again.', 'wpr-addons' ) ];
230
-
231
- return false;
232
- }
233
-
234
- $import_data = $this->parse( $file );
235
-
236
- if ( is_wp_error( $import_data ) ) {
237
- $this->output['errors'] = [ $import_data->get_error_message() ];
238
-
239
- return false;
240
- }
241
-
242
- $this->version = $import_data['version'];
243
- $this->set_authors_from_import( $import_data );
244
- $this->posts = $import_data['posts'];
245
- $this->terms = $import_data['terms'];
246
- $this->categories = $import_data['categories'];
247
- $this->tags = $import_data['tags'];
248
- $this->base_url = esc_url( $import_data['base_url'] );
249
- $this->page_on_front = $import_data['page_on_front'];
250
-
251
- wp_defer_term_counting( true );
252
- wp_defer_comment_counting( true );
253
-
254
- do_action( 'import_start' );
255
-
256
- return true;
257
- }
258
-
259
- /**
260
- * Performs post-import cleanup of files and the cache
261
- */
262
- private function import_end() {
263
- wp_import_cleanup( $this->id );
264
-
265
- wp_cache_flush();
266
-
267
- foreach ( get_taxonomies() as $tax ) {
268
- delete_option( "{$tax}_children" );
269
- _get_term_hierarchy( $tax );
270
- }
271
-
272
- wp_defer_term_counting( false );
273
- wp_defer_comment_counting( false );
274
-
275
- do_action( 'import_end' );
276
- }
277
-
278
- /**
279
- * Retrieve authors from parsed WXR data and set it to `$this->>authors`.
280
- *
281
- * Uses the provided author information from WXR 1.1 files
282
- * or extracts info from each post for WXR 1.0 files
283
- *
284
- * @param array $import_data Data returned by a WXR parser
285
- */
286
- private function set_authors_from_import( $import_data ) {
287
- if ( ! empty( $import_data['authors'] ) ) {
288
- $this->authors = $import_data['authors'];
289
- // No author information, grab it from the posts.
290
- } else {
291
- foreach ( $import_data['posts'] as $post ) {
292
- $login = sanitize_user( $post['post_author'], true );
293
-
294
- if ( empty( $login ) ) {
295
- /* translators: %s: Post author. */
296
- $this->output['errors'][] = sprintf( esc_html__( 'Failed to import author %s. Their posts will be attributed to the current user.', 'wpr-addons' ), $post['post_author'] );
297
- continue;
298
- }
299
-
300
- if ( ! isset( $this->authors[ $login ] ) ) {
301
- $this->authors[ $login ] = [
302
- 'author_login' => $login,
303
- 'author_display_name' => $post['post_author'],
304
- ];
305
- }
306
- }
307
- }
308
- }
309
-
310
- /**
311
- * Map old author logins to local user IDs based on decisions made
312
- * in import options form. Can map to an existing user, create a new user
313
- * or falls back to the current user in case of error with either of the previous
314
- */
315
- private function set_author_mapping() {
316
- if ( ! isset( $this->args['imported_authors'] ) ) {
317
- return;
318
- }
319
-
320
- $create_users = apply_filters( 'import_allow_create_users', self::DEFAULT_ALLOW_CREATE_USERS );
321
-
322
- foreach ( (array) $this->args['imported_authors'] as $i => $old_login ) {
323
- // Multisite adds strtolower to sanitize_user. Need to sanitize here to stop breakage in process_posts.
324
- $santized_old_login = sanitize_user( $old_login, true );
325
- $old_id = isset( $this->authors[ $old_login ]['author_id'] ) ? intval( $this->authors[ $old_login ]['author_id'] ) : false;
326
-
327
- if ( ! empty( $this->args['user_map'][ $i ] ) ) {
328
- $user = get_userdata( intval( $this->args['user_map'][ $i ] ) );
329
- if ( isset( $user->ID ) ) {
330
- if ( $old_id ) {
331
- $this->processed_authors[ $old_id ] = $user->ID;
332
- }
333
- $this->author_mapping[ $santized_old_login ] = $user->ID;
334
- }
335
- } elseif ( $create_users ) {
336
- $user_id = 0;
337
- if ( ! empty( $this->args['user_new'][ $i ] ) ) {
338
- $user_id = wp_create_user( $this->args['user_new'][ $i ], wp_generate_password() );
339
- } elseif ( '1.0' !== $this->version ) {
340
- $user_data = [
341
- 'user_login' => $old_login,
342
- 'user_pass' => wp_generate_password(),
343
- 'user_email' => isset( $this->authors[ $old_login ]['author_email'] ) ? $this->authors[ $old_login ]['author_email'] : '',
344
- 'display_name' => $this->authors[ $old_login ]['author_display_name'],
345
- 'first_name' => isset( $this->authors[ $old_login ]['author_first_name'] ) ? $this->authors[ $old_login ]['author_first_name'] : '',
346
- 'last_name' => isset( $this->authors[ $old_login ]['author_last_name'] ) ? $this->authors[ $old_login ]['author_last_name'] : '',
347
- ];
348
- $user_id = wp_insert_user( $user_data );
349
- }
350
-
351
- if ( ! is_wp_error( $user_id ) ) {
352
- if ( $old_id ) {
353
- $this->processed_authors[ $old_id ] = $user_id;
354
- }
355
- $this->author_mapping[ $santized_old_login ] = $user_id;
356
- } else {
357
- /* translators: %s: Author display name. */
358
- $error = sprintf( esc_html__( 'Failed to create new user for %s. Their posts will be attributed to the current user.', 'wpr-addons' ), $this->authors[ $old_login ]['author_display_name'] );
359
-
360
- if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
361
- $error .= PHP_EOL . $user_id->get_error_message();
362
- }
363
-
364
- $this->output['errors'][] = $error;
365
- }
366
- }
367
-
368
- // Failsafe: if the user_id was invalid, default to the current user.
369
- if ( ! isset( $this->author_mapping[ $santized_old_login ] ) ) {
370
- if ( $old_id ) {
371
- $this->processed_authors[ $old_id ] = (int) get_current_user_id();
372
- }
373
- $this->author_mapping[ $santized_old_login ] = (int) get_current_user_id();
374
- }
375
- }
376
- }
377
-
378
- /**
379
- * Create new categories based on import information
380
- *
381
- * Doesn't create a new category if its slug already exists
382
- *
383
- * @return int number of imported categories.
384
- */
385
- private function process_categories() {
386
- $result = 0;
387
-
388
- $this->categories = apply_filters( 'wp_import_categories', $this->categories );
389
-
390
- if ( empty( $this->categories ) ) {
391
- return $result;
392
- }
393
-
394
- foreach ( $this->categories as $cat ) {
395
- // if the category already exists leave it alone
396
- $term_id = term_exists( $cat['category_nicename'], 'category' );
397
- if ( $term_id ) {
398
- if ( is_array( $term_id ) ) {
399
- $term_id = $term_id['term_id'];
400
- }
401
- if ( isset( $cat['term_id'] ) ) {
402
- $this->processed_terms[ intval( $cat['term_id'] ) ] = (int) $term_id;
403
- }
404
- continue;
405
- }
406
-
407
- $parent = empty( $cat['category_parent'] ) ? 0 : category_exists( $cat['category_parent'] );
408
- $description = isset( $cat['category_description'] ) ? $cat['category_description'] : '';
409
-
410
- $data = [
411
- 'category_nicename' => $cat['category_nicename'],
412
- 'category_parent' => $parent,
413
- 'cat_name' => wp_slash( $cat['cat_name'] ),
414
- 'category_description' => wp_slash( $description ),
415
- ];
416
-
417
- $id = wp_insert_category( $data );
418
- if ( ! is_wp_error( $id ) && $id > 0 ) {
419
- if ( isset( $cat['term_id'] ) ) {
420
- $this->processed_terms[ intval( $cat['term_id'] ) ] = $id;
421
- }
422
- $result++;
423
- } else {
424
- /* translators: %s: Category name. */
425
- $error = sprintf( esc_html__( 'Failed to import category %s', 'wpr-addons' ), $cat['category_nicename'] );
426
-
427
- if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
428
- $error .= PHP_EOL . $id->get_error_message();
429
- }
430
-
431
- $this->output['errors'][] = $error;
432
- continue;
433
- }
434
-
435
- $this->process_termmeta( $cat, $id );
436
- }
437
-
438
- unset( $this->categories );
439
-
440
- return $result;
441
- }
442
-
443
- /**
444
- * Create new post tags based on import information
445
- *
446
- * Doesn't create a tag if its slug already exists
447
- *
448
- * @return int number of imported tags.
449
- */
450
- private function process_tags() {
451
- $result = 0;
452
-
453
- $this->tags = apply_filters( 'wp_import_tags', $this->tags );
454
-
455
- if ( empty( $this->tags ) ) {
456
- return $result;
457
- }
458
-
459
- foreach ( $this->tags as $tag ) {
460
- // if the tag already exists leave it alone
461
- $term_id = term_exists( $tag['tag_slug'], 'post_tag' );
462
- if ( $term_id ) {
463
- if ( is_array( $term_id ) ) {
464
- $term_id = $term_id['term_id'];
465
- }
466
- if ( isset( $tag['term_id'] ) ) {
467
- $this->processed_terms[ intval( $tag['term_id'] ) ] = (int) $term_id;
468
- }
469
- continue;
470
- }
471
-
472
- $description = isset( $tag['tag_description'] ) ? $tag['tag_description'] : '';
473
- $args = [
474
- 'slug' => $tag['tag_slug'],
475
- 'description' => wp_slash( $description ),
476
- ];
477
-
478
- $id = wp_insert_term( wp_slash( $tag['tag_name'] ), 'post_tag', $args );
479
- if ( ! is_wp_error( $id ) ) {
480
- if ( isset( $tag['term_id'] ) ) {
481
- $this->processed_terms[ intval( $tag['term_id'] ) ] = $id['term_id'];
482
- }
483
- $result++;
484
- } else {
485
- /* translators: %s: Tag name. */
486
- $error = sprintf( esc_html__( 'Failed to import post tag %s', 'wpr-addons' ), $tag['tag_name'] );
487
-
488
- if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
489
- $error .= PHP_EOL . $id->get_error_message();
490
- }
491
-
492
- $this->output['errors'][] = $error;
493
- continue;
494
- }
495
-
496
- $this->process_termmeta( $tag, $id['term_id'] );
497
- }
498
-
499
- unset( $this->tags );
500
-
501
- return $result;
502
- }
503
-
504
- /**
505
- * Create new terms based on import information
506
- *
507
- * Doesn't create a term its slug already exists
508
- *
509
- * @return int number of imported terms.
510
- */
511
- private function process_terms() {
512
- $result = 0;
513
-
514
- $this->terms = apply_filters( 'wp_import_terms', $this->terms );
515
-
516
- if ( empty( $this->terms ) ) {
517
- return $result;
518
- }
519
-
520
- foreach ( $this->terms as $term ) {
521
- // if the term already exists in the correct taxonomy leave it alone
522
- $term_id = term_exists( $term['slug'], $term['term_taxonomy'] );
523
- if ( $term_id ) {
524
- if ( is_array( $term_id ) ) {
525
- $term_id = $term_id['term_id'];
526
- }
527
- if ( isset( $term['term_id'] ) ) {
528
- $this->processed_terms[ intval( $term['term_id'] ) ] = (int) $term_id;
529
- }
530
- continue;
531
- }
532
-
533
- if ( empty( $term['term_parent'] ) ) {
534
- $parent = 0;
535
- } else {
536
- $parent = term_exists( $term['term_parent'], $term['term_taxonomy'] );
537
- if ( is_array( $parent ) ) {
538
- $parent = $parent['term_id'];
539
- }
540
- }
541
-
542
- $description = isset( $term['term_description'] ) ? $term['term_description'] : '';
543
- $args = [
544
- 'slug' => $term['slug'],
545
- 'description' => wp_slash( $description ),
546
- 'parent' => (int) $parent,
547
- ];
548
-
549
- $id = wp_insert_term( wp_slash( $term['term_name'] ), $term['term_taxonomy'], $args );
550
- if ( ! is_wp_error( $id ) ) {
551
- if ( isset( $term['term_id'] ) ) {
552
- $this->processed_terms[ intval( $term['term_id'] ) ] = $id['term_id'];
553
- }
554
- $result++;
555
- } else {
556
- /* translators: 1: Term taxonomy, 2: Term name. */
557
- $error = sprintf( esc_html__( 'Failed to import %1$s %2$s', 'wpr-addons' ), $term['term_taxonomy'], $term['term_name'] );
558
-
559
- if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
560
- $error .= PHP_EOL . $id->get_error_message();
561
- }
562
-
563
- $this->output['errors'][] = $error;
564
- continue;
565
- }
566
-
567
- $this->process_termmeta( $term, $id['term_id'] );
568
- }
569
-
570
- unset( $this->terms );
571
-
572
- return $result;
573
- }
574
-
575
- /**
576
- * Add metadata to imported term.
577
- *
578
- * @param array $term Term data from WXR import.
579
- * @param int $term_id ID of the newly created term.
580
- */
581
- private function process_termmeta( $term, $term_id ) {
582
- if ( ! function_exists( 'add_term_meta' ) ) {
583
- return;
584
- }
585
-
586
- if ( ! isset( $term['termmeta'] ) ) {
587
- $term['termmeta'] = [];
588
- }
589
-
590
- /**
591
- * Filters the metadata attached to an imported term.
592
- *
593
- * @param array $termmeta Array of term meta.
594
- * @param int $term_id ID of the newly created term.
595
- * @param array $term Term data from the WXR import.
596
- */
597
- $term['termmeta'] = apply_filters( 'wp_import_term_meta', $term['termmeta'], $term_id, $term );
598
-
599
- if ( empty( $term['termmeta'] ) ) {
600
- return;
601
- }
602
-
603
- foreach ( $term['termmeta'] as $meta ) {
604
- /**
605
- * Filters the meta key for an imported piece of term meta.
606
- *
607
- * @param string $meta_key Meta key.
608
- * @param int $term_id ID of the newly created term.
609
- * @param array $term Term data from the WXR import.
610
- */
611
- $key = apply_filters( 'import_term_meta_key', $meta['key'], $term_id, $term );
612
- if ( ! $key ) {
613
- continue;
614
- }
615
-
616
- // Export gets meta straight from the DB so could have a serialized string
617
- $value = maybe_unserialize( $meta['value'] );
618
-
619
- add_term_meta( $term_id, wp_slash( $key ), wp_slash_strings_only( $value ) );
620
-
621
- /**
622
- * Fires after term meta is imported.
623
- *
624
- * @param int $term_id ID of the newly created term.
625
- * @param string $key Meta key.
626
- * @param mixed $value Meta value.
627
- */
628
- do_action( 'import_term_meta', $term_id, $key, $value );
629
- }
630
- }
631
-
632
- /**
633
- * Create new posts based on import information
634
- *
635
- * Posts marked as having a parent which doesn't exist will become top level items.
636
- * Doesn't create a new post if: the post type doesn't exist, the given post ID
637
- * is already noted as imported or a post with the same title and date already exists.
638
- * Note that new/updated terms, comments and meta are imported for the last of the above.
639
- *
640
- * @return array the ids of succeed/failed imported posts.
641
- */
642
- private function process_posts() {
643
- $result = [
644
- 'succeed' => [],
645
- 'failed' => [],
646
- ];
647
-
648
- $this->posts = apply_filters( 'wp_import_posts', $this->posts );
649
-
650
- foreach ( $this->posts as $post ) {
651
- $post = apply_filters( 'wp_import_post_data_raw', $post );
652
-
653
- if ( ! post_type_exists( $post['post_type'] ) ) {
654
- /* translators: 1: Post title, 2: Post type. */
655
- $this->output['errors'][] = sprintf( esc_html__( 'Failed to import %1$s: Invalid post type %2$s', 'wpr-addons' ), $post['post_title'], $post['post_type'] );
656
- do_action( 'wp_import_post_exists', $post );
657
- continue;
658
- }
659
-
660
- if ( isset( $this->processed_posts[ $post['post_id'] ] ) && ! empty( $post['post_id'] ) ) {
661
- continue;
662
- }
663
-
664
- if ( 'auto-draft' === $post['status'] ) {
665
- continue;
666
- }
667
-
668
- if ( 'nav_menu_item' === $post['post_type'] ) {
669
- $this->process_menu_item( $post );
670
- continue;
671
- }
672
-
673
- $post_type_object = get_post_type_object( $post['post_type'] );
674
-
675
- $post_parent = (int) $post['post_parent'];
676
- if ( $post_parent ) {
677
- // if we already know the parent, map it to the new local ID.
678
- if ( isset( $this->processed_posts[ $post_parent ] ) ) {
679
- $post_parent = $this->processed_posts[ $post_parent ];
680
- // otherwise record the parent for later.
681
- } else {
682
- $this->post_orphans[ intval( $post['post_id'] ) ] = $post_parent;
683
- $post_parent = 0;
684
- }
685
- }
686
-
687
- // Map the post author.
688
- $author = sanitize_user( $post['post_author'], true );
689
- if ( isset( $this->author_mapping[ $author ] ) ) {
690
- $author = $this->author_mapping[ $author ];
691
- } else {
692
- $author = (int) get_current_user_id();
693
- }
694
-
695
- $postdata = [
696
- 'import_id' => $post['post_id'],
697
- 'post_author' => $author,
698
- 'post_content' => $post['post_content'],
699
- 'post_excerpt' => $post['post_excerpt'],
700
- 'post_title' => $post['post_title'],
701
- 'post_status' => $post['status'],
702
- 'post_name' => $post['post_name'],
703
- 'comment_status' => $post['comment_status'],
704
- 'ping_status' => $post['ping_status'],
705
- 'guid' => $post['guid'],
706
- 'post_parent' => $post_parent,
707
- 'menu_order' => $post['menu_order'],
708
- 'post_type' => $post['post_type'],
709
- 'post_password' => $post['post_password'],
710
- 'post_date' => $post['post_date'],
711
- ];
712
-
713
- $original_post_id = $post['post_id'];
714
- $postdata = apply_filters( 'wp_import_post_data_processed', $postdata, $post );
715
-
716
- $postdata = wp_slash( $postdata );
717
-
718
- if ( 'attachment' === $postdata['post_type'] ) {
719
- $remote_url = ! empty( $post['attachment_url'] ) ? $post['attachment_url'] : $post['guid'];
720
-
721
- // try to use _wp_attached file for upload folder placement to ensure the same location as the export site
722
- // e.g. location is 2003/05/image.jpg but the attachment post_date is 2010/09, see media_handle_upload()
723
- $postdata['upload_date'] = $post['post_date'];
724
- if ( isset( $post['postmeta'] ) ) {
725
- foreach ( $post['postmeta'] as $meta ) {
726
- if ( '_wp_attached_file' === $meta['key'] ) {
727
- if ( preg_match( '%^[0-9]{4}/[0-9]{2}%', $meta['value'], $matches ) ) {
728
- $postdata['upload_date'] = $matches[0];
729
- }
730
- break;
731
- }
732
- }
733
- }
734
-
735
- $post_id = $this->process_attachment( $postdata, $remote_url );
736
- $comment_post_id = $post_id;
737
- } else {
738
- $post_id = wp_insert_post( $postdata, true );
739
- $comment_post_id = $post_id;
740
- do_action( 'wp_import_insert_post', $post_id, $original_post_id, $postdata, $post );
741
- }
742
-
743
- if ( is_wp_error( $post_id ) ) {
744
- /* translators: 1: Post type singular label, 2: Post title. */
745
- $error = sprintf( __( 'Failed to import %1$s %2$s', 'wpr-addons' ), $post_type_object->labels->singular_name, $post['post_title'] );
746
-
747
- if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
748
- $error .= PHP_EOL . $post_id->get_error_message();
749
- }
750
-
751
- $result['failed'][] = $original_post_id;
752
-
753
- $this->output['errors'][] = $error;
754
-
755
- continue;
756
- }
757
-
758
- $result['succeed'][ $original_post_id ] = $post_id;
759
-
760
- if ( 1 === $post['is_sticky'] ) {
761
- stick_post( $post_id );
762
- }
763
-
764
- if ( $this->page_on_front === $original_post_id ) {
765
- update_option( 'page_on_front', $post_id );
766
- }
767
-
768
- // Map pre-import ID to local ID.
769
- $this->processed_posts[ intval( $post['post_id'] ) ] = (int) $post_id;
770
-
771
- if ( ! isset( $post['terms'] ) ) {
772
- $post['terms'] = [];
773
- }
774
-
775
- $post['terms'] = apply_filters( 'wp_import_post_terms', $post['terms'], $post_id, $post );
776
-
777
- // add categories, tags and other terms
778
- if ( ! empty( $post['terms'] ) ) {
779
- $terms_to_set = [];
780
- foreach ( $post['terms'] as $term ) {
781
- // back compat with WXR 1.0 map 'tag' to 'post_tag'
782
- $taxonomy = ( 'tag' === $term['domain'] ) ? 'post_tag' : $term['domain'];
783
- $term_exists = term_exists( $term['slug'], $taxonomy );
784
- $term_id = is_array( $term_exists ) ? $term_exists['term_id'] : $term_exists;
785
- if ( ! $term_id ) {
786
- $t = wp_insert_term( $term['name'], $taxonomy, [ 'slug' => $term['slug'] ] );
787
- if ( ! is_wp_error( $t ) ) {
788
- $term_id = $t['term_id'];
789
- do_action( 'wp_import_insert_term', $t, $term, $post_id, $post );
790
- } else {
791
- /* translators: 1: Taxonomy name, 2: Term name. */
792
- $error = sprintf( esc_html__( 'Failed to import %1$s %2$s', 'wpr-addons' ), $taxonomy, $term['name'] );
793
-
794
- if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
795
- $error .= PHP_EOL . $t->get_error_message();
796
- }
797
-
798
- $this->output['errors'][] = $error;
799
-
800
- do_action( 'wp_import_insert_term_failed', $t, $term, $post_id, $post );
801
- continue;
802
- }
803
- }
804
- $terms_to_set[ $taxonomy ][] = intval( $term_id );
805
- }
806
-
807
- foreach ( $terms_to_set as $tax => $ids ) {
808
- $tt_ids = wp_set_post_terms( $post_id, $ids, $tax );
809
- do_action( 'wp_import_set_post_terms', $tt_ids, $ids, $tax, $post_id, $post );
810
- }
811
- unset( $post['terms'], $terms_to_set );
812
- }
813
-
814
- if ( ! isset( $post['comments'] ) ) {
815
- $post['comments'] = [];
816
- }
817
-
818
- $post['comments'] = apply_filters( 'wp_import_post_comments', $post['comments'], $post_id, $post );
819
-
820
- // Add/update comments.
821
- if ( ! empty( $post['comments'] ) ) {
822
- $num_comments = 0;
823
- $inserted_comments = [];
824
- foreach ( $post['comments'] as $comment ) {
825
- $comment_id = $comment['comment_id'];
826
- $newcomments[ $comment_id ]['comment_post_ID'] = $comment_post_id;
827
- $newcomments[ $comment_id ]['comment_author'] = $comment['comment_author'];
828
- $newcomments[ $comment_id ]['comment_author_email'] = $comment['comment_author_email'];
829
- $newcomments[ $comment_id ]['comment_author_IP'] = $comment['comment_author_IP'];
830
- $newcomments[ $comment_id ]['comment_author_url'] = $comment['comment_author_url'];
831
- $newcomments[ $comment_id ]['comment_date'] = $comment['comment_date'];
832
- $newcomments[ $comment_id ]['comment_date_gmt'] = $comment['comment_date_gmt'];
833
- $newcomments[ $comment_id ]['comment_content'] = $comment['comment_content'];
834
- $newcomments[ $comment_id ]['comment_approved'] = $comment['comment_approved'];
835
- $newcomments[ $comment_id ]['comment_type'] = $comment['comment_type'];
836
- $newcomments[ $comment_id ]['comment_parent'] = $comment['comment_parent'];
837
- $newcomments[ $comment_id ]['commentmeta'] = isset( $comment['commentmeta'] ) ? $comment['commentmeta'] : [];
838
- if ( isset( $this->processed_authors[ $comment['comment_user_id'] ] ) ) {
839
- $newcomments[ $comment_id ]['user_id'] = $this->processed_authors[ $comment['comment_user_id'] ];
840
- }
841
- }
842
-
843
- ksort( $newcomments );
844
-
845
- foreach ( $newcomments as $key => $comment ) {
846
- if ( isset( $inserted_comments[ $comment['comment_parent'] ] ) ) {
847
- $comment['comment_parent'] = $inserted_comments[ $comment['comment_parent'] ];
848
- }
849
-
850
- $comment_data = wp_slash( $comment );
851
- unset( $comment_data['commentmeta'] ); // Handled separately, wp_insert_comment() also expects `comment_meta`.
852
- $comment_data = wp_filter_comment( $comment_data );
853
-
854
- $inserted_comments[ $key ] = wp_insert_comment( $comment_data );
855
-
856
- do_action( 'wp_import_insert_comment', $inserted_comments[ $key ], $comment, $comment_post_id, $post );
857
-
858
- foreach ( $comment['commentmeta'] as $meta ) {
859
- $value = maybe_unserialize( $meta['value'] );
860
-
861
- add_comment_meta( $inserted_comments[ $key ], wp_slash( $meta['key'] ), wp_slash_strings_only( $value ) );
862
- }
863
-
864
- $num_comments++;
865
- }
866
- unset( $newcomments, $inserted_comments, $post['comments'] );
867
- }
868
-
869
- if ( ! isset( $post['postmeta'] ) ) {
870
- $post['postmeta'] = [];
871
- }
872
-
873
- $post['postmeta'] = apply_filters( 'wp_import_post_meta', $post['postmeta'], $post_id, $post );
874
-
875
- // Add/update post meta.
876
- if ( ! empty( $post['postmeta'] ) ) {
877
- foreach ( $post['postmeta'] as $meta ) {
878
- $key = apply_filters( 'import_post_meta_key', $meta['key'], $post_id, $post );
879
- $value = false;
880
-
881
- if ( '_edit_last' === $key ) {
882
- if ( isset( $this->processed_authors[ intval( $meta['value'] ) ] ) ) {
883
- $value = $this->processed_authors[ intval( $meta['value'] ) ];
884
- } else {
885
- $key = false;
886
- }
887
- }
888
-
889
- if ( $key ) {
890
- // Export gets meta straight from the DB so could have a serialized string.
891
- if ( ! $value ) {
892
- $value = maybe_unserialize( $meta['value'] );
893
- }
894
-
895
- add_post_meta( $post_id, wp_slash( $key ), wp_slash_strings_only( $value ) );
896
-
897
- do_action( 'import_post_meta', $post_id, $key, $value );
898
-
899
- // If the post has a featured image, take note of this in case of remap.
900
- if ( '_thumbnail_id' === $key ) {
901
- $this->featured_images[ $post_id ] = (int) $value;
902
- }
903
- }
904
- }
905
- }
906
- }
907
-
908
- unset( $this->posts );
909
-
910
- return $result;
911
- }
912
-
913
- /**
914
- * Attempt to create a new menu item from import data
915
- *
916
- * Fails for draft, orphaned menu items and those without an associated nav_menu
917
- * or an invalid nav_menu term. If the post type or term object which the menu item
918
- * represents doesn't exist then the menu item will not be imported (waits until the
919
- * end of the import to retry again before discarding).
920
- *
921
- * @param array $item Menu item details from WXR file
922
- */
923
- private function process_menu_item( $item ) {
924
- // Skip draft, orphaned menu items.
925
- if ( 'draft' === $item['status'] ) {
926
- return;
927
- }
928
-
929
- $menu_slug = false;
930
- if ( isset( $item['terms'] ) ) {
931
- // Loop through terms, assume first nav_menu term is correct menu.
932
- foreach ( $item['terms'] as $term ) {
933
- if ( 'nav_menu' === $term['domain'] ) {
934
- $menu_slug = $term['slug'];
935
- break;
936
- }
937
- }
938
- }
939
-
940
- // No nav_menu term associated with this menu item.
941
- if ( ! $menu_slug ) {
942
- $this->output['errors'][] = esc_html__( 'Menu item skipped due to missing menu slug', 'wpr-addons' );
943
-
944
- return;
945
- }
946
-
947
- $menu_id = term_exists( $menu_slug, 'nav_menu' );
948
- if ( ! $menu_id ) {
949
- /* translators: %s: Menu slug. */
950
- $this->output['errors'][] = sprintf( esc_html__( 'Menu item skipped due to invalid menu slug: %s', 'wpr-addons' ), $menu_slug );
951
-
952
- return;
953
- } else {
954
- $menu_id = is_array( $menu_id ) ? $menu_id['term_id'] : $menu_id;
955
- }
956
-
957
- $post_meta_key_value = [];
958
- foreach ( $item['postmeta'] as $meta ) {
959
- $post_meta_key_value[ $meta['key'] ] = $meta['value'];
960
- }
961
-
962
- // Duke - Import Menu Items Post Meta
963
- $backup_menu_item_meta = [];
964
- $backup_menu_item_meta['postmeta'] = $item['postmeta'];
965
-
966
- foreach ( $item['postmeta'] as $meta ) {
967
- ${$meta['key']} = $meta['value'];
968
- }
969
- // End.
970
-
971
- $_menu_item_object_id = $post_meta_key_value['_menu_item_object_id'];
972
- if ( 'taxonomy' === $post_meta_key_value['_menu_item_type'] && isset( $this->processed_terms[ intval( $_menu_item_object_id ) ] ) ) {
973
- $_menu_item_object_id = $this->processed_terms[ intval( $_menu_item_object_id ) ];
974
- } elseif ( 'post_type' === $post_meta_key_value['_menu_item_type'] && isset( $this->processed_posts[ intval( $_menu_item_object_id ) ] ) ) {
975
- $_menu_item_object_id = $this->processed_posts[ intval( $_menu_item_object_id ) ];
976
- } elseif ( 'custom' !== $post_meta_key_value['_menu_item_type'] ) {
977
- // Associated object is missing or not imported yet, we'll retry later.
978
- $this->missing_menu_items[] = $item;
979
-
980
- return;
981
- }
982
-
983
- $_menu_item_menu_item_parent = $post_meta_key_value['_menu_item_menu_item_parent']; // Duke - fix "_menu_item_menu_item_parent" dash was added
984
- if ( isset( $this->processed_menu_items[ intval( $_menu_item_menu_item_parent ) ] ) ) {
985
- $_menu_item_menu_item_parent = $this->processed_menu_items[ intval( $_menu_item_menu_item_parent ) ];
986
- } elseif ( $_menu_item_menu_item_parent ) {
987
- $this->menu_item_orphans[ intval( $item['post_id'] ) ] = (int) $_menu_item_menu_item_parent;
988
- $_menu_item_menu_item_parent = 0;
989
- }
990
-
991
- // wp_update_nav_menu_item expects CSS classes as a space separated string
992
- $_menu_item_classes = maybe_unserialize( $post_meta_key_value['_menu_item_classes'] );
993
- if ( is_array( $_menu_item_classes ) ) {
994
- $_menu_item_classes = implode( ' ', $_menu_item_classes );
995
- }
996
-
997
- $args = [
998
- 'menu-item-object-id' => $_menu_item_object_id,
999
- 'menu-item-object' => $post_meta_key_value['_menu_item_object'],
1000
- 'menu-item-parent-id' => $_menu_item_menu_item_parent,
1001
- 'menu-item-position' => intval( $item['menu_order'] ),
1002
- 'menu-item-type' => $post_meta_key_value['_menu_item_type'],
1003
- 'menu-item-title' => $item['post_title'],
1004
- 'menu-item-url' => $post_meta_key_value['_menu_item_url'],
1005
- 'menu-item-description' => $item['post_content'],
1006
- 'menu-item-attr-title' => $item['post_excerpt'],
1007
- 'menu-item-target' => $post_meta_key_value['_menu_item_target'],
1008
- 'menu-item-classes' => $_menu_item_classes,
1009
- 'menu-item-xfn' => $post_meta_key_value['_menu_item_xfn'],
1010
- 'menu-item-status' => $item['status'],
1011
- ];
1012
-
1013
- $id = wp_update_nav_menu_item( $menu_id, 0, $args );
1014
- if ( $id && ! is_wp_error( $id ) ) {
1015
- // Duke - Import Menu Items Post Meta
1016
- $menu_item_db_id = $id;
1017
- $backup_menu_item_meta['postmeta'] = apply_filters('wordpress_importer_menu_items_meta_import', $backup_menu_item_meta['postmeta'], $id);
1018
- $skip_meta_items = [
1019
- '_menu_item_type',
1020
- '_menu_item_menu_item_parent',
1021
- '_menu_item_object_id',
1022
- '_menu_item_object',
1023
- '_menu_item_target',
1024
- '_menu_item_classes',
1025
- '_menu_item_xfn',
1026
- '_menu_item_url'
1027
- ];
1028
- if ( is_array($backup_menu_item_meta['postmeta']) && !empty($backup_menu_item_meta['postmeta']) ) {
1029
- foreach ( $backup_menu_item_meta['postmeta'] as $meta ) {
1030
- if ( !in_array($meta['key'], $skip_meta_items) ) {
1031
- update_post_meta( $menu_item_db_id, $meta['key'], maybe_unserialize($meta['value']));
1032
- }
1033
- }
1034
- }
1035
- // End.
1036
-
1037
- $this->processed_menu_items[ intval( $item['post_id'] ) ] = (int) $id;
1038
- }
1039
- }
1040
-
1041
- /**
1042
- * If fetching attachments is enabled then attempt to create a new attachment
1043
- *
1044
- * @param array $post Attachment post details from WXR
1045
- * @param string $url URL to fetch attachment from
1046
- *
1047
- * @return int|WP_Error Post ID on success, WP_Error otherwise
1048
- */
1049
- private function process_attachment( $post, $url ) {
1050
-
1051
- if ( ! $this->fetch_attachments ) {
1052
- return new WP_Error( 'attachment_processing_error', esc_html__( 'Fetching attachments is not enabled', 'wpr-addons' ) );
1053
- }
1054
-
1055
- // if the URL is absolute, but does not contain address, then upload it assuming base_site_url.
1056
- if ( preg_match( '|^/[\w\W]+$|', $url ) ) {
1057
- $url = rtrim( $this->base_url, '/' ) . $url;
1058
- }
1059
-
1060
- $upload = $this->fetch_remote_file( $url, $post );
1061
- if ( is_wp_error( $upload ) ) {
1062
- return $upload;
1063
- }
1064
-
1065
- $info = wp_check_filetype( $upload['file'] );
1066
- if ( $info ) {
1067
- $post['post_mime_type'] = $info['type'];
1068
- } else {
1069
- return new WP_Error( 'attachment_processing_error', esc_html__( 'Invalid file type', 'wpr-addons' ) );
1070
- }
1071
-
1072
- $post['guid'] = $upload['url'];
1073
-
1074
- // As per wp-admin/includes/upload.php.
1075
- $post_id = wp_insert_attachment( $post, $upload['file'] );
1076
- wp_update_attachment_metadata( $post_id, wp_generate_attachment_metadata( $post_id, $upload['file'] ) );
1077
-
1078
- // Remap resized image URLs, works by stripping the extension and remapping the URL stub.
1079
- if ( preg_match( '!^image/!', $info['type'] ) ) {
1080
- $parts = pathinfo( $url );
1081
- $name = basename( $parts['basename'], ".{$parts['extension']}" ); // PATHINFO_FILENAME in PHP 5.2
1082
-
1083
- $parts_new = pathinfo( $upload['url'] );
1084
- $name_new = basename( $parts_new['basename'], ".{$parts_new['extension']}" );
1085
-
1086
- $this->url_remap[ $parts['dirname'] . '/' . $name ] = $parts_new['dirname'] . '/' . $name_new;
1087
- }
1088
-
1089
- return $post_id;
1090
- }
1091
-
1092
- /**
1093
- * Attempt to download a remote file attachment
1094
- *
1095
- * @param string $url URL of item to fetch
1096
- * @param array $post Attachment details
1097
- *
1098
- * @return array|WP_Error Local file location details on success, WP_Error otherwise
1099
- */
1100
- private function fetch_remote_file( $url, $post ) {
1101
- // Extract the file name from the URL.
1102
- $file_name = basename( parse_url( $url, PHP_URL_PATH ) );
1103
-
1104
- if ( ! $file_name ) {
1105
- $file_name = md5( $url );
1106
- }
1107
-
1108
- $tmp_file_name = wp_tempnam( $file_name );
1109
- if ( ! $tmp_file_name ) {
1110
- return new WP_Error( 'import_no_file', esc_html__( 'Could not create temporary file.', 'wpr-addons' ) );
1111
- }
1112
-
1113
- // Fetch the remote URL and write it to the placeholder file.
1114
- $remote_response = wp_safe_remote_get( $url, [
1115
- 'timeout' => 300,
1116
- 'stream' => true,
1117
- 'filename' => $tmp_file_name,
1118
- 'headers' => [
1119
- 'Accept-Encoding' => 'identity',
1120
- ],
1121
- ] );
1122
-
1123
- if ( is_wp_error( $remote_response ) ) {
1124
- @unlink( $tmp_file_name );
1125
-
1126
- return new WP_Error( 'import_file_error', sprintf( /* translators: 1: WordPress error message, 2: WordPress error code. */ esc_html__( 'Request failed due to an error: %1$s (%2$s)', 'wpr-addons' ), esc_html( $remote_response->get_error_message() ), esc_html( $remote_response->get_error_code() ) ) );
1127
- }
1128
-
1129
- $remote_response_code = (int) wp_remote_retrieve_response_code( $remote_response );
1130
-
1131
- // Make sure the fetch was successful.
1132
- if ( 200 !== $remote_response_code ) {
1133
- @unlink( $tmp_file_name );
1134
-
1135
- return new WP_Error( 'import_file_error', sprintf( /* translators: 1: HTTP error message, 2: HTTP error code. */ esc_html__( 'Remote server returned the following unexpected result: %1$s (%2$s)', 'wpr-addons' ), get_status_header_desc( $remote_response_code ), esc_html( $remote_response_code ) ) );
1136
- }
1137
-
1138
- $headers = wp_remote_retrieve_headers( $remote_response );
1139
-
1140
- // Request failed.
1141
- if ( ! $headers ) {
1142
- @unlink( $tmp_file_name );
1143
-
1144
- return new WP_Error( 'import_file_error', esc_html__( 'Remote server did not respond', 'wpr-addons' ) );
1145
- }
1146
-
1147
- $filesize = (int) filesize( $tmp_file_name );
1148
-
1149
- if ( 0 === $filesize ) {
1150
- @unlink( $tmp_file_name );
1151
-
1152
- return new WP_Error( 'import_file_error', esc_html__( 'Zero size file downloaded', 'wpr-addons' ) );
1153
- }
1154
-
1155
- if ( ! isset( $headers['content-encoding'] ) && isset( $headers['content-length'] ) && $filesize !== (int) $headers['content-length'] ) {
1156
- @unlink( $tmp_file_name );
1157
-
1158
- return new WP_Error( 'import_file_error', esc_html__( 'Downloaded file has incorrect size', 'wpr-addons' ) );
1159
- }
1160
-
1161
- $max_size = (int) apply_filters( 'import_attachment_size_limit', self::DEFAULT_IMPORT_ATTACHMENT_SIZE_LIMIT );
1162
- if ( ! empty( $max_size ) && $filesize > $max_size ) {
1163
- @unlink( $tmp_file_name );
1164
-
1165
- /* translators: %s: Max file size. */
1166
- return new WP_Error( 'import_file_error', sprintf( esc_html__( 'Remote file is too large, limit is %s', 'wpr-addons' ), size_format( $max_size ) ) );
1167
- }
1168
-
1169
- // Override file name with Content-Disposition header value.
1170
- if ( ! empty( $headers['content-disposition'] ) ) {
1171
- $file_name_from_disposition = self::get_filename_from_disposition( (array) $headers['content-disposition'] );
1172
- if ( $file_name_from_disposition ) {
1173
- $file_name = $file_name_from_disposition;
1174
- }
1175
- }
1176
-
1177
- // Set file extension if missing.
1178
- $file_ext = pathinfo( $file_name, PATHINFO_EXTENSION );
1179
- if ( ! $file_ext && ! empty( $headers['content-type'] ) ) {
1180
- $extension = self::get_file_extension_by_mime_type( $headers['content-type'] );
1181
- if ( $extension ) {
1182
- $file_name = "{$file_name}.{$extension}";
1183
- }
1184
- }
1185
-
1186
- // Handle the upload like _wp_handle_upload() does.
1187
- $wp_filetype = wp_check_filetype_and_ext( $tmp_file_name, $file_name );
1188
- $ext = empty( $wp_filetype['ext'] ) ? '' : $wp_filetype['ext'];
1189
- $type = empty( $wp_filetype['type'] ) ? '' : $wp_filetype['type'];
1190
- $proper_filename = empty( $wp_filetype['proper_filename'] ) ? '' : $wp_filetype['proper_filename'];
1191
-
1192
- // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect.
1193
- if ( $proper_filename ) {
1194
- $file_name = $proper_filename;
1195
- }
1196
-
1197
- if ( ( ! $type || ! $ext ) && ! current_user_can( 'unfiltered_upload' ) ) {
1198
- return new WP_Error( 'import_file_error', esc_html__( 'Sorry, this file type is not permitted for security reasons.', 'wpr-addons' ) );
1199
- }
1200
-
1201
- $uploads = wp_upload_dir( $post['upload_date'] );
1202
- if ( ! ( $uploads && false === $uploads['error'] ) ) {
1203
- return new WP_Error( 'upload_dir_error', $uploads['error'] );
1204
- }
1205
-
1206
- // Move the file to the uploads dir.
1207
- $file_name = wp_unique_filename( $uploads['path'], $file_name );
1208
- $new_file = $uploads['path'] . "/$file_name";
1209
- $move_new_file = copy( $tmp_file_name, $new_file );
1210
-
1211
- if ( ! $move_new_file ) {
1212
- @unlink( $tmp_file_name );
1213
-
1214
- return new WP_Error( 'import_file_error', esc_html__( 'The uploaded file could not be moved', 'wpr-addons' ) );
1215
- }
1216
-
1217
- // Set correct file permissions.
1218
- $stat = stat( dirname( $new_file ) );
1219
- $perms = $stat['mode'] & 0000666;
1220
- chmod( $new_file, $perms );
1221
-
1222
- $upload = [
1223
- 'file' => $new_file,
1224
- 'url' => $uploads['url'] . "/$file_name",
1225
- 'type' => $wp_filetype['type'],
1226
- 'error' => false,
1227
- ];
1228
-
1229
- // Keep track of the old and new urls so we can substitute them later.
1230
- $this->url_remap[ $url ] = $upload['url'];
1231
- $this->url_remap[ $post['guid'] ] = $upload['url']; // r13735, really needed?
1232
- // Keep track of the destination if the remote url is redirected somewhere else.
1233
- if ( isset( $headers['x-final-location'] ) && $headers['x-final-location'] !== $url ) {
1234
- $this->url_remap[ $headers['x-final-location'] ] = $upload['url'];
1235
- }
1236
-
1237
- return $upload;
1238
- }
1239
-
1240
- /**
1241
- * Attempt to associate posts and menu items with previously missing parents
1242
- *
1243
- * An imported post's parent may not have been imported when it was first created
1244
- * so try again. Similarly for child menu items and menu items which were missing
1245
- * the object (e.g. post) they represent in the menu
1246
- */
1247
- private function backfill_parents() {
1248
- global $wpdb;
1249
-
1250
- // Find parents for post orphans.
1251
- foreach ( $this->post_orphans as $child_id => $parent_id ) {
1252
- $local_child_id = false;
1253
- $local_parent_id = false;
1254
-
1255
- if ( isset( $this->processed_posts[ $child_id ] ) ) {
1256
- $local_child_id = $this->processed_posts[ $child_id ];
1257
- }
1258
- if ( isset( $this->processed_posts[ $parent_id ] ) ) {
1259
- $local_parent_id = $this->processed_posts[ $parent_id ];
1260
- }
1261
-
1262
- if ( $local_child_id && $local_parent_id ) {
1263
- $wpdb->update( $wpdb->posts, [ 'post_parent' => $local_parent_id ], [ 'ID' => $local_child_id ], '%d', '%d' );
1264
- clean_post_cache( $local_child_id );
1265
- }
1266
- }
1267
-
1268
- // All other posts/terms are imported, retry menu items with missing associated object.
1269
- $missing_menu_items = $this->missing_menu_items;
1270
- foreach ( $missing_menu_items as $item ) {
1271
- $this->process_menu_item( $item );
1272
- }
1273
-
1274
- // Find parents for menu item orphans.
1275
- foreach ( $this->menu_item_orphans as $child_id => $parent_id ) {
1276
- $local_child_id = 0;
1277
- $local_parent_id = 0;
1278
- if ( isset( $this->processed_menu_items[ $child_id ] ) ) {
1279
- $local_child_id = $this->processed_menu_items[ $child_id ];
1280
- }
1281
- if ( isset( $this->processed_menu_items[ $parent_id ] ) ) {
1282
- $local_parent_id = $this->processed_menu_items[ $parent_id ];
1283
- }
1284
-
1285
- if ( $local_child_id && $local_parent_id ) {
1286
- update_post_meta( $local_child_id, '_menu_item_menu_item_parent', (int) $local_parent_id );
1287
- }
1288
- }
1289
- }
1290
-
1291
- /**
1292
- * Use stored mapping information to update old attachment URLs
1293
- */
1294
- private function backfill_attachment_urls() {
1295
- global $wpdb;
1296
- // Make sure we do the longest urls first, in case one is a substring of another.
1297
- uksort( $this->url_remap, function ( $a, $b ) {
1298
- // Return the difference in length between two strings.
1299
- return strlen( $b ) - strlen( $a );
1300
- } );
1301
-
1302
- foreach ( $this->url_remap as $from_url => $to_url ) {
1303
- // Remap urls in post_content.
1304
- $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, %s, %s)", $from_url, $to_url ) );
1305
- // Remap enclosure urls.
1306
- $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, %s, %s) WHERE meta_key='enclosure'", $from_url, $to_url ) );
1307
- }
1308
- }
1309
-
1310
- /**
1311
- * Update _thumbnail_id meta to new, imported attachment IDs
1312
- */
1313
- private function remap_featured_images() {
1314
- // Cycle through posts that have a featured image.
1315
- foreach ( $this->featured_images as $post_id => $value ) {
1316
- if ( isset( $this->processed_posts[ $value ] ) ) {
1317
- $new_id = $this->processed_posts[ $value ];
1318
- // Only update if there's a difference.
1319
- if ( $new_id !== $value ) {
1320
- update_post_meta( $post_id, '_thumbnail_id', $new_id );
1321
- }
1322
- }
1323
- }
1324
- }
1325
-
1326
- /**
1327
- * Parse a WXR file
1328
- *
1329
- * @param string $file Path to WXR file for parsing
1330
- *
1331
- * @return array Information gathered from the WXR file
1332
- */
1333
- private function parse( $file ) {
1334
- $parser = new WXR_Parser();
1335
-
1336
- return $parser->parse( $file );
1337
- }
1338
-
1339
- /**
1340
- * Decide if the given meta key maps to information we will want to import
1341
- *
1342
- * @param string $key The meta key to check
1343
- *
1344
- * @return string|bool The key if we do want to import, false if not
1345
- */
1346
- private function is_valid_meta_key( $key ) {
1347
- // Skip attachment metadata since we'll regenerate it from scratch.
1348
- // Skip _edit_lock as not relevant for import
1349
- if ( in_array( $key, [ '_wp_attached_file', '_wp_attachment_metadata', '_edit_lock' ] ) ) {
1350
- return false;
1351
- }
1352
-
1353
- return $key;
1354
- }
1355
-
1356
- public function run() {
1357
- $this->import( $this->requested_file_path );
1358
-
1359
- return $this->output;
1360
- }
1361
-
1362
- public function __construct( $file, $args = [] ) {
1363
- $this->requested_file_path = $file;
1364
- $this->args = $args;
1365
-
1366
- if ( ! empty( $this->args['fetch_attachments'] ) ) {
1367
- $this->fetch_attachments = true;
1368
- }
1369
- }
1370
- }
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ if ( ! defined( 'WP_LOAD_IMPORTERS' ) )
8
+ return;
9
+
10
+ /** Display verbose errors */
11
+ define( 'IMPORT_DEBUG', false );
12
+
13
+ // Load Importer API
14
+ require_once ABSPATH . 'wp-admin/includes/import.php';
15
+
16
+ if ( ! class_exists( 'WP_Importer' ) ) {
17
+ $class_wp_importer = ABSPATH . 'wp-admin/includes/class-wp-importer.php';
18
+ if ( file_exists( $class_wp_importer ) )
19
+ require $class_wp_importer;
20
+ }
21
+
22
+ // include WXR file parsers
23
+ require WPR_ADDONS_PATH .'admin/import/class-parsers.php';
24
+
25
+ class WP_Import extends WP_Importer {
26
+ const DEFAULT_BUMP_REQUEST_TIMEOUT = 60;
27
+ const DEFAULT_ALLOW_CREATE_USERS = true;
28
+ const DEFAULT_IMPORT_ATTACHMENT_SIZE_LIMIT = 0; // 0 = unlimited.
29
+
30
+ /**
31
+ * @var string
32
+ */
33
+ private $requested_file_path;
34
+
35
+ /**
36
+ * @var array
37
+ */
38
+ private $args;
39
+
40
+ /**
41
+ * @var array
42
+ */
43
+ private $output = [
44
+ 'status' => 'failed',
45
+ 'errors' => [],
46
+ ];
47
+
48
+ /*
49
+ * WXR attachment ID
50
+ */
51
+ private $id;
52
+
53
+ // Information to import from WXR file.
54
+ private $version;
55
+ private $authors = [];
56
+ private $posts = [];
57
+ private $terms = [];
58
+ private $categories = [];
59
+ private $tags = [];
60
+ private $base_url = '';
61
+ private $page_on_front;
62
+
63
+ // Mappings from old information to new.
64
+ private $processed_authors = [];
65
+ private $author_mapping = [];
66
+ private $processed_terms = [];
67
+ private $processed_posts = [];
68
+ private $post_orphans = [];
69
+ private $processed_menu_items = [];
70
+ private $menu_item_orphans = [];
71
+ private $missing_menu_items = [];
72
+
73
+ private $fetch_attachments = false;
74
+ private $url_remap = [];
75
+ private $featured_images = [];
76
+
77
+ /**
78
+ * Parses filename from a Content-Disposition header value.
79
+ *
80
+ * As per RFC6266:
81
+ *
82
+ * content-disposition = "Content-Disposition" ":"
83
+ * disposition-type *( ";" disposition-parm )
84
+ *
85
+ * disposition-type = "inline" | "attachment" | disp-ext-type
86
+ * ; case-insensitive
87
+ * disp-ext-type = token
88
+ *
89
+ * disposition-parm = filename-parm | disp-ext-parm
90
+ *
91
+ * filename-parm = "filename" "=" value
92
+ * | "filename*" "=" ext-value
93
+ *
94
+ * disp-ext-parm = token "=" value
95
+ * | ext-token "=" ext-value
96
+ * ext-token = <the characters in token, followed by "*">
97
+ *
98
+ * @param string[] $disposition_header List of Content-Disposition header values.
99
+ *
100
+ * @return string|null Filename if available, or null if not found.
101
+ * @link http://tools.ietf.org/html/rfc2388
102
+ * @link http://tools.ietf.org/html/rfc6266
103
+ *
104
+ * @see WP_REST_Attachments_Controller::get_filename_from_disposition()
105
+ *
106
+ */
107
+ protected static function get_filename_from_disposition( $disposition_header ) {
108
+ // Get the filename.
109
+ $filename = null;
110
+
111
+ foreach ( $disposition_header as $value ) {
112
+ $value = trim( $value );
113
+
114
+ if ( strpos( $value, ';' ) === false ) {
115
+ continue;
116
+ }
117
+
118
+ list( $type, $attr_parts ) = explode( ';', $value, 2 );
119
+
120
+ $attr_parts = explode( ';', $attr_parts );
121
+ $attributes = [];
122
+
123
+ foreach ( $attr_parts as $part ) {
124
+ if ( strpos( $part, '=' ) === false ) {
125
+ continue;
126
+ }
127
+
128
+ list( $key, $value ) = explode( '=', $part, 2 );
129
+
130
+ $attributes[ trim( $key ) ] = trim( $value );
131
+ }
132
+
133
+ if ( empty( $attributes['filename'] ) ) {
134
+ continue;
135
+ }
136
+
137
+ $filename = trim( $attributes['filename'] );
138
+
139
+ // Unquote quoted filename, but after trimming.
140
+ if ( substr( $filename, 0, 1 ) === '"' && substr( $filename, -1, 1 ) === '"' ) {
141
+ $filename = substr( $filename, 1, -1 );
142
+ }
143
+ }
144
+
145
+ return $filename;
146
+ }
147
+
148
+ /**
149
+ * Retrieves file extension by mime type.
150
+ *
151
+ * @param string $mime_type Mime type to search extension for.
152
+ *
153
+ * @return string|null File extension if available, or null if not found.
154
+ */
155
+ protected static function get_file_extension_by_mime_type( $mime_type ) {
156
+ static $map = null;
157
+
158
+ if ( is_array( $map ) ) {
159
+ return isset( $map[ $mime_type ] ) ? $map[ $mime_type ] : null;
160
+ }
161
+
162
+ $mime_types = wp_get_mime_types();
163
+ $map = array_flip( $mime_types );
164
+
165
+ // Some types have multiple extensions, use only the first one.
166
+ foreach ( $map as $type => $extensions ) {
167
+ $map[ $type ] = strtok( $extensions, '|' );
168
+ }
169
+
170
+ return isset( $map[ $mime_type ] ) ? $map[ $mime_type ] : null;
171
+ }
172
+
173
+ /**
174
+ * The main controller for the actual import stage.
175
+ *
176
+ * @param string $file Path to the WXR file for importing
177
+ */
178
+ private function import( $file ) {
179
+ add_filter( 'import_post_meta_key', function ( $key ) {
180
+ return $this->is_valid_meta_key( $key );
181
+ } );
182
+ add_filter( 'http_request_timeout', function () {
183
+ return self::DEFAULT_BUMP_REQUEST_TIMEOUT;
184
+ } );
185
+
186
+ if ( ! $this->import_start( $file ) ) {
187
+ return;
188
+ }
189
+
190
+ $this->set_author_mapping();
191
+
192
+ wp_suspend_cache_invalidation( true );
193
+ $imported_summary = [
194
+ 'categories' => $this->process_categories(),
195
+ 'tags' => $this->process_tags(),
196
+ 'terms' => $this->process_terms(),
197
+ 'posts' => $this->process_posts(),
198
+ ];
199
+ wp_suspend_cache_invalidation( false );
200
+
201
+ // Update incorrect/missing information in the DB.
202
+ $this->backfill_parents();
203
+ $this->backfill_attachment_urls();
204
+ $this->remap_featured_images();
205
+
206
+ $this->import_end();
207
+
208
+ $is_some_succeed = false;
209
+ foreach ( $imported_summary as $item ) {
210
+ if ( $item > 0 ) {
211
+ $is_some_succeed = true;
212
+ break;
213
+ }
214
+ }
215
+
216
+ if ( $is_some_succeed ) {
217
+ $this->output['status'] = 'success';
218
+ $this->output['summary'] = $imported_summary;
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Parses the WXR file and prepares us for the task of processing parsed data.
224
+ *
225
+ * @param string $file Path to the WXR file for importing
226
+ */
227
+ private function import_start( $file ) {
228
+ if ( ! is_file( $file ) ) {
229
+ $this->output['errors'] = [ esc_html__( 'The file does not exist, please try again.', 'wpr-addons' ) ];
230
+
231
+ return false;
232
+ }
233
+
234
+ $import_data = $this->parse( $file );
235
+
236
+ if ( is_wp_error( $import_data ) ) {
237
+ $this->output['errors'] = [ $import_data->get_error_message() ];
238
+
239
+ return false;
240
+ }
241
+
242
+ $this->version = $import_data['version'];
243
+ $this->set_authors_from_import( $import_data );
244
+ $this->posts = $import_data['posts'];
245
+ $this->terms = $import_data['terms'];
246
+ $this->categories = $import_data['categories'];
247
+ $this->tags = $import_data['tags'];
248
+ $this->base_url = esc_url( $import_data['base_url'] );
249
+ $this->page_on_front = $import_data['page_on_front'];
250
+
251
+ wp_defer_term_counting( true );
252
+ wp_defer_comment_counting( true );
253
+
254
+ do_action( 'import_start' );
255
+
256
+ return true;
257
+ }
258
+
259
+ /**
260
+ * Performs post-import cleanup of files and the cache
261
+ */
262
+ private function import_end() {
263
+ wp_import_cleanup( $this->id );
264
+
265
+ wp_cache_flush();
266
+
267
+ foreach ( get_taxonomies() as $tax ) {
268
+ delete_option( "{$tax}_children" );
269
+ _get_term_hierarchy( $tax );
270
+ }
271
+
272
+ wp_defer_term_counting( false );
273
+ wp_defer_comment_counting( false );
274
+
275
+ do_action( 'import_end' );
276
+ }
277
+
278
+ /**
279
+ * Retrieve authors from parsed WXR data and set it to `$this->>authors`.
280
+ *
281
+ * Uses the provided author information from WXR 1.1 files
282
+ * or extracts info from each post for WXR 1.0 files
283
+ *
284
+ * @param array $import_data Data returned by a WXR parser
285
+ */
286
+ private function set_authors_from_import( $import_data ) {
287
+ if ( ! empty( $import_data['authors'] ) ) {
288
+ $this->authors = $import_data['authors'];
289
+ // No author information, grab it from the posts.
290
+ } else {
291
+ foreach ( $import_data['posts'] as $post ) {
292
+ $login = sanitize_user( $post['post_author'], true );
293
+
294
+ if ( empty( $login ) ) {
295
+ /* translators: %s: Post author. */
296
+ $this->output['errors'][] = sprintf( esc_html__( 'Failed to import author %s. Their posts will be attributed to the current user.', 'wpr-addons' ), $post['post_author'] );
297
+ continue;
298
+ }
299
+
300
+ if ( ! isset( $this->authors[ $login ] ) ) {
301
+ $this->authors[ $login ] = [
302
+ 'author_login' => $login,
303
+ 'author_display_name' => $post['post_author'],
304
+ ];
305
+ }
306
+ }
307
+ }
308
+ }
309
+
310
+ /**
311
+ * Map old author logins to local user IDs based on decisions made
312
+ * in import options form. Can map to an existing user, create a new user
313
+ * or falls back to the current user in case of error with either of the previous
314
+ */
315
+ private function set_author_mapping() {
316
+ if ( ! isset( $this->args['imported_authors'] ) ) {
317
+ return;
318
+ }
319
+
320
+ $create_users = apply_filters( 'import_allow_create_users', self::DEFAULT_ALLOW_CREATE_USERS );
321
+
322
+ foreach ( (array) $this->args['imported_authors'] as $i => $old_login ) {
323
+ // Multisite adds strtolower to sanitize_user. Need to sanitize here to stop breakage in process_posts.
324
+ $santized_old_login = sanitize_user( $old_login, true );
325
+ $old_id = isset( $this->authors[ $old_login ]['author_id'] ) ? intval( $this->authors[ $old_login ]['author_id'] ) : false;
326
+
327
+ if ( ! empty( $this->args['user_map'][ $i ] ) ) {
328
+ $user = get_userdata( intval( $this->args['user_map'][ $i ] ) );
329
+ if ( isset( $user->ID ) ) {
330
+ if ( $old_id ) {
331
+ $this->processed_authors[ $old_id ] = $user->ID;
332
+ }
333
+ $this->author_mapping[ $santized_old_login ] = $user->ID;
334
+ }
335
+ } elseif ( $create_users ) {
336
+ $user_id = 0;
337
+ if ( ! empty( $this->args['user_new'][ $i ] ) ) {
338
+ $user_id = wp_create_user( $this->args['user_new'][ $i ], wp_generate_password() );
339
+ } elseif ( '1.0' !== $this->version ) {
340
+ $user_data = [
341
+ 'user_login' => $old_login,
342
+ 'user_pass' => wp_generate_password(),
343
+ 'user_email' => isset( $this->authors[ $old_login ]['author_email'] ) ? $this->authors[ $old_login ]['author_email'] : '',
344
+ 'display_name' => $this->authors[ $old_login ]['author_display_name'],
345
+ 'first_name' => isset( $this->authors[ $old_login ]['author_first_name'] ) ? $this->authors[ $old_login ]['author_first_name'] : '',
346
+ 'last_name' => isset( $this->authors[ $old_login ]['author_last_name'] ) ? $this->authors[ $old_login ]['author_last_name'] : '',
347
+ ];
348
+ $user_id = wp_insert_user( $user_data );
349
+ }
350
+
351
+ if ( ! is_wp_error( $user_id ) ) {
352
+ if ( $old_id ) {
353
+ $this->processed_authors[ $old_id ] = $user_id;
354
+ }
355
+ $this->author_mapping[ $santized_old_login ] = $user_id;
356
+ } else {
357
+ /* translators: %s: Author display name. */
358
+ $error = sprintf( esc_html__( 'Failed to create new user for %s. Their posts will be attributed to the current user.', 'wpr-addons' ), $this->authors[ $old_login ]['author_display_name'] );
359
+
360
+ if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
361
+ $error .= PHP_EOL . $user_id->get_error_message();
362
+ }
363
+
364
+ $this->output['errors'][] = $error;
365
+ }
366
+ }
367
+
368
+ // Failsafe: if the user_id was invalid, default to the current user.
369
+ if ( ! isset( $this->author_mapping[ $santized_old_login ] ) ) {
370
+ if ( $old_id ) {
371
+ $this->processed_authors[ $old_id ] = (int) get_current_user_id();
372
+ }
373
+ $this->author_mapping[ $santized_old_login ] = (int) get_current_user_id();
374
+ }
375
+ }
376
+ }
377
+
378
+ /**
379
+ * Create new categories based on import information
380
+ *
381
+ * Doesn't create a new category if its slug already exists
382
+ *
383
+ * @return int number of imported categories.
384
+ */
385
+ private function process_categories() {
386
+ $result = 0;
387
+
388
+ $this->categories = apply_filters( 'wp_import_categories', $this->categories );
389
+
390
+ if ( empty( $this->categories ) ) {
391
+ return $result;
392
+ }
393
+
394
+ foreach ( $this->categories as $cat ) {
395
+ // if the category already exists leave it alone
396
+ $term_id = term_exists( $cat['category_nicename'], 'category' );
397
+ if ( $term_id ) {
398
+ if ( is_array( $term_id ) ) {
399
+ $term_id = $term_id['term_id'];
400
+ }
401
+ if ( isset( $cat['term_id'] ) ) {
402
+ $this->processed_terms[ intval( $cat['term_id'] ) ] = (int) $term_id;
403
+ }
404
+ continue;
405
+ }
406
+
407
+ $parent = empty( $cat['category_parent'] ) ? 0 : category_exists( $cat['category_parent'] );
408
+ $description = isset( $cat['category_description'] ) ? $cat['category_description'] : '';
409
+
410
+ $data = [
411
+ 'category_nicename' => $cat['category_nicename'],
412
+ 'category_parent' => $parent,
413
+ 'cat_name' => wp_slash( $cat['cat_name'] ),
414
+ 'category_description' => wp_slash( $description ),
415
+ ];
416
+
417
+ $id = wp_insert_category( $data );
418
+ if ( ! is_wp_error( $id ) && $id > 0 ) {
419
+ if ( isset( $cat['term_id'] ) ) {
420
+ $this->processed_terms[ intval( $cat['term_id'] ) ] = $id;
421
+ }
422
+ $result++;
423
+ } else {
424
+ /* translators: %s: Category name. */
425
+ $error = sprintf( esc_html__( 'Failed to import category %s', 'wpr-addons' ), $cat['category_nicename'] );
426
+
427
+ if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
428
+ $error .= PHP_EOL . $id->get_error_message();
429
+ }
430
+
431
+ $this->output['errors'][] = $error;
432
+ continue;
433
+ }
434
+
435
+ $this->process_termmeta( $cat, $id );
436
+ }
437
+
438
+ unset( $this->categories );
439
+
440
+ return $result;
441
+ }
442
+
443
+ /**
444
+ * Create new post tags based on import information
445
+ *
446
+ * Doesn't create a tag if its slug already exists
447
+ *
448
+ * @return int number of imported tags.
449
+ */
450
+ private function process_tags() {
451
+ $result = 0;
452
+
453
+ $this->tags = apply_filters( 'wp_import_tags', $this->tags );
454
+
455
+ if ( empty( $this->tags ) ) {
456
+ return $result;
457
+ }
458
+
459
+ foreach ( $this->tags as $tag ) {
460
+ // if the tag already exists leave it alone
461
+ $term_id = term_exists( $tag['tag_slug'], 'post_tag' );
462
+ if ( $term_id ) {
463
+ if ( is_array( $term_id ) ) {
464
+ $term_id = $term_id['term_id'];
465
+ }
466
+ if ( isset( $tag['term_id'] ) ) {
467
+ $this->processed_terms[ intval( $tag['term_id'] ) ] = (int) $term_id;
468
+ }
469
+ continue;
470
+ }
471
+
472
+ $description = isset( $tag['tag_description'] ) ? $tag['tag_description'] : '';
473
+ $args = [
474
+ 'slug' => $tag['tag_slug'],
475
+ 'description' => wp_slash( $description ),
476
+ ];
477
+
478
+ $id = wp_insert_term( wp_slash( $tag['tag_name'] ), 'post_tag', $args );
479
+ if ( ! is_wp_error( $id ) ) {
480
+ if ( isset( $tag['term_id'] ) ) {
481
+ $this->processed_terms[ intval( $tag['term_id'] ) ] = $id['term_id'];
482
+ }
483
+ $result++;
484
+ } else {
485
+ /* translators: %s: Tag name. */
486
+ $error = sprintf( esc_html__( 'Failed to import post tag %s', 'wpr-addons' ), $tag['tag_name'] );
487
+
488
+ if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
489
+ $error .= PHP_EOL . $id->get_error_message();
490
+ }
491
+
492
+ $this->output['errors'][] = $error;
493
+ continue;
494
+ }
495
+
496
+ $this->process_termmeta( $tag, $id['term_id'] );
497
+ }
498
+
499
+ unset( $this->tags );
500
+
501
+ return $result;
502
+ }
503
+
504
+ /**
505
+ * Create new terms based on import information
506
+ *
507
+ * Doesn't create a term its slug already exists
508
+ *
509
+ * @return int number of imported terms.
510
+ */
511
+ private function process_terms() {
512
+ $result = 0;
513
+
514
+ $this->terms = apply_filters( 'wp_import_terms', $this->terms );
515
+
516
+ if ( empty( $this->terms ) ) {
517
+ return $result;
518
+ }
519
+
520
+ foreach ( $this->terms as $term ) {
521
+ // if the term already exists in the correct taxonomy leave it alone
522
+ $term_id = term_exists( $term['slug'], $term['term_taxonomy'] );
523
+ if ( $term_id ) {
524
+ if ( is_array( $term_id ) ) {
525
+ $term_id = $term_id['term_id'];
526
+ }
527
+ if ( isset( $term['term_id'] ) ) {
528
+ $this->processed_terms[ intval( $term['term_id'] ) ] = (int) $term_id;
529
+ }
530
+ continue;
531
+ }
532
+
533
+ if ( empty( $term['term_parent'] ) ) {
534
+ $parent = 0;
535
+ } else {
536
+ $parent = term_exists( $term['term_parent'], $term['term_taxonomy'] );
537
+ if ( is_array( $parent ) ) {
538
+ $parent = $parent['term_id'];
539
+ }
540
+ }
541
+
542
+ $description = isset( $term['term_description'] ) ? $term['term_description'] : '';
543
+ $args = [
544
+ 'slug' => $term['slug'],
545
+ 'description' => wp_slash( $description ),
546
+ 'parent' => (int) $parent,
547
+ ];
548
+
549
+ $id = wp_insert_term( wp_slash( $term['term_name'] ), $term['term_taxonomy'], $args );
550
+ if ( ! is_wp_error( $id ) ) {
551
+ if ( isset( $term['term_id'] ) ) {
552
+ $this->processed_terms[ intval( $term['term_id'] ) ] = $id['term_id'];
553
+ }
554
+ $result++;
555
+ } else {
556
+ /* translators: 1: Term taxonomy, 2: Term name. */
557
+ $error = sprintf( esc_html__( 'Failed to import %1$s %2$s', 'wpr-addons' ), $term['term_taxonomy'], $term['term_name'] );
558
+
559
+ if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
560
+ $error .= PHP_EOL . $id->get_error_message();
561
+ }
562
+
563
+ $this->output['errors'][] = $error;
564
+ continue;
565
+ }
566
+
567
+ $this->process_termmeta( $term, $id['term_id'] );
568
+ }
569
+
570
+ unset( $this->terms );
571
+
572
+ return $result;
573
+ }
574
+
575
+ /**
576
+ * Add metadata to imported term.
577
+ *
578
+ * @param array $term Term data from WXR import.
579
+ * @param int $term_id ID of the newly created term.
580
+ */
581
+ private function process_termmeta( $term, $term_id ) {
582
+ if ( ! function_exists( 'add_term_meta' ) ) {
583
+ return;
584
+ }
585
+
586
+ if ( ! isset( $term['termmeta'] ) ) {
587
+ $term['termmeta'] = [];
588
+ }
589
+
590
+ /**
591
+ * Filters the metadata attached to an imported term.
592
+ *
593
+ * @param array $termmeta Array of term meta.
594
+ * @param int $term_id ID of the newly created term.
595
+ * @param array $term Term data from the WXR import.
596
+ */
597
+ $term['termmeta'] = apply_filters( 'wp_import_term_meta', $term['termmeta'], $term_id, $term );
598
+
599
+ if ( empty( $term['termmeta'] ) ) {
600
+ return;
601
+ }
602
+
603
+ foreach ( $term['termmeta'] as $meta ) {
604
+ /**
605
+ * Filters the meta key for an imported piece of term meta.
606
+ *
607
+ * @param string $meta_key Meta key.
608
+ * @param int $term_id ID of the newly created term.
609
+ * @param array $term Term data from the WXR import.
610
+ */
611
+ $key = apply_filters( 'import_term_meta_key', $meta['key'], $term_id, $term );
612
+ if ( ! $key ) {
613
+ continue;
614
+ }
615
+
616
+ // Export gets meta straight from the DB so could have a serialized string
617
+ $value = maybe_unserialize( $meta['value'] );
618
+
619
+ add_term_meta( $term_id, wp_slash( $key ), wp_slash_strings_only( $value ) );
620
+
621
+ /**
622
+ * Fires after term meta is imported.
623
+ *
624
+ * @param int $term_id ID of the newly created term.
625
+ * @param string $key Meta key.
626
+ * @param mixed $value Meta value.
627
+ */
628
+ do_action( 'import_term_meta', $term_id, $key, $value );
629
+ }
630
+ }
631
+
632
+ /**
633
+ * Create new posts based on import information
634
+ *
635
+ * Posts marked as having a parent which doesn't exist will become top level items.
636
+ * Doesn't create a new post if: the post type doesn't exist, the given post ID
637
+ * is already noted as imported or a post with the same title and date already exists.
638
+ * Note that new/updated terms, comments and meta are imported for the last of the above.
639
+ *
640
+ * @return array the ids of succeed/failed imported posts.
641
+ */
642
+ private function process_posts() {
643
+ $result = [
644
+ 'succeed' => [],
645
+ 'failed' => [],
646
+ ];
647
+
648
+ $this->posts = apply_filters( 'wp_import_posts', $this->posts );
649
+
650
+ foreach ( $this->posts as $post ) {
651
+ $post = apply_filters( 'wp_import_post_data_raw', $post );
652
+
653
+ if ( ! post_type_exists( $post['post_type'] ) ) {
654
+ /* translators: 1: Post title, 2: Post type. */
655
+ $this->output['errors'][] = sprintf( esc_html__( 'Failed to import %1$s: Invalid post type %2$s', 'wpr-addons' ), $post['post_title'], $post['post_type'] );
656
+ do_action( 'wp_import_post_exists', $post );
657
+ continue;
658
+ }
659
+
660
+ if ( isset( $this->processed_posts[ $post['post_id'] ] ) && ! empty( $post['post_id'] ) ) {
661
+ continue;
662
+ }
663
+
664
+ if ( 'auto-draft' === $post['status'] ) {
665
+ continue;
666
+ }
667
+
668
+ if ( 'nav_menu_item' === $post['post_type'] ) {
669
+ $this->process_menu_item( $post );
670
+ continue;
671
+ }
672
+
673
+ $post_type_object = get_post_type_object( $post['post_type'] );
674
+
675
+ $post_parent = (int) $post['post_parent'];
676
+ if ( $post_parent ) {
677
+ // if we already know the parent, map it to the new local ID.
678
+ if ( isset( $this->processed_posts[ $post_parent ] ) ) {
679
+ $post_parent = $this->processed_posts[ $post_parent ];
680
+ // otherwise record the parent for later.
681
+ } else {
682
+ $this->post_orphans[ intval( $post['post_id'] ) ] = $post_parent;
683
+ $post_parent = 0;
684
+ }
685
+ }
686
+
687
+ // Map the post author.
688
+ $author = sanitize_user( $post['post_author'], true );
689
+ if ( isset( $this->author_mapping[ $author ] ) ) {
690
+ $author = $this->author_mapping[ $author ];
691
+ } else {
692
+ $author = (int) get_current_user_id();
693
+ }
694
+
695
+ $postdata = [
696
+ 'import_id' => $post['post_id'],
697
+ 'post_author' => $author,
698
+ 'post_content' => $post['post_content'],
699
+ 'post_excerpt' => $post['post_excerpt'],
700
+ 'post_title' => $post['post_title'],
701
+ 'post_status' => $post['status'],
702
+ 'post_name' => $post['post_name'],
703
+ 'comment_status' => $post['comment_status'],
704
+ 'ping_status' => $post['ping_status'],
705
+ 'guid' => $post['guid'],
706
+ 'post_parent' => $post_parent,
707
+ 'menu_order' => $post['menu_order'],
708
+ 'post_type' => $post['post_type'],
709
+ 'post_password' => $post['post_password'],
710
+ 'post_date' => $post['post_date'],
711
+ ];
712
+
713
+ $original_post_id = $post['post_id'];
714
+ $postdata = apply_filters( 'wp_import_post_data_processed', $postdata, $post );
715
+
716
+ $postdata = wp_slash( $postdata );
717
+
718
+ if ( 'attachment' === $postdata['post_type'] ) {
719
+ $remote_url = ! empty( $post['attachment_url'] ) ? $post['attachment_url'] : $post['guid'];
720
+
721
+ // try to use _wp_attached file for upload folder placement to ensure the same location as the export site
722
+ // e.g. location is 2003/05/image.jpg but the attachment post_date is 2010/09, see media_handle_upload()
723
+ $postdata['upload_date'] = $post['post_date'];
724
+ if ( isset( $post['postmeta'] ) ) {
725
+ foreach ( $post['postmeta'] as $meta ) {
726
+ if ( '_wp_attached_file' === $meta['key'] ) {
727
+ if ( preg_match( '%^[0-9]{4}/[0-9]{2}%', $meta['value'], $matches ) ) {
728
+ $postdata['upload_date'] = $matches[0];
729
+ }
730
+ break;
731
+ }
732
+ }
733
+ }
734
+
735
+ $post_id = $this->process_attachment( $postdata, $remote_url );
736
+ $comment_post_id = $post_id;
737
+ } else {
738
+ $post_id = wp_insert_post( $postdata, true );
739
+ $comment_post_id = $post_id;
740
+ do_action( 'wp_import_insert_post', $post_id, $original_post_id, $postdata, $post );
741
+ }
742
+
743
+ if ( is_wp_error( $post_id ) ) {
744
+ /* translators: 1: Post type singular label, 2: Post title. */
745
+ $error = sprintf( __( 'Failed to import %1$s %2$s', 'wpr-addons' ), $post_type_object->labels->singular_name, $post['post_title'] );
746
+
747
+ if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
748
+ $error .= PHP_EOL . $post_id->get_error_message();
749
+ }
750
+
751
+ $result['failed'][] = $original_post_id;
752
+
753
+ $this->output['errors'][] = $error;
754
+
755
+ continue;
756
+ }
757
+
758
+ $result['succeed'][ $original_post_id ] = $post_id;
759
+
760
+ if ( 1 === $post['is_sticky'] ) {
761
+ stick_post( $post_id );
762
+ }
763
+
764
+ if ( $this->page_on_front === $original_post_id ) {
765
+ update_option( 'page_on_front', $post_id );
766
+ }
767
+
768
+ // Map pre-import ID to local ID.
769
+ $this->processed_posts[ intval( $post['post_id'] ) ] = (int) $post_id;
770
+
771
+ if ( ! isset( $post['terms'] ) ) {
772
+ $post['terms'] = [];
773
+ }
774
+
775
+ $post['terms'] = apply_filters( 'wp_import_post_terms', $post['terms'], $post_id, $post );
776
+
777
+ // add categories, tags and other terms
778
+ if ( ! empty( $post['terms'] ) ) {
779
+ $terms_to_set = [];
780
+ foreach ( $post['terms'] as $term ) {
781
+ // back compat with WXR 1.0 map 'tag' to 'post_tag'
782
+ $taxonomy = ( 'tag' === $term['domain'] ) ? 'post_tag' : $term['domain'];
783
+ $term_exists = term_exists( $term['slug'], $taxonomy );
784
+ $term_id = is_array( $term_exists ) ? $term_exists['term_id'] : $term_exists;
785
+ if ( ! $term_id ) {
786
+ $t = wp_insert_term( $term['name'], $taxonomy, [ 'slug' => $term['slug'] ] );
787
+ if ( ! is_wp_error( $t ) ) {
788
+ $term_id = $t['term_id'];
789
+ do_action( 'wp_import_insert_term', $t, $term, $post_id, $post );
790
+ } else {
791
+ /* translators: 1: Taxonomy name, 2: Term name. */
792
+ $error = sprintf( esc_html__( 'Failed to import %1$s %2$s', 'wpr-addons' ), $taxonomy, $term['name'] );
793
+
794
+ if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
795
+ $error .= PHP_EOL . $t->get_error_message();
796
+ }
797
+
798
+ $this->output['errors'][] = $error;
799
+
800
+ do_action( 'wp_import_insert_term_failed', $t, $term, $post_id, $post );
801
+ continue;
802
+ }
803
+ }
804
+ $terms_to_set[ $taxonomy ][] = intval( $term_id );
805
+ }
806
+
807
+ foreach ( $terms_to_set as $tax => $ids ) {
808
+ $tt_ids = wp_set_post_terms( $post_id, $ids, $tax );
809
+ do_action( 'wp_import_set_post_terms', $tt_ids, $ids, $tax, $post_id, $post );
810
+ }
811
+ unset( $post['terms'], $terms_to_set );
812
+ }
813
+
814
+ if ( ! isset( $post['comments'] ) ) {
815
+ $post['comments'] = [];
816
+ }
817
+
818
+ $post['comments'] = apply_filters( 'wp_import_post_comments', $post['comments'], $post_id, $post );
819
+
820
+ // Add/update comments.
821
+ if ( ! empty( $post['comments'] ) ) {
822
+ $num_comments = 0;
823
+ $inserted_comments = [];
824
+ foreach ( $post['comments'] as $comment ) {
825
+ $comment_id = $comment['comment_id'];
826
+ $newcomments[ $comment_id ]['comment_post_ID'] = $comment_post_id;
827
+ $newcomments[ $comment_id ]['comment_author'] = $comment['comment_author'];
828
+ $newcomments[ $comment_id ]['comment_author_email'] = $comment['comment_author_email'];
829
+ $newcomments[ $comment_id ]['comment_author_IP'] = $comment['comment_author_IP'];
830
+ $newcomments[ $comment_id ]['comment_author_url'] = $comment['comment_author_url'];
831
+ $newcomments[ $comment_id ]['comment_date'] = $comment['comment_date'];
832
+ $newcomments[ $comment_id ]['comment_date_gmt'] = $comment['comment_date_gmt'];
833
+ $newcomments[ $comment_id ]['comment_content'] = $comment['comment_content'];
834
+ $newcomments[ $comment_id ]['comment_approved'] = $comment['comment_approved'];
835
+ $newcomments[ $comment_id ]['comment_type'] = $comment['comment_type'];
836
+ $newcomments[ $comment_id ]['comment_parent'] = $comment['comment_parent'];
837
+ $newcomments[ $comment_id ]['commentmeta'] = isset( $comment['commentmeta'] ) ? $comment['commentmeta'] : [];
838
+ if ( isset( $this->processed_authors[ $comment['comment_user_id'] ] ) ) {
839
+ $newcomments[ $comment_id ]['user_id'] = $this->processed_authors[ $comment['comment_user_id'] ];
840
+ }
841
+ }
842
+
843
+ ksort( $newcomments );
844
+
845
+ foreach ( $newcomments as $key => $comment ) {
846
+ if ( isset( $inserted_comments[ $comment['comment_parent'] ] ) ) {
847
+ $comment['comment_parent'] = $inserted_comments[ $comment['comment_parent'] ];
848
+ }
849
+
850
+ $comment_data = wp_slash( $comment );
851
+ unset( $comment_data['commentmeta'] ); // Handled separately, wp_insert_comment() also expects `comment_meta`.
852
+ $comment_data = wp_filter_comment( $comment_data );
853
+
854
+ $inserted_comments[ $key ] = wp_insert_comment( $comment_data );
855
+
856
+ do_action( 'wp_import_insert_comment', $inserted_comments[ $key ], $comment, $comment_post_id, $post );
857
+
858
+ foreach ( $comment['commentmeta'] as $meta ) {
859
+ $value = maybe_unserialize( $meta['value'] );
860
+
861
+ add_comment_meta( $inserted_comments[ $key ], wp_slash( $meta['key'] ), wp_slash_strings_only( $value ) );
862
+ }
863
+
864
+ $num_comments++;
865
+ }
866
+ unset( $newcomments, $inserted_comments, $post['comments'] );
867
+ }
868
+
869
+ if ( ! isset( $post['postmeta'] ) ) {
870
+ $post['postmeta'] = [];
871
+ }
872
+
873
+ $post['postmeta'] = apply_filters( 'wp_import_post_meta', $post['postmeta'], $post_id, $post );
874
+
875
+ // Add/update post meta.
876
+ if ( ! empty( $post['postmeta'] ) ) {
877
+ foreach ( $post['postmeta'] as $meta ) {
878
+ $key = apply_filters( 'import_post_meta_key', $meta['key'], $post_id, $post );
879
+ $value = false;
880
+
881
+ if ( '_edit_last' === $key ) {
882
+ if ( isset( $this->processed_authors[ intval( $meta['value'] ) ] ) ) {
883
+ $value = $this->processed_authors[ intval( $meta['value'] ) ];
884
+ } else {
885
+ $key = false;
886
+ }
887
+ }
888
+
889
+ if ( $key ) {
890
+ // Export gets meta straight from the DB so could have a serialized string.
891
+ if ( ! $value ) {
892
+ $value = maybe_unserialize( $meta['value'] );
893
+ }
894
+
895
+ add_post_meta( $post_id, wp_slash( $key ), wp_slash_strings_only( $value ) );
896
+
897
+ do_action( 'import_post_meta', $post_id, $key, $value );
898
+
899
+ // If the post has a featured image, take note of this in case of remap.
900
+ if ( '_thumbnail_id' === $key ) {
901
+ $this->featured_images[ $post_id ] = (int) $value;
902
+ }
903
+ }
904
+ }
905
+ }
906
+ }
907
+
908
+ unset( $this->posts );
909
+
910
+ return $result;
911
+ }
912
+
913
+ /**
914
+ * Attempt to create a new menu item from import data
915
+ *
916
+ * Fails for draft, orphaned menu items and those without an associated nav_menu
917
+ * or an invalid nav_menu term. If the post type or term object which the menu item
918
+ * represents doesn't exist then the menu item will not be imported (waits until the
919
+ * end of the import to retry again before discarding).
920
+ *
921
+ * @param array $item Menu item details from WXR file
922
+ */
923
+ private function process_menu_item( $item ) {
924
+ // Skip draft, orphaned menu items.
925
+ if ( 'draft' === $item['status'] ) {
926
+ return;
927
+ }
928
+
929
+ $menu_slug = false;
930
+ if ( isset( $item['terms'] ) ) {
931
+ // Loop through terms, assume first nav_menu term is correct menu.
932
+ foreach ( $item['terms'] as $term ) {
933
+ if ( 'nav_menu' === $term['domain'] ) {
934
+ $menu_slug = $term['slug'];
935
+ break;
936
+ }
937
+ }
938
+ }
939
+
940
+ // No nav_menu term associated with this menu item.
941
+ if ( ! $menu_slug ) {
942
+ $this->output['errors'][] = esc_html__( 'Menu item skipped due to missing menu slug', 'wpr-addons' );
943
+
944
+ return;
945
+ }
946
+
947
+ $menu_id = term_exists( $menu_slug, 'nav_menu' );
948
+ if ( ! $menu_id ) {
949
+ /* translators: %s: Menu slug. */
950
+ $this->output['errors'][] = sprintf( esc_html__( 'Menu item skipped due to invalid menu slug: %s', 'wpr-addons' ), $menu_slug );
951
+
952
+ return;
953
+ } else {
954
+ $menu_id = is_array( $menu_id ) ? $menu_id['term_id'] : $menu_id;
955
+ }
956
+
957
+ $post_meta_key_value = [];
958
+ foreach ( $item['postmeta'] as $meta ) {
959
+ $post_meta_key_value[ $meta['key'] ] = $meta['value'];
960
+ }
961
+
962
+ // Duke - Import Menu Items Post Meta
963
+ $backup_menu_item_meta = [];
964
+ $backup_menu_item_meta['postmeta'] = $item['postmeta'];
965
+
966
+ foreach ( $item['postmeta'] as $meta ) {
967
+ ${$meta['key']} = $meta['value'];
968
+ }
969
+ // End.
970
+
971
+ $_menu_item_object_id = $post_meta_key_value['_menu_item_object_id'];
972
+ if ( 'taxonomy' === $post_meta_key_value['_menu_item_type'] && isset( $this->processed_terms[ intval( $_menu_item_object_id ) ] ) ) {
973
+ $_menu_item_object_id = $this->processed_terms[ intval( $_menu_item_object_id ) ];
974
+ } elseif ( 'post_type' === $post_meta_key_value['_menu_item_type'] && isset( $this->processed_posts[ intval( $_menu_item_object_id ) ] ) ) {
975
+ $_menu_item_object_id = $this->processed_posts[ intval( $_menu_item_object_id ) ];
976
+ } elseif ( 'custom' !== $post_meta_key_value['_menu_item_type'] ) {
977
+ // Associated object is missing or not imported yet, we'll retry later.
978
+ $this->missing_menu_items[] = $item;
979
+
980
+ return;
981
+ }
982
+
983
+ $_menu_item_menu_item_parent = $post_meta_key_value['_menu_item_menu_item_parent']; // Duke - fix "_menu_item_menu_item_parent" dash was added
984
+ if ( isset( $this->processed_menu_items[ intval( $_menu_item_menu_item_parent ) ] ) ) {
985
+ $_menu_item_menu_item_parent = $this->processed_menu_items[ intval( $_menu_item_menu_item_parent ) ];
986
+ } elseif ( $_menu_item_menu_item_parent ) {
987
+ $this->menu_item_orphans[ intval( $item['post_id'] ) ] = (int) $_menu_item_menu_item_parent;
988
+ $_menu_item_menu_item_parent = 0;
989
+ }
990
+
991
+ // wp_update_nav_menu_item expects CSS classes as a space separated string
992
+ $_menu_item_classes = maybe_unserialize( $post_meta_key_value['_menu_item_classes'] );
993
+ if ( is_array( $_menu_item_classes ) ) {
994
+ $_menu_item_classes = implode( ' ', $_menu_item_classes );
995
+ }
996
+
997
+ $args = [
998
+ 'menu-item-object-id' => $_menu_item_object_id,
999
+ 'menu-item-object' => $post_meta_key_value['_menu_item_object'],
1000
+ 'menu-item-parent-id' => $_menu_item_menu_item_parent,
1001
+ 'menu-item-position' => intval( $item['menu_order'] ),
1002
+ 'menu-item-type' => $post_meta_key_value['_menu_item_type'],
1003
+ 'menu-item-title' => $item['post_title'],
1004
+ 'menu-item-url' => $post_meta_key_value['_menu_item_url'],
1005
+ 'menu-item-description' => $item['post_content'],
1006
+ 'menu-item-attr-title' => $item['post_excerpt'],
1007
+ 'menu-item-target' => $post_meta_key_value['_menu_item_target'],
1008
+ 'menu-item-classes' => $_menu_item_classes,
1009
+ 'menu-item-xfn' => $post_meta_key_value['_menu_item_xfn'],
1010
+ 'menu-item-status' => $item['status'],
1011
+ ];
1012
+
1013
+ $id = wp_update_nav_menu_item( $menu_id, 0, $args );
1014
+ if ( $id && ! is_wp_error( $id ) ) {
1015
+ // Duke - Import Menu Items Post Meta
1016
+ $menu_item_db_id = $id;
1017
+ $backup_menu_item_meta['postmeta'] = apply_filters('wordpress_importer_menu_items_meta_import', $backup_menu_item_meta['postmeta'], $id);
1018
+ $skip_meta_items = [
1019
+ '_menu_item_type',
1020
+ '_menu_item_menu_item_parent',
1021
+ '_menu_item_object_id',
1022
+ '_menu_item_object',
1023
+ '_menu_item_target',
1024
+ '_menu_item_classes',
1025
+ '_menu_item_xfn',
1026
+ '_menu_item_url'
1027
+ ];
1028
+ if ( is_array($backup_menu_item_meta['postmeta']) && !empty($backup_menu_item_meta['postmeta']) ) {
1029
+ foreach ( $backup_menu_item_meta['postmeta'] as $meta ) {
1030
+ if ( !in_array($meta['key'], $skip_meta_items) ) {
1031
+ update_post_meta( $menu_item_db_id, $meta['key'], maybe_unserialize($meta['value']));
1032
+ }
1033
+ }
1034
+ }
1035
+ // End.
1036
+
1037
+ $this->processed_menu_items[ intval( $item['post_id'] ) ] = (int) $id;
1038
+ }
1039
+ }
1040
+
1041
+ /**
1042
+ * If fetching attachments is enabled then attempt to create a new attachment
1043
+ *
1044
+ * @param array $post Attachment post details from WXR
1045
+ * @param string $url URL to fetch attachment from
1046
+ *
1047
+ * @return int|WP_Error Post ID on success, WP_Error otherwise
1048
+ */
1049
+ private function process_attachment( $post, $url ) {
1050
+
1051
+ if ( ! $this->fetch_attachments ) {
1052
+ return new WP_Error( 'attachment_processing_error', esc_html__( 'Fetching attachments is not enabled', 'wpr-addons' ) );
1053
+ }
1054
+
1055
+ // if the URL is absolute, but does not contain address, then upload it assuming base_site_url.
1056
+ if ( preg_match( '|^/[\w\W]+$|', $url ) ) {
1057
+ $url = rtrim( $this->base_url, '/' ) . $url;
1058
+ }
1059
+
1060
+ $upload = $this->fetch_remote_file( $url, $post );
1061
+ if ( is_wp_error( $upload ) ) {
1062
+ return $upload;
1063
+ }
1064
+
1065
+ $info = wp_check_filetype( $upload['file'] );
1066
+ if ( $info ) {
1067
+ $post['post_mime_type'] = $info['type'];
1068
+ } else {
1069
+ return new WP_Error( 'attachment_processing_error', esc_html__( 'Invalid file type', 'wpr-addons' ) );
1070
+ }
1071
+
1072
+ $post['guid'] = $upload['url'];
1073
+
1074
+ // As per wp-admin/includes/upload.php.
1075
+ $post_id = wp_insert_attachment( $post, $upload['file'] );
1076
+ wp_update_attachment_metadata( $post_id, wp_generate_attachment_metadata( $post_id, $upload['file'] ) );
1077
+
1078
+ // Remap resized image URLs, works by stripping the extension and remapping the URL stub.
1079
+ if ( preg_match( '!^image/!', $info['type'] ) ) {
1080
+ $parts = pathinfo( $url );
1081
+ $name = basename( $parts['basename'], ".{$parts['extension']}" ); // PATHINFO_FILENAME in PHP 5.2
1082
+
1083
+ $parts_new = pathinfo( $upload['url'] );
1084
+ $name_new = basename( $parts_new['basename'], ".{$parts_new['extension']}" );
1085
+
1086
+ $this->url_remap[ $parts['dirname'] . '/' . $name ] = $parts_new['dirname'] . '/' . $name_new;
1087
+ }
1088
+
1089
+ return $post_id;
1090
+ }
1091
+
1092
+ /**
1093
+ * Attempt to download a remote file attachment
1094
+ *
1095
+ * @param string $url URL of item to fetch
1096
+ * @param array $post Attachment details
1097
+ *
1098
+ * @return array|WP_Error Local file location details on success, WP_Error otherwise
1099
+ */
1100
+ private function fetch_remote_file( $url, $post ) {
1101
+ // Extract the file name from the URL.
1102
+ $file_name = basename( parse_url( $url, PHP_URL_PATH ) );
1103
+
1104
+ if ( ! $file_name ) {
1105
+ $file_name = md5( $url );
1106
+ }
1107
+
1108
+ $tmp_file_name = wp_tempnam( $file_name );
1109
+ if ( ! $tmp_file_name ) {
1110
+ return new WP_Error( 'import_no_file', esc_html__( 'Could not create temporary file.', 'wpr-addons' ) );
1111
+ }
1112
+
1113
+ // Fetch the remote URL and write it to the placeholder file.
1114
+ $remote_response = wp_safe_remote_get( $url, [
1115
+ 'timeout' => 300,
1116
+ 'stream' => true,
1117
+ 'filename' => $tmp_file_name,
1118
+ 'headers' => [
1119
+ 'Accept-Encoding' => 'identity',
1120
+ ],
1121
+ ] );
1122
+
1123
+ if ( is_wp_error( $remote_response ) ) {
1124
+ @unlink( $tmp_file_name );
1125
+
1126
+ return new WP_Error( 'import_file_error', sprintf( /* translators: 1: WordPress error message, 2: WordPress error code. */ esc_html__( 'Request failed due to an error: %1$s (%2$s)', 'wpr-addons' ), esc_html( $remote_response->get_error_message() ), esc_html( $remote_response->get_error_code() ) ) );
1127
+ }
1128
+
1129
+ $remote_response_code = (int) wp_remote_retrieve_response_code( $remote_response );
1130
+
1131
+ // Make sure the fetch was successful.
1132
+ if ( 200 !== $remote_response_code ) {
1133
+ @unlink( $tmp_file_name );
1134
+
1135
+ return new WP_Error( 'import_file_error', sprintf( /* translators: 1: HTTP error message, 2: HTTP error code. */ esc_html__( 'Remote server returned the following unexpected result: %1$s (%2$s)', 'wpr-addons' ), get_status_header_desc( $remote_response_code ), esc_html( $remote_response_code ) ) );
1136
+ }
1137
+
1138
+ $headers = wp_remote_retrieve_headers( $remote_response );
1139
+
1140
+ // Request failed.
1141
+ if ( ! $headers ) {
1142
+ @unlink( $tmp_file_name );
1143
+
1144
+ return new WP_Error( 'import_file_error', esc_html__( 'Remote server did not respond', 'wpr-addons' ) );
1145
+ }
1146
+
1147
+ $filesize = (int) filesize( $tmp_file_name );
1148
+
1149
+ if ( 0 === $filesize ) {
1150
+ @unlink( $tmp_file_name );
1151
+
1152
+ return new WP_Error( 'import_file_error', esc_html__( 'Zero size file downloaded', 'wpr-addons' ) );
1153
+ }
1154
+
1155
+ if ( ! isset( $headers['content-encoding'] ) && isset( $headers['content-length'] ) && $filesize !== (int) $headers['content-length'] ) {
1156
+ @unlink( $tmp_file_name );
1157
+
1158
+ return new WP_Error( 'import_file_error', esc_html__( 'Downloaded file has incorrect size', 'wpr-addons' ) );
1159
+ }
1160
+
1161
+ $max_size = (int) apply_filters( 'import_attachment_size_limit', self::DEFAULT_IMPORT_ATTACHMENT_SIZE_LIMIT );
1162
+ if ( ! empty( $max_size ) && $filesize > $max_size ) {
1163
+ @unlink( $tmp_file_name );
1164
+
1165
+ /* translators: %s: Max file size. */
1166
+ return new WP_Error( 'import_file_error', sprintf( esc_html__( 'Remote file is too large, limit is %s', 'wpr-addons' ), size_format( $max_size ) ) );
1167
+ }
1168
+
1169
+ // Override file name with Content-Disposition header value.
1170
+ if ( ! empty( $headers['content-disposition'] ) ) {
1171
+ $file_name_from_disposition = self::get_filename_from_disposition( (array) $headers['content-disposition'] );
1172
+ if ( $file_name_from_disposition ) {
1173
+ $file_name = $file_name_from_disposition;
1174
+ }
1175
+ }
1176
+
1177
+ // Set file extension if missing.
1178
+ $file_ext = pathinfo( $file_name, PATHINFO_EXTENSION );
1179
+ if ( ! $file_ext && ! empty( $headers['content-type'] ) ) {
1180
+ $extension = self::get_file_extension_by_mime_type( $headers['content-type'] );
1181
+ if ( $extension ) {
1182
+ $file_name = "{$file_name}.{$extension}";
1183
+ }
1184
+ }
1185
+
1186
+ // Handle the upload like _wp_handle_upload() does.
1187
+ $wp_filetype = wp_check_filetype_and_ext( $tmp_file_name, $file_name );
1188
+ $ext = empty( $wp_filetype['ext'] ) ? '' : $wp_filetype['ext'];
1189
+ $type = empty( $wp_filetype['type'] ) ? '' : $wp_filetype['type'];
1190
+ $proper_filename = empty( $wp_filetype['proper_filename'] ) ? '' : $wp_filetype['proper_filename'];
1191
+
1192
+ // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect.
1193
+ if ( $proper_filename ) {
1194
+ $file_name = $proper_filename;
1195
+ }
1196
+
1197
+ if ( ( ! $type || ! $ext ) && ! current_user_can( 'unfiltered_upload' ) ) {
1198
+ return new WP_Error( 'import_file_error', esc_html__( 'Sorry, this file type is not permitted for security reasons.', 'wpr-addons' ) );
1199
+ }
1200
+
1201
+ $uploads = wp_upload_dir( $post['upload_date'] );
1202
+ if ( ! ( $uploads && false === $uploads['error'] ) ) {
1203
+ return new WP_Error( 'upload_dir_error', $uploads['error'] );
1204
+ }
1205
+
1206
+ // Move the file to the uploads dir.
1207
+ $file_name = wp_unique_filename( $uploads['path'], $file_name );
1208
+ $new_file = $uploads['path'] . "/$file_name";
1209
+ $move_new_file = copy( $tmp_file_name, $new_file );
1210
+
1211
+ if ( ! $move_new_file ) {
1212
+ @unlink( $tmp_file_name );
1213
+
1214
+ return new WP_Error( 'import_file_error', esc_html__( 'The uploaded file could not be moved', 'wpr-addons' ) );
1215
+ }
1216
+
1217
+ // Set correct file permissions.
1218
+ $stat = stat( dirname( $new_file ) );
1219
+ $perms = $stat['mode'] & 0000666;
1220
+ chmod( $new_file, $perms );
1221
+
1222
+ $upload = [
1223
+ 'file' => $new_file,
1224
+ 'url' => $uploads['url'] . "/$file_name",
1225
+ 'type' => $wp_filetype['type'],
1226
+ 'error' => false,
1227
+ ];
1228
+
1229
+ // Keep track of the old and new urls so we can substitute them later.
1230
+ $this->url_remap[ $url ] = $upload['url'];
1231
+ $this->url_remap[ $post['guid'] ] = $upload['url']; // r13735, really needed?
1232
+ // Keep track of the destination if the remote url is redirected somewhere else.
1233
+ if ( isset( $headers['x-final-location'] ) && $headers['x-final-location'] !== $url ) {
1234
+ $this->url_remap[ $headers['x-final-location'] ] = $upload['url'];
1235
+ }
1236
+
1237
+ return $upload;
1238
+ }
1239
+
1240
+ /**
1241
+ * Attempt to associate posts and menu items with previously missing parents
1242
+ *
1243
+ * An imported post's parent may not have been imported when it was first created
1244
+ * so try again. Similarly for child menu items and menu items which were missing
1245
+ * the object (e.g. post) they represent in the menu
1246
+ */
1247
+ private function backfill_parents() {
1248
+ global $wpdb;
1249
+
1250
+ // Find parents for post orphans.
1251
+ foreach ( $this->post_orphans as $child_id => $parent_id ) {
1252
+ $local_child_id = false;
1253
+ $local_parent_id = false;
1254
+
1255
+ if ( isset( $this->processed_posts[ $child_id ] ) ) {
1256
+ $local_child_id = $this->processed_posts[ $child_id ];
1257
+ }
1258
+ if ( isset( $this->processed_posts[ $parent_id ] ) ) {
1259
+ $local_parent_id = $this->processed_posts[ $parent_id ];
1260
+ }
1261
+
1262
+ if ( $local_child_id && $local_parent_id ) {
1263
+ $wpdb->update( $wpdb->posts, [ 'post_parent' => $local_parent_id ], [ 'ID' => $local_child_id ], '%d', '%d' );
1264
+ clean_post_cache( $local_child_id );
1265
+ }
1266
+ }
1267
+
1268
+ // All other posts/terms are imported, retry menu items with missing associated object.
1269
+ $missing_menu_items = $this->missing_menu_items;
1270
+ foreach ( $missing_menu_items as $item ) {
1271
+ $this->process_menu_item( $item );
1272
+ }
1273
+
1274
+ // Find parents for menu item orphans.
1275
+ foreach ( $this->menu_item_orphans as $child_id => $parent_id ) {
1276
+ $local_child_id = 0;
1277
+ $local_parent_id = 0;
1278
+ if ( isset( $this->processed_menu_items[ $child_id ] ) ) {
1279
+ $local_child_id = $this->processed_menu_items[ $child_id ];
1280
+ }
1281
+ if ( isset( $this->processed_menu_items[ $parent_id ] ) ) {
1282
+ $local_parent_id = $this->processed_menu_items[ $parent_id ];
1283
+ }
1284
+
1285
+ if ( $local_child_id && $local_parent_id ) {
1286
+ update_post_meta( $local_child_id, '_menu_item_menu_item_parent', (int) $local_parent_id );
1287
+ }
1288
+ }
1289
+ }
1290
+
1291
+ /**
1292
+ * Use stored mapping information to update old attachment URLs
1293
+ */
1294
+ private function backfill_attachment_urls() {
1295
+ global $wpdb;
1296
+ // Make sure we do the longest urls first, in case one is a substring of another.
1297
+ uksort( $this->url_remap, function ( $a, $b ) {
1298
+ // Return the difference in length between two strings.
1299
+ return strlen( $b ) - strlen( $a );
1300
+ } );
1301
+
1302
+ foreach ( $this->url_remap as $from_url => $to_url ) {
1303
+ // Remap urls in post_content.
1304
+ $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, %s, %s)", $from_url, $to_url ) );
1305
+ // Remap enclosure urls.
1306
+ $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, %s, %s) WHERE meta_key='enclosure'", $from_url, $to_url ) );
1307
+ }
1308
+ }
1309
+
1310
+ /**
1311
+ * Update _thumbnail_id meta to new, imported attachment IDs
1312
+ */
1313
+ private function remap_featured_images() {
1314
+ // Cycle through posts that have a featured image.
1315
+ foreach ( $this->featured_images as $post_id => $value ) {
1316
+ if ( isset( $this->processed_posts[ $value ] ) ) {
1317
+ $new_id = $this->processed_posts[ $value ];
1318
+ // Only update if there's a difference.
1319
+ if ( $new_id !== $value ) {
1320
+ update_post_meta( $post_id, '_thumbnail_id', $new_id );
1321
+ }
1322
+ }
1323
+ }
1324
+ }
1325
+
1326
+ /**
1327
+ * Parse a WXR file
1328
+ *
1329
+ * @param string $file Path to WXR file for parsing
1330
+ *
1331
+ * @return array Information gathered from the WXR file
1332
+ */
1333
+ private function parse( $file ) {
1334
+ $parser = new WXR_Parser();
1335
+
1336
+ return $parser->parse( $file );
1337
+ }
1338
+
1339
+ /**
1340
+ * Decide if the given meta key maps to information we will want to import
1341
+ *
1342
+ * @param string $key The meta key to check
1343
+ *
1344
+ * @return string|bool The key if we do want to import, false if not
1345
+ */
1346
+ private function is_valid_meta_key( $key ) {
1347
+ // Skip attachment metadata since we'll regenerate it from scratch.
1348
+ // Skip _edit_lock as not relevant for import
1349
+ if ( in_array( $key, [ '_wp_attached_file', '_wp_attachment_metadata', '_edit_lock' ] ) ) {
1350
+ return false;
1351
+ }
1352
+
1353
+ return $key;
1354
+ }
1355
+
1356
+ public function run() {
1357
+ $this->import( $this->requested_file_path );
1358
+
1359
+ return $this->output;
1360
+ }
1361
+
1362
+ public function __construct( $file, $args = [] ) {
1363
+ $this->requested_file_path = $file;
1364
+ $this->args = $args;
1365
+
1366
+ if ( ! empty( $this->args['fetch_attachments'] ) ) {
1367
+ $this->fetch_attachments = true;
1368
+ }
1369
+ }
1370
+ }
admin/includes/wpr-conditions-manager.php CHANGED
@@ -1,207 +1,207 @@
1
- <?php
2
- namespace WprAddons\Admin\Includes;
3
-
4
- use WprAddons\Classes\Utilities;
5
-
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit; // Exit if accessed directly.
8
- }
9
-
10
- /**
11
- * WPR_Conditions_Manager setup
12
- *
13
- * @since 1.0
14
- */
15
- class WPR_Conditions_Manager {
16
-
17
- /**
18
- ** Header & Footer Conditions
19
- */
20
- public static function header_footer_display_conditions( $conditions ) {
21
- $template = NULL;
22
-
23
- // Custom
24
- if ( wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION') ) {
25
- if ( !empty($conditions) ) {
26
-
27
- // Archive Pages (includes search)
28
- if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $conditions ) ) ) {
29
- $template = \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $conditions );
30
- }
31
-
32
- // Single Pages
33
- if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $conditions ) ) ) {
34
- $template = \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $conditions );
35
- }
36
-
37
- }
38
- } else {
39
- $template = Utilities::get_template_slug( $conditions, 'global' );
40
- }
41
-
42
- if ( \Elementor\Plugin::$instance->preview->is_preview_mode() ) {
43
- $template_type = Utilities::get_wpr_template_type(get_the_ID());
44
-
45
- if ( 'header' === $template_type || 'footer' === $template_type || is_singular('wpr_mega_menu') ) {
46
- $template = NULL;
47
- }
48
- }
49
-
50
- return $template;
51
- }
52
-
53
- /**
54
- ** Canvas Content Conditions
55
- */
56
- public static function canvas_page_content_display_conditions() {
57
- $template = NULL;
58
-
59
- // Get Conditions
60
- if ( class_exists( 'WooCommerce' ) && is_woocommerce() ) {
61
- $archives = json_decode( get_option( 'wpr_product_archive_conditions' ), true );
62
- $singles = json_decode( get_option( 'wpr_product_single_conditions' ), true );
63
- } else {
64
- $archives = json_decode( get_option( 'wpr_archive_conditions' ), true );
65
- $singles = json_decode( get_option( 'wpr_single_conditions' ), true );
66
- }
67
-
68
- if ( empty($archives) && empty($singles) ) {
69
- return NULL;
70
- }
71
-
72
- // Custom
73
- if ( wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION') ) {
74
-
75
- // Archive Pages (includes search)
76
- if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $archives ) ) ) {
77
- $template = \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $archives );
78
- }
79
-
80
- // Single Pages
81
- if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $singles ) ) ) {
82
- $template = \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $singles );
83
- }
84
- } else {
85
- // Archive Pages (includes search)
86
- if ( !is_null( WPR_Conditions_Manager::archive_templates_conditions_free($archives) ) ) {
87
- $template = WPR_Conditions_Manager::archive_templates_conditions_free($archives);
88
- }
89
-
90
- // Single Pages
91
- if ( !is_null( WPR_Conditions_Manager::single_templates_conditions_free($singles) ) ) {
92
- $template = WPR_Conditions_Manager::single_templates_conditions_free($singles);
93
- }
94
- }
95
-
96
- return $template;
97
- }
98
-
99
-
100
- /**
101
- ** Archive Pages Templates Conditions Free
102
- */
103
- public static function archive_templates_conditions_free( $conditions ) {
104
- $term_id = '';
105
- $term_name = '';
106
- $queried_object = get_queried_object();
107
-
108
- // Get Terms
109
- if ( ! is_null( $queried_object ) ) {
110
- if ( isset( $queried_object->term_id ) && isset( $queried_object->taxonomy ) ) {
111
- $term_id = $queried_object->term_id;
112
- $term_name = $queried_object->taxonomy;
113
- }
114
- }
115
-
116
- // Reset
117
- $template = NULL;
118
-
119
- // Archive Pages (includes search)
120
- if ( is_archive() || is_search() ) {
121
- if ( ! is_search() ) {
122
- // Author
123
- if ( is_author() ) {
124
- $template = Utilities::get_template_slug( $conditions, 'archive/author' );
125
- // Date
126
- } elseif ( is_date() ) {
127
- $template = Utilities::get_template_slug( $conditions, 'archive/date' );
128
- // Category
129
- } elseif ( is_category() ) {
130
- $template = Utilities::get_template_slug( $conditions, 'archive/categories', $term_id );
131
- // Tag
132
- } elseif ( is_tag() ) {
133
- $template = Utilities::get_template_slug( $conditions, 'archive/tags', $term_id );
134
- // Products
135
- } elseif ( class_exists( 'WooCommerce' ) && is_woocommerce() ) {
136
- $template = Utilities::get_template_slug( $conditions, 'product_archive/products' );
137
- }
138
-
139
- // Search Page
140
- } else {
141
- $template = Utilities::get_template_slug( $conditions, 'archive/search' );
142
- }
143
-
144
- // Posts Page
145
- } elseif ( Utilities::is_blog_archive() ) {
146
- $template = Utilities::get_template_slug( $conditions, 'archive/posts' );
147
- }
148
-
149
- // Global - For All Archives
150
- if ( is_null($template) ) {
151
- $all_archives = Utilities::get_template_slug( $conditions, 'archive/all_archives' );
152
-
153
- if ( ! is_null($all_archives) ) {
154
- if ( class_exists( 'WooCommerce' ) && is_shop() ) {
155
- $template = null;
156
- } else {
157
- if ( is_archive() || is_search() || Utilities::is_blog_archive() ) {
158
- $template = $all_archives;
159
- }
160
- }
161
- }
162
- }
163
-
164
- return $template;
165
- }
166
-
167
- /**
168
- ** Single Pages Templates Conditions - Free
169
- */
170
- public static function single_templates_conditions_free( $conditions ) {
171
- global $post;
172
-
173
- // Get Posts
174
- $post_id = is_null($post) ? '' : $post->ID;
175
- $post_type = is_null($post) ? '' : $post->post_type;
176
-
177
- // Reset
178
- $template = NULL;
179
-
180
- // Single Pages
181
- if ( is_single() || is_front_page() || is_page() || is_404() ) {
182
-
183
- if ( is_single() ) {
184
- // Blog Posts
185
- if ( 'post' == $post_type ) {
186
- $template = Utilities::get_template_slug( $conditions, 'single/posts', $post_id );
187
- } elseif ( 'product' == $post_type ) {
188
- $template = Utilities::get_template_slug( $conditions, 'product_single/product', $post_id );
189
- }
190
- } else {
191
- // Front page
192
- if ( is_front_page() && ! Utilities::is_blog_archive() ) {//TODO: is it a good check? - is_blog_archive()
193
- $template = Utilities::get_template_slug( $conditions, 'single/front_page' );
194
- // Error 404 Page
195
- } elseif ( is_404() ) {
196
- $template = Utilities::get_template_slug( $conditions, 'single/page_404' );
197
- // Single Page
198
- } elseif ( is_page() ) {
199
- $template = Utilities::get_template_slug( $conditions, 'single/pages', $post_id );
200
- }
201
- }
202
-
203
- }
204
-
205
- return $template;
206
- }
207
  }
1
+ <?php
2
+ namespace WprAddons\Admin\Includes;
3
+
4
+ use WprAddons\Classes\Utilities;
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit; // Exit if accessed directly.
8
+ }
9
+
10
+ /**
11
+ * WPR_Conditions_Manager setup
12
+ *
13
+ * @since 1.0
14
+ */
15
+ class WPR_Conditions_Manager {
16
+
17
+ /**
18
+ ** Header & Footer Conditions
19
+ */
20
+ public static function header_footer_display_conditions( $conditions ) {
21
+ $template = NULL;
22
+
23
+ // Custom
24
+ if ( wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION') ) {
25
+ if ( !empty($conditions) ) {
26
+
27
+ // Archive Pages (includes search)
28
+ if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $conditions ) ) ) {
29
+ $template = \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $conditions );
30
+ }
31
+
32
+ // Single Pages
33
+ if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $conditions ) ) ) {
34
+ $template = \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $conditions );
35
+ }
36
+
37
+ }
38
+ } else {
39
+ $template = Utilities::get_template_slug( $conditions, 'global' );
40
+ }
41
+
42
+ if ( \Elementor\Plugin::$instance->preview->is_preview_mode() ) {
43
+ $template_type = Utilities::get_wpr_template_type(get_the_ID());
44
+
45
+ if ( 'header' === $template_type || 'footer' === $template_type || is_singular('wpr_mega_menu') ) {
46
+ $template = NULL;
47
+ }
48
+ }
49
+
50
+ return $template;
51
+ }
52
+
53
+ /**
54
+ ** Canvas Content Conditions
55
+ */
56
+ public static function canvas_page_content_display_conditions() {
57
+ $template = NULL;
58
+
59
+ // Get Conditions
60
+ if ( class_exists( 'WooCommerce' ) && is_woocommerce() ) {
61
+ $archives = json_decode( get_option( 'wpr_product_archive_conditions' ), true );
62
+ $singles = json_decode( get_option( 'wpr_product_single_conditions' ), true );
63
+ } else {
64
+ $archives = json_decode( get_option( 'wpr_archive_conditions' ), true );
65
+ $singles = json_decode( get_option( 'wpr_single_conditions' ), true );
66
+ }
67
+
68
+ if ( empty($archives) && empty($singles) ) {
69
+ return NULL;
70
+ }
71
+
72
+ // Custom
73
+ if ( wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION') ) {
74
+
75
+ // Archive Pages (includes search)
76
+ if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $archives ) ) ) {
77
+ $template = \WprAddonsPro\Classes\Pro_Modules::archive_templates_conditions( $archives );
78
+ }
79
+
80
+ // Single Pages
81
+ if ( !is_null( \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $singles ) ) ) {
82
+ $template = \WprAddonsPro\Classes\Pro_Modules::single_templates_conditions( $singles );
83
+ }
84
+ } else {
85
+ // Archive Pages (includes search)
86
+ if ( !is_null( WPR_Conditions_Manager::archive_templates_conditions_free($archives) ) ) {
87
+ $template = WPR_Conditions_Manager::archive_templates_conditions_free($archives);
88
+ }
89
+
90
+ // Single Pages
91
+ if ( !is_null( WPR_Conditions_Manager::single_templates_conditions_free($singles) ) ) {
92
+ $template = WPR_Conditions_Manager::single_templates_conditions_free($singles);
93
+ }
94
+ }
95
+
96
+ return $template;
97
+ }
98
+
99
+
100
+ /**
101
+ ** Archive Pages Templates Conditions Free
102
+ */
103
+ public static function archive_templates_conditions_free( $conditions ) {
104
+ $term_id = '';
105
+ $term_name = '';
106
+ $queried_object = get_queried_object();
107
+
108
+ // Get Terms
109
+ if ( ! is_null( $queried_object ) ) {
110
+ if ( isset( $queried_object->term_id ) && isset( $queried_object->taxonomy ) ) {
111
+ $term_id = $queried_object->term_id;
112
+ $term_name = $queried_object->taxonomy;
113
+ }
114
+ }
115
+
116
+ // Reset
117
+ $template = NULL;
118
+
119
+ // Archive Pages (includes search)
120
+ if ( is_archive() || is_search() ) {
121
+ if ( ! is_search() ) {
122
+ // Author
123
+ if ( is_author() ) {
124
+ $template = Utilities::get_template_slug( $conditions, 'archive/author' );
125
+ // Date
126
+ } elseif ( is_date() ) {
127
+ $template = Utilities::get_template_slug( $conditions, 'archive/date' );
128
+ // Category
129
+ } elseif ( is_category() ) {
130
+ $template = Utilities::get_template_slug( $conditions, 'archive/categories', $term_id );
131
+ // Tag
132
+ } elseif ( is_tag() ) {
133
+ $template = Utilities::get_template_slug( $conditions, 'archive/tags', $term_id );
134
+ // Products
135
+ } elseif ( class_exists( 'WooCommerce' ) && is_woocommerce() ) {
136
+ $template = Utilities::get_template_slug( $conditions, 'product_archive/products' );
137
+ }
138
+
139
+ // Search Page
140
+ } else {
141
+ $template = Utilities::get_template_slug( $conditions, 'archive/search' );
142
+ }
143
+
144
+ // Posts Page
145
+ } elseif ( Utilities::is_blog_archive() ) {
146
+ $template = Utilities::get_template_slug( $conditions, 'archive/posts' );
147
+ }
148
+
149
+ // Global - For All Archives
150
+ if ( is_null($template) ) {
151
+ $all_archives = Utilities::get_template_slug( $conditions, 'archive/all_archives' );
152
+
153
+ if ( ! is_null($all_archives) ) {
154
+ if ( class_exists( 'WooCommerce' ) && is_shop() ) {
155
+ $template = null;
156
+ } else {
157
+ if ( is_archive() || is_search() || Utilities::is_blog_archive() ) {
158
+ $template = $all_archives;
159
+ }
160
+ }
161
+ }
162
+ }
163
+
164
+ return $template;
165
+ }
166
+
167
+ /**
168
+ ** Single Pages Templates Conditions - Free
169
+ */
170
+ public static function single_templates_conditions_free( $conditions ) {
171
+ global $post;
172
+
173
+ // Get Posts
174
+ $post_id = is_null($post) ? '' : $post->ID;
175
+ $post_type = is_null($post) ? '' : $post->post_type;
176
+
177
+ // Reset
178
+ $template = NULL;
179
+
180
+ // Single Pages
181
+ if ( is_single() || is_front_page() || is_page() || is_404() ) {
182
+
183
+ if ( is_single() ) {
184
+ // Blog Posts
185
+ if ( 'post' == $post_type ) {
186
+ $template = Utilities::get_template_slug( $conditions, 'single/posts', $post_id );
187
+ } elseif ( 'product' == $post_type ) {
188
+ $template = Utilities::get_template_slug( $conditions, 'product_single/product', $post_id );
189
+ }
190
+ } else {
191
+ // Front page
192
+ if ( is_front_page() && ! Utilities::is_blog_archive() ) {//TODO: is it a good check? - is_blog_archive()
193
+ $template = Utilities::get_template_slug( $conditions, 'single/front_page' );
194
+ // Error 404 Page
195
+ } elseif ( is_404() ) {
196
+ $template = Utilities::get_template_slug( $conditions, 'single/page_404' );
197
+ // Single Page
198
+ } elseif ( is_page() ) {
199
+ $template = Utilities::get_template_slug( $conditions, 'single/pages', $post_id );
200
+ }
201
+ }
202
+
203
+ }
204
+
205
+ return $template;
206
+ }
207
  }
admin/includes/wpr-render-templates.php CHANGED
@@ -1,251 +1,251 @@
1
- <?php
2
- namespace WprAddons\Admin\Includes;
3
-
4
- use WprAddons\Classes\Utilities;
5
-
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit; // Exit if accessed directly.
8
- }
9
-
10
- /**
11
- * WPR_Render_Templates setup
12
- *
13
- * @since 1.0
14
- */
15
- class WPR_Render_Templates {
16
-
17
- /**
18
- ** Instance of Elemenntor Frontend class.
19
- *
20
- ** @var \Elementor\Frontend()
21
- */
22
- private static $elementor_instance;
23
-
24
- /**
25
- ** Get Current Theme.
26
- */
27
- public $current_theme;
28
-
29
- /**
30
- ** Royal Themes Array.
31
- */
32
- public $royal_themes;
33
-
34
-
35
- /**
36
- ** Constructor
37
- */
38
- public function __construct( $only_hf = false ) {
39
-
40
- // Elementor Frontend
41
- self::$elementor_instance = \Elementor\Plugin::instance();
42
-
43
- // Ative Theme
44
- $this->current_theme = get_template();
45
-
46
- // Royal Themes
47
- $this->royal_themes = ['ashe', 'ashe-pro', 'ashe-pro-premium', 'bard', 'bard-pro', 'bard-pro-premium'];
48
-
49
- // Popular Themes
50
- if ( 'astra' === $this->current_theme ) {
51
- require_once(__DIR__ . '/../templates/views/astra/class-astra-compat.php');
52
-
53
- } elseif ( 'generatepress' === $this->current_theme ) {
54
- require_once(__DIR__ . '/../templates/views/generatepress/class-generatepress-compat.php');
55
-
56
- } elseif ( 'oceanwp' === $this->current_theme ) {
57
- require_once(__DIR__ . '/../templates/views/oceanwp/class-oceanwp-compat.php');
58
-
59
- } elseif ( 'storefront' === $this->current_theme ) {
60
- require_once(__DIR__ . '/../templates/views/storefront/class-storefront-compat.php');
61
-
62
- // Other Themes
63
- } else {
64
- add_action( 'wp', [ $this, 'global_compatibility' ] );
65
- }
66
-
67
- // Scripts and Styles
68
- add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
69
-
70
- // Theme Builder
71
- if ( !$only_hf ) { // Prevent Loading in Header or Footer Templates
72
- add_filter( 'template_include', [ $this, 'convert_to_canvas' ], 12 ); // 12 after WP Pages and WooCommerce.
73
- add_action( 'elementor/page_templates/canvas/wpr_print_content', [ $this, 'canvas_page_content_display' ] );
74
- }
75
- }
76
-
77
- public function global_compatibility() {
78
- add_action( 'get_header', [ $this, 'replace_header' ] );
79
- add_action( 'elementor/page_templates/canvas/before_content', [ $this, 'add_canvas_header' ] );
80
-
81
- add_action( 'get_footer', [ $this, 'replace_footer' ] );
82
- add_action( 'elementor/page_templates/canvas/after_content', [ $this, 'add_canvas_footer' ], 9 );
83
- }
84
-
85
- /**
86
- ** Check if a Template has Conditions
87
- */
88
- public function is_template_available( $type ) {
89
- if ( 'content' === $type ) {
90
- return !is_null(WPR_Conditions_Manager::canvas_page_content_display_conditions()) ? true : false;
91
- } else {
92
- $conditions = json_decode( get_option('wpr_'. $type .'_conditions', '[]'), true );
93
- $template = WPR_Conditions_Manager::header_footer_display_conditions( $conditions );
94
- return (!empty( $conditions ) && !is_null($template)) ? true : false;
95
- }
96
- }
97
-
98
- /**
99
- ** Header
100
- */
101
- public function replace_header() {
102
- if ( $this->is_template_available('header') ) {
103
- if ( ! in_array($this->current_theme, $this->royal_themes) ) {
104
- require __DIR__ . '/../templates/views/theme-header.php';
105
- } else {
106
- require __DIR__ . '/../templates/views/royal/theme-header-royal.php';
107
- }
108
-
109
- $templates = [];
110
- $templates[] = 'header.php';
111
-
112
- remove_all_actions( 'wp_head' ); // Avoid running wp_head hooks again.
113
-
114
- ob_start();
115
- locate_template( $templates, true );
116
- ob_get_clean();
117
- }
118
- }
119
-
120
- public function add_canvas_header() {
121
- if ( $this->is_template_available('header') ) {
122
- $conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
123
- $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
124
- $template_id = Utilities::get_template_id($template_slug);
125
- $show_on_canvas = get_post_meta($template_id, 'wpr_header_show_on_canvas', true);
126
-
127
- if ( !empty($show_on_canvas) && 'true' === $show_on_canvas && 0 === strpos($template_slug, 'user-header-') ) {
128
- Utilities::render_elementor_template($template_slug);
129
- }
130
- }
131
- }
132
-
133
- /**
134
- ** Footer
135
- */
136
- public function replace_footer() {
137
- if ( $this->is_template_available('footer') ) {
138
- if ( ! in_array($this->current_theme, $this->royal_themes) ) {
139
- require __DIR__ . '/../templates/views/theme-footer.php';
140
- } else {
141
- require __DIR__ . '/../templates/views/royal/theme-footer-royal.php';
142
- }
143
-
144
- $templates = [];
145
- $templates[] = 'footer.php';
146
-
147
- remove_all_actions( 'wp_footer' ); // Avoid running wp_footer hooks again.
148
-
149
- ob_start();
150
- locate_template( $templates, true );
151
- ob_get_clean();
152
- }
153
- }
154
-
155
- public function add_canvas_footer() {
156
- if ( $this->is_template_available('footer') ) {
157
- $conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
158
- $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
159
- $template_id = Utilities::get_template_id($template_slug);
160
- $show_on_canvas = get_post_meta($template_id, 'wpr_footer_show_on_canvas', true);
161
-
162
- if ( !empty($show_on_canvas) && 'true' === $show_on_canvas && 0 === strpos($template_slug, 'user-footer-') ) {
163
- Utilities::render_elementor_template($template_slug);
164
- }
165
- }
166
- }
167
-
168
- public function convert_to_canvas( $template ) {
169
- $is_theme_builder_edit = \Elementor\Plugin::$instance->preview->is_preview_mode() && Utilities::is_theme_builder_template() ? true : false;
170
- $_wp_page_template = get_post_meta(get_the_ID(), '_wp_page_template', true);
171
-
172
- if ( $this->is_template_available('content') || $is_theme_builder_edit ) {
173
- if ( (is_page() || is_single()) && 'elementor_canvas' === $_wp_page_template && !$is_theme_builder_edit ) {
174
- return $template;
175
- } else {
176
- return WPR_ADDONS_PATH . 'admin/templates/wpr-canvas.php';
177
- }
178
- } else {
179
- return $template;
180
- }
181
- }
182
-
183
- /**
184
- ** Theme Builder Content Display
185
- */
186
- public function canvas_page_content_display() {
187
- // Get Template
188
- $template = WPR_Conditions_Manager::canvas_page_content_display_conditions();
189
-
190
- // Display Template
191
- Utilities::render_elementor_template( $template );
192
- }
193
-
194
- /**
195
- * Enqueue styles and scripts.
196
- */
197
- public function enqueue_scripts() {
198
-
199
- if ( class_exists( '\Elementor\Plugin' ) ) {
200
- $elementor = \Elementor\Plugin::instance();
201
- $elementor->frontend->enqueue_styles();
202
- }
203
-
204
- if ( class_exists( '\ElementorPro\Plugin' ) ) {
205
- $elementor_pro = \ElementorPro\Plugin::instance();
206
- $elementor_pro->enqueue_styles();
207
- }
208
-
209
- // Load Header Template CSS File
210
- $heder_conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
211
- $header_template_id = Utilities::get_template_id(WPR_Conditions_Manager::header_footer_display_conditions($heder_conditions));
212
-
213
- if ( false !== $header_template_id ) {
214
- if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
215
- $header_css_file = new \Elementor\Core\Files\CSS\Post( $header_template_id );
216
- } elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
217
- $header_css_file = new \Elementor\Post_CSS_File( $header_template_id );
218
- }
219
-
220
- $header_css_file->enqueue();
221
- }
222
-
223
- // Load Footer Template CSS File
224
- $footer_conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
225
- $footer_template_id = Utilities::get_template_id(WPR_Conditions_Manager::header_footer_display_conditions($footer_conditions));
226
-
227
- if ( false !== $footer_template_id ) {
228
- if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
229
- $footer_css_file = new \Elementor\Core\Files\CSS\Post( $footer_template_id );
230
- } elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
231
- $footer_css_file = new \Elementor\Post_CSS_File( $footer_template_id );
232
- }
233
-
234
- $footer_css_file->enqueue();
235
- }
236
-
237
- // Load Canvas Content Template CSS File
238
- $canvas_template_id = Utilities::get_template_id(WPR_Conditions_Manager::canvas_page_content_display_conditions());
239
-
240
- if ( false !== $canvas_template_id ) {
241
- if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
242
- $footer_css_file = new \Elementor\Core\Files\CSS\Post( $canvas_template_id );
243
- } elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
244
- $footer_css_file = new \Elementor\Post_CSS_File( $canvas_template_id );
245
- }
246
-
247
- $footer_css_file->enqueue();
248
- }
249
- }
250
-
251
  }
1
+ <?php
2
+ namespace WprAddons\Admin\Includes;
3
+
4
+ use WprAddons\Classes\Utilities;
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit; // Exit if accessed directly.
8
+ }
9
+
10
+ /**
11
+ * WPR_Render_Templates setup
12
+ *
13
+ * @since 1.0
14
+ */
15
+ class WPR_Render_Templates {
16
+
17
+ /**
18
+ ** Instance of Elemenntor Frontend class.
19
+ *
20
+ ** @var \Elementor\Frontend()
21
+ */
22
+ private static $elementor_instance;
23
+
24
+ /**
25
+ ** Get Current Theme.
26
+ */
27
+ public $current_theme;
28
+
29
+ /**
30
+ ** Royal Themes Array.
31
+ */
32
+ public $royal_themes;
33
+
34
+
35
+ /**
36
+ ** Constructor
37
+ */
38
+ public function __construct( $only_hf = false ) {
39
+
40
+ // Elementor Frontend
41
+ self::$elementor_instance = \Elementor\Plugin::instance();
42
+
43
+ // Ative Theme
44
+ $this->current_theme = get_template();
45
+
46
+ // Royal Themes
47
+ $this->royal_themes = ['ashe', 'ashe-pro', 'ashe-pro-premium', 'bard', 'bard-pro', 'bard-pro-premium'];
48
+
49
+ // Popular Themes
50
+ if ( 'astra' === $this->current_theme ) {
51
+ require_once(__DIR__ . '/../templates/views/astra/class-astra-compat.php');
52
+
53
+ } elseif ( 'generatepress' === $this->current_theme ) {
54
+ require_once(__DIR__ . '/../templates/views/generatepress/class-generatepress-compat.php');
55
+
56
+ } elseif ( 'oceanwp' === $this->current_theme ) {
57
+ require_once(__DIR__ . '/../templates/views/oceanwp/class-oceanwp-compat.php');
58
+
59
+ } elseif ( 'storefront' === $this->current_theme ) {
60
+ require_once(__DIR__ . '/../templates/views/storefront/class-storefront-compat.php');
61
+
62
+ // Other Themes
63
+ } else {
64
+ add_action( 'wp', [ $this, 'global_compatibility' ] );
65
+ }
66
+
67
+ // Scripts and Styles
68
+ add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
69
+
70
+ // Theme Builder
71
+ if ( !$only_hf ) { // Prevent Loading in Header or Footer Templates
72
+ add_filter( 'template_include', [ $this, 'convert_to_canvas' ], 12 ); // 12 after WP Pages and WooCommerce.
73
+ add_action( 'elementor/page_templates/canvas/wpr_print_content', [ $this, 'canvas_page_content_display' ] );
74
+ }
75
+ }
76
+
77
+ public function global_compatibility() {
78
+ add_action( 'get_header', [ $this, 'replace_header' ] );
79
+ add_action( 'elementor/page_templates/canvas/before_content', [ $this, 'add_canvas_header' ] );
80
+
81
+ add_action( 'get_footer', [ $this, 'replace_footer' ] );
82
+ add_action( 'elementor/page_templates/canvas/after_content', [ $this, 'add_canvas_footer' ], 9 );
83
+ }
84
+
85
+ /**
86
+ ** Check if a Template has Conditions
87
+ */
88
+ public function is_template_available( $type ) {
89
+ if ( 'content' === $type ) {
90
+ return !is_null(WPR_Conditions_Manager::canvas_page_content_display_conditions()) ? true : false;
91
+ } else {
92
+ $conditions = json_decode( get_option('wpr_'. $type .'_conditions', '[]'), true );
93
+ $template = WPR_Conditions_Manager::header_footer_display_conditions( $conditions );
94
+ return (!empty( $conditions ) && !is_null($template)) ? true : false;
95
+ }
96
+ }
97
+
98
+ /**
99
+ ** Header
100
+ */
101
+ public function replace_header() {
102
+ if ( $this->is_template_available('header') ) {
103
+ if ( ! in_array($this->current_theme, $this->royal_themes) ) {
104
+ require __DIR__ . '/../templates/views/theme-header.php';
105
+ } else {
106
+ require __DIR__ . '/../templates/views/royal/theme-header-royal.php';
107
+ }
108
+
109
+ $templates = [];
110
+ $templates[] = 'header.php';
111
+
112
+ remove_all_actions( 'wp_head' ); // Avoid running wp_head hooks again.
113
+
114
+ ob_start();
115
+ locate_template( $templates, true );
116
+ ob_get_clean();
117
+ }
118
+ }
119
+
120
+ public function add_canvas_header() {
121
+ if ( $this->is_template_available('header') ) {
122
+ $conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
123
+ $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
124
+ $template_id = Utilities::get_template_id($template_slug);
125
+ $show_on_canvas = get_post_meta($template_id, 'wpr_header_show_on_canvas', true);
126
+
127
+ if ( !empty($show_on_canvas) && 'true' === $show_on_canvas && 0 === strpos($template_slug, 'user-header-') ) {
128
+ Utilities::render_elementor_template($template_slug);
129
+ }
130
+ }
131
+ }
132
+
133
+ /**
134
+ ** Footer
135
+ */
136
+ public function replace_footer() {
137
+ if ( $this->is_template_available('footer') ) {
138
+ if ( ! in_array($this->current_theme, $this->royal_themes) ) {
139
+ require __DIR__ . '/../templates/views/theme-footer.php';
140
+ } else {
141
+ require __DIR__ . '/../templates/views/royal/theme-footer-royal.php';
142
+ }
143
+
144
+ $templates = [];
145
+ $templates[] = 'footer.php';
146
+
147
+ remove_all_actions( 'wp_footer' ); // Avoid running wp_footer hooks again.
148
+
149
+ ob_start();
150
+ locate_template( $templates, true );
151
+ ob_get_clean();
152
+ }
153
+ }
154
+
155
+ public function add_canvas_footer() {
156
+ if ( $this->is_template_available('footer') ) {
157
+ $conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
158
+ $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
159
+ $template_id = Utilities::get_template_id($template_slug);
160
+ $show_on_canvas = get_post_meta($template_id, 'wpr_footer_show_on_canvas', true);
161
+
162
+ if ( !empty($show_on_canvas) && 'true' === $show_on_canvas && 0 === strpos($template_slug, 'user-footer-') ) {
163
+ Utilities::render_elementor_template($template_slug);
164
+ }
165
+ }
166
+ }
167
+
168
+ public function convert_to_canvas( $template ) {
169
+ $is_theme_builder_edit = \Elementor\Plugin::$instance->preview->is_preview_mode() && Utilities::is_theme_builder_template() ? true : false;
170
+ $_wp_page_template = get_post_meta(get_the_ID(), '_wp_page_template', true);
171
+
172
+ if ( $this->is_template_available('content') || $is_theme_builder_edit ) {
173
+ if ( (is_page() || is_single()) && 'elementor_canvas' === $_wp_page_template && !$is_theme_builder_edit ) {
174
+ return $template;
175
+ } else {
176
+ return WPR_ADDONS_PATH . 'admin/templates/wpr-canvas.php';
177
+ }
178
+ } else {
179
+ return $template;
180
+ }
181
+ }
182
+
183
+ /**
184
+ ** Theme Builder Content Display
185
+ */
186
+ public function canvas_page_content_display() {
187
+ // Get Template
188
+ $template = WPR_Conditions_Manager::canvas_page_content_display_conditions();
189
+
190
+ // Display Template
191
+ Utilities::render_elementor_template( $template );
192
+ }
193
+
194
+ /**
195
+ * Enqueue styles and scripts.
196
+ */
197
+ public function enqueue_scripts() {
198
+
199
+ if ( class_exists( '\Elementor\Plugin' ) ) {
200
+ $elementor = \Elementor\Plugin::instance();
201
+ $elementor->frontend->enqueue_styles();
202
+ }
203
+
204
+ if ( class_exists( '\ElementorPro\Plugin' ) ) {
205
+ $elementor_pro = \ElementorPro\Plugin::instance();
206
+ $elementor_pro->enqueue_styles();
207
+ }
208
+
209
+ // Load Header Template CSS File
210
+ $heder_conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
211
+ $header_template_id = Utilities::get_template_id(WPR_Conditions_Manager::header_footer_display_conditions($heder_conditions));
212
+
213
+ if ( false !== $header_template_id ) {
214
+ if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
215
+ $header_css_file = new \Elementor\Core\Files\CSS\Post( $header_template_id );
216
+ } elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
217
+ $header_css_file = new \Elementor\Post_CSS_File( $header_template_id );
218
+ }
219
+
220
+ $header_css_file->enqueue();
221
+ }
222
+
223
+ // Load Footer Template CSS File
224
+ $footer_conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
225
+ $footer_template_id = Utilities::get_template_id(WPR_Conditions_Manager::header_footer_display_conditions($footer_conditions));
226
+
227
+ if ( false !== $footer_template_id ) {
228
+ if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
229
+ $footer_css_file = new \Elementor\Core\Files\CSS\Post( $footer_template_id );
230
+ } elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
231
+ $footer_css_file = new \Elementor\Post_CSS_File( $footer_template_id );
232
+ }
233
+
234
+ $footer_css_file->enqueue();
235
+ }
236
+
237
+ // Load Canvas Content Template CSS File
238
+ $canvas_template_id = Utilities::get_template_id(WPR_Conditions_Manager::canvas_page_content_display_conditions());
239
+
240
+ if ( false !== $canvas_template_id ) {
241
+ if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
242
+ $footer_css_file = new \Elementor\Core\Files\CSS\Post( $canvas_template_id );
243
+ } elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
244
+ $footer_css_file = new \Elementor\Post_CSS_File( $canvas_template_id );
245
+ }
246
+
247
+ $footer_css_file->enqueue();
248
+ }
249
+ }
250
+
251
  }
admin/includes/wpr-templates-actions.php CHANGED
@@ -1,314 +1,314 @@
1
- <?php
2
- namespace WprAddons\Admin\Includes;
3
-
4
- use WprAddons\Plugin;
5
- use Elementor\TemplateLibrary\Source_Base;
6
- use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
7
- use WprAddons\Classes\Utilities;
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit; // Exit if accessed directly.
11
- }
12
-
13
-
14
- /**
15
- * WPR_Templates_Actions setup
16
- *
17
- * @since 1.0
18
- */
19
- class WPR_Templates_Actions {
20
-
21
- /**
22
- ** Constructor
23
- */
24
- public function __construct() {
25
-
26
- // Save Conditions
27
- add_action( 'wp_ajax_wpr_save_template_conditions', [ $this, 'wpr_save_template_conditions' ] );
28
-
29
- // Create Template
30
- add_action( 'wp_ajax_wpr_create_template', [ $this, 'wpr_create_template' ] );
31
-
32
- // Import Library Template
33
- add_action( 'wp_ajax_wpr_import_library_template', [ $this, 'wpr_import_library_template' ] );
34
-
35
- // Reset Template
36
- add_action( 'wp_ajax_wpr_delete_template', [ $this, 'wpr_delete_template' ] );
37
-
38
- // Register Elementor AJAX Actions
39
- add_action( 'elementor/ajax/register_actions', [ $this, 'register_elementor_ajax_actions' ] );
40
-
41
- // Enqueue Scripts
42
- add_action( 'admin_enqueue_scripts', [ $this, 'templates_library_scripts' ] );
43
-
44
- }
45
-
46
- /**
47
- ** Save Template Conditions
48
- */
49
- public function wpr_save_template_conditions() {
50
- $template = isset($_POST['template']) ? sanitize_text_field(wp_unslash($_POST['template'])): false;
51
-
52
- // Header
53
- if ( isset($_POST['wpr_header_conditions']) ) {
54
- update_option( 'wpr_header_conditions', $this->sanitize_conditions($_POST['wpr_header_conditions']) ); // phpcs:ignore
55
-
56
- $wpr_header_show_on_canvas = isset($_POST['wpr_header_show_on_canvas']) ? sanitize_text_field(wp_unslash($_POST['wpr_header_show_on_canvas'])): false;
57
- if ( $wpr_header_show_on_canvas && $template ) {
58
- update_post_meta( Utilities::get_template_id($template), 'wpr_header_show_on_canvas', $wpr_header_show_on_canvas );
59
- }
60
- }
61
-
62
- // Footer
63
- if ( isset($_POST['wpr_footer_conditions']) ) {
64
- update_option( 'wpr_footer_conditions', $this->sanitize_conditions($_POST['wpr_footer_conditions']) ); // phpcs:ignore
65
-
66
- $wpr_footer_show_on_canvas = isset($_POST['wpr_footer_show_on_canvas']) ? sanitize_text_field(wp_unslash($_POST['wpr_footer_show_on_canvas'])): false;
67
- if ( $wpr_footer_show_on_canvas && $template ) {
68
- update_post_meta( Utilities::get_template_id($template), 'wpr_footer_show_on_canvas', $wpr_footer_show_on_canvas );
69
- }
70
- }
71
-
72
- // Archive
73
- if ( isset($_POST['wpr_archive_conditions']) ) {
74
- update_option( 'wpr_archive_conditions', $this->sanitize_conditions($_POST['wpr_archive_conditions']) ); // phpcs:ignore
75
- }
76
-
77
- // Single
78
- if ( isset($_POST['wpr_single_conditions']) ) {
79
- update_option( 'wpr_single_conditions', $this->sanitize_conditions($_POST['wpr_single_conditions']) ); // phpcs:ignore
80
- }
81
-
82
- // Product Archive
83
- if ( isset($_POST['wpr_product_archive_conditions']) ) {
84
- update_option( 'wpr_product_archive_conditions', $this->sanitize_conditions($_POST['wpr_product_archive_conditions']) ); // phpcs:ignore
85
- }
86
-
87
- // Product Single
88
- if ( isset($_POST['wpr_product_single_conditions']) ) {
89
- update_option( 'wpr_product_single_conditions', $this->sanitize_conditions($_POST['wpr_product_single_conditions']) ); // phpcs:ignore
90
- }
91
-
92
- // Popup
93
- if ( isset($_POST['wpr_popup_conditions']) ) {
94
- update_option( 'wpr_popup_conditions', $this->sanitize_conditions($_POST['wpr_popup_conditions']) ); // phpcs:ignore
95
- }
96
- }
97
-
98
- public function sanitize_conditions( $data ) {
99
- return wp_unslash( json_encode( array_filter( json_decode(stripcslashes($data), true) ) ) );
100
- }
101
-
102
- /**
103
- ** Create Template
104
- */
105
- public function wpr_create_template() {
106
- $user_template_type = isset($_POST['user_template_type']) ? sanitize_text_field(wp_unslash($_POST['user_template_type'])): false;
107
- $user_template_library = isset($_POST['user_template_library']) ? sanitize_text_field(wp_unslash($_POST['user_template_library'])): false;
108
- $user_template_title = isset($_POST['user_template_title']) ? sanitize_text_field(wp_unslash($_POST['user_template_title'])): false;
109
- $user_template_slug = isset($_POST['user_template_slug']) ? sanitize_text_field(wp_unslash($_POST['user_template_slug'])): false;
110
-
111
- if ( $user_template_title ) {
112
- // Create
113
- $template_id = wp_insert_post(array (
114
- 'post_type' => $user_template_library,
115
- 'post_title' => $user_template_title,
116
- 'post_name' => $user_template_slug,
117
- 'post_content' => '',
118
- 'post_status' => 'publish'
119
- ));
120
-
121
- // Set Types
122
- if ( 'wpr_templates' === $_POST['user_template_library'] ) {
123
-
124
- wp_set_object_terms( $template_id, [$user_template_type, 'user'], 'wpr_template_type' );
125
-
126
- if ( 'popup' === $_POST['user_template_type'] ) {
127
- update_post_meta( $template_id, '_elementor_template_type', 'wpr-popups' );
128
- } else {
129
- if ( 'header' === $_POST['user_template_type'] ) {
130
- update_post_meta( $template_id, '_elementor_template_type', 'wpr-theme-builder-header' );
131
- } elseif ( 'footer' === $_POST['user_template_type'] ) {
132
- update_post_meta( $template_id, '_elementor_template_type', 'wpr-theme-builder-footer' );
133
- } else {
134
- update_post_meta( $template_id, '_elementor_template_type', 'wpr-theme-builder' );
135
- }
136
-
137
- update_post_meta( $template_id, '_wpr_template_type', $user_template_type );
138
- }
139
- } else {
140
- update_post_meta( $template_id, '_elementor_template_type', 'page' );
141
- }
142
-
143
- // Set Canvas Template
144
- update_post_meta( $template_id, '_wp_page_template', 'elementor_canvas' ); //tmp - maybe set for wpr_templates only
145
-
146
- // Send ID to JS
147
- echo esc_html($template_id);
148
- }
149
- }
150
-
151
- /**
152
- ** Import Library Template
153
- */
154
- public function wpr_import_library_template() {
155
- $source = new WPR_Library_Source();
156
- $slug = isset($_POST['slug']) ? sanitize_text_field(wp_unslash($_POST['slug'])): '';
157
-
158
- $data = $source->get_data([
159
- 'template_id' => $slug
160
- ]);
161
-
162
- echo json_encode($data);
163
- }
164
-
165
- /**
166
- ** Reset Template
167
- */
168
- public function wpr_delete_template() {
169
- $template_slug = isset($_POST['template_slug']) ? sanitize_text_field(wp_unslash($_POST['template_slug'])): '';
170
- $template_library = isset($_POST['template_library']) ? sanitize_text_field(wp_unslash($_POST['template_library'])): '';
171
-
172
- $post = get_page_by_path( $template_slug, OBJECT, $template_library );
173
- wp_delete_post( $post->ID, true );
174
- }
175
-
176
- /**
177
- ** Enqueue Scripts and Styles
178
- */
179
- public function templates_library_scripts( $hook ) {
180
-
181
- // Get Plugin Version
182
- $version = Plugin::instance()->get_version();
183
-
184
- // Deny if NOT Plugin Page
185
- if ( 'toplevel_page_wpr-addons' == $hook || strpos($hook, 'wpr-theme-builder') || strpos($hook, 'wpr-popups') ) {
186
-
187
- // Color Picker
188
- wp_enqueue_style( 'wp-color-picker' );
189
- wp_enqueue_script( 'wp-color-picker-alpha', WPR_ADDONS_URL .'assets/js/admin/lib/wp-color-picker-alpha.min.js', ['jquery', 'wp-color-picker'], $version, true );
190
-
191
- // Media Upload
192
- if ( ! did_action( 'wp_enqueue_media' ) ) {
193
- wp_enqueue_media();
194
- }
195
-
196
- // enqueue CSS
197
- wp_enqueue_style( 'wpr-plugin-options-css', WPR_ADDONS_URL .'assets/css/admin/plugin-options.css', [], $version );
198
-
199
- // enqueue JS
200
- wp_enqueue_script( 'wpr-plugin-options-js', WPR_ADDONS_URL .'assets/js/admin/plugin-options.js', ['jquery'], $version );
201
-
202
- }
203
-
204
- if ( strpos($hook, 'wpr-templates-kit') ) {
205
- wp_enqueue_style( 'wpr-templates-kit-css', WPR_ADDONS_URL .'assets/css/admin/templates-kit.css', [], $version );
206
- wp_enqueue_script( 'wpr-templates-kit-js', WPR_ADDONS_URL .'assets/js/admin/templates-kit.js', ['jquery', 'updates'], $version );
207
- }
208
-
209
- if ( strpos($hook, 'wpr-premade-blocks') ) {
210
- wp_enqueue_style( 'wpr-premade-blocks-css', WPR_ADDONS_URL .'assets/css/admin/premade-blocks.css', [], $version );
211
-
212
- wp_enqueue_script( 'wpr-macy-js', WPR_ADDONS_URL .'assets/js/lib/macy/macy.js', ['jquery'], $version );
213
- wp_enqueue_script( 'wpr-premade-blocks-js', WPR_ADDONS_URL .'assets/js/admin/premade-blocks.js', ['jquery'], $version );
214
- }
215
- }
216
-
217
- /**
218
- ** Register Elementor AJAX Actions
219
- */
220
- public function register_elementor_ajax_actions( Ajax $ajax ) {
221
-
222
- // Elementor Search Data
223
- $ajax->register_ajax_action( 'wpr_elementor_search_data', function( $data ) {
224
- // Freemius OptIn
225
- if ( ! (wpr_fs()->is_registered() && wpr_fs()->is_tracking_allowed() || wpr_fs()->is_pending_activation() )) {
226
- return;
227
- }
228
-
229
- if ( strlen($data['search_query']) > 25 ) {
230
- return;
231
- }
232
-
233
- // Send Search Query
234
- wp_remote_post( 'https://reastats.kinsta.cloud/wp-json/elementor-search/data', [
235
- 'body' => [
236
- 'search_query' => $data['search_query']
237
- ]
238
- ] );
239
- } );
240
- }
241
- }
242
-
243
- /**
244
- * WPR_Templates_Actions setup
245
- *
246
- * @since 1.0
247
- */
248
- class WPR_Library_Source extends \Elementor\TemplateLibrary\Source_Base {
249
-
250
- public function get_id() {
251
- return 'wpr-layout-manager';
252
- }
253
-
254
- public function get_title() {
255
- return 'WPR Layout Manager';
256
- }
257
-
258
- public function register_data() {}
259
-
260
- public function save_item( $template_data ) {
261
- return new \WP_Error( 'invalid_request', 'Cannot save template to a WPR layout manager' );
262
- }
263
-
264
- public function update_item( $new_data ) {
265
- return new \WP_Error( 'invalid_request', 'Cannot update template to a WPR layout manager' );
266
- }
267
-
268
- public function delete_template( $template_id ) {
269
- return new \WP_Error( 'invalid_request', 'Cannot delete template from a WPR layout manager' );
270
- }
271
-
272
- public function export_template( $template_id ) {
273
- return new \WP_Error( 'invalid_request', 'Cannot export template from a WPR layout manager' );
274
- }
275
-
276
- public function get_items( $args = [] ) {
277
- return [];
278
- }
279
-
280
- public function get_item( $template_id ) {
281
- $templates = $this->get_items();
282
-
283
- return $templates[ $template_id ];
284
- }
285
-
286
- public function request_template_data( $template_id ) {
287
- if ( empty( $template_id ) ) {
288
- return;
289
- }
290
-
291
- $response = wp_remote_get( 'https://royal-elementor-addons.com/library/premade-styles/'. $template_id .'.json', [
292
- 'timeout' => 60,
293
- 'sslverify' => false
294
- ] );
295
-
296
- return wp_remote_retrieve_body( $response );
297
- }
298
-
299
- public function get_data( array $args ) {//TODO: FIX - This function imports placeholder images in library
300
- $data = $this->request_template_data( $args['template_id'] );
301
-
302
- $data = json_decode( $data, true );
303
-
304
- if ( empty( $data ) || empty( $data['content'] ) ) {
305
- throw new \Exception( 'Template does not have any content' );
306
- }
307
-
308
- $data['content'] = $this->replace_elements_ids( $data['content'] );
309
- $data['content'] = $this->process_export_import_content( $data['content'], 'on_import' );
310
-
311
- return $data;
312
- }
313
-
314
  }
1
+ <?php
2
+ namespace WprAddons\Admin\Includes;
3
+
4
+ use WprAddons\Plugin;
5
+ use Elementor\TemplateLibrary\Source_Base;
6
+ use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
7
+ use WprAddons\Classes\Utilities;
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit; // Exit if accessed directly.
11
+ }
12
+
13
+
14
+ /**
15
+ * WPR_Templates_Actions setup
16
+ *
17
+ * @since 1.0
18
+ */
19
+ class WPR_Templates_Actions {
20
+
21
+ /**
22
+ ** Constructor
23
+ */
24
+ public function __construct() {
25
+
26
+ // Save Conditions
27
+ add_action( 'wp_ajax_wpr_save_template_conditions', [ $this, 'wpr_save_template_conditions' ] );
28
+
29
+ // Create Template
30
+ add_action( 'wp_ajax_wpr_create_template', [ $this, 'wpr_create_template' ] );
31
+
32
+ // Import Library Template
33
+ add_action( 'wp_ajax_wpr_import_library_template', [ $this, 'wpr_import_library_template' ] );
34
+
35
+ // Reset Template
36
+ add_action( 'wp_ajax_wpr_delete_template', [ $this, 'wpr_delete_template' ] );
37
+
38
+ // Register Elementor AJAX Actions
39
+ add_action( 'elementor/ajax/register_actions', [ $this, 'register_elementor_ajax_actions' ] );
40
+
41
+ // Enqueue Scripts
42
+ add_action( 'admin_enqueue_scripts', [ $this, 'templates_library_scripts' ] );
43
+
44
+ }
45
+
46
+ /**
47
+ ** Save Template Conditions
48
+ */
49
+ public function wpr_save_template_conditions() {
50
+ $template = isset($_POST['template']) ? sanitize_text_field(wp_unslash($_POST['template'])): false;
51
+
52
+ // Header
53
+ if ( isset($_POST['wpr_header_conditions']) ) {
54
+ update_option( 'wpr_header_conditions', $this->sanitize_conditions($_POST['wpr_header_conditions']) ); // phpcs:ignore
55
+
56
+ $wpr_header_show_on_canvas = isset($_POST['wpr_header_show_on_canvas']) ? sanitize_text_field(wp_unslash($_POST['wpr_header_show_on_canvas'])): false;
57
+ if ( $wpr_header_show_on_canvas && $template ) {
58
+ update_post_meta( Utilities::get_template_id($template), 'wpr_header_show_on_canvas', $wpr_header_show_on_canvas );
59
+ }
60
+ }
61
+
62
+ // Footer
63
+ if ( isset($_POST['wpr_footer_conditions']) ) {
64
+ update_option( 'wpr_footer_conditions', $this->sanitize_conditions($_POST['wpr_footer_conditions']) ); // phpcs:ignore
65
+
66
+ $wpr_footer_show_on_canvas = isset($_POST['wpr_footer_show_on_canvas']) ? sanitize_text_field(wp_unslash($_POST['wpr_footer_show_on_canvas'])): false;
67
+ if ( $wpr_footer_show_on_canvas && $template ) {
68
+ update_post_meta( Utilities::get_template_id($template), 'wpr_footer_show_on_canvas', $wpr_footer_show_on_canvas );
69
+ }
70
+ }
71
+
72
+ // Archive
73
+ if ( isset($_POST['wpr_archive_conditions']) ) {
74
+ update_option( 'wpr_archive_conditions', $this->sanitize_conditions($_POST['wpr_archive_conditions']) ); // phpcs:ignore
75
+ }
76
+
77
+ // Single
78
+ if ( isset($_POST['wpr_single_conditions']) ) {
79
+ update_option( 'wpr_single_conditions', $this->sanitize_conditions($_POST['wpr_single_conditions']) ); // phpcs:ignore
80
+ }
81
+
82
+ // Product Archive
83
+ if ( isset($_POST['wpr_product_archive_conditions']) ) {
84
+ update_option( 'wpr_product_archive_conditions', $this->sanitize_conditions($_POST['wpr_product_archive_conditions']) ); // phpcs:ignore
85
+ }
86
+
87
+ // Product Single
88
+ if ( isset($_POST['wpr_product_single_conditions']) ) {
89
+ update_option( 'wpr_product_single_conditions', $this->sanitize_conditions($_POST['wpr_product_single_conditions']) ); // phpcs:ignore
90
+ }
91
+
92
+ // Popup
93
+ if ( isset($_POST['wpr_popup_conditions']) ) {
94
+ update_option( 'wpr_popup_conditions', $this->sanitize_conditions($_POST['wpr_popup_conditions']) ); // phpcs:ignore
95
+ }
96
+ }
97
+
98
+ public function sanitize_conditions( $data ) {
99
+ return wp_unslash( json_encode( array_filter( json_decode(stripcslashes($data), true) ) ) );
100
+ }
101
+
102
+ /**
103
+ ** Create Template
104
+ */
105
+ public function wpr_create_template() {
106
+ $user_template_type = isset($_POST['user_template_type']) ? sanitize_text_field(wp_unslash($_POST['user_template_type'])): false;
107
+ $user_template_library = isset($_POST['user_template_library']) ? sanitize_text_field(wp_unslash($_POST['user_template_library'])): false;
108
+ $user_template_title = isset($_POST['user_template_title']) ? sanitize_text_field(wp_unslash($_POST['user_template_title'])): false;
109
+ $user_template_slug = isset($_POST['user_template_slug']) ? sanitize_text_field(wp_unslash($_POST['user_template_slug'])): false;
110
+
111
+ if ( $user_template_title ) {
112
+ // Create
113
+ $template_id = wp_insert_post(array (
114
+ 'post_type' => $user_template_library,
115
+ 'post_title' => $user_template_title,
116
+ 'post_name' => $user_template_slug,
117
+ 'post_content' => '',
118
+ 'post_status' => 'publish'
119
+ ));
120
+
121
+ // Set Types
122
+ if ( 'wpr_templates' === $_POST['user_template_library'] ) {
123
+
124
+ wp_set_object_terms( $template_id, [$user_template_type, 'user'], 'wpr_template_type' );
125
+
126
+ if ( 'popup' === $_POST['user_template_type'] ) {
127
+ update_post_meta( $template_id, '_elementor_template_type', 'wpr-popups' );
128
+ } else {
129
+ if ( 'header' === $_POST['user_template_type'] ) {
130
+ update_post_meta( $template_id, '_elementor_template_type', 'wpr-theme-builder-header' );
131
+ } elseif ( 'footer' === $_POST['user_template_type'] ) {
132
+ update_post_meta( $template_id, '_elementor_template_type', 'wpr-theme-builder-footer' );
133
+ } else {
134
+ update_post_meta( $template_id, '_elementor_template_type', 'wpr-theme-builder' );
135
+ }
136
+
137
+ update_post_meta( $template_id, '_wpr_template_type', $user_template_type );
138
+ }
139
+ } else {
140
+ update_post_meta( $template_id, '_elementor_template_type', 'page' );
141
+ }
142
+
143
+ // Set Canvas Template
144
+ update_post_meta( $template_id, '_wp_page_template', 'elementor_canvas' ); //tmp - maybe set for wpr_templates only
145
+
146
+ // Send ID to JS
147
+ echo esc_html($template_id);
148
+ }
149
+ }
150
+
151
+ /**
152
+ ** Import Library Template
153
+ */
154
+ public function wpr_import_library_template() {
155
+ $source = new WPR_Library_Source();
156
+ $slug = isset($_POST['slug']) ? sanitize_text_field(wp_unslash($_POST['slug'])): '';
157
+
158
+ $data = $source->get_data([
159
+ 'template_id' => $slug
160
+ ]);
161
+
162
+ echo json_encode($data);
163
+ }
164
+
165
+ /**
166
+ ** Reset Template
167
+ */
168
+ public function wpr_delete_template() {
169
+ $template_slug = isset($_POST['template_slug']) ? sanitize_text_field(wp_unslash($_POST['template_slug'])): '';
170
+ $template_library = isset($_POST['template_library']) ? sanitize_text_field(wp_unslash($_POST['template_library'])): '';
171
+
172
+ $post = get_page_by_path( $template_slug, OBJECT, $template_library );
173
+ wp_delete_post( $post->ID, true );
174
+ }
175
+
176
+ /**
177
+ ** Enqueue Scripts and Styles
178
+ */
179
+ public function templates_library_scripts( $hook ) {
180
+
181
+ // Get Plugin Version
182
+ $version = Plugin::instance()->get_version();
183
+
184
+ // Deny if NOT Plugin Page
185
+ if ( 'toplevel_page_wpr-addons' == $hook || strpos($hook, 'wpr-theme-builder') || strpos($hook, 'wpr-popups') ) {
186
+
187
+ // Color Picker
188
+ wp_enqueue_style( 'wp-color-picker' );
189
+ wp_enqueue_script( 'wp-color-picker-alpha', WPR_ADDONS_URL .'assets/js/admin/lib/wp-color-picker-alpha.min.js', ['jquery', 'wp-color-picker'], $version, true );
190
+
191
+ // Media Upload
192
+ if ( ! did_action( 'wp_enqueue_media' ) ) {
193
+ wp_enqueue_media();
194
+ }
195
+
196
+ // enqueue CSS
197
+ wp_enqueue_style( 'wpr-plugin-options-css', WPR_ADDONS_URL .'assets/css/admin/plugin-options.css', [], $version );
198
+
199
+ // enqueue JS
200
+ wp_enqueue_script( 'wpr-plugin-options-js', WPR_ADDONS_URL .'assets/js/admin/plugin-options.js', ['jquery'], $version );
201
+
202
+ }
203
+
204
+ if ( strpos($hook, 'wpr-templates-kit') ) {
205
+ wp_enqueue_style( 'wpr-templates-kit-css', WPR_ADDONS_URL .'assets/css/admin/templates-kit.css', [], $version );
206
+ wp_enqueue_script( 'wpr-templates-kit-js', WPR_ADDONS_URL .'assets/js/admin/templates-kit.js', ['jquery', 'updates'], $version );
207
+ }
208
+
209
+ if ( strpos($hook, 'wpr-premade-blocks') ) {
210
+ wp_enqueue_style( 'wpr-premade-blocks-css', WPR_ADDONS_URL .'assets/css/admin/premade-blocks.css', [], $version );
211
+
212
+ wp_enqueue_script( 'wpr-macy-js', WPR_ADDONS_URL .'assets/js/lib/macy/macy.js', ['jquery'], $version );
213
+ wp_enqueue_script( 'wpr-premade-blocks-js', WPR_ADDONS_URL .'assets/js/admin/premade-blocks.js', ['jquery'], $version );
214
+ }
215
+ }
216
+
217
+ /**
218
+ ** Register Elementor AJAX Actions
219
+ */
220
+ public function register_elementor_ajax_actions( Ajax $ajax ) {
221
+
222
+ // Elementor Search Data
223
+ $ajax->register_ajax_action( 'wpr_elementor_search_data', function( $data ) {
224
+ // Freemius OptIn
225
+ if ( ! (wpr_fs()->is_registered() && wpr_fs()->is_tracking_allowed() || wpr_fs()->is_pending_activation() )) {
226
+ return;
227
+ }
228
+
229
+ if ( strlen($data['search_query']) > 25 ) {
230
+ return;
231
+ }
232
+
233
+ // Send Search Query
234
+ wp_remote_post( 'https://reastats.kinsta.cloud/wp-json/elementor-search/data', [
235
+ 'body' => [
236
+ 'search_query' => $data['search_query']
237
+ ]
238
+ ] );
239
+ } );
240
+ }
241
+ }
242
+
243
+ /**
244
+ * WPR_Templates_Actions setup
245
+ *
246
+ * @since 1.0
247
+ */
248
+ class WPR_Library_Source extends \Elementor\TemplateLibrary\Source_Base {
249
+
250
+ public function get_id() {
251
+ return 'wpr-layout-manager';
252
+ }
253
+
254
+ public function get_title() {
255
+ return 'WPR Layout Manager';
256
+ }
257
+
258
+ public function register_data() {}
259
+
260
+ public function save_item( $template_data ) {
261
+ return new \WP_Error( 'invalid_request', 'Cannot save template to a WPR layout manager' );
262
+ }
263
+
264
+ public function update_item( $new_data ) {
265
+ return new \WP_Error( 'invalid_request', 'Cannot update template to a WPR layout manager' );
266
+ }
267
+
268
+ public function delete_template( $template_id ) {
269
+ return new \WP_Error( 'invalid_request', 'Cannot delete template from a WPR layout manager' );
270
+ }
271
+
272
+ public function export_template( $template_id ) {
273
+ return new \WP_Error( 'invalid_request', 'Cannot export template from a WPR layout manager' );
274
+ }
275
+
276
+ public function get_items( $args = [] ) {
277
+ return [];
278
+ }
279
+
280
+ public function get_item( $template_id ) {
281
+ $templates = $this->get_items();
282
+
283
+ return $templates[ $template_id ];
284
+ }
285
+
286
+ public function request_template_data( $template_id ) {
287
+ if ( empty( $template_id ) ) {
288
+ return;
289
+ }
290
+
291
+ $response = wp_remote_get( 'https://royal-elementor-addons.com/library/premade-styles/'. $template_id .'.json', [
292
+ 'timeout' => 60,
293
+ 'sslverify' => false
294
+ ] );
295
+
296
+ return wp_remote_retrieve_body( $response );
297
+ }
298
+
299
+ public function get_data( array $args ) {//TODO: FIX - This function imports placeholder images in library
300
+ $data = $this->request_template_data( $args['template_id'] );
301
+
302
+ $data = json_decode( $data, true );
303
+
304
+ if ( empty( $data ) || empty( $data['content'] ) ) {
305
+ throw new \Exception( 'Template does not have any content' );
306
+ }
307
+
308
+ $data['content'] = $this->replace_elements_ids( $data['content'] );
309
+ $data['content'] = $this->process_export_import_content( $data['content'], 'on_import' );
310
+
311
+ return $data;
312
+ }
313
+
314
  }
admin/includes/wpr-templates-library.php CHANGED
@@ -1,134 +1,134 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- use WprAddons\Admin\Includes\WPR_Render_Templates;
8
- use WprAddons\Admin\Includes\WPR_Templates_Shortcode;
9
- use WprAddons\Admin\Includes\WPR_Templates_Modal_Popups;
10
- use WprAddons\Admin\Includes\WPR_Templates_Actions;
11
- use WprAddons\Admin\Templates\WPR_Templates_Library_Blocks;
12
- use WprAddons\Admin\Templates\WPR_Templates_Library_Popups;
13
- use WprAddons\Admin\Templates\WPR_Templates_Library_Pages;
14
- use WprAddons\Classes\Utilities;
15
-
16
- /**
17
- * WPR_Templates_Library setup
18
- *
19
- * @since 1.0
20
- */
21
- class WPR_Templates_Library {
22
-
23
- /**
24
- ** Constructor
25
- */
26
- public function __construct() {
27
-
28
- // Register CPTs
29
- add_action( 'init', [ $this, 'register_templates_library_cpt' ] );
30
- add_action( 'template_redirect', [ $this, 'block_template_frontend' ] );
31
- add_action( 'current_screen', [ $this, 'redirect_to_options_page' ] );
32
-
33
- // Templates Shortcode
34
- new WPR_Templates_Shortcode();
35
-
36
- // Init Popups
37
- new WPR_Templates_Modal_Popups();
38
-
39
- // Init Theme Builder
40
- new WPR_Render_Templates();
41
-
42
- // Template Actions
43
- new WPR_Templates_Actions();
44
-
45
- // Add Blocks to Library
46
- new WPR_Templates_Library_Blocks();
47
-
48
- // Add Popups to Library
49
- new WPR_Templates_Library_Popups();
50
-
51
- // Add Pages to Library
52
- // new WPR_Templates_Library_Pages();
53
-
54
- // Enable Elementor for 'wpr_templates'
55
- $this->add_elementor_cpt_support();
56
-
57
- }
58
-
59
- /**
60
- ** Register Templates Library
61
- */
62
- public function redirect_to_options_page() {
63
- if ( get_current_screen()->post_type == 'wpr_templates' && isset($_GET['action']) && $_GET['action'] == 'edit' ) {
64
- $elementor_template_type = isset($_GET['post']) ? sanitize_text_field(wp_unslash($_GET['post'])) : '';
65
-
66
- if ( 'wpr-popups' === Utilities::get_elementor_template_type( $elementor_template_type ) ) {
67
- wp_redirect('admin.php?page=wpr-popups');
68
- } else {
69
- wp_redirect('admin.php?page=wpr-theme-builder');
70
- }
71
- }
72
- }
73
-
74
- public function register_templates_library_cpt() {
75
-
76
- $args = array(
77
- 'label' => esc_html__( 'Royal Templates', 'wpr-addons' ),
78
- 'public' => true,
79
- 'rewrite' => false,
80
- 'show_ui' => true,
81
- 'show_in_menu' => false,
82
- 'show_in_nav_menus' => false,
83
- 'exclude_from_search' => true,
84
- 'capability_type' => 'post',
85
- 'hierarchical' => false,
86
- );
87
-
88
- register_post_type( 'wpr_templates', $args );
89
-
90
- $tax_args = [
91
- 'hierarchical' => true,
92
- 'show_ui' => true,
93
- 'show_in_nav_menus' => false,
94
- 'show_admin_column' => true,
95
- 'query_var' => is_admin(),
96
- 'rewrite' => false,
97
- 'public' => false,
98
- ];
99
-
100
- register_taxonomy( 'wpr_template_type', 'wpr_templates', $tax_args );
101
-
102
- }
103
-
104
- /**
105
- ** Don't display on the frontend for non edit_posts capable users
106
- */
107
- public function block_template_frontend() {
108
- if ( is_singular( 'wpr_templates' ) && ! current_user_can( 'edit_posts' ) ) {
109
- wp_redirect( site_url(), 301 );
110
- die;
111
- }
112
- }
113
-
114
- /**
115
- *** Add elementor support for wpr_templates.
116
- **/
117
- function add_elementor_cpt_support() {
118
- if ( ! is_admin() ) {
119
- return;
120
- }
121
-
122
- $cpt_support = get_option( 'elementor_cpt_support' );
123
-
124
- if ( ! $cpt_support ) {
125
- update_option( 'elementor_cpt_support', ['post', 'page', 'wpr_templates'] );
126
- } elseif ( ! in_array( 'wpr_templates', $cpt_support ) ) {
127
- $cpt_support[] = 'wpr_templates';
128
- update_option( 'elementor_cpt_support', $cpt_support );
129
- }
130
- }
131
-
132
- }
133
-
134
  new WPR_Templates_Library();
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ use WprAddons\Admin\Includes\WPR_Render_Templates;
8
+ use WprAddons\Admin\Includes\WPR_Templates_Shortcode;
9
+ use WprAddons\Admin\Includes\WPR_Templates_Modal_Popups;
10
+ use WprAddons\Admin\Includes\WPR_Templates_Actions;
11
+ use WprAddons\Admin\Templates\WPR_Templates_Library_Blocks;
12
+ use WprAddons\Admin\Templates\WPR_Templates_Library_Popups;
13
+ use WprAddons\Admin\Templates\WPR_Templates_Library_Pages;
14
+ use WprAddons\Classes\Utilities;
15
+
16
+ /**
17
+ * WPR_Templates_Library setup
18
+ *
19
+ * @since 1.0
20
+ */
21
+ class WPR_Templates_Library {
22
+
23
+ /**
24
+ ** Constructor
25
+ */
26
+ public function __construct() {
27
+
28
+ // Register CPTs
29
+ add_action( 'init', [ $this, 'register_templates_library_cpt' ] );
30
+ add_action( 'template_redirect', [ $this, 'block_template_frontend' ] );
31
+ add_action( 'current_screen', [ $this, 'redirect_to_options_page' ] );
32
+
33
+ // Templates Shortcode
34
+ new WPR_Templates_Shortcode();
35
+
36
+ // Init Popups
37
+ new WPR_Templates_Modal_Popups();
38
+
39
+ // Init Theme Builder
40
+ new WPR_Render_Templates();
41
+
42
+ // Template Actions
43
+ new WPR_Templates_Actions();
44
+
45
+ // Add Blocks to Library
46
+ new WPR_Templates_Library_Blocks();
47
+
48
+ // Add Popups to Library
49
+ new WPR_Templates_Library_Popups();
50
+
51
+ // Add Pages to Library
52
+ // new WPR_Templates_Library_Pages();
53
+
54
+ // Enable Elementor for 'wpr_templates'
55
+ $this->add_elementor_cpt_support();
56
+
57
+ }
58
+
59
+ /**
60
+ ** Register Templates Library
61
+ */
62
+ public function redirect_to_options_page() {
63
+ if ( get_current_screen()->post_type == 'wpr_templates' && isset($_GET['action']) && $_GET['action'] == 'edit' ) {
64
+ $elementor_template_type = isset($_GET['post']) ? sanitize_text_field(wp_unslash($_GET['post'])) : '';
65
+
66
+ if ( 'wpr-popups' === Utilities::get_elementor_template_type( $elementor_template_type ) ) {
67
+ wp_redirect('admin.php?page=wpr-popups');
68
+ } else {
69
+ wp_redirect('admin.php?page=wpr-theme-builder');
70
+ }
71
+ }
72
+ }
73
+
74
+ public function register_templates_library_cpt() {
75
+
76
+ $args = array(
77
+ 'label' => esc_html__( 'Royal Templates', 'wpr-addons' ),
78
+ 'public' => true,
79
+ 'rewrite' => false,
80
+ 'show_ui' => true,
81
+ 'show_in_menu' => false,
82
+ 'show_in_nav_menus' => false,
83
+ 'exclude_from_search' => true,
84
+ 'capability_type' => 'post',
85
+ 'hierarchical' => false,
86
+ );
87
+
88
+ register_post_type( 'wpr_templates', $args );
89
+
90
+ $tax_args = [
91
+ 'hierarchical' => true,
92
+ 'show_ui' => true,
93
+ 'show_in_nav_menus' => false,
94
+ 'show_admin_column' => true,
95
+ 'query_var' => is_admin(),
96
+ 'rewrite' => false,
97
+ 'public' => false,
98
+ ];
99
+
100
+ register_taxonomy( 'wpr_template_type', 'wpr_templates', $tax_args );
101
+
102
+ }
103
+
104
+ /**
105
+ ** Don't display on the frontend for non edit_posts capable users
106
+ */
107
+ public function block_template_frontend() {
108
+ if ( is_singular( 'wpr_templates' ) && ! current_user_can( 'edit_posts' ) ) {
109
+ wp_redirect( site_url(), 301 );
110
+ die;
111
+ }
112
+ }
113
+
114
+ /**
115
+ *** Add elementor support for wpr_templates.
116
+ **/
117
+ function add_elementor_cpt_support() {
118
+ if ( ! is_admin() ) {
119
+ return;
120
+ }
121
+
122
+ $cpt_support = get_option( 'elementor_cpt_support' );
123
+
124
+ if ( ! $cpt_support ) {
125
+ update_option( 'elementor_cpt_support', ['post', 'page', 'wpr_templates'] );
126
+ } elseif ( ! in_array( 'wpr_templates', $cpt_support ) ) {
127
+ $cpt_support[] = 'wpr_templates';
128
+ update_option( 'elementor_cpt_support', $cpt_support );
129
+ }
130
+ }
131
+
132
+ }
133
+
134
  new WPR_Templates_Library();
admin/includes/wpr-templates-loop.php CHANGED
@@ -1,365 +1,365 @@
1
- <?php
2
-
3
- namespace WprAddons\Admin\Includes;
4
-
5
- if ( ! defined( 'ABSPATH' ) ) {
6
- exit; // Exit if accessed directly.
7
- }
8
-
9
- use WprAddons\Classes\Utilities;
10
-
11
- /**
12
- ** WPR_Templates_Loop setup
13
- */
14
- class WPR_Templates_Loop {
15
-
16
- /**
17
- ** Loop Through Custom Templates
18
- */
19
- public static function render_theme_builder_templates( $template ) {
20
- // WP_Query arguments
21
- $args = array (
22
- 'post_type' => array( 'wpr_templates' ),
23
- 'post_status' => array( 'publish' ),
24
- 'posts_per_page' => -1,
25
- 'tax_query' => array(
26
- array(
27
- 'taxonomy' => 'wpr_template_type',
28
- 'field' => 'slug',
29
- 'terms' => [ $template, 'user' ],
30
- 'operator' => 'AND'
31
- )
32
- )
33
- );
34
-
35
- // The Query
36
- $user_templates = get_posts( $args );
37
-
38
- // The Loop
39
- echo '<ul class="wpr-'. esc_attr($template) .'-templates-list wpr-my-templates-list" data-pro="'. esc_attr(wpr_fs()->can_use_premium_code()) .'">';
40
-
41
- if ( ! empty( $user_templates ) ) {
42
- foreach ( $user_templates as $user_template ) {
43
- $slug = $user_template->post_name;
44
- $edit_url = str_replace( 'edit', 'elementor', get_edit_post_link( $user_template->ID ) );
45
- $show_on_canvas = get_post_meta(Utilities::get_template_id($slug), 'wpr_'. $template .'_show_on_canvas', true);
46
-
47
- echo '<li>';
48
- echo '<h3 class="wpr-title">'. esc_html($user_template->post_title) .'</h3>';
49
-
50
- echo '<div class="wpr-action-buttons">';
51
- // Activate
52
- echo '<span class="wpr-template-conditions button button-primary" data-slug="'. esc_attr($slug) .'" data-show-on-canvas="'. esc_attr($show_on_canvas) .'">'. esc_html__( 'Manage Conditions', 'wpr-addons' ) .'</span>';
53
- // Edit
54
- echo '<a href="'. esc_url($edit_url) .'" class="wpr-edit-template button button-primary">'. esc_html__( 'Edit Template', 'wpr-addons' ) .'</a>';
55
- // Delete
56
- echo '<span class="wpr-delete-template button button-primary" data-slug="'. esc_attr($slug) .'" data-warning="'. esc_html__( 'Are you sure you want to delete this template?', 'wpr-addons' ) .'"><span class="dashicons dashicons-no-alt"></span></span>';
57
- echo '</div>';
58
- echo '</li>';
59
- }
60
- } else {
61
- echo '<li class="wpr-no-templates">You don\'t have any templates yet!</li>';
62
- }
63
-
64
- echo '</ul>';
65
-
66
- // Restore original Post Data
67
- wp_reset_postdata();
68
-
69
- }
70
-
71
- /**
72
- ** Loop Through My Templates
73
- */
74
- public static function render_elementor_saved_templates() {
75
-
76
- // WP_Query arguments
77
- $args = array (
78
- 'post_type' => array( 'elementor_library' ),
79
- 'post_status' => array( 'publish' ),
80
- 'meta_key' => '_elementor_template_type',
81
- 'meta_value' => ['page', 'section'],
82
- 'numberposts' => -1
83
- );
84
-
85
- // The Query
86
- $user_templates = get_posts( $args );
87
-
88
- // My Templates List
89
- echo '<ul class="wpr-my-templates-list striped">';
90
-
91
- // The Loop
92
- if ( ! empty( $user_templates ) ) {
93
- foreach ( $user_templates as $user_template ) {
94
- // Edit URL
95
- $edit_url = str_replace( 'edit', 'elementor', get_edit_post_link( $user_template->ID ) );
96
-
97
- // List
98
- echo '<li>';
99
- echo '<h3 class="wpr-title">'. esc_html($user_template->post_title) .'</h3>';
100
-
101
- echo '<span class="wpr-action-buttons">';
102
- echo '<a href="'. esc_url($edit_url) .'" class="wpr-edit-template button button-primary">'. esc_html__( 'Edit', 'wpr-addons' ) .'</a>';
103
- echo '<span class="wpr-delete-template button button-primary" data-slug="'. esc_attr($user_template->post_name) .'" data-warning="'. esc_html__( 'Are you sure you want to delete this template?', 'wpr-addons' ) .'"><span class="dashicons dashicons-no-alt"></span></span>';
104
- echo '</span>';
105
- echo '</li>';
106
- }
107
- } else {
108
- echo '<li class="wpr-no-templates">You don\'t have any templates yet!</li>';
109
- }
110
-
111
- echo '</ul>';
112
-
113
- // Restore original Post Data
114
- wp_reset_postdata();
115
- }
116
-
117
- /**
118
- ** Render Conditions Popup
119
- */
120
- public static function render_conditions_popup( $canvas = false ) {
121
-
122
- // Active Tab
123
- $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_header';
124
-
125
- ?>
126
-
127
- <div class="wpr-condition-popup-wrap wpr-admin-popup-wrap">
128
- <div class="wpr-condition-popup wpr-admin-popup">
129
- <header>
130
- <h2><?php esc_html_e( 'Where Do You Want to Display Your Template?', 'wpr-addons' ); ?></h2>
131
- <p>
132
- <?php esc_html_e( 'Set the conditions that determine where your Template is used throughout your site.', 'wpr-addons' ); ?><br>
133
- <?php esc_html_e( 'For example, choose \'Entire Site\' to display the template across your site.', 'wpr-addons' ); ?>
134
- </p>
135
- </header>
136
- <span class="close-popup dashicons dashicons-no-alt"></span>
137
-
138
- <!-- Conditions -->
139
- <div class="wpr-conditions-wrap">
140
- <div class="wpr-conditions-sample">
141
- <?php if ( wpr_fs()->can_use_premium_code() ) : ?>
142
- <!-- Global -->
143
- <select name="global_condition_select" class="global-condition-select">
144
- <option value="global"><?php esc_html_e( 'Entire Site', 'wpr-addons' ); ?></option>
145
- <option value="archive"><?php esc_html_e( 'Archives', 'wpr-addons' ); ?></option>
146
- <option value="single"><?php esc_html_e( 'Singular', 'wpr-addons' ); ?></option>
147
- </select>
148
-
149
- <!-- Archive -->
150
- <select name="archives_condition_select" class="archives-condition-select">
151
- <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
152
- <option value="all_archives"><?php esc_html_e( 'All Archives', 'wpr-addons' ); ?></option>
153
- <option value="posts"><?php esc_html_e( 'Posts Archive', 'wpr-addons' ); ?></option>
154
- <option value="author"><?php esc_html_e( 'Author Archive', 'wpr-addons' ); ?></option>
155
- <option value="date"><?php esc_html_e( 'Date Archive', 'wpr-addons' ); ?></option>
156
- <option value="search"><?php esc_html_e( 'Search Results', 'wpr-addons' ); ?></option>
157
- <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories', 'wpr-addons' ); ?></option>
158
- <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags', 'wpr-addons' ); ?></option>
159
- <?php // Custom Taxonomies
160
- $custom_taxonomies = Utilities::get_custom_types_of( 'tax', true );
161
- foreach ($custom_taxonomies as $key => $value) {
162
- if ( class_exists( 'WooCommerce' ) && 'product_cat' === $key ) {
163
- echo '<option value="products">'. esc_html__( 'Products Archive', 'wpr-addons' ) .'</option>';
164
- }
165
-
166
- // List Taxonomies
167
- echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .'</option>';
168
- }
169
- ?>
170
- <?php else: ?>
171
- <?php if ( 'wpr_tab_archive' === $active_tab ) : ?>
172
- <option value="all_archives"><?php esc_html_e( 'All Archives', 'wpr-addons' ); ?></option>
173
- <option value="posts"><?php esc_html_e( 'Posts Archive', 'wpr-addons' ); ?></option>
174
- <option value="author"><?php esc_html_e( 'Author Archive', 'wpr-addons' ); ?></option>
175
- <option value="date"><?php esc_html_e( 'Date Archive', 'wpr-addons' ); ?></option>
176
- <option value="search"><?php esc_html_e( 'Search Results', 'wpr-addons' ); ?></option>
177
- <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories', 'wpr-addons' ); ?></option>
178
- <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags', 'wpr-addons' ); ?></option>
179
- <?php elseif ( 'wpr_tab_product_archive' === $active_tab ): ?>
180
- <option value="products"><?php esc_html_e( 'Products Archive', 'wpr-addons' ); ?></option>
181
- <option value="product_cat" class="custom-type-ids"><?php esc_html_e( 'Products Categories', 'wpr-addons' ); ?></option>
182
- <option value="product_tag" class="custom-type-ids"><?php esc_html_e( 'Products Tags', 'wpr-addons' ); ?></option>
183
- <?php endif; ?>
184
- <?php endif; ?>
185
- </select>
186
-
187
- <!-- Single -->
188
- <select name="singles_condition_select" class="singles-condition-select">
189
- <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
190
- <option value="front_page"><?php esc_html_e( 'Front Page', 'wpr-addons' ); ?></option>
191
- <option value="page_404"><?php esc_html_e( '404 Page', 'wpr-addons' ); ?></option>
192
- <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages', 'wpr-addons' ); ?></option>
193
- <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts', 'wpr-addons' ); ?></option>
194
- <?php // Custom Post Types
195
- $custom_taxonomies = Utilities::get_custom_types_of( 'post', true );
196
- foreach ($custom_taxonomies as $key => $value) {
197
- echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .'</option>';
198
- }
199
- ?>
200
- <?php else: ?>
201
- <?php if ( 'wpr_tab_single' === $active_tab ) : ?>
202
- <option value="front_page"><?php esc_html_e( 'Front Page', 'wpr-addons' ); ?></option>
203
- <option value="page_404"><?php esc_html_e( '404 Page', 'wpr-addons' ); ?></option>
204
- <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages', 'wpr-addons' ); ?></option>
205
- <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts', 'wpr-addons' ); ?></option>
206
- <?php elseif ( 'wpr_tab_product_single' === $active_tab ): ?>
207
- <option value="product" class="custom-type-ids"><?php esc_html_e( 'Products', 'wpr-addons' ); ?></option>
208
- <?php endif; ?>
209
- <?php endif; ?>
210
- </select>
211
-
212
- <input type="text" placeholder="<?php esc_html_e( 'Enter comma separated IDs', 'wpr-addons' ); ?>" name="condition_input_ids" class="wpr-condition-input-ids">
213
- <span class="wpr-delete-template-conditions dashicons dashicons-no-alt"></span>
214
-
215
- <?php else: // Free user conditions ?>
216
-
217
- <!-- Global -->
218
- <select name="global_condition_select" class="global-condition-select">
219
- <option value="global"><?php esc_html_e( 'Entire Site', 'wpr-addons' ); ?></option>
220
- <option value="archive"><?php esc_html_e( 'Archives (Pro)', 'wpr-addons' ); ?></option>
221
- <option value="single"><?php esc_html_e( 'Singular (Pro)', 'wpr-addons' ); ?></option>
222
- </select>
223
-
224
- <!-- Archive -->
225
- <select name="archives_condition_select" class="archives-condition-select">
226
- <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
227
- <option value="all_archives"><?php esc_html_e( 'All Archives (Pro)', 'wpr-addons' ); ?></option>
228
- <option value="posts"><?php esc_html_e( 'Posts Archive (Pro)', 'wpr-addons' ); ?></option>
229
- <option value="author"><?php esc_html_e( 'Author Archive (Pro)', 'wpr-addons' ); ?></option>
230
- <option value="date"><?php esc_html_e( 'Date Archive (Pro)', 'wpr-addons' ); ?></option>
231
- <option value="search"><?php esc_html_e( 'Search Results (Pro)', 'wpr-addons' ); ?></option>
232
- <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories (Pro)', 'wpr-addons' ); ?></option>
233
- <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags (Pro)', 'wpr-addons' ); ?></option>
234
- <?php // Custom Taxonomies
235
- $custom_taxonomies = Utilities::get_custom_types_of( 'tax', true );
236
- foreach ($custom_taxonomies as $key => $value) {
237
- if ( class_exists( 'WooCommerce' ) && 'product_cat' === $key ) {
238
- echo '<option value="products">'. esc_html__( 'Products Archive (Pro)', 'wpr-addons' ) .'</option>';
239
- }
240
-
241
- // List Taxonomies
242
- echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .' (Pro)</option>';
243
- }
244
- ?>
245
- <?php else: ?>
246
- <?php if ( 'wpr_tab_archive' === $active_tab ) : ?>
247
- <option value="all_archives"><?php esc_html_e( 'All Archives', 'wpr-addons' ); ?></option>
248
- <option value="posts"><?php esc_html_e( 'Posts Archive', 'wpr-addons' ); ?></option>
249
- <option value="author"><?php esc_html_e( 'Author Archive', 'wpr-addons' ); ?></option>
250
- <option value="date"><?php esc_html_e( 'Date Archive', 'wpr-addons' ); ?></option>
251
- <option value="search"><?php esc_html_e( 'Search Results', 'wpr-addons' ); ?></option>
252
- <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories', 'wpr-addons' ); ?></option>
253
- <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags', 'wpr-addons' ); ?></option>
254
- <?php elseif ( 'wpr_tab_product_archive' === $active_tab ): ?>
255
- <option value="products"><?php esc_html_e( 'Products Archive', 'wpr-addons' ); ?></option>
256
- <option value="product_cat" class="custom-type-ids"><?php esc_html_e( 'Products Categories (Pro)', 'wpr-addons' ); ?></option>
257
- <option value="product_tag" class="custom-type-ids"><?php esc_html_e( 'Products Tags (Pro)', 'wpr-addons' ); ?></option>
258
- <?php endif; ?>
259
- <?php endif; ?>
260
- </select>
261
-
262
- <!-- Single -->
263
- <select name="singles_condition_select" class="singles-condition-select">
264
- <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
265
- <option value="front_page"><?php esc_html_e( 'Front Page (Pro)', 'wpr-addons' ); ?></option>
266
- <option value="page_404"><?php esc_html_e( '404 Page (Pro)', 'wpr-addons' ); ?></option>
267
- <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages (Pro)', 'wpr-addons' ); ?></option>
268
- <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts (Pro)', 'wpr-addons' ); ?></option>
269
- <?php // Custom Post Types
270
- $custom_taxonomies = Utilities::get_custom_types_of( 'post', true );
271
- foreach ($custom_taxonomies as $key => $value) {
272
- echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .' (Pro)</option>';
273
- }
274
- ?>
275
- <?php else: ?>
276
- <?php if ( 'wpr_tab_single' === $active_tab ) : ?>
277
- <option value="front_page"><?php esc_html_e( 'Front Page', 'wpr-addons' ); ?></option>
278
- <option value="page_404"><?php esc_html_e( '404 Page', 'wpr-addons' ); ?></option>
279
- <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages', 'wpr-addons' ); ?></option>
280
- <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts', 'wpr-addons' ); ?></option>
281
- <?php elseif ( 'wpr_tab_product_single' === $active_tab ): ?>
282
- <option value="product" class="custom-type-ids"><?php esc_html_e( 'Products', 'wpr-addons' ); ?></option>
283
- <?php endif; ?>
284
- <?php endif; ?>
285
- </select>
286
-
287
- <input type="text" placeholder="<?php esc_html_e( 'Enter comma separated IDs (Pro)', 'wpr-addons' ); ?>" name="condition_input_ids" class="wpr-condition-input-ids">
288
- <span class="wpr-delete-template-conditions dashicons dashicons-no-alt"></span>
289
-
290
- <?php endif; ?>
291
- </div>
292
- </div>
293
-
294
- <?php if ( $canvas ) : ?>
295
- <div class="wpr-canvas-condition wpr-setting-custom-ckbox">
296
- <span><?php esc_html_e( 'Show this template on Elementor Canvas pages', 'wpr-addons' ); ?></span>
297
- <input type="checkbox" name="wpr-show-on-canvas" id="wpr-show-on-canvas">
298
- <label for="wpr-show-on-canvas"></label>
299
- </div>
300
- <?php endif; ?>
301
-
302
- <?php
303
-
304
-
305
- // Pro Notice
306
- if ( ! wpr_fs()->can_use_premium_code() ) {
307
- echo '<span style="color: #7f8b96;"><br>Conditions are fully suppoted in the <strong><a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-conditions-upgrade-pro#purchasepro" target="_blank">Pro version</a></strong></span>';
308
- // echo '<span style="color: #7f8b96;"><br>Conditions are fully suppoted in the <strong><a href="'. admin_url('admin.php?page=wpr-addons-pricing') .'" target="_blank">Pro version</a></strong></span>';
309
- }
310
-
311
- ?>
312
-
313
- <!-- Action Buttons -->
314
- <span class="wpr-add-conditions"><?php esc_html_e( 'Add Conditions', 'wpr-addons' ); ?></span>
315
- <span class="wpr-save-conditions"><?php esc_html_e( 'Save Conditions', 'wpr-addons' ); ?></span>
316
-
317
- </div>
318
- </div>
319
-
320
- <?php
321
- }
322
-
323
-
324
- /**
325
- ** Render Create Template Popup
326
- */
327
- public static function render_create_template_popup() {
328
- ?>
329
-
330
- <!-- Custom Template Popup -->
331
- <div class="wpr-user-template-popup-wrap wpr-admin-popup-wrap">
332
- <div class="wpr-user-template-popup wpr-admin-popup">
333
- <header>
334
- <h2><?php esc_html_e( 'Templates Help You Work Efficiently!', 'wpr-addons' ); ?></h2>
335
- <p><?php esc_html_e( 'Use templates to create the different pieces of your site, and reuse them with one click whenever needed.', 'wpr-addons' ); ?></p>
336
- </header>
337
-
338
- <input type="text" name="user_template_title" class="wpr-user-template-title" placeholder="<?php esc_html_e( 'Enter Template Title', 'wpr-addons' ); ?>">
339
- <input type="hidden" name="user_template_type" class="user-template-type">
340
- <span class="wpr-create-template"><?php esc_html_e( 'Create Template', 'wpr-addons' ); ?></span>
341
- <span class="close-popup dashicons dashicons-no-alt"></span>
342
- </div>
343
- </div>
344
-
345
- <?php
346
- }
347
-
348
- /**
349
- ** Check if Library Template Exists
350
- */
351
- public static function template_exists( $slug ) {
352
- $result = false;
353
- $wpr_templates = get_posts( ['post_type' => 'wpr_templates', 'posts_per_page' => '-1'] );
354
-
355
- foreach ( $wpr_templates as $post ) {
356
-
357
- if ( $slug === $post->post_name ) {
358
- $result = true;
359
- }
360
- }
361
-
362
- return $result;
363
- }
364
-
365
  }
1
+ <?php
2
+
3
+ namespace WprAddons\Admin\Includes;
4
+
5
+ if ( ! defined( 'ABSPATH' ) ) {
6
+ exit; // Exit if accessed directly.
7
+ }
8
+
9
+ use WprAddons\Classes\Utilities;
10
+
11
+ /**
12
+ ** WPR_Templates_Loop setup
13
+ */
14
+ class WPR_Templates_Loop {
15
+
16
+ /**
17
+ ** Loop Through Custom Templates
18
+ */
19
+ public static function render_theme_builder_templates( $template ) {
20
+ // WP_Query arguments
21
+ $args = array (
22
+ 'post_type' => array( 'wpr_templates' ),
23
+ 'post_status' => array( 'publish' ),
24
+ 'posts_per_page' => -1,
25
+ 'tax_query' => array(
26
+ array(
27
+ 'taxonomy' => 'wpr_template_type',
28
+ 'field' => 'slug',
29
+ 'terms' => [ $template, 'user' ],
30
+ 'operator' => 'AND'
31
+ )
32
+ )
33
+ );
34
+
35
+ // The Query
36
+ $user_templates = get_posts( $args );
37
+
38
+ // The Loop
39
+ echo '<ul class="wpr-'. esc_attr($template) .'-templates-list wpr-my-templates-list" data-pro="'. esc_attr(wpr_fs()->can_use_premium_code()) .'">';
40
+
41
+ if ( ! empty( $user_templates ) ) {
42
+ foreach ( $user_templates as $user_template ) {
43
+ $slug = $user_template->post_name;
44
+ $edit_url = str_replace( 'edit', 'elementor', get_edit_post_link( $user_template->ID ) );
45
+ $show_on_canvas = get_post_meta(Utilities::get_template_id($slug), 'wpr_'. $template .'_show_on_canvas', true);
46
+
47
+ echo '<li>';
48
+ echo '<h3 class="wpr-title">'. esc_html($user_template->post_title) .'</h3>';
49
+
50
+ echo '<div class="wpr-action-buttons">';
51
+ // Activate
52
+ echo '<span class="wpr-template-conditions button button-primary" data-slug="'. esc_attr($slug) .'" data-show-on-canvas="'. esc_attr($show_on_canvas) .'">'. esc_html__( 'Manage Conditions', 'wpr-addons' ) .'</span>';
53
+ // Edit
54
+ echo '<a href="'. esc_url($edit_url) .'" class="wpr-edit-template button button-primary">'. esc_html__( 'Edit Template', 'wpr-addons' ) .'</a>';
55
+ // Delete
56
+ echo '<span class="wpr-delete-template button button-primary" data-slug="'. esc_attr($slug) .'" data-warning="'. esc_html__( 'Are you sure you want to delete this template?', 'wpr-addons' ) .'"><span class="dashicons dashicons-no-alt"></span></span>';
57
+ echo '</div>';
58
+ echo '</li>';
59
+ }
60
+ } else {
61
+ echo '<li class="wpr-no-templates">You don\'t have any templates yet!</li>';
62
+ }
63
+
64
+ echo '</ul>';
65
+
66
+ // Restore original Post Data
67
+ wp_reset_postdata();
68
+
69
+ }
70
+
71
+ /**
72
+ ** Loop Through My Templates
73
+ */
74
+ public static function render_elementor_saved_templates() {
75
+
76
+ // WP_Query arguments
77
+ $args = array (
78
+ 'post_type' => array( 'elementor_library' ),
79
+ 'post_status' => array( 'publish' ),
80
+ 'meta_key' => '_elementor_template_type',
81
+ 'meta_value' => ['page', 'section'],
82
+ 'numberposts' => -1
83
+ );
84
+
85
+ // The Query
86
+ $user_templates = get_posts( $args );
87
+
88
+ // My Templates List
89
+ echo '<ul class="wpr-my-templates-list striped">';
90
+
91
+ // The Loop
92
+ if ( ! empty( $user_templates ) ) {
93
+ foreach ( $user_templates as $user_template ) {
94
+ // Edit URL
95
+ $edit_url = str_replace( 'edit', 'elementor', get_edit_post_link( $user_template->ID ) );
96
+
97
+ // List
98
+ echo '<li>';
99
+ echo '<h3 class="wpr-title">'. esc_html($user_template->post_title) .'</h3>';
100
+
101
+ echo '<span class="wpr-action-buttons">';
102
+ echo '<a href="'. esc_url($edit_url) .'" class="wpr-edit-template button button-primary">'. esc_html__( 'Edit', 'wpr-addons' ) .'</a>';
103
+ echo '<span class="wpr-delete-template button button-primary" data-slug="'. esc_attr($user_template->post_name) .'" data-warning="'. esc_html__( 'Are you sure you want to delete this template?', 'wpr-addons' ) .'"><span class="dashicons dashicons-no-alt"></span></span>';
104
+ echo '</span>';
105
+ echo '</li>';
106
+ }
107
+ } else {
108
+ echo '<li class="wpr-no-templates">You don\'t have any templates yet!</li>';
109
+ }
110
+
111
+ echo '</ul>';
112
+
113
+ // Restore original Post Data
114
+ wp_reset_postdata();
115
+ }
116
+
117
+ /**
118
+ ** Render Conditions Popup
119
+ */
120
+ public static function render_conditions_popup( $canvas = false ) {
121
+
122
+ // Active Tab
123
+ $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_header';
124
+
125
+ ?>
126
+
127
+ <div class="wpr-condition-popup-wrap wpr-admin-popup-wrap">
128
+ <div class="wpr-condition-popup wpr-admin-popup">
129
+ <header>
130
+ <h2><?php esc_html_e( 'Where Do You Want to Display Your Template?', 'wpr-addons' ); ?></h2>
131
+ <p>
132
+ <?php esc_html_e( 'Set the conditions that determine where your Template is used throughout your site.', 'wpr-addons' ); ?><br>
133
+ <?php esc_html_e( 'For example, choose \'Entire Site\' to display the template across your site.', 'wpr-addons' ); ?>
134
+ </p>
135
+ </header>
136
+ <span class="close-popup dashicons dashicons-no-alt"></span>
137
+
138
+ <!-- Conditions -->
139
+ <div class="wpr-conditions-wrap">
140
+ <div class="wpr-conditions-sample">
141
+ <?php if ( wpr_fs()->can_use_premium_code() ) : ?>
142
+ <!-- Global -->
143
+ <select name="global_condition_select" class="global-condition-select">
144
+ <option value="global"><?php esc_html_e( 'Entire Site', 'wpr-addons' ); ?></option>
145
+ <option value="archive"><?php esc_html_e( 'Archives', 'wpr-addons' ); ?></option>
146
+ <option value="single"><?php esc_html_e( 'Singular', 'wpr-addons' ); ?></option>
147
+ </select>
148
+
149
+ <!-- Archive -->
150
+ <select name="archives_condition_select" class="archives-condition-select">
151
+ <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
152
+ <option value="all_archives"><?php esc_html_e( 'All Archives', 'wpr-addons' ); ?></option>
153
+ <option value="posts"><?php esc_html_e( 'Posts Archive', 'wpr-addons' ); ?></option>
154
+ <option value="author"><?php esc_html_e( 'Author Archive', 'wpr-addons' ); ?></option>
155
+ <option value="date"><?php esc_html_e( 'Date Archive', 'wpr-addons' ); ?></option>
156
+ <option value="search"><?php esc_html_e( 'Search Results', 'wpr-addons' ); ?></option>
157
+ <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories', 'wpr-addons' ); ?></option>
158
+ <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags', 'wpr-addons' ); ?></option>
159
+ <?php // Custom Taxonomies
160
+ $custom_taxonomies = Utilities::get_custom_types_of( 'tax', true );
161
+ foreach ($custom_taxonomies as $key => $value) {
162
+ if ( class_exists( 'WooCommerce' ) && 'product_cat' === $key ) {
163
+ echo '<option value="products">'. esc_html__( 'Products Archive', 'wpr-addons' ) .'</option>';
164
+ }
165
+
166
+ // List Taxonomies
167
+ echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .'</option>';
168
+ }
169
+ ?>
170
+ <?php else: ?>
171
+ <?php if ( 'wpr_tab_archive' === $active_tab ) : ?>
172
+ <option value="all_archives"><?php esc_html_e( 'All Archives', 'wpr-addons' ); ?></option>
173
+ <option value="posts"><?php esc_html_e( 'Posts Archive', 'wpr-addons' ); ?></option>
174
+ <option value="author"><?php esc_html_e( 'Author Archive', 'wpr-addons' ); ?></option>
175
+ <option value="date"><?php esc_html_e( 'Date Archive', 'wpr-addons' ); ?></option>
176
+ <option value="search"><?php esc_html_e( 'Search Results', 'wpr-addons' ); ?></option>
177
+ <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories', 'wpr-addons' ); ?></option>
178
+ <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags', 'wpr-addons' ); ?></option>
179
+ <?php elseif ( 'wpr_tab_product_archive' === $active_tab ): ?>
180
+ <option value="products"><?php esc_html_e( 'Products Archive', 'wpr-addons' ); ?></option>
181
+ <option value="product_cat" class="custom-type-ids"><?php esc_html_e( 'Products Categories', 'wpr-addons' ); ?></option>
182
+ <option value="product_tag" class="custom-type-ids"><?php esc_html_e( 'Products Tags', 'wpr-addons' ); ?></option>
183
+ <?php endif; ?>
184
+ <?php endif; ?>
185
+ </select>
186
+
187
+ <!-- Single -->
188
+ <select name="singles_condition_select" class="singles-condition-select">
189
+ <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
190
+ <option value="front_page"><?php esc_html_e( 'Front Page', 'wpr-addons' ); ?></option>
191
+ <option value="page_404"><?php esc_html_e( '404 Page', 'wpr-addons' ); ?></option>
192
+ <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages', 'wpr-addons' ); ?></option>
193
+ <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts', 'wpr-addons' ); ?></option>
194
+ <?php // Custom Post Types
195
+ $custom_taxonomies = Utilities::get_custom_types_of( 'post', true );
196
+ foreach ($custom_taxonomies as $key => $value) {
197
+ echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .'</option>';
198
+ }
199
+ ?>
200
+ <?php else: ?>
201
+ <?php if ( 'wpr_tab_single' === $active_tab ) : ?>
202
+ <option value="front_page"><?php esc_html_e( 'Front Page', 'wpr-addons' ); ?></option>
203
+ <option value="page_404"><?php esc_html_e( '404 Page', 'wpr-addons' ); ?></option>
204
+ <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages', 'wpr-addons' ); ?></option>
205
+ <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts', 'wpr-addons' ); ?></option>
206
+ <?php elseif ( 'wpr_tab_product_single' === $active_tab ): ?>
207
+ <option value="product" class="custom-type-ids"><?php esc_html_e( 'Products', 'wpr-addons' ); ?></option>
208
+ <?php endif; ?>
209
+ <?php endif; ?>
210
+ </select>
211
+
212
+ <input type="text" placeholder="<?php esc_html_e( 'Enter comma separated IDs', 'wpr-addons' ); ?>" name="condition_input_ids" class="wpr-condition-input-ids">
213
+ <span class="wpr-delete-template-conditions dashicons dashicons-no-alt"></span>
214
+
215
+ <?php else: // Free user conditions ?>
216
+
217
+ <!-- Global -->
218
+ <select name="global_condition_select" class="global-condition-select">
219
+ <option value="global"><?php esc_html_e( 'Entire Site', 'wpr-addons' ); ?></option>
220
+ <option value="archive"><?php esc_html_e( 'Archives (Pro)', 'wpr-addons' ); ?></option>
221
+ <option value="single"><?php esc_html_e( 'Singular (Pro)', 'wpr-addons' ); ?></option>
222
+ </select>
223
+
224
+ <!-- Archive -->
225
+ <select name="archives_condition_select" class="archives-condition-select">
226
+ <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
227
+ <option value="all_archives"><?php esc_html_e( 'All Archives (Pro)', 'wpr-addons' ); ?></option>
228
+ <option value="posts"><?php esc_html_e( 'Posts Archive (Pro)', 'wpr-addons' ); ?></option>
229
+ <option value="author"><?php esc_html_e( 'Author Archive (Pro)', 'wpr-addons' ); ?></option>
230
+ <option value="date"><?php esc_html_e( 'Date Archive (Pro)', 'wpr-addons' ); ?></option>
231
+ <option value="search"><?php esc_html_e( 'Search Results (Pro)', 'wpr-addons' ); ?></option>
232
+ <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories (Pro)', 'wpr-addons' ); ?></option>
233
+ <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags (Pro)', 'wpr-addons' ); ?></option>
234
+ <?php // Custom Taxonomies
235
+ $custom_taxonomies = Utilities::get_custom_types_of( 'tax', true );
236
+ foreach ($custom_taxonomies as $key => $value) {
237
+ if ( class_exists( 'WooCommerce' ) && 'product_cat' === $key ) {
238
+ echo '<option value="products">'. esc_html__( 'Products Archive (Pro)', 'wpr-addons' ) .'</option>';
239
+ }
240
+
241
+ // List Taxonomies
242
+ echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .' (Pro)</option>';
243
+ }
244
+ ?>
245
+ <?php else: ?>
246
+ <?php if ( 'wpr_tab_archive' === $active_tab ) : ?>
247
+ <option value="all_archives"><?php esc_html_e( 'All Archives', 'wpr-addons' ); ?></option>
248
+ <option value="posts"><?php esc_html_e( 'Posts Archive', 'wpr-addons' ); ?></option>
249
+ <option value="author"><?php esc_html_e( 'Author Archive', 'wpr-addons' ); ?></option>
250
+ <option value="date"><?php esc_html_e( 'Date Archive', 'wpr-addons' ); ?></option>
251
+ <option value="search"><?php esc_html_e( 'Search Results', 'wpr-addons' ); ?></option>
252
+ <option value="categories" class="custom-ids"><?php esc_html_e( 'Post Categories', 'wpr-addons' ); ?></option>
253
+ <option value="tags" class="custom-ids"><?php esc_html_e( 'Post Tags', 'wpr-addons' ); ?></option>
254
+ <?php elseif ( 'wpr_tab_product_archive' === $active_tab ): ?>
255
+ <option value="products"><?php esc_html_e( 'Products Archive', 'wpr-addons' ); ?></option>
256
+ <option value="product_cat" class="custom-type-ids"><?php esc_html_e( 'Products Categories (Pro)', 'wpr-addons' ); ?></option>
257
+ <option value="product_tag" class="custom-type-ids"><?php esc_html_e( 'Products Tags (Pro)', 'wpr-addons' ); ?></option>
258
+ <?php endif; ?>
259
+ <?php endif; ?>
260
+ </select>
261
+
262
+ <!-- Single -->
263
+ <select name="singles_condition_select" class="singles-condition-select">
264
+ <?php if ( 'wpr_tab_header' === $active_tab || 'wpr_tab_footer' === $active_tab ) : ?>
265
+ <option value="front_page"><?php esc_html_e( 'Front Page (Pro)', 'wpr-addons' ); ?></option>
266
+ <option value="page_404"><?php esc_html_e( '404 Page (Pro)', 'wpr-addons' ); ?></option>
267
+ <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages (Pro)', 'wpr-addons' ); ?></option>
268
+ <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts (Pro)', 'wpr-addons' ); ?></option>
269
+ <?php // Custom Post Types
270
+ $custom_taxonomies = Utilities::get_custom_types_of( 'post', true );
271
+ foreach ($custom_taxonomies as $key => $value) {
272
+ echo '<option value="'. esc_attr($key) .'" class="custom-type-ids">'. esc_html($value) .' (Pro)</option>';
273
+ }
274
+ ?>
275
+ <?php else: ?>
276
+ <?php if ( 'wpr_tab_single' === $active_tab ) : ?>
277
+ <option value="front_page"><?php esc_html_e( 'Front Page', 'wpr-addons' ); ?></option>
278
+ <option value="page_404"><?php esc_html_e( '404 Page', 'wpr-addons' ); ?></option>
279
+ <option value="pages" class="custom-ids"><?php esc_html_e( 'Pages', 'wpr-addons' ); ?></option>
280
+ <option value="posts" class="custom-ids"><?php esc_html_e( 'Posts', 'wpr-addons' ); ?></option>
281
+ <?php elseif ( 'wpr_tab_product_single' === $active_tab ): ?>
282
+ <option value="product" class="custom-type-ids"><?php esc_html_e( 'Products', 'wpr-addons' ); ?></option>
283
+ <?php endif; ?>
284
+ <?php endif; ?>
285
+ </select>
286
+
287
+ <input type="text" placeholder="<?php esc_html_e( 'Enter comma separated IDs (Pro)', 'wpr-addons' ); ?>" name="condition_input_ids" class="wpr-condition-input-ids">
288
+ <span class="wpr-delete-template-conditions dashicons dashicons-no-alt"></span>
289
+
290
+ <?php endif; ?>
291
+ </div>
292
+ </div>
293
+
294
+ <?php if ( $canvas ) : ?>
295
+ <div class="wpr-canvas-condition wpr-setting-custom-ckbox">
296
+ <span><?php esc_html_e( 'Show this template on Elementor Canvas pages', 'wpr-addons' ); ?></span>
297
+ <input type="checkbox" name="wpr-show-on-canvas" id="wpr-show-on-canvas">
298
+ <label for="wpr-show-on-canvas"></label>
299
+ </div>
300
+ <?php endif; ?>
301
+
302
+ <?php
303
+
304
+
305
+ // Pro Notice
306
+ if ( ! wpr_fs()->can_use_premium_code() ) {
307
+ echo '<span style="color: #7f8b96;"><br>Conditions are fully suppoted in the <strong><a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-conditions-upgrade-pro#purchasepro" target="_blank">Pro version</a></strong></span>';
308
+ // echo '<span style="color: #7f8b96;"><br>Conditions are fully suppoted in the <strong><a href="'. admin_url('admin.php?page=wpr-addons-pricing') .'" target="_blank">Pro version</a></strong></span>';
309
+ }
310
+
311
+ ?>
312
+
313
+ <!-- Action Buttons -->
314
+ <span class="wpr-add-conditions"><?php esc_html_e( 'Add Conditions', 'wpr-addons' ); ?></span>
315
+ <span class="wpr-save-conditions"><?php esc_html_e( 'Save Conditions', 'wpr-addons' ); ?></span>
316
+
317
+ </div>
318
+ </div>
319
+
320
+ <?php
321
+ }
322
+
323
+
324
+ /**
325
+ ** Render Create Template Popup
326
+ */
327
+ public static function render_create_template_popup() {
328
+ ?>
329
+
330
+ <!-- Custom Template Popup -->
331
+ <div class="wpr-user-template-popup-wrap wpr-admin-popup-wrap">
332
+ <div class="wpr-user-template-popup wpr-admin-popup">
333
+ <header>
334
+ <h2><?php esc_html_e( 'Templates Help You Work Efficiently!', 'wpr-addons' ); ?></h2>
335
+ <p><?php esc_html_e( 'Use templates to create the different pieces of your site, and reuse them with one click whenever needed.', 'wpr-addons' ); ?></p>
336
+ </header>
337
+
338
+ <input type="text" name="user_template_title" class="wpr-user-template-title" placeholder="<?php esc_html_e( 'Enter Template Title', 'wpr-addons' ); ?>">
339
+ <input type="hidden" name="user_template_type" class="user-template-type">
340
+ <span class="wpr-create-template"><?php esc_html_e( 'Create Template', 'wpr-addons' ); ?></span>
341
+ <span class="close-popup dashicons dashicons-no-alt"></span>
342
+ </div>
343
+ </div>
344
+
345
+ <?php
346
+ }
347
+
348
+ /**
349
+ ** Check if Library Template Exists
350
+ */
351
+ public static function template_exists( $slug ) {
352
+ $result = false;
353
+ $wpr_templates = get_posts( ['post_type' => 'wpr_templates', 'posts_per_page' => '-1'] );
354
+
355
+ foreach ( $wpr_templates as $post ) {
356
+
357
+ if ( $slug === $post->post_name ) {
358
+ $result = true;
359
+ }
360
+ }
361
+
362
+ return $result;
363
+ }
364
+
365
  }
admin/includes/wpr-templates-modal-popups.php CHANGED
@@ -1,234 +1,234 @@
1
- <?php
2
- namespace WprAddons\Admin\Includes;
3
-
4
- use WprAddons\Plugin;
5
- use WprAddons\Classes\Utilities;
6
-
7
- if ( ! defined( 'ABSPATH' ) ) {
8
- exit; // Exit if accessed directly.
9
- }
10
-
11
- /**
12
- * WPR_Templates_Modal_Popups setup
13
- *
14
- * @since 1.0
15
- */
16
- class WPR_Templates_Modal_Popups {
17
-
18
- /**
19
- ** Instance of Elemenntor Frontend class.
20
- *
21
- ** @var \Elementor\Frontend()
22
- */
23
- private static $elementor_instance;
24
-
25
- /**
26
- ** Constructor
27
- */
28
- public function __construct() {
29
- // Elementor Frontend
30
- self::$elementor_instance = \Elementor\Plugin::instance();
31
-
32
- add_action( 'template_include', [ $this, 'set_post_type_template' ], 9999 );
33
-
34
- add_action( 'wp_footer', [ $this, 'render_popups' ] );
35
- }
36
-
37
- /**
38
- * Set blank template for editor
39
- */
40
- public function set_post_type_template( $template ) {
41
-
42
- if ( is_singular( 'wpr_templates' ) ) {
43
- if ( 'wpr-popups' === Utilities::get_elementor_template_type(get_the_ID()) && self::$elementor_instance->preview->is_preview_mode() ) {
44
- $template = WPR_ADDONS_PATH . 'modules/popup/editor.php';
45
- }
46
-
47
- return $template;
48
- }
49
-
50
- return $template;
51
- }
52
-
53
- /**
54
- ** Popups
55
- */
56
- public function render_popups() {
57
- $conditions = json_decode( get_option('wpr_popup_conditions'), true );
58
-
59
- if ( ! empty( $conditions ) ) {
60
- $conditions = $this->reverse_template_conditions( $conditions );
61
-
62
- // Global
63
- if ( isset( $conditions['global'] ) ) {
64
- WPR_Templates_Modal_Popups::display_popups_by_location( $conditions, 'global' );
65
- }
66
-
67
- // Custom
68
- if ( wpr_fs()->can_use_premium_code() ) {
69
- // Archive
70
- \WprAddonsPro\Classes\Pro_Modules::archive_pages_popup_conditions( $conditions );
71
-
72
- // Single
73
- \WprAddonsPro\Classes\Pro_Modules::single_pages_popup_conditions( $conditions );
74
- }
75
-
76
-
77
- // Enqueue ScrolBar JS //TODO - check if displayed multiple times
78
- wp_enqueue_script( 'wpr-popup-scroll-js', WPR_ADDONS_URL .'assets/js/lib/perfect-scrollbar/perfect-scrollbar.min.js', [ 'jquery' ], '0.4.9' );
79
- }
80
- }
81
-
82
- /**
83
- ** Reverse Template Conditions
84
- */
85
- public function reverse_template_conditions( $conditions ) {
86
- $reverse = [];
87
-
88
- foreach ( $conditions as $key => $condition ) {
89
- foreach( $condition as $location ) {
90
- if ( ! isset( $reverse[$location] ) ) {
91
- $reverse[$location] = [ $key ];
92
- } else {
93
- array_push( $reverse[$location], $key );
94
- }
95
- }
96
- }
97
-
98
- return $reverse;
99
- }
100
-
101
- /**
102
- ** Display Popups by Location
103
- */
104
- public static function display_popups_by_location( $conditions, $page ) {
105
- foreach ( $conditions[$page] as $key => $popup ) {
106
- WPR_Templates_Modal_Popups::render_popup_content( $popup );
107
- }
108
- }
109
-
110
- /**
111
- ** Display Elementor Content
112
- */
113
- public static function render_popup_content( $slug ) {
114
- $template_name = '';
115
-
116
- $template_id = Utilities::get_template_id( $slug );
117
- $get_settings = WPR_Templates_Modal_Popups::get_template_settings( $slug );
118
- $get_elementor_content = self::$elementor_instance->frontend->get_builder_content( $template_id, false );
119
-
120
- if ( '' === $get_elementor_content ) {
121
- return;
122
- }
123
-
124
- // Encode Settings
125
- $get_encoded_settings = ! empty( $get_settings ) ? wp_json_encode( $get_settings ) : '[]';
126
-
127
- // Template Settings Attribute
128
- $template_settings_attr = "data-settings='". esc_attr($get_encoded_settings) ."'";
129
-
130
- // Return if NOT available for current user
131
- if ( ! WPR_Templates_Modal_Popups::check_available_user_roles( $get_settings['popup_show_for_roles'] ) ) {
132
- return;
133
- }
134
-
135
- if ( ! self::$elementor_instance->preview->is_preview_mode() ) {
136
- echo '<div id="wpr-popup-id-'. esc_attr($template_id) .'" class="wpr-template-popup" '. $template_settings_attr .'>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
137
- echo '<div class="wpr-template-popup-inner">';
138
-
139
- // Popup Overlay & Close Button
140
- echo '<div class="wpr-popup-overlay"></div>';
141
-
142
- // Template Container
143
- echo '<div class="wpr-popup-container">';
144
-
145
- // Close Button
146
- echo '<div class="wpr-popup-close-btn"><i class="eicon-close"></i></div>';
147
-
148
- // Elementor Template Content
149
- echo '<div class="wpr-popup-container-inner">';
150
- echo ''. $get_elementor_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
151
- echo '</div>';
152
-
153
- echo '</div>';
154
-
155
- echo '</div>';
156
- echo '</div>';
157
- }
158
- }
159
-
160
- /**
161
- ** Get Template Settings
162
- */
163
- public static function get_template_settings( $slug ) {
164
- $settings = [];
165
- $defaults = [];
166
-
167
- $template_id = Utilities::get_template_id( $slug );
168
- $meta_settings = get_post_meta( $template_id, '_elementor_page_settings', true );
169
-
170
- $popup_defaults = [
171
- 'popup_trigger' => 'load',
172
- 'popup_load_delay' => 1,
173
- 'popup_scroll_progress' => 10,
174
- 'popup_inactivity_time' => 15,
175
- 'popup_element_scroll' => '',
176
- 'popup_custom_trigger' => '',
177
- 'popup_specific_date' => date( 'Y-m-d H:i', strtotime( '+1 month' ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ),
178
- 'popup_stop_after_date' => false,
179
- 'popup_stop_after_date_select' => date( 'Y-m-d H:i', strtotime( '+1 day' ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ),
180
- 'popup_show_again_delay' => 1,
181
- 'popup_disable_esc_key' => false,
182
- 'popup_automatic_close_switch' => false,
183
- 'popup_automatic_close_delay' => 10,
184
- 'popup_animation' => 'fade',
185
- 'popup_animation_duration' => 1,
186
- 'popup_show_for_roles' => '',
187
- 'popup_show_via_referral' => false,
188
- 'popup_referral_keyword' => '',
189
- 'popup_display_as' => 'modal',
190
- 'popup_show_on_device' => true,
191
- 'popup_show_on_device_mobile' => true,
192
- 'popup_show_on_device_tablet' => true,
193
- 'popup_disable_page_scroll' => true,
194
- 'popup_overlay_disable_close' => false,
195
- 'popup_close_button_display_delay' => 0,
196
- ];
197
-
198
- // Determine Template
199
- if ( strpos( $slug, 'popup') ) {
200
- $defaults = $popup_defaults;
201
- }
202
-
203
- foreach( $defaults as $option => $value ) {
204
- if ( isset($meta_settings[$option]) ) {
205
- $settings[$option] = $meta_settings[$option];
206
- }
207
- }
208
-
209
- return array_merge( $defaults, $settings );
210
- }
211
-
212
- /**
213
- ** Check Available User Rols
214
- */
215
- public static function check_available_user_roles( $selected_roles ) {
216
- if ( empty( $selected_roles ) ) {
217
- return true;
218
- }
219
-
220
- $current_user = wp_get_current_user();
221
-
222
- if ( ! empty( $current_user->roles ) ) {
223
- $role = $current_user->roles[0];
224
- } else {
225
- $role = 'guest';
226
- }
227
-
228
- if ( in_array( $role, $selected_roles ) ) {
229
- return true;
230
- }
231
-
232
- return false;
233
- }
234
  }
1
+ <?php
2
+ namespace WprAddons\Admin\Includes;
3
+
4
+ use WprAddons\Plugin;
5
+ use WprAddons\Classes\Utilities;
6
+
7
+ if ( ! defined( 'ABSPATH' ) ) {
8
+ exit; // Exit if accessed directly.
9
+ }
10
+
11
+ /**
12
+ * WPR_Templates_Modal_Popups setup
13
+ *
14
+ * @since 1.0
15
+ */
16
+ class WPR_Templates_Modal_Popups {
17
+
18
+ /**
19
+ ** Instance of Elemenntor Frontend class.
20
+ *
21
+ ** @var \Elementor\Frontend()
22
+ */
23
+ private static $elementor_instance;
24
+
25
+ /**
26
+ ** Constructor
27
+ */
28
+ public function __construct() {
29
+ // Elementor Frontend
30
+ self::$elementor_instance = \Elementor\Plugin::instance();
31
+
32
+ add_action( 'template_include', [ $this, 'set_post_type_template' ], 9999 );
33
+
34
+ add_action( 'wp_footer', [ $this, 'render_popups' ] );
35
+ }
36
+
37
+ /**
38
+ * Set blank template for editor
39
+ */
40
+ public function set_post_type_template( $template ) {
41
+
42
+ if ( is_singular( 'wpr_templates' ) ) {
43
+ if ( 'wpr-popups' === Utilities::get_elementor_template_type(get_the_ID()) && self::$elementor_instance->preview->is_preview_mode() ) {
44
+ $template = WPR_ADDONS_PATH . 'modules/popup/editor.php';
45
+ }
46
+
47
+ return $template;
48
+ }
49
+
50
+ return $template;
51
+ }
52
+
53
+ /**
54
+ ** Popups
55
+ */
56
+ public function render_popups() {
57
+ $conditions = json_decode( get_option('wpr_popup_conditions'), true );
58
+
59
+ if ( ! empty( $conditions ) ) {
60
+ $conditions = $this->reverse_template_conditions( $conditions );
61
+
62
+ // Global
63
+ if ( isset( $conditions['global'] ) ) {
64
+ WPR_Templates_Modal_Popups::display_popups_by_location( $conditions, 'global' );
65
+ }
66
+
67
+ // Custom
68
+ if ( wpr_fs()->can_use_premium_code() ) {
69
+ // Archive
70
+ \WprAddonsPro\Classes\Pro_Modules::archive_pages_popup_conditions( $conditions );
71
+
72
+ // Single
73
+ \WprAddonsPro\Classes\Pro_Modules::single_pages_popup_conditions( $conditions );
74
+ }
75
+
76
+
77
+ // Enqueue ScrolBar JS //TODO - check if displayed multiple times
78
+ wp_enqueue_script( 'wpr-popup-scroll-js', WPR_ADDONS_URL .'assets/js/lib/perfect-scrollbar/perfect-scrollbar.min.js', [ 'jquery' ], '0.4.9' );
79
+ }
80
+ }
81
+
82
+ /**
83
+ ** Reverse Template Conditions
84
+ */
85
+ public function reverse_template_conditions( $conditions ) {
86
+ $reverse = [];
87
+
88
+ foreach ( $conditions as $key => $condition ) {
89
+ foreach( $condition as $location ) {
90
+ if ( ! isset( $reverse[$location] ) ) {
91
+ $reverse[$location] = [ $key ];
92
+ } else {
93
+ array_push( $reverse[$location], $key );
94
+ }
95
+ }
96
+ }
97
+
98
+ return $reverse;
99
+ }
100
+
101
+ /**
102
+ ** Display Popups by Location
103
+ */
104
+ public static function display_popups_by_location( $conditions, $page ) {
105
+ foreach ( $conditions[$page] as $key => $popup ) {
106
+ WPR_Templates_Modal_Popups::render_popup_content( $popup );
107
+ }
108
+ }
109
+
110
+ /**
111
+ ** Display Elementor Content
112
+ */
113
+ public static function render_popup_content( $slug ) {
114
+ $template_name = '';
115
+
116
+ $template_id = Utilities::get_template_id( $slug );
117
+ $get_settings = WPR_Templates_Modal_Popups::get_template_settings( $slug );
118
+ $get_elementor_content = self::$elementor_instance->frontend->get_builder_content( $template_id, false );
119
+
120
+ if ( '' === $get_elementor_content ) {
121
+ return;
122
+ }
123
+
124
+ // Encode Settings
125
+ $get_encoded_settings = ! empty( $get_settings ) ? wp_json_encode( $get_settings ) : '[]';
126
+
127
+ // Template Settings Attribute
128
+ $template_settings_attr = "data-settings='". esc_attr($get_encoded_settings) ."'";
129
+
130
+ // Return if NOT available for current user
131
+ if ( ! WPR_Templates_Modal_Popups::check_available_user_roles( $get_settings['popup_show_for_roles'] ) ) {
132
+ return;
133
+ }
134
+
135
+ if ( ! self::$elementor_instance->preview->is_preview_mode() ) {
136
+ echo '<div id="wpr-popup-id-'. esc_attr($template_id) .'" class="wpr-template-popup" '. $template_settings_attr .'>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
137
+ echo '<div class="wpr-template-popup-inner">';
138
+
139
+ // Popup Overlay & Close Button
140
+ echo '<div class="wpr-popup-overlay"></div>';
141
+
142
+ // Template Container
143
+ echo '<div class="wpr-popup-container">';
144
+
145
+ // Close Button
146
+ echo '<div class="wpr-popup-close-btn"><i class="eicon-close"></i></div>';
147
+
148
+ // Elementor Template Content
149
+ echo '<div class="wpr-popup-container-inner">';
150
+ echo ''. $get_elementor_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
151
+ echo '</div>';
152
+
153
+ echo '</div>';
154
+
155
+ echo '</div>';
156
+ echo '</div>';
157
+ }
158
+ }
159
+
160
+ /**
161
+ ** Get Template Settings
162
+ */
163
+ public static function get_template_settings( $slug ) {
164
+ $settings = [];
165
+ $defaults = [];
166
+
167
+ $template_id = Utilities::get_template_id( $slug );
168
+ $meta_settings = get_post_meta( $template_id, '_elementor_page_settings', true );
169
+
170
+ $popup_defaults = [
171
+ 'popup_trigger' => 'load',
172
+ 'popup_load_delay' => 1,
173
+ 'popup_scroll_progress' => 10,
174
+ 'popup_inactivity_time' => 15,
175
+ 'popup_element_scroll' => '',
176
+ 'popup_custom_trigger' => '',
177
+ 'popup_specific_date' => date( 'Y-m-d H:i', strtotime( '+1 month' ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ),
178
+ 'popup_stop_after_date' => false,
179
+ 'popup_stop_after_date_select' => date( 'Y-m-d H:i', strtotime( '+1 day' ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ),
180
+ 'popup_show_again_delay' => 1,
181
+ 'popup_disable_esc_key' => false,
182
+ 'popup_automatic_close_switch' => false,
183
+ 'popup_automatic_close_delay' => 10,
184
+ 'popup_animation' => 'fade',
185
+ 'popup_animation_duration' => 1,
186
+ 'popup_show_for_roles' => '',
187
+ 'popup_show_via_referral' => false,
188
+ 'popup_referral_keyword' => '',
189
+ 'popup_display_as' => 'modal',
190
+ 'popup_show_on_device' => true,
191
+ 'popup_show_on_device_mobile' => true,
192
+ 'popup_show_on_device_tablet' => true,
193
+ 'popup_disable_page_scroll' => true,
194
+ 'popup_overlay_disable_close' => false,
195
+ 'popup_close_button_display_delay' => 0,
196
+ ];
197
+
198
+ // Determine Template
199
+ if ( strpos( $slug, 'popup') ) {
200
+ $defaults = $popup_defaults;
201
+ }
202
+
203
+ foreach( $defaults as $option => $value ) {
204
+ if ( isset($meta_settings[$option]) ) {
205
+ $settings[$option] = $meta_settings[$option];
206
+ }
207
+ }
208
+
209
+ return array_merge( $defaults, $settings );
210
+ }
211
+
212
+ /**
213
+ ** Check Available User Rols
214
+ */
215
+ public static function check_available_user_roles( $selected_roles ) {
216
+ if ( empty( $selected_roles ) ) {
217
+ return true;
218
+ }
219
+
220
+ $current_user = wp_get_current_user();
221
+
222
+ if ( ! empty( $current_user->roles ) ) {
223
+ $role = $current_user->roles[0];
224
+ } else {
225
+ $role = 'guest';
226
+ }
227
+
228
+ if ( in_array( $role, $selected_roles ) ) {
229
+ return true;
230
+ }
231
+
232
+ return false;
233
+ }
234
  }
admin/includes/wpr-templates-shortcode.php CHANGED
@@ -1,70 +1,70 @@
1
- <?php
2
-
3
- namespace WprAddons\Admin\Includes;
4
-
5
- use Elementor;
6
-
7
- if ( ! defined( 'ABSPATH' ) ) {
8
- exit; // Exit if accessed directly.
9
- }
10
-
11
- /**
12
- * WPR_Templates_Shortcode setup
13
- *
14
- * @since 1.0
15
- */
16
- class WPR_Templates_Shortcode {
17
-
18
- public function __construct() {
19
- add_shortcode( 'wpr-template', [ $this, 'shortcode' ] );
20
-
21
- add_action('elementor/element/after_section_start', [ $this, 'extend_shortcode' ], 10, 3 );
22
- }
23
-
24
- public function shortcode( $attributes = [] ) {
25
- if ( empty( $attributes['id'] ) ) {
26
- return '';
27
- }
28
-
29
- $edit_link = '<span class="wpr-template-edit-btn" data-permalink="'. esc_url(get_permalink($attributes['id'])) .'">Edit Template</span>';
30
-
31
- $type = get_post_meta(get_the_ID(), '_wpr_template_type', true);
32
- $has_css = 'internal' === get_option( 'elementor_css_print_method' ) || '' !== $type;
33
-
34
- return Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $attributes['id'], $has_css ) . $edit_link;
35
- }
36
-
37
- public function extend_shortcode( $section, $section_id, $args ) {
38
- if ( $section->get_name() == 'shortcode' && $section_id == 'section_shortcode' ) {
39
- $templates_select = [];
40
-
41
- // Get All Templates
42
- $templates = get_posts( [
43
- 'post_type' => array( 'elementor_library' ),
44
- 'post_status' => array( 'publish' ),
45
- 'meta_key' => '_elementor_template_type',
46
- 'meta_value' => ['page', 'section'],
47
- 'numberposts' => -1
48
- ] );
49
-
50
- if ( ! empty( $templates ) ) {
51
- foreach ( $templates as $template ) {
52
- $templates_select[$template->ID] = $template->post_title;
53
- }
54
- }
55
-
56
- $section->add_control(
57
- 'select_template' ,
58
- [
59
- 'label' => esc_html__( 'Select Template', 'wpr-addons' ),
60
- 'type' => Elementor\Controls_Manager::SELECT2,
61
- 'options' => $templates_select,
62
- ]
63
- );
64
-
65
- // Restore original Post Data
66
- wp_reset_postdata();
67
- }
68
- }
69
-
70
  }
1
+ <?php
2
+
3
+ namespace WprAddons\Admin\Includes;
4
+
5
+ use Elementor;
6
+
7
+ if ( ! defined( 'ABSPATH' ) ) {
8
+ exit; // Exit if accessed directly.
9
+ }
10
+
11
+ /**
12
+ * WPR_Templates_Shortcode setup
13
+ *
14
+ * @since 1.0
15
+ */
16
+ class WPR_Templates_Shortcode {
17
+
18
+ public function __construct() {
19
+ add_shortcode( 'wpr-template', [ $this, 'shortcode' ] );
20
+
21
+ add_action('elementor/element/after_section_start', [ $this, 'extend_shortcode' ], 10, 3 );
22
+ }
23
+
24
+ public function shortcode( $attributes = [] ) {
25
+ if ( empty( $attributes['id'] ) ) {
26
+ return '';
27
+ }
28
+
29
+ $edit_link = '<span class="wpr-template-edit-btn" data-permalink="'. esc_url(get_permalink($attributes['id'])) .'">Edit Template</span>';
30
+
31
+ $type = get_post_meta(get_the_ID(), '_wpr_template_type', true);
32
+ $has_css = 'internal' === get_option( 'elementor_css_print_method' ) || '' !== $type;
33
+
34
+ return Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $attributes['id'], $has_css ) . $edit_link;
35
+ }
36
+
37
+ public function extend_shortcode( $section, $section_id, $args ) {
38
+ if ( $section->get_name() == 'shortcode' && $section_id == 'section_shortcode' ) {
39
+ $templates_select = [];
40
+
41
+ // Get All Templates
42
+ $templates = get_posts( [
43
+ 'post_type' => array( 'elementor_library' ),
44
+ 'post_status' => array( 'publish' ),
45
+ 'meta_key' => '_elementor_template_type',
46
+ 'meta_value' => ['page', 'section'],
47
+ 'numberposts' => -1
48
+ ] );
49
+
50
+ if ( ! empty( $templates ) ) {
51
+ foreach ( $templates as $template ) {
52
+ $templates_select[$template->ID] = $template->post_title;
53
+ }
54
+ }
55
+
56
+ $section->add_control(
57
+ 'select_template' ,
58
+ [
59
+ 'label' => esc_html__( 'Select Template', 'wpr-addons' ),
60
+ 'type' => Elementor\Controls_Manager::SELECT2,
61
+ 'options' => $templates_select,
62
+ ]
63
+ );
64
+
65
+ // Restore original Post Data
66
+ wp_reset_postdata();
67
+ }
68
+ }
69
+
70
  }
admin/mega-menu.php CHANGED
@@ -1,376 +1,376 @@
1
- <?php
2
- use WprAddons\Plugin;
3
-
4
- // Register Post Type
5
- function register_mega_menu_cpt() {
6
- $args = array(
7
- 'label' => esc_html__( 'Royal Mega Menu', 'wpr-addons' ),
8
- 'public' => true,
9
- 'publicly_queryable' => true,
10
- 'rewrite' => false,
11
- 'show_ui' => true,
12
- 'show_in_menu' => false,
13
- 'show_in_nav_menus' => false,
14
- 'exclude_from_search' => true,
15
- 'capability_type' => 'post',
16
- 'supports' => array( 'title', 'editor', 'elementor' ),
17
- 'hierarchical' => false,
18
- );
19
-
20
- register_post_type( 'wpr_mega_menu', $args );
21
- }
22
-
23
- // Convert to Canvas Template
24
- function convert_to_canvas_template( $template ) {
25
- if ( is_singular('wpr_mega_menu') ) {
26
- $template = WPR_ADDONS_PATH . 'admin/templates/wpr-canvas.php';
27
- }
28
-
29
- return $template;
30
- }
31
-
32
- // Init Mega Menu
33
- function init_mega_menu() {
34
- register_mega_menu_cpt();
35
- add_action( 'template_include', 'convert_to_canvas_template', 9999 );
36
- }
37
-
38
- add_action('init', 'init_mega_menu', 999);
39
-
40
-
41
- // Confinue only for Dashboard Screen
42
- if ( !is_admin() ) return;
43
-
44
- // Init Actions
45
- add_filter( 'option_elementor_cpt_support', 'add_mega_menu_cpt_support' );
46
- add_filter( 'default_option_elementor_cpt_support', 'add_mega_menu_cpt_support' );
47
- add_action( 'admin_footer', 'render_settings_popup', 10 );
48
- add_action( 'wp_ajax_wpr_create_mega_menu_template', 'wpr_create_mega_menu_template' );
49
- add_action( 'wp_ajax_wpr_save_mega_menu_settings', 'wpr_save_mega_menu_settings' );
50
- add_action( 'admin_enqueue_scripts', 'enqueue_scripts' );
51
-
52
- // Add Elementor Editor Support
53
- function add_mega_menu_cpt_support( $value ) {
54
- if ( empty( $value ) ) {
55
- $value = [];
56
- }
57
-
58
- return array_merge( $value, ['wpr_mega_menu'] );
59
- }
60
-
61
- // Create Menu Template
62
- function wpr_create_mega_menu_template() {
63
- if ( ! current_user_can( 'manage_options' ) ) {
64
- return;
65
- }
66
-
67
- // $menu_id = intval( $_REQUEST['menu'] );
68
- // $menu_item_id = intval( $_REQUEST['item'] );
69
- $menu_item_id = intval( $_POST['item_id'] );
70
- $mega_menu_id = get_post_meta( $menu_item_id, 'wpr-mega-menu-item', true );
71
-
72
- if ( ! $mega_menu_id ) {
73
-
74
- $mega_menu_id = wp_insert_post( array(
75
- 'post_title' => 'wpr-mega-menu-item-' . $menu_item_id,
76
- 'post_status' => 'publish',
77
- 'post_type' => 'wpr_mega_menu',
78
- ) );
79
-
80
- update_post_meta( $menu_item_id, 'wpr-mega-menu-item', $mega_menu_id );
81
-
82
- }
83
-
84
- $edit_link = add_query_arg(
85
- array(
86
- 'post' => $mega_menu_id,
87
- 'action' => 'elementor',
88
- ),
89
- admin_url( 'post.php' )
90
- );
91
-
92
- wp_send_json([
93
- 'data' => [
94
- 'edit_link' => $edit_link
95
- ]
96
- ]);
97
- }
98
-
99
- // Render Settings Popup
100
- function render_settings_popup() {
101
- $screen = get_current_screen();
102
-
103
- if ( 'nav-menus' !== $screen->base ) {
104
- return;
105
- }
106
-
107
- ?>
108
-
109
- <div class="wpr-mm-settings-popup-wrap">
110
- <div class="wpr-mm-settings-popup">
111
- <div class="wpr-mm-settings-popup-header">
112
- <span class="wpr-mm-popup-logo" style="background:url('<?php echo WPR_ADDONS_ASSETS_URL .'img/logo-40x40.png'; ?>') no-repeat center center / contain;">RE</span>
113
- <span><?php esc_html_e('Royal Mega Menu', 'wpr-addons'); ?></span>
114
- <span class="wpr-mm-popup-title"><?php esc_html_e('Menu Item: ', 'wpr-addons'); ?><span></span></span>
115
- <span class="dashicons dashicons-no-alt wpr-mm-settings-close-popup-btn"></span>
116
- </div>
117
-
118
- <?php $pro_active = wpr_fs()->can_use_premium_code() ? 'data-pro-active="true"' : 'data-pro-active="false"'; ?>
119
-
120
- <div class="wpr-mm-settings-wrap" <?php echo $pro_active; ?>>
121
- <h4><?php esc_html_e('General', 'wpr-addons'); ?></h4>
122
- <div class="wpr-mm-setting wpr-mm-setting-switcher">
123
- <h4><?php esc_html_e('Enable Mega Menu', 'wpr-addons'); ?></h4>
124
- <input type="checkbox" id="wpr_mm_enable">
125
- <label for="wpr_mm_enable"></label>
126
- </div>
127
- <div class="wpr-mm-setting">
128
- <h4><?php esc_html_e('Mega Menu Content', 'wpr-addons'); ?></h4>
129
- <button class="button button-primary wpr-edit-mega-menu-btn">
130
- <i class="eicon-elementor-square" aria-hidden="true"></i>
131
- <?php esc_html_e('Edit with Elementor', 'wpr-addons'); ?>
132
- </button>
133
- </div>
134
- <div class="wpr-mm-setting">
135
- <h4><?php esc_html_e('Dropdown Position', 'wpr-addons'); ?></h4>
136
- <select id="wpr_mm_position">
137
- <option value="default"><?php esc_html_e('Default', 'wpr-addons'); ?></option>
138
- <option value="relative"><?php esc_html_e('Relative', 'wpr-addons'); ?></option>
139
- </select>
140
- </div>
141
- <div class="wpr-mm-setting">
142
- <h4><?php esc_html_e('Dropdown Width', 'wpr-addons'); ?></h4>
143
- <select id="wpr_mm_width">
144
- <option value="default"><?php esc_html_e('Default', 'wpr-addons'); ?></option>
145
- <?php if ( ! wpr_fs()->can_use_premium_code() ) : ?>
146
- <option value="pro-st"><?php esc_html_e('Fit to Section (Pro)', 'wpr-addons'); ?></option>
147
- <?php else: ?>
148
- <option value="stretch"><?php esc_html_e('Fit to Section', 'wpr-addons'); ?></option>
149
- <?php endif; ?>
150
- <option value="full"><?php esc_html_e('Full Width', 'wpr-addons'); ?></option>
151
- <option value="custom"><?php esc_html_e('Custom', 'wpr-addons'); ?></option>
152
- </select>
153
- </div>
154
- <div class="wpr-mm-setting">
155
- <h4><?php esc_html_e('Custom Width (px)', 'wpr-addons'); ?></h4>
156
- <input type="number" id="wpr_mm_custom_width" value="600">
157
- </div>
158
- <div class="wpr-mm-setting <?php echo !wpr_fs()->can_use_premium_code() ? 'wpr-mm-pro-setting' : ''; ?>">
159
- <h4><?php esc_html_e('Mobile Sub Content', 'wpr-addons'); ?></h4>
160
- <div>
161
- <select id="wpr_mm_mobile_content">
162
- <option value="mega"><?php esc_html_e('Mega Menu', 'wpr-addons'); ?></option>
163
- <option value="wp-sub"><?php esc_html_e('WordPress Sub Items', 'wpr-addons'); ?></option>
164
- </select>
165
-
166
- <div class="wpr-mm-pro-radio">
167
- <input type="radio" name="mc" checked="checked">
168
- <label>Mega Menu</label><br>
169
- <input type="radio" name="mc">
170
- <label>WordPress Sub Items</label>
171
- </div>
172
- </div>
173
- </div>
174
- <div class="wpr-mm-setting <?php echo !wpr_fs()->can_use_premium_code() ? 'wpr-mm-pro-setting' : ''; ?>">
175
- <h4><?php esc_html_e('Mobile Sub Render', 'wpr-addons'); ?></h4>
176
- <div>
177
- <select id="wpr_mm_render">
178
- <option value="default"><?php esc_html_e('Default', 'wpr-addons'); ?></option>
179
- <option value="ajax"><?php esc_html_e('Load with AJAX', 'wpr-addons'); ?></option>
180
- </select>
181
-
182
- <div class="wpr-mm-pro-radio">
183
- <input type="radio" name="mr" checked="checked">
184
- <label>Default</label><br>
185
- <input type="radio" name="mr">
186
- <label>Load with AJAX</label>
187
- </div>
188
- </div>
189
- </div>
190
-
191
- <br>
192
-
193
- <h4 <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-heading"' : ''; ?>>
194
- <?php esc_html_e('Icon', 'wpr-addons'); ?>
195
- </h4>
196
- <div <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-section"' : ''; ?>>
197
- <div class="wpr-mm-setting wpr-mm-setting-icon">
198
- <h4><?php esc_html_e('Icon Select', 'wpr-addons'); ?></h4>
199
- <div><span class="wpr-mm-active-icon"><i class="fas fa-ban"></i></span><span><i class="fas fa-angle-down"></i></span></div>
200
- <input type="text" id="wpr_mm_icon_picker" data-alpha="true" value="">
201
- </div>
202
- <div class="wpr-mm-setting wpr-mm-setting-color">
203
- <h4><?php esc_html_e('Icon Color', 'wpr-addons'); ?></h4>
204
- <input type="text" id="wpr_mm_icon_color" data-alpha="true" value="rgba(0,0,0,0.6);">
205
- </div>
206
- <div class="wpr-mm-setting">
207
- <h4><?php esc_html_e('Icon Size (px)', 'wpr-addons'); ?></h4>
208
- <input type="number" id="wpr_mm_icon_size" value="14">
209
- </div>
210
- </div>
211
-
212
- <br>
213
-
214
- <h4 <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-heading"' : ''; ?>>
215
- <?php esc_html_e('Badge', 'wpr-addons'); ?>
216
- </h4>
217
- <div <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-section"' : ''; ?>>
218
- <div class="wpr-mm-setting">
219
- <h4><?php esc_html_e('Badge Text', 'wpr-addons'); ?></h4>
220
- <input type="text" id="wpr_mm_badge_text" value="">
221
- </div>
222
- <div class="wpr-mm-setting wpr-mm-setting-color">
223
- <h4><?php esc_html_e('Badge Text Color', 'wpr-addons'); ?></h4>
224
- <input type="text" id="wpr_mm_badge_color" data-alpha="true" value="rgba(0,0,0,0.6);">
225
- </div>
226
- <div class="wpr-mm-setting wpr-mm-setting-color">
227
- <h4><?php esc_html_e('Badge Background Color', 'wpr-addons'); ?></h4>
228
- <input type="text" id="wpr_mm_badge_bg_color" data-alpha="true" value="rgba(0,0,0,0.6);">
229
- </div>
230
- <div class="wpr-mm-setting wpr-mm-setting-switcher">
231
- <h4><?php esc_html_e('Enable Animation', 'wpr-addons'); ?></h4>
232
- <input type="checkbox" id="wpr_mm_badge_animation">
233
- <label for="wpr_mm_badge_animation"></label>
234
- </div>
235
- </div>
236
- </div>
237
-
238
- <div class="wpr-mm-settings-popup-footer">
239
- <button class="button wpr-save-mega-menu-btn"><?php esc_html_e('Save', 'wpr-addons'); ?></button>
240
- </div>
241
- </div>
242
- </div>
243
-
244
- <!-- Iframe Popup -->
245
- <div class="wpr-mm-editor-popup-wrap">
246
- <div class="wpr-mm-editor-close-popup-btn"><span class="dashicons dashicons-no-alt"></span></div>
247
- <div class="wpr-mm-editor-popup-iframe"></div>
248
- </div>
249
- <?php
250
- }
251
-
252
- // Save Mega Menu Settings
253
- function wpr_save_mega_menu_settings() {
254
- if ( isset($_POST['item_settings']) ) {
255
- update_post_meta( $_POST['item_id'], 'wpr-mega-menu-settings', $_POST['item_settings'] );
256
- }
257
-
258
- wp_send_json_success($_POST['item_settings']);
259
- }
260
-
261
- // Get Menu Items Data
262
- function get_menu_items_data( $menu_id = false ) {
263
-
264
- if ( ! $menu_id ) {
265
- return false;
266
- }
267
-
268
- $menu = wp_get_nav_menu_object( $menu_id );
269
-
270
- $menu_items = wp_get_nav_menu_items( $menu );
271
-
272
- if ( ! $menu_items ) {
273
- return false;
274
- }
275
-
276
- return $menu_items;
277
- }
278
-
279
- // Get Mega Menu Item Settings
280
- function get_menu_items_settings() {
281
- $menu_items = get_menu_items_data( get_selected_menu_id() );
282
-
283
- $settings = [];
284
-
285
- if ( ! $menu_items ) {
286
- return [];
287
- } else {
288
- foreach ( $menu_items as $key => $item_object ) {
289
- $item_id = $item_object->ID;
290
-
291
- $item_meta = get_post_meta( $item_id, 'wpr-mega-menu-settings', true );
292
-
293
- if ( !empty($item_meta) ) {
294
- $settings[ $item_id ] = $item_meta;
295
- } else {
296
- $settings[ $item_id ] = [];
297
- }
298
- }
299
-
300
- return $settings;
301
- }
302
- }
303
-
304
- /**
305
- * Get the Selected menu ID
306
- * @author Tom Hemsley (https://wordpress.org/plugins/megamenu/)
307
- */
308
- function get_selected_menu_id() {
309
- $nav_menus = wp_get_nav_menus( array('orderby' => 'name') );
310
- $menu_count = count( $nav_menus );
311
- $nav_menu_selected_id = isset( $_REQUEST['menu'] ) ? (int) $_REQUEST['menu'] : 0;
312
- $add_new_screen = ( isset( $_GET['menu'] ) && 0 == $_GET['menu'] ) ? true : false;
313
-
314
- $current_menu_id = $nav_menu_selected_id;
315
-
316
- // If we have one theme location, and zero menus, we take them right into editing their first menu
317
- $page_count = wp_count_posts( 'page' );
318
- $one_theme_location_no_menus = ( 1 == count( get_registered_nav_menus() ) && ! $add_new_screen && empty( $nav_menus ) && ! empty( $page_count->publish ) ) ? true : false;
319
-
320
- // Get recently edited nav menu
321
- $recently_edited = absint( get_user_option( 'nav_menu_recently_edited' ) );
322
- if ( empty( $recently_edited ) && is_nav_menu( $current_menu_id ) ) {
323
- $recently_edited = $current_menu_id;
324
- }
325
-
326
- // Use $recently_edited if none are selected
327
- if ( empty( $current_menu_id ) && ! isset( $_GET['menu'] ) && is_nav_menu( $recently_edited ) ) {
328
- $current_menu_id = $recently_edited;
329
- }
330
-
331
- // On deletion of menu, if another menu exists, show it
332
- if ( ! $add_new_screen && 0 < $menu_count && isset( $_GET['action'] ) && 'delete' == $_GET['action'] ) {
333
- $current_menu_id = $nav_menus[0]->term_id;
334
- }
335
-
336
- // Set $current_menu_id to 0 if no menus
337
- if ( $one_theme_location_no_menus ) {
338
- $current_menu_id = 0;
339
- } elseif ( empty( $current_menu_id ) && ! empty( $nav_menus ) && ! $add_new_screen ) {
340
- // if we have no selection yet, and we have menus, set to the first one in the list
341
- $current_menu_id = $nav_menus[0]->term_id;
342
- }
343
-
344
- return $current_menu_id;
345
-
346
- }
347
-
348
- // Enqueue Scripts and Styles
349
- function enqueue_scripts( $hook ) {
350
-
351
- // Get Plugin Version
352
- $version = Plugin::instance()->get_version();
353
-
354
- // Deny if NOT a Menu Page
355
- if ( 'nav-menus.php' == $hook ) {
356
-
357
- // Color Picker
358
- wp_enqueue_style( 'wp-color-picker' );
359
- wp_enqueue_script( 'wp-color-picker-alpha', WPR_ADDONS_URL .'assets/js/admin/lib/wp-color-picker-alpha.min.js', ['jquery', 'wp-color-picker'], $version, true );
360
-
361
- // Icon Picker
362
- wp_enqueue_script( 'wpr-iconpicker-js', WPR_ADDONS_URL .'assets/js/admin/lib/iconpicker/fontawesome-iconpicker.min.js', ['jquery'], $version, true );
363
- wp_enqueue_style( 'wpr-iconpicker-css', WPR_ADDONS_URL .'assets/js/admin/lib/iconpicker/fontawesome-iconpicker.min.css', $version, true );
364
- wp_enqueue_style( 'wpr-el-fontawesome-css', ELEMENTOR_URL .'assets/lib/font-awesome/css/all.min.css', [], $version );
365
-
366
- // enqueue CSS
367
- wp_enqueue_style( 'wpr-mega-menu-css', WPR_ADDONS_URL .'assets/css/admin/mega-menu.css', [], $version );
368
-
369
- // enqueue JS
370
- wp_enqueue_script( 'wpr-mega-menu-js', WPR_ADDONS_URL .'assets/js/admin/mega-menu.js', ['jquery'], $version );
371
-
372
- wp_localize_script( 'wpr-mega-menu-js', 'WprMegaMenuSettingsData', get_menu_items_settings() );
373
-
374
- }
375
-
376
  }
1
+ <?php
2
+ use WprAddons\Plugin;
3
+
4
+ // Register Post Type
5
+ function register_mega_menu_cpt() {
6
+ $args = array(
7
+ 'label' => esc_html__( 'Royal Mega Menu', 'wpr-addons' ),
8
+ 'public' => true,
9
+ 'publicly_queryable' => true,
10
+ 'rewrite' => false,
11
+ 'show_ui' => true,
12
+ 'show_in_menu' => false,
13
+ 'show_in_nav_menus' => false,
14
+ 'exclude_from_search' => true,
15
+ 'capability_type' => 'post',
16
+ 'supports' => array( 'title', 'editor', 'elementor' ),
17
+ 'hierarchical' => false,
18
+ );
19
+
20
+ register_post_type( 'wpr_mega_menu', $args );
21
+ }
22
+
23
+ // Convert to Canvas Template
24
+ function convert_to_canvas_template( $template ) {
25
+ if ( is_singular('wpr_mega_menu') ) {
26
+ $template = WPR_ADDONS_PATH . 'admin/templates/wpr-canvas.php';
27
+ }
28
+
29
+ return $template;
30
+ }
31
+
32
+ // Init Mega Menu
33
+ function init_mega_menu() {
34
+ register_mega_menu_cpt();
35
+ add_action( 'template_include', 'convert_to_canvas_template', 9999 );
36
+ }
37
+
38
+ add_action('init', 'init_mega_menu', 999);
39
+
40
+
41
+ // Confinue only for Dashboard Screen
42
+ if ( !is_admin() ) return;
43
+
44
+ // Init Actions
45
+ add_filter( 'option_elementor_cpt_support', 'add_mega_menu_cpt_support' );
46
+ add_filter( 'default_option_elementor_cpt_support', 'add_mega_menu_cpt_support' );
47
+ add_action( 'admin_footer', 'render_settings_popup', 10 );
48
+ add_action( 'wp_ajax_wpr_create_mega_menu_template', 'wpr_create_mega_menu_template' );
49
+ add_action( 'wp_ajax_wpr_save_mega_menu_settings', 'wpr_save_mega_menu_settings' );
50
+ add_action( 'admin_enqueue_scripts', 'enqueue_scripts' );
51
+
52
+ // Add Elementor Editor Support
53
+ function add_mega_menu_cpt_support( $value ) {
54
+ if ( empty( $value ) ) {
55
+ $value = [];
56
+ }
57
+
58
+ return array_merge( $value, ['wpr_mega_menu'] );
59
+ }
60
+
61
+ // Create Menu Template
62
+ function wpr_create_mega_menu_template() {
63
+ if ( ! current_user_can( 'manage_options' ) ) {
64
+ return;
65
+ }
66
+
67
+ // $menu_id = intval( $_REQUEST['menu'] );
68
+ // $menu_item_id = intval( $_REQUEST['item'] );
69
+ $menu_item_id = intval( $_POST['item_id'] );
70
+ $mega_menu_id = get_post_meta( $menu_item_id, 'wpr-mega-menu-item', true );
71
+
72
+ if ( ! $mega_menu_id ) {
73
+
74
+ $mega_menu_id = wp_insert_post( array(
75
+ 'post_title' => 'wpr-mega-menu-item-' . $menu_item_id,
76
+ 'post_status' => 'publish',
77
+ 'post_type' => 'wpr_mega_menu',
78
+ ) );
79
+
80
+ update_post_meta( $menu_item_id, 'wpr-mega-menu-item', $mega_menu_id );
81
+
82
+ }
83
+
84
+ $edit_link = add_query_arg(
85
+ array(
86
+ 'post' => $mega_menu_id,
87
+ 'action' => 'elementor',
88
+ ),
89
+ admin_url( 'post.php' )
90
+ );
91
+
92
+ wp_send_json([
93
+ 'data' => [
94
+ 'edit_link' => $edit_link
95
+ ]
96
+ ]);
97
+ }
98
+
99
+ // Render Settings Popup
100
+ function render_settings_popup() {
101
+ $screen = get_current_screen();
102
+
103
+ if ( 'nav-menus' !== $screen->base ) {
104
+ return;
105
+ }
106
+
107
+ ?>
108
+
109
+ <div class="wpr-mm-settings-popup-wrap">
110
+ <div class="wpr-mm-settings-popup">
111
+ <div class="wpr-mm-settings-popup-header">
112
+ <span class="wpr-mm-popup-logo" style="background:url('<?php echo WPR_ADDONS_ASSETS_URL .'img/logo-40x40.png'; ?>') no-repeat center center / contain;">RE</span>
113
+ <span><?php esc_html_e('Royal Mega Menu', 'wpr-addons'); ?></span>
114
+ <span class="wpr-mm-popup-title"><?php esc_html_e('Menu Item: ', 'wpr-addons'); ?><span></span></span>
115
+ <span class="dashicons dashicons-no-alt wpr-mm-settings-close-popup-btn"></span>
116
+ </div>
117
+
118
+ <?php $pro_active = wpr_fs()->can_use_premium_code() ? 'data-pro-active="true"' : 'data-pro-active="false"'; ?>
119
+
120
+ <div class="wpr-mm-settings-wrap" <?php echo $pro_active; ?>>
121
+ <h4><?php esc_html_e('General', 'wpr-addons'); ?></h4>
122
+ <div class="wpr-mm-setting wpr-mm-setting-switcher">
123
+ <h4><?php esc_html_e('Enable Mega Menu', 'wpr-addons'); ?></h4>
124
+ <input type="checkbox" id="wpr_mm_enable">
125
+ <label for="wpr_mm_enable"></label>
126
+ </div>
127
+ <div class="wpr-mm-setting">
128
+ <h4><?php esc_html_e('Mega Menu Content', 'wpr-addons'); ?></h4>
129
+ <button class="button button-primary wpr-edit-mega-menu-btn">
130
+ <i class="eicon-elementor-square" aria-hidden="true"></i>
131
+ <?php esc_html_e('Edit with Elementor', 'wpr-addons'); ?>
132
+ </button>
133
+ </div>
134
+ <div class="wpr-mm-setting">
135
+ <h4><?php esc_html_e('Dropdown Position', 'wpr-addons'); ?></h4>
136
+ <select id="wpr_mm_position">
137
+ <option value="default"><?php esc_html_e('Default', 'wpr-addons'); ?></option>
138
+ <option value="relative"><?php esc_html_e('Relative', 'wpr-addons'); ?></option>
139
+ </select>
140
+ </div>
141
+ <div class="wpr-mm-setting">
142
+ <h4><?php esc_html_e('Dropdown Width', 'wpr-addons'); ?></h4>
143
+ <select id="wpr_mm_width">
144
+ <option value="default"><?php esc_html_e('Default', 'wpr-addons'); ?></option>
145
+ <?php if ( ! wpr_fs()->can_use_premium_code() ) : ?>
146
+ <option value="pro-st"><?php esc_html_e('Fit to Section (Pro)', 'wpr-addons'); ?></option>
147
+ <?php else: ?>
148
+ <option value="stretch"><?php esc_html_e('Fit to Section', 'wpr-addons'); ?></option>
149
+ <?php endif; ?>
150
+ <option value="full"><?php esc_html_e('Full Width', 'wpr-addons'); ?></option>
151
+ <option value="custom"><?php esc_html_e('Custom', 'wpr-addons'); ?></option>
152
+ </select>
153
+ </div>
154
+ <div class="wpr-mm-setting">
155
+ <h4><?php esc_html_e('Custom Width (px)', 'wpr-addons'); ?></h4>
156
+ <input type="number" id="wpr_mm_custom_width" value="600">
157
+ </div>
158
+ <div class="wpr-mm-setting <?php echo !wpr_fs()->can_use_premium_code() ? 'wpr-mm-pro-setting' : ''; ?>">
159
+ <h4><?php esc_html_e('Mobile Sub Content', 'wpr-addons'); ?></h4>
160
+ <div>
161
+ <select id="wpr_mm_mobile_content">
162
+ <option value="mega"><?php esc_html_e('Mega Menu', 'wpr-addons'); ?></option>
163
+ <option value="wp-sub"><?php esc_html_e('WordPress Sub Items', 'wpr-addons'); ?></option>
164
+ </select>
165
+
166
+ <div class="wpr-mm-pro-radio">
167
+ <input type="radio" name="mc" checked="checked">
168
+ <label>Mega Menu</label><br>
169
+ <input type="radio" name="mc">
170
+ <label>WordPress Sub Items</label>
171
+ </div>
172
+ </div>
173
+ </div>
174
+ <div class="wpr-mm-setting <?php echo !wpr_fs()->can_use_premium_code() ? 'wpr-mm-pro-setting' : ''; ?>">
175
+ <h4><?php esc_html_e('Mobile Sub Render', 'wpr-addons'); ?></h4>
176
+ <div>
177
+ <select id="wpr_mm_render">
178
+ <option value="default"><?php esc_html_e('Default', 'wpr-addons'); ?></option>
179
+ <option value="ajax"><?php esc_html_e('Load with AJAX', 'wpr-addons'); ?></option>
180
+ </select>
181
+
182
+ <div class="wpr-mm-pro-radio">
183
+ <input type="radio" name="mr" checked="checked">
184
+ <label>Default</label><br>
185
+ <input type="radio" name="mr">
186
+ <label>Load with AJAX</label>
187
+ </div>
188
+ </div>
189
+ </div>
190
+
191
+ <br>
192
+
193
+ <h4 <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-heading"' : ''; ?>>
194
+ <?php esc_html_e('Icon', 'wpr-addons'); ?>
195
+ </h4>
196
+ <div <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-section"' : ''; ?>>
197
+ <div class="wpr-mm-setting wpr-mm-setting-icon">
198
+ <h4><?php esc_html_e('Icon Select', 'wpr-addons'); ?></h4>
199
+ <div><span class="wpr-mm-active-icon"><i class="fas fa-ban"></i></span><span><i class="fas fa-angle-down"></i></span></div>
200
+ <input type="text" id="wpr_mm_icon_picker" data-alpha="true" value="">
201
+ </div>
202
+ <div class="wpr-mm-setting wpr-mm-setting-color">
203
+ <h4><?php esc_html_e('Icon Color', 'wpr-addons'); ?></h4>
204
+ <input type="text" id="wpr_mm_icon_color" data-alpha="true" value="rgba(0,0,0,0.6);">
205
+ </div>
206
+ <div class="wpr-mm-setting">
207
+ <h4><?php esc_html_e('Icon Size (px)', 'wpr-addons'); ?></h4>
208
+ <input type="number" id="wpr_mm_icon_size" value="14">
209
+ </div>
210
+ </div>
211
+
212
+ <br>
213
+
214
+ <h4 <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-heading"' : ''; ?>>
215
+ <?php esc_html_e('Badge', 'wpr-addons'); ?>
216
+ </h4>
217
+ <div <?php echo !wpr_fs()->can_use_premium_code() ? 'class="wpr-mm-pro-section"' : ''; ?>>
218
+ <div class="wpr-mm-setting">
219
+ <h4><?php esc_html_e('Badge Text', 'wpr-addons'); ?></h4>
220
+ <input type="text" id="wpr_mm_badge_text" value="">
221
+ </div>
222
+ <div class="wpr-mm-setting wpr-mm-setting-color">
223
+ <h4><?php esc_html_e('Badge Text Color', 'wpr-addons'); ?></h4>
224
+ <input type="text" id="wpr_mm_badge_color" data-alpha="true" value="rgba(0,0,0,0.6);">
225
+ </div>
226
+ <div class="wpr-mm-setting wpr-mm-setting-color">
227
+ <h4><?php esc_html_e('Badge Background Color', 'wpr-addons'); ?></h4>
228
+ <input type="text" id="wpr_mm_badge_bg_color" data-alpha="true" value="rgba(0,0,0,0.6);">
229
+ </div>
230
+ <div class="wpr-mm-setting wpr-mm-setting-switcher">
231
+ <h4><?php esc_html_e('Enable Animation', 'wpr-addons'); ?></h4>
232
+ <input type="checkbox" id="wpr_mm_badge_animation">
233
+ <label for="wpr_mm_badge_animation"></label>
234
+ </div>
235
+ </div>
236
+ </div>
237
+
238
+ <div class="wpr-mm-settings-popup-footer">
239
+ <button class="button wpr-save-mega-menu-btn"><?php esc_html_e('Save', 'wpr-addons'); ?></button>
240
+ </div>
241
+ </div>
242
+ </div>
243
+
244
+ <!-- Iframe Popup -->
245
+ <div class="wpr-mm-editor-popup-wrap">
246
+ <div class="wpr-mm-editor-close-popup-btn"><span class="dashicons dashicons-no-alt"></span></div>
247
+ <div class="wpr-mm-editor-popup-iframe"></div>
248
+ </div>
249
+ <?php
250
+ }
251
+
252
+ // Save Mega Menu Settings
253
+ function wpr_save_mega_menu_settings() {
254
+ if ( isset($_POST['item_settings']) ) {
255
+ update_post_meta( $_POST['item_id'], 'wpr-mega-menu-settings', $_POST['item_settings'] );
256
+ }
257
+
258
+ wp_send_json_success($_POST['item_settings']);
259
+ }
260
+
261
+ // Get Menu Items Data
262
+ function get_menu_items_data( $menu_id = false ) {
263
+
264
+ if ( ! $menu_id ) {
265
+ return false;
266
+ }
267
+
268
+ $menu = wp_get_nav_menu_object( $menu_id );
269
+
270
+ $menu_items = wp_get_nav_menu_items( $menu );
271
+
272
+ if ( ! $menu_items ) {
273
+ return false;
274
+ }
275
+
276
+ return $menu_items;
277
+ }
278
+
279
+ // Get Mega Menu Item Settings
280
+ function get_menu_items_settings() {
281
+ $menu_items = get_menu_items_data( get_selected_menu_id() );
282
+
283
+ $settings = [];
284
+
285
+ if ( ! $menu_items ) {
286
+ return [];
287
+ } else {
288
+ foreach ( $menu_items as $key => $item_object ) {
289
+ $item_id = $item_object->ID;
290
+
291
+ $item_meta = get_post_meta( $item_id, 'wpr-mega-menu-settings', true );
292
+
293
+ if ( !empty($item_meta) ) {
294
+ $settings[ $item_id ] = $item_meta;
295
+ } else {
296
+ $settings[ $item_id ] = [];
297
+ }
298
+ }
299
+
300
+ return $settings;
301
+ }
302
+ }
303
+
304
+ /**
305
+ * Get the Selected menu ID
306
+ * @author Tom Hemsley (https://wordpress.org/plugins/megamenu/)
307
+ */
308
+ function get_selected_menu_id() {
309
+ $nav_menus = wp_get_nav_menus( array('orderby' => 'name') );
310
+ $menu_count = count( $nav_menus );
311
+ $nav_menu_selected_id = isset( $_REQUEST['menu'] ) ? (int) $_REQUEST['menu'] : 0;
312
+ $add_new_screen = ( isset( $_GET['menu'] ) && 0 == $_GET['menu'] ) ? true : false;
313
+
314
+ $current_menu_id = $nav_menu_selected_id;
315
+
316
+ // If we have one theme location, and zero menus, we take them right into editing their first menu
317
+ $page_count = wp_count_posts( 'page' );
318
+ $one_theme_location_no_menus = ( 1 == count( get_registered_nav_menus() ) && ! $add_new_screen && empty( $nav_menus ) && ! empty( $page_count->publish ) ) ? true : false;
319
+
320
+ // Get recently edited nav menu
321
+ $recently_edited = absint( get_user_option( 'nav_menu_recently_edited' ) );
322
+ if ( empty( $recently_edited ) && is_nav_menu( $current_menu_id ) ) {
323
+ $recently_edited = $current_menu_id;
324
+ }
325
+
326
+ // Use $recently_edited if none are selected
327
+ if ( empty( $current_menu_id ) && ! isset( $_GET['menu'] ) && is_nav_menu( $recently_edited ) ) {
328
+ $current_menu_id = $recently_edited;
329
+ }
330
+
331
+ // On deletion of menu, if another menu exists, show it
332
+ if ( ! $add_new_screen && 0 < $menu_count && isset( $_GET['action'] ) && 'delete' == $_GET['action'] ) {
333
+ $current_menu_id = $nav_menus[0]->term_id;
334
+ }
335
+
336
+ // Set $current_menu_id to 0 if no menus
337
+ if ( $one_theme_location_no_menus ) {
338
+ $current_menu_id = 0;
339
+ } elseif ( empty( $current_menu_id ) && ! empty( $nav_menus ) && ! $add_new_screen ) {
340
+ // if we have no selection yet, and we have menus, set to the first one in the list
341
+ $current_menu_id = $nav_menus[0]->term_id;
342
+ }
343
+
344
+ return $current_menu_id;
345
+
346
+ }
347
+
348
+ // Enqueue Scripts and Styles
349
+ function enqueue_scripts( $hook ) {
350
+
351
+ // Get Plugin Version
352
+ $version = Plugin::instance()->get_version();
353
+
354
+ // Deny if NOT a Menu Page
355
+ if ( 'nav-menus.php' == $hook ) {
356
+
357
+ // Color Picker
358
+ wp_enqueue_style( 'wp-color-picker' );
359
+ wp_enqueue_script( 'wp-color-picker-alpha', WPR_ADDONS_URL .'assets/js/admin/lib/wp-color-picker-alpha.min.js', ['jquery', 'wp-color-picker'], $version, true );
360
+
361
+ // Icon Picker
362
+ wp_enqueue_script( 'wpr-iconpicker-js', WPR_ADDONS_URL .'assets/js/admin/lib/iconpicker/fontawesome-iconpicker.min.js', ['jquery'], $version, true );
363
+ wp_enqueue_style( 'wpr-iconpicker-css', WPR_ADDONS_URL .'assets/js/admin/lib/iconpicker/fontawesome-iconpicker.min.css', $version, true );
364
+ wp_enqueue_style( 'wpr-el-fontawesome-css', ELEMENTOR_URL .'assets/lib/font-awesome/css/all.min.css', [], $version );
365
+
366
+ // enqueue CSS
367
+ wp_enqueue_style( 'wpr-mega-menu-css', WPR_ADDONS_URL .'assets/css/admin/mega-menu.css', [], $version );
368
+
369
+ // enqueue JS
370
+ wp_enqueue_script( 'wpr-mega-menu-js', WPR_ADDONS_URL .'assets/js/admin/mega-menu.js', ['jquery'], $version );
371
+
372
+ wp_localize_script( 'wpr-mega-menu-js', 'WprMegaMenuSettingsData', get_menu_items_settings() );
373
+
374
+ }
375
+
376
  }
admin/plugin-options.php CHANGED
@@ -1,566 +1,571 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- use WprAddons\Admin\Includes\WPR_Templates_Loop;
8
- use WprAddonsPro\Admin\Wpr_White_Label;
9
- use WprAddons\Classes\Utilities;
10
-
11
- // Register Menus
12
- function wpr_addons_add_admin_menu() {
13
- $menu_icon = !empty(get_option('wpr_wl_plugin_logo')) ? 'dashicons-admin-generic' : 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTciIGhlaWdodD0iNzUiIHZpZXdCb3g9IjAgMCA5NyA3NSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuMDM2NDA4NiAyMy4yODlDLTAuNTc1NDkgMTguNTIxIDYuNjg4NzMgMTYuMzY2NiA5LjU0OSAyMC40Njc4TDQyLjgzNjUgNjguMTk3MkM0NC45MTgxIDcxLjE4MiA0Mi40NDk0IDc1IDM4LjQzNzggNzVIMTEuMjc1NkM4LjY1NDc1IDc1IDYuNDUyNjQgNzMuMjg1NSA2LjE2MTcgNzEuMDE4NEwwLjAzNjQwODYgMjMuMjg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTk2Ljk2MzYgMjMuMjg5Qzk3LjU3NTUgMTguNTIxIDkwLjMxMTMgMTYuMzY2NiA4Ny40NTEgMjAuNDY3OEw1NC4xNjM1IDY4LjE5NzJDNTIuMDgxOCA3MS4xODIgNTQuNTUwNiA3NSA1OC41NjIyIDc1SDg1LjcyNDRDODguMzQ1MiA3NSA5MC41NDc0IDczLjI4NTUgOTAuODM4MyA3MS4wMTg0TDk2Ljk2MzYgMjMuMjg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTUzLjI0MTIgNC40ODUyN0M1My4yNDEyIC0wLjI3MDc2MSA0NS44NDg1IC0xLjc0ODAzIDQzLjQ2NTEgMi41MzE3NEw2LjY4OTkxIDY4LjU2NzdDNS4wMzM0OSA3MS41NDIxIDcuNTIyNzIgNzUgMTEuMzIwMyA3NUg0OC4wOTU1QzUwLjkzNzQgNzUgNTMuMjQxMiA3Mi45OTQ4IDUzLjI0MTIgNzAuNTIxMlY0LjQ4NTI3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTQzLjc1ODggNC40ODUyN0M0My43NTg4IC0wLjI3MDc2MSA1MS4xNTE1IC0xLjc0ODAzIDUzLjUzNDkgMi41MzE3NEw5MC4zMTAxIDY4LjU2NzdDOTEuOTY2NSA3MS41NDIxIDg5LjQ3NzMgNzUgODUuNjc5NyA3NUg0OC45MDQ1QzQ2LjA2MjYgNzUgNDMuNzU4OCA3Mi45OTQ4IDQzLjc1ODggNzAuNTIxMlY0LjQ4NTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==';
14
- add_menu_page( Utilities::get_plugin_name(), Utilities::get_plugin_name(), 'manage_options', 'wpr-addons', 'wpr_addons_settings_page', $menu_icon, '58.6' );
15
-
16
- add_action( 'admin_init', 'wpr_register_addons_settings' );
17
- add_filter( 'plugin_action_links_'. WPR_ADDONS_PLUGIN_BASE, 'wpr_settings_link' );
18
- }
19
- add_action( 'admin_menu', 'wpr_addons_add_admin_menu' );
20
-
21
- // Add Settings page link to plugins screen
22
- function wpr_settings_link( $links ) {
23
- $settings_link = '<a href="admin.php?page=wpr-addons">Settings</a>';
24
- array_push( $links, $settings_link );
25
-
26
- if ( !is_plugin_installed('wpr-addons-pro/wpr-addons-pro.php') ) {
27
- $links[] = '<a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-wpplugindashboard-upgrade-pro#purchasepro" style="color:#93003c;font-weight:700" target="_blank">' . esc_html__('Go Pro', 'wpr-addons') . '</a>';
28
- }
29
-
30
- return $links;
31
- }
32
-
33
- function is_plugin_installed($file) {
34
- $installed_plugins = [];
35
-
36
- foreach( get_plugins() as $slug => $plugin_info ) {
37
- array_push($installed_plugins, $slug);
38
- }
39
-
40
- if ( in_array($file, $installed_plugins) ) {
41
- return true;
42
- } else {
43
- return false;
44
- }
45
- }
46
-
47
- // Register Settings
48
- function wpr_register_addons_settings() {
49
- // WooCommerce
50
- register_setting( 'wpr-settings', 'wpr_override_woo_templates' );
51
- register_setting( 'wpr-settings', 'wpr_enable_product_image_zoom' );
52
- register_setting( 'wpr-settings', 'wpr_enable_woo_flexslider_navigation' );
53
- register_setting( 'wpr-settings', 'wpr_woo_shop_ppp' );
54
- register_setting( 'wpr-settings', 'wpr_woo_shop_cat_ppp' );
55
- register_setting( 'wpr-settings', 'wpr_woo_shop_tag_ppp' );
56
-
57
- // Integrations
58
- register_setting( 'wpr-settings', 'wpr_google_map_api_key' );
59
- register_setting( 'wpr-settings', 'wpr_mailchimp_api_key' );
60
-
61
- // Lightbox
62
- register_setting( 'wpr-settings', 'wpr_lb_bg_color' );
63
- register_setting( 'wpr-settings', 'wpr_lb_toolbar_color' );
64
- register_setting( 'wpr-settings', 'wpr_lb_caption_color' );
65
- register_setting( 'wpr-settings', 'wpr_lb_gallery_color' );
66
- register_setting( 'wpr-settings', 'wpr_lb_pb_color' );
67
- register_setting( 'wpr-settings', 'wpr_lb_ui_color' );
68
- register_setting( 'wpr-settings', 'wpr_lb_ui_hr_color' );
69
- register_setting( 'wpr-settings', 'wpr_lb_text_color' );
70
- register_setting( 'wpr-settings', 'wpr_lb_icon_size' );
71
- register_setting( 'wpr-settings', 'wpr_lb_arrow_size' );
72
- register_setting( 'wpr-settings', 'wpr_lb_text_size' );
73
-
74
- // White Label
75
- register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_logo' );
76
- register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_name' );
77
- register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_desc' );
78
- register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_author' );
79
- register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_website' );
80
- register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_links' );
81
- register_setting( 'wpr-wh-settings', 'wpr_wl_hide_elements_tab' );
82
- register_setting( 'wpr-wh-settings', 'wpr_wl_hide_extensions_tab' );
83
- register_setting( 'wpr-wh-settings', 'wpr_wl_hide_settings_tab' );
84
- register_setting( 'wpr-wh-settings', 'wpr_wl_hide_white_label_tab' );
85
-
86
- // Extensions
87
- register_setting('wpr-extension-settings', 'wpr-particles');
88
- register_setting('wpr-extension-settings', 'wpr-parallax-background');
89
- register_setting('wpr-extension-settings', 'wpr-parallax-multi-layer');
90
- register_setting('wpr-extension-settings', 'wpr-sticky-section');
91
-
92
- // Element Toggle
93
- register_setting( 'wpr-elements-settings', 'wpr-element-toggle-all', [ 'default' => 'on' ] );
94
-
95
- // Widgets
96
- foreach ( Utilities::get_registered_modules() as $title => $data ) {
97
- $slug = $data[0];
98
- register_setting( 'wpr-elements-settings', 'wpr-element-'. $slug, [ 'default' => 'on' ] );
99
- }
100
-
101
- // Theme Builder
102
- foreach ( Utilities::get_theme_builder_modules() as $title => $data ) {
103
- $slug = $data[0];
104
- register_setting( 'wpr-elements-settings', 'wpr-element-'. $slug, [ 'default' => 'on' ] );
105
- }
106
-
107
-
108
- // WooCommerce Builder
109
- foreach ( Utilities::get_woocommerce_builder_modules() as $title => $data ) {
110
- $slug = $data[0];
111
- register_setting( 'wpr-elements-settings', 'wpr-element-'. $slug, [ 'default' => 'on' ] );
112
- }
113
-
114
- }
115
-
116
- function wpr_addons_settings_page() {
117
-
118
- ?>
119
-
120
- <div class="wrap wpr-settings-page-wrap">
121
-
122
- <div class="wpr-settings-page-header">
123
- <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
124
- <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
125
-
126
- <?php if ( empty(get_option('wpr_wl_plugin_links')) ) : ?>
127
- <div class="wpr-preview-buttons">
128
- <a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-plugin-prev-btn#widgets" target="_blank" class="button wpr-options-button">
129
- <span><?php echo esc_html__( 'View Plugin Demo', 'wpr-addons' ); ?></span>
130
- <span class="dashicons dashicons-external"></span>
131
- </a>
132
-
133
- <a href="https://www.youtube.com/watch?v=rkYQfn3tUc0" class="wpr-options-button button" target="_blank">
134
- <?php echo esc_html__( 'How to use Widgets', 'wpr-addons' ); ?>
135
- <span class="dashicons dashicons-video-alt3"></span>
136
- </a>
137
- </div>
138
- <?php endif; ?>
139
- </div>
140
-
141
- <div class="wpr-settings-page">
142
- <form method="post" action="options.php">
143
- <?php
144
-
145
- // Active Tab
146
- if ( empty(get_option('wpr_wl_hide_elements_tab')) ) {
147
- $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_elements';
148
- } elseif ( empty(get_option('wpr_wl_hide_extensions_tab')) ) {
149
- $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_extensions';
150
- } elseif ( empty(get_option('wpr_wl_hide_settings_tab')) ) {
151
- $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_settings';
152
- } elseif ( empty(get_option('wpr_wl_hide_white_label_tab')) ) {
153
- $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_white_label';
154
- }
155
-
156
-
157
- // Render Create Templte Popup
158
- WPR_Templates_Loop::render_create_template_popup();
159
-
160
- ?>
161
-
162
- <!-- Tabs -->
163
- <div class="nav-tab-wrapper wpr-nav-tab-wrapper">
164
- <?php if ( empty(get_option('wpr_wl_hide_elements_tab')) ) : ?>
165
- <a href="?page=wpr-addons&tab=wpr_tab_elements" data-title="Elements" class="nav-tab <?php echo ($active_tab == 'wpr_tab_elements') ? 'nav-tab-active' : ''; ?>">
166
- <?php esc_html_e( 'Widgets', 'wpr-addons' ); ?>
167
- </a>
168
- <?php endif; ?>
169
-
170
- <?php if ( empty(get_option('wpr_wl_hide_extensions_tab')) ) : ?>
171
- <a href="?page=wpr-addons&tab=wpr_tab_extensions" data-title="Extensions" class="nav-tab <?php echo ($active_tab == 'wpr_tab_extensions') ? 'nav-tab-active' : ''; ?>">
172
- <?php esc_html_e( 'Extensions', 'wpr-addons' ); ?>
173
- </a>
174
- <?php endif; ?>
175
-
176
- <?php if ( empty(get_option('wpr_wl_hide_settings_tab')) ) : ?>
177
- <a href="?page=wpr-addons&tab=wpr_tab_settings" data-title="Settings" class="nav-tab <?php echo ($active_tab == 'wpr_tab_settings') ? 'nav-tab-active' : ''; ?>">
178
- <?php esc_html_e( 'Settings', 'wpr-addons' ); ?>
179
- </a>
180
- <?php endif; ?>
181
-
182
- <?php // White Label
183
- echo !empty(get_option('wpr_wl_hide_white_label_tab')) ? '<div style="display: none;">' : '<div>';
184
- do_action('wpr_white_label_tab');
185
- echo '</div>';
186
- ?>
187
- </div>
188
-
189
- <?php if ( $active_tab == 'wpr_tab_elements' ) : ?>
190
-
191
- <?php
192
-
193
- // Settings
194
- settings_fields( 'wpr-elements-settings' );
195
- do_settings_sections( 'wpr-elements-settings' );
196
-
197
- ?>
198
-
199
- <div class="wpr-elements-toggle">
200
- <div>
201
- <h3><?php esc_html_e( 'Toggle all Widgets', 'wpr-addons' ); ?></h3>
202
- <input type="checkbox" name="wpr-element-toggle-all" id="wpr-element-toggle-all" <?php checked( get_option('wpr-element-toggle-all', 'on'), 'on', true ); ?>>
203
- <label for="wpr-element-toggle-all"></label>
204
- </div>
205
- <p><?php esc_html_e( 'You can disable some widgets for faster page speed.', 'wpr-addons' ); ?></p>
206
- </div>
207
- <div class="wpr-elements">
208
- <?php
209
- foreach ( Utilities::get_registered_modules() as $title => $data ) {
210
- $slug = $data[0];
211
- $url = $data[1];
212
- $reff = '?ref=rea-plugin-backend-elements-widget-prev'. $data[2];
213
- $class = 'new' === $data[3] ? ' wpr-new-element' : '';
214
-
215
- echo '<div class="wpr-element'. esc_attr($class) .'">';
216
- echo '<div class="wpr-element-info">';
217
- echo '<h3>'. esc_html($title) .'</h3>';
218
- echo '<input type="checkbox" name="wpr-element-'. esc_attr($slug) .'" id="wpr-element-'. esc_attr($slug) .'" '. checked( get_option('wpr-element-'. $slug, 'on'), 'on', false ) .'>';
219
- echo '<label for="wpr-element-'. esc_attr($slug) .'"></label>';
220
- echo ( '' !== $url && empty(get_option('wpr_wl_plugin_links')) ) ? '<a href="'. esc_url($url . $reff) .'" target="_blank">'. esc_html__('View Widget Demo', 'wpr-addons') .'</a>' : '';
221
- echo '</div>';
222
- echo '</div>';
223
- }
224
- ?>
225
- </div>
226
-
227
- <div class="wpr-elements-heading">
228
- <h3><?php esc_html_e( 'Theme Builder Widgets', 'wpr-addons' ); ?></h3>
229
- <p><?php esc_html_e( 'Post (CPT) Archive Pages, Post (CPT) Single Pages', 'wpr-addons' ); ?></p>
230
- </div>
231
- <div class="wpr-elements">
232
- <?php
233
- foreach ( Utilities::get_theme_builder_modules() as $title => $data ) {
234
- $slug = $data[0];
235
- $url = $data[1];
236
- $reff = '?ref=rea-plugin-backend-elements-widget-prev'. $data[2];
237
- $class = 'new' === $data[3] ? ' wpr-new-element' : '';
238
-
239
- echo '<div class="wpr-element'. esc_attr($class) .'">';
240
- echo '<div class="wpr-element-info">';
241
- echo '<h3>'. esc_html($title) .'</h3>';
242
- echo '<input type="checkbox" name="wpr-element-'. esc_attr($slug) .'" id="wpr-element-'. esc_attr($slug) .'" '. checked( get_option('wpr-element-'. $slug, 'on'), 'on', false ) .'>';
243
- echo '<label for="wpr-element-'. esc_attr($slug) .'"></label>';
244
- echo ( '' !== $url && empty(get_option('wpr_wl_plugin_links')) ) ? '<a href="'. esc_url($url . $reff) .'" target="_blank">'. esc_html__('View Widget Demo', 'wpr-addons') .'</a>' : '';
245
- echo '</div>';
246
- echo '</div>';
247
- }
248
- ?>
249
- </div>
250
-
251
- <div class="wpr-elements-heading">
252
- <h3><?php esc_html_e( 'WooCommerce Builder Widgets', 'wpr-addons' ); ?></h3>
253
- <p><?php esc_html_e( 'Product Archive Pages, Product Single Pages. Cart, Checkout and My Account Pages', 'wpr-addons' ); ?></p>
254
- <?php if (!class_exists('WooCommerce')) : ?>
255
- <p class='wpr-install-activate-woocommerce'><span class="dashicons dashicons-info-outline"></span> <?php esc_html_e( 'Install/Activate WooCommerce to use these widgets', 'wpr-addons' ); ?></p>
256
- <?php endif; ?>
257
- </div>
258
- <div class="wpr-elements">
259
- <?php
260
- $woocommerce_builder_modules = Utilities::get_woocommerce_builder_modules();
261
- $premium_woo_modules = [
262
- 'Product Filters' => ['product-filters-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-prodfilter-widgets-pro#purchasepro', '', 'pro'],
263
- 'Product Breadcrumbs' => ['product-breadcrumbs-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-breadcru-widgets-pro#purchasepro', '', 'pro'],
264
- 'Page My Account' => ['page-my-account-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-myacc-widgets-pro#purchasepro', '', 'pro'],
265
- 'Woo Category Grid' => ['woo-category-grid-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-catgrid-widgets-pro#purchasepro', '', 'pro'],
266
- ];
267
-
268
- foreach ( array_merge($woocommerce_builder_modules, $premium_woo_modules) as $title => $data ) {
269
- $slug = $data[0];
270
- $url = $data[1];
271
- $reff = '?ref=rea-plugin-backend-elements-widget-prev'. $data[1];
272
- $class = 'new' === $data[3] ? 'wpr-new-element' : '';
273
- $class = ('pro' === $data[3] && !wpr_fs()->can_use_premium_code()) ? 'wpr-pro-element' : '';
274
- $default_value = class_exists( 'WooCommerce' ) ? 'on' : 'off';
275
-
276
- if ( 'wpr-pro-element' === $class ) {
277
- $default_value = 'off';
278
- $reff = '';
279
- }
280
-
281
- echo '<div class="wpr-element '. esc_attr($class) .'">';
282
- echo '<a href="'. esc_url($url . $reff) .'" target="_blank"></a>';
283
- echo '<div class="wpr-element-info">';
284
- echo '<h3>'. esc_html($title) .'</h3>';
285
- echo '<input type="checkbox" name="wpr-element-'. esc_attr($slug) .'" id="wpr-element-'. esc_attr($slug) .'" '. checked( get_option('wpr-element-'. $slug, $default_value), 'on', false ) .'>';
286
- echo '<label for="wpr-element-'. esc_attr($slug) .'"></label>';
287
- // echo ( '' !== $url && empty(get_option('wpr_wl_plugin_links')) ) ? '<a href="'. esc_url($url . $reff) .'" target="_blank">'. esc_html__('View Widget Demo', 'wpr-addons') .'</a>' : '';
288
- echo '</div>';
289
- echo '</div>';
290
- }
291
- ?>
292
- </div>
293
-
294
- <?php submit_button( '', 'wpr-options-button' ); ?>
295
-
296
- <?php elseif ( $active_tab == 'wpr_tab_settings' ) : ?>
297
-
298
- <?php
299
-
300
- // Settings
301
- settings_fields( 'wpr-settings' );
302
- do_settings_sections( 'wpr-settings' );
303
-
304
- ?>
305
-
306
- <div class="wpr-settings">
307
-
308
- <?php submit_button( '', 'wpr-options-button' ); ?>
309
-
310
- <div class="wpr-settings-group wpr-settings-group-woo">
311
- <h3 class="wpr-settings-group-title"><?php esc_html_e( 'WooCommerce', 'wpr-addons' ); ?></h3>
312
-
313
- <div class="wpr-settings-group-inner">
314
-
315
- <?php if ( !wpr_fs()->can_use_premium_code() ) : ?>
316
- <a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-settings-woo-pro#purchasepro" class="wpr-settings-pro-overlay" target="_blank">
317
- <span class="dashicons dashicons-lock"></span>
318
- <span class="dashicons dashicons-unlock"></span>
319
- <span><?php esc_html_e( 'Upgrade to Pro', 'wpr-addons' ); ?></span>
320
- </a>
321
- <div class="wpr-setting">
322
- <h4>
323
- <span><?php esc_html_e( 'Shop Page: Products Per Page', 'wpr-addons' ); ?></span>
324
- <br>
325
- </h4>
326
- <input type="text" value="9">
327
- </div>
328
- <div class="wpr-setting">
329
- <h4>
330
- <span><?php esc_html_e( 'Product Category: Products Per Page', 'wpr-addons' ); ?></span>
331
- <br>
332
- </h4>
333
- <input type="text" value="9">
334
- </div>
335
- <div class="wpr-setting">
336
- <h4>
337
- <span><?php esc_html_e( 'Product Tag: Products Per Page', 'wpr-addons' ); ?></span>
338
- <br>
339
- </h4>
340
- <input type="text" value="9">
341
- </div>
342
- <?php else: ?>
343
- <?php do_action('wpr_woocommerce_settings'); ?>
344
- <?php endif; ?>
345
-
346
- </div>
347
-
348
- <div class="wpr-woo-template-info">
349
- <div class="wpr-woo-template-title">
350
- <h4>Royal Templates</h4>
351
- <span>Enable/Disable Royal addons Cart, Minicart, Notifications Templates, Product Lightbox</span>
352
- </div>
353
- <input type="checkbox" name="wpr_override_woo_templates" id="wpr_override_woo_templates" <?php echo checked( get_option('wpr_override_woo_templates', 'on'), 'on', false ); ?>>
354
- <label for="wpr_override_woo_templates"></label>
355
- </div>
356
-
357
- <div class="wpr-woo-template-info">
358
- <div class="wpr-woo-template-title">
359
- <h4>Product Image Zoom</h4>
360
- <span>Enable/Disable Image Zoom Effect on Woocommerce products</span>
361
- </div>
362
- <input type="checkbox" name="wpr_enable_product_image_zoom" id="wpr_enable_product_image_zoom" <?php echo checked( get_option('wpr_enable_product_image_zoom', 'on'), 'on', false ); ?>>
363
- <label for="wpr_enable_product_image_zoom"></label>
364
- </div>
365
-
366
- <div class="wpr-woo-template-info">
367
- <div class="wpr-woo-template-title">
368
- <h4>Product Slider Nav</h4>
369
- <span>Enable/Disable Navigation Arrows on Woocommerce products slider</span>
370
- </div>
371
- <input type="checkbox" name="wpr_enable_woo_flexslider_navigation" id="wpr_enable_woo_flexslider_navigation" <?php echo checked( get_option('wpr_enable_woo_flexslider_navigation', 'on'), 'on', false ); ?>>
372
- <label for="wpr_enable_woo_flexslider_navigation"></label>
373
- </div>
374
-
375
- </div>
376
-
377
- <div class="wpr-settings-group">
378
- <h3 class="wpr-settings-group-title"><?php esc_html_e( 'Integrations', 'wpr-addons' ); ?></h3>
379
-
380
- <div class="wpr-setting">
381
- <h4>
382
- <span><?php esc_html_e( 'Google Map API Key', 'wpr-addons' ); ?></span>
383
- <br>
384
- <a href="https://www.youtube.com/watch?v=O5cUoVpVUjU" target="_blank"><?php esc_html_e( 'How to get Google Map API Key?', 'wpr-addons' ); ?></a>
385
- </h4>
386
-
387
- <input type="text" name="wpr_google_map_api_key" id="wpr_google_map_api_key" value="<?php echo esc_attr(get_option('wpr_google_map_api_key')); ?>">
388
- </div>
389
-
390
- <div class="wpr-setting">
391
- <h4>
392
- <span><?php esc_html_e( 'MailChimp API Key', 'wpr-addons' ); ?></span>
393
- <br>
394
- <a href="https://mailchimp.com/help/about-api-keys/" target="_blank"><?php esc_html_e( 'How to get MailChimp API Key?', 'wpr-addons' ); ?></a>
395
- </h4>
396
-
397
- <input type="text" name="wpr_mailchimp_api_key" id="wpr_mailchimp_api_key" value="<?php echo esc_attr(get_option('wpr_mailchimp_api_key')); ?>">
398
- </div>
399
- </div>
400
-
401
- <div class="wpr-settings-group">
402
- <h3 class="wpr-settings-group-title"><?php esc_html_e( 'Lightbox', 'wpr-addons' ); ?></h3>
403
-
404
- <div class="wpr-setting">
405
- <h4><?php esc_html_e( 'Background Color', 'wpr-addons' ); ?></h4>
406
- <input type="text" name="wpr_lb_bg_color" id="wpr_lb_bg_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_bg_color','rgba(0,0,0,0.6)')); ?>">
407
- </div>
408
-
409
- <div class="wpr-setting">
410
- <h4><?php esc_html_e( 'Toolbar BG Color', 'wpr-addons' ); ?></h4>
411
- <input type="text" name="wpr_lb_toolbar_color" id="wpr_lb_toolbar_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_toolbar_color','rgba(0,0,0,0.8)')); ?>">
412
- </div>
413
-
414
- <div class="wpr-setting">
415
- <h4><?php esc_html_e( 'Caption BG Color', 'wpr-addons' ); ?></h4>
416
- <input type="text" name="wpr_lb_caption_color" id="wpr_lb_caption_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_caption_color','rgba(0,0,0,0.8)')); ?>">
417
- </div>
418
-
419
- <div class="wpr-setting">
420
- <h4><?php esc_html_e( 'Gallery BG Color', 'wpr-addons' ); ?></h4>
421
- <input type="text" name="wpr_lb_gallery_color" id="wpr_lb_gallery_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_gallery_color','#444444')); ?>">
422
- </div>
423
-
424
- <div class="wpr-setting">
425
- <h4><?php esc_html_e( 'Progress Bar Color', 'wpr-addons' ); ?></h4>
426
- <input type="text" name="wpr_lb_pb_color" id="wpr_lb_pb_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_pb_color','#a90707')); ?>">
427
- </div>
428
-
429
- <div class="wpr-setting">
430
- <h4><?php esc_html_e( 'UI Color', 'wpr-addons' ); ?></h4>
431
- <input type="text" name="wpr_lb_ui_color" id="wpr_lb_ui_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_ui_color','#efefef')); ?>">
432
- </div>
433
-
434
- <div class="wpr-setting">
435
- <h4><?php esc_html_e( 'UI Hover Color', 'wpr-addons' ); ?></h4>
436
- <input type="text" name="wpr_lb_ui_hr_color" id="wpr_lb_ui_hr_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_ui_hr_color','#ffffff')); ?>">
437
- </div>
438
-
439
- <div class="wpr-setting">
440
- <h4><?php esc_html_e( 'Text Color', 'wpr-addons' ); ?></h4>
441
- <input type="text" name="wpr_lb_text_color" id="wpr_lb_text_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_text_color','#efefef')); ?>">
442
- </div>
443
-
444
- <div class="wpr-setting">
445
- <h4><?php esc_html_e( 'UI Icon Size', 'wpr-addons' ); ?></h4>
446
- <input type="number" name="wpr_lb_icon_size" id="wpr_lb_icon_size" value="<?php echo esc_attr(get_option('wpr_lb_icon_size','20')); ?>">
447
- </div>
448
-
449
- <div class="wpr-setting">
450
- <h4><?php esc_html_e( 'Navigation Arrow Size', 'wpr-addons' ); ?></h4>
451
- <input type="number" name="wpr_lb_arrow_size" id="wpr_lb_arrow_size" value="<?php echo esc_attr(get_option('wpr_lb_arrow_size','35')); ?>">
452
- </div>
453
-
454
- <div class="wpr-setting">
455
- <h4><?php esc_html_e( 'Text Size', 'wpr-addons' ); ?></h4>
456
- <input type="number" name="wpr_lb_text_size" id="wpr_lb_text_size" value="<?php echo esc_attr(get_option('wpr_lb_text_size','14')); ?>">
457
- </div>
458
- </div>
459
-
460
- <?php submit_button( '', 'wpr-options-button' ); ?>
461
-
462
- </div>
463
-
464
- <?php elseif ( $active_tab == 'wpr_tab_extensions' ) :
465
-
466
- // Extensions
467
- settings_fields( 'wpr-extension-settings' );
468
- do_settings_sections( 'wpr-extension-settings' );
469
-
470
- global $new_allowed_options;
471
-
472
- // array of option names
473
- $option_names = $new_allowed_options[ 'wpr-extension-settings' ];
474
-
475
- echo '<div class="wpr-elements">';
476
-
477
- foreach ($option_names as $option_name) {
478
- $option_title = ucwords( preg_replace( '/-/i', ' ', preg_replace('/wpr-||-toggle/i', '', $option_name ) ));
479
-
480
- echo '<div class="wpr-element">';
481
- echo '<div class="wpr-element-info">';
482
- echo '<h3>'. esc_html($option_title) .'</h3>';
483
- echo '<input type="checkbox" name="'. esc_attr($option_name) .'" id="'. esc_attr($option_name) .'" '. checked( get_option(''. $option_name .'', 'on'), 'on', false ) .'>';
484
- echo '<label for="'. esc_attr($option_name) .'"></label>';
485
-
486
- if ( 'wpr-parallax-background' === $option_name ) {
487
- echo '<br><span>Tip: Edit any Section > Navigate to Style tab</span>';
488
- echo '<a href="https://www.youtube.com/watch?v=DcDeQ__lJbw" target="_blank">Watch Video Tutorial</a>';
489
- } elseif ( 'wpr-parallax-multi-layer' === $option_name ) {
490
- echo '<br><span>Tip: Edit any Section > Navigate to Style tab</span>';
491
- echo '<a href="https://youtu.be/DcDeQ__lJbw?t=121" target="_blank">Watch Video Tutorial</a>';
492
- } elseif ( 'wpr-particles' === $option_name ) {
493
- echo '<br><span>Tip: Edit any Section > Navigate to Style tab</span>';
494
- echo '<a href="https://www.youtube.com/watch?v=8OdnaoFSj94" target="_blank">Watch Video Tutorial</a>';
495
- } elseif ( 'wpr-sticky-section' === $option_name ) {
496
- echo '<br><span>Tip: Edit any Section > Navigate to Advanced tab</span>';
497
- echo '<a href="https://www.youtube.com/watch?v=at0CPKtklF0&t=375s" target="_blank">Watch Video Tutorial</a>';
498
- }
499
-
500
- // echo '<a href="https://royal-elementor-addons.com/elementor-particle-effects/?ref=rea-plugin-backend-extentions-prev">'. esc_html('View Extension Demo', 'wpr-addons') .'</a>';
501
- echo '</div>';
502
- echo '</div>';
503
- }
504
-
505
- echo '</div>';
506
-
507
- submit_button( '', 'wpr-options-button' );
508
-
509
- elseif ( $active_tab == 'wpr_tab_white_label' ) :
510
-
511
- do_action('wpr_white_label_tab_content');
512
-
513
- endif; ?>
514
-
515
- </form>
516
- </div>
517
-
518
- </div>
519
-
520
-
521
- <?php
522
-
523
- } // End wpr_addons_settings_page()
524
-
525
-
526
-
527
- // Add Support Sub Menu item that will redirect to wp.org
528
- function wpr_addons_add_support_menu() {
529
- add_submenu_page( 'wpr-addons', 'Support', 'Support', 'manage_options', 'wpr-support', 'wpr_addons_support_page', 99 );
530
- }
531
- add_action( 'admin_menu', 'wpr_addons_add_support_menu', 99 );
532
-
533
- function wpr_addons_support_page() {}
534
-
535
- function wpr_redirect_support_page() {
536
- ?>
537
- <script type="text/javascript">
538
- jQuery(document).ready( function($) {
539
- $( 'ul#adminmenu a[href*="page=wpr-support"]' ).attr('href', 'https://wordpress.org/support/plugin/royal-elementor-addons/').attr( 'target', '_blank' );
540
- });
541
- </script>
542
- <?php
543
- }
544
- add_action( 'admin_head', 'wpr_redirect_support_page' );
545
-
546
-
547
- // Add Upgrade Sub Menu item that will redirect to royal-elementor-addons.com
548
- function wpr_addons_add_upgrade_menu() {
549
- if ( defined('WPR_ADDONS_PRO_VERSION') ) return;
550
- add_submenu_page( 'wpr-addons', 'Upgrade', 'Upgrade', 'manage_options', 'wpr-upgrade', 'wpr_addons_upgrade_page', 99 );
551
- }
552
- add_action( 'admin_menu', 'wpr_addons_add_upgrade_menu', 99 );
553
-
554
- function wpr_addons_upgrade_page() {}
555
-
556
- function wpr_redirect_upgrade_page() {
557
- ?>
558
- <script type="text/javascript">
559
- jQuery(document).ready( function($) {
560
- $( 'ul#adminmenu a[href*="page=wpr-upgrade"]' ).attr('href', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-menu-upgrade-pro#purchasepro').attr( 'target', '_blank' );
561
- $( 'ul#adminmenu a[href*="#purchasepro"]' ).css('color', 'greenyellow');
562
- });
563
- </script>
564
- <?php
565
- }
 
 
 
 
 
566
  add_action( 'admin_head', 'wpr_redirect_upgrade_page' );
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ use WprAddons\Admin\Includes\WPR_Templates_Loop;
8
+ use WprAddonsPro\Admin\Wpr_White_Label;
9
+ use WprAddons\Classes\Utilities;
10
+
11
+ // Register Menus
12
+ function wpr_addons_add_admin_menu() {
13
+ $menu_icon = !empty(get_option('wpr_wl_plugin_logo')) ? 'dashicons-admin-generic' : 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTciIGhlaWdodD0iNzUiIHZpZXdCb3g9IjAgMCA5NyA3NSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuMDM2NDA4NiAyMy4yODlDLTAuNTc1NDkgMTguNTIxIDYuNjg4NzMgMTYuMzY2NiA5LjU0OSAyMC40Njc4TDQyLjgzNjUgNjguMTk3MkM0NC45MTgxIDcxLjE4MiA0Mi40NDk0IDc1IDM4LjQzNzggNzVIMTEuMjc1NkM4LjY1NDc1IDc1IDYuNDUyNjQgNzMuMjg1NSA2LjE2MTcgNzEuMDE4NEwwLjAzNjQwODYgMjMuMjg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTk2Ljk2MzYgMjMuMjg5Qzk3LjU3NTUgMTguNTIxIDkwLjMxMTMgMTYuMzY2NiA4Ny40NTEgMjAuNDY3OEw1NC4xNjM1IDY4LjE5NzJDNTIuMDgxOCA3MS4xODIgNTQuNTUwNiA3NSA1OC41NjIyIDc1SDg1LjcyNDRDODguMzQ1MiA3NSA5MC41NDc0IDczLjI4NTUgOTAuODM4MyA3MS4wMTg0TDk2Ljk2MzYgMjMuMjg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTUzLjI0MTIgNC40ODUyN0M1My4yNDEyIC0wLjI3MDc2MSA0NS44NDg1IC0xLjc0ODAzIDQzLjQ2NTEgMi41MzE3NEw2LjY4OTkxIDY4LjU2NzdDNS4wMzM0OSA3MS41NDIxIDcuNTIyNzIgNzUgMTEuMzIwMyA3NUg0OC4wOTU1QzUwLjkzNzQgNzUgNTMuMjQxMiA3Mi45OTQ4IDUzLjI0MTIgNzAuNTIxMlY0LjQ4NTI3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTQzLjc1ODggNC40ODUyN0M0My43NTg4IC0wLjI3MDc2MSA1MS4xNTE1IC0xLjc0ODAzIDUzLjUzNDkgMi41MzE3NEw5MC4zMTAxIDY4LjU2NzdDOTEuOTY2NSA3MS41NDIxIDg5LjQ3NzMgNzUgODUuNjc5NyA3NUg0OC45MDQ1QzQ2LjA2MjYgNzUgNDMuNzU4OCA3Mi45OTQ4IDQzLjc1ODggNzAuNTIxMlY0LjQ4NTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==';
14
+ add_menu_page( Utilities::get_plugin_name(), Utilities::get_plugin_name(), 'manage_options', 'wpr-addons', 'wpr_addons_settings_page', $menu_icon, '58.6' );
15
+
16
+ add_action( 'admin_init', 'wpr_register_addons_settings' );
17
+ add_filter( 'plugin_action_links_'. WPR_ADDONS_PLUGIN_BASE, 'wpr_settings_link' );
18
+ }
19
+ add_action( 'admin_menu', 'wpr_addons_add_admin_menu' );
20
+
21
+ // Add Settings page link to plugins screen
22
+ function wpr_settings_link( $links ) {
23
+ $settings_link = '<a href="admin.php?page=wpr-addons">Settings</a>';
24
+ array_push( $links, $settings_link );
25
+
26
+ if ( !is_plugin_installed('wpr-addons-pro/wpr-addons-pro.php') ) {
27
+ $links[] = '<a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-wpplugindashboard-upgrade-pro#purchasepro" style="color:#93003c;font-weight:700" target="_blank">' . esc_html__('Go Pro', 'wpr-addons') . '</a>';
28
+ }
29
+
30
+ return $links;
31
+ }
32
+
33
+ function is_plugin_installed($file) {
34
+ $installed_plugins = [];
35
+
36
+ foreach( get_plugins() as $slug => $plugin_info ) {
37
+ array_push($installed_plugins, $slug);
38
+ }
39
+
40
+ if ( in_array($file, $installed_plugins) ) {
41
+ return true;
42
+ } else {
43
+ return false;
44
+ }
45
+ }
46
+
47
+ // Register Settings
48
+ function wpr_register_addons_settings() {
49
+ // WooCommerce
50
+ register_setting( 'wpr-settings', 'wpr_override_woo_templates' );
51
+ register_setting( 'wpr-settings', 'wpr_enable_product_image_zoom' );
52
+ register_setting( 'wpr-settings', 'wpr_enable_woo_flexslider_navigation' );
53
+ register_setting( 'wpr-settings', 'wpr_woo_shop_ppp' );
54
+ register_setting( 'wpr-settings', 'wpr_woo_shop_cat_ppp' );
55
+ register_setting( 'wpr-settings', 'wpr_woo_shop_tag_ppp' );
56
+
57
+ // Integrations
58
+ register_setting( 'wpr-settings', 'wpr_google_map_api_key' );
59
+ register_setting( 'wpr-settings', 'wpr_mailchimp_api_key' );
60
+
61
+ // Lightbox
62
+ register_setting( 'wpr-settings', 'wpr_lb_bg_color' );
63
+ register_setting( 'wpr-settings', 'wpr_lb_toolbar_color' );
64
+ register_setting( 'wpr-settings', 'wpr_lb_caption_color' );
65
+ register_setting( 'wpr-settings', 'wpr_lb_gallery_color' );
66
+ register_setting( 'wpr-settings', 'wpr_lb_pb_color' );
67
+ register_setting( 'wpr-settings', 'wpr_lb_ui_color' );
68
+ register_setting( 'wpr-settings', 'wpr_lb_ui_hr_color' );
69
+ register_setting( 'wpr-settings', 'wpr_lb_text_color' );
70
+ register_setting( 'wpr-settings', 'wpr_lb_icon_size' );
71
+ register_setting( 'wpr-settings', 'wpr_lb_arrow_size' );
72
+ register_setting( 'wpr-settings', 'wpr_lb_text_size' );
73
+
74
+ // White Label
75
+ register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_logo' );
76
+ register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_name' );
77
+ register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_desc' );
78
+ register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_author' );
79
+ register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_website' );
80
+ register_setting( 'wpr-wh-settings', 'wpr_wl_plugin_links' );
81
+ register_setting( 'wpr-wh-settings', 'wpr_wl_hide_elements_tab' );
82
+ register_setting( 'wpr-wh-settings', 'wpr_wl_hide_extensions_tab' );
83
+ register_setting( 'wpr-wh-settings', 'wpr_wl_hide_settings_tab' );
84
+ register_setting( 'wpr-wh-settings', 'wpr_wl_hide_white_label_tab' );
85
+
86
+ // Extensions
87
+ register_setting('wpr-extension-settings', 'wpr-particles');
88
+ register_setting('wpr-extension-settings', 'wpr-parallax-background');
89
+ register_setting('wpr-extension-settings', 'wpr-parallax-multi-layer');
90
+ register_setting('wpr-extension-settings', 'wpr-sticky-section');
91
+
92
+ // Element Toggle
93
+ register_setting( 'wpr-elements-settings', 'wpr-element-toggle-all', [ 'default' => 'on' ] );
94
+
95
+ // Widgets
96
+ foreach ( Utilities::get_registered_modules() as $title => $data ) {
97
+ $slug = $data[0];
98
+ register_setting( 'wpr-elements-settings', 'wpr-element-'. $slug, [ 'default' => 'on' ] );
99
+ }
100
+
101
+ // Theme Builder
102
+ foreach ( Utilities::get_theme_builder_modules() as $title => $data ) {
103
+ $slug = $data[0];
104
+ register_setting( 'wpr-elements-settings', 'wpr-element-'. $slug, [ 'default' => 'on' ] );
105
+ }
106
+
107
+
108
+ // WooCommerce Builder
109
+ foreach ( Utilities::get_woocommerce_builder_modules() as $title => $data ) {
110
+ $slug = $data[0];
111
+ register_setting( 'wpr-elements-settings', 'wpr-element-'. $slug, [ 'default' => 'on' ] );
112
+ }
113
+
114
+ }
115
+
116
+ function wpr_addons_settings_page() {
117
+
118
+ ?>
119
+
120
+ <div class="wrap wpr-settings-page-wrap">
121
+
122
+ <div class="wpr-settings-page-header">
123
+ <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
124
+ <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
125
+
126
+ <?php if ( empty(get_option('wpr_wl_plugin_links')) ) : ?>
127
+ <div class="wpr-preview-buttons">
128
+ <a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-plugin-prev-btn#widgets" target="_blank" class="button wpr-options-button">
129
+ <span><?php echo esc_html__( 'View Plugin Demo', 'wpr-addons' ); ?></span>
130
+ <span class="dashicons dashicons-external"></span>
131
+ </a>
132
+
133
+ <a href="https://www.youtube.com/watch?v=rkYQfn3tUc0" class="wpr-options-button button" target="_blank">
134
+ <?php echo esc_html__( 'How to use Widgets', 'wpr-addons' ); ?>
135
+ <span class="dashicons dashicons-video-alt3"></span>
136
+ </a>
137
+
138
+ <a href="https://royaladdons.frill.co/b/6m4d5qm4/feature-ideas" class="wpr-options-button button" target="_blank">
139
+ <?php echo esc_html__( 'Request New Feature', 'wpr-addons' ); ?>
140
+ <span class="dashicons dashicons-star-empty"></span>
141
+ </a>
142
+ </div>
143
+ <?php endif; ?>
144
+ </div>
145
+
146
+ <div class="wpr-settings-page">
147
+ <form method="post" action="options.php">
148
+ <?php
149
+
150
+ // Active Tab
151
+ if ( empty(get_option('wpr_wl_hide_elements_tab')) ) {
152
+ $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_elements';
153
+ } elseif ( empty(get_option('wpr_wl_hide_extensions_tab')) ) {
154
+ $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_extensions';
155
+ } elseif ( empty(get_option('wpr_wl_hide_settings_tab')) ) {
156
+ $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_settings';
157
+ } elseif ( empty(get_option('wpr_wl_hide_white_label_tab')) ) {
158
+ $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_white_label';
159
+ }
160
+
161
+
162
+ // Render Create Templte Popup
163
+ WPR_Templates_Loop::render_create_template_popup();
164
+
165
+ ?>
166
+
167
+ <!-- Tabs -->
168
+ <div class="nav-tab-wrapper wpr-nav-tab-wrapper">
169
+ <?php if ( empty(get_option('wpr_wl_hide_elements_tab')) ) : ?>
170
+ <a href="?page=wpr-addons&tab=wpr_tab_elements" data-title="Elements" class="nav-tab <?php echo ($active_tab == 'wpr_tab_elements') ? 'nav-tab-active' : ''; ?>">
171
+ <?php esc_html_e( 'Widgets', 'wpr-addons' ); ?>
172
+ </a>
173
+ <?php endif; ?>
174
+
175
+ <?php if ( empty(get_option('wpr_wl_hide_extensions_tab')) ) : ?>
176
+ <a href="?page=wpr-addons&tab=wpr_tab_extensions" data-title="Extensions" class="nav-tab <?php echo ($active_tab == 'wpr_tab_extensions') ? 'nav-tab-active' : ''; ?>">
177
+ <?php esc_html_e( 'Extensions', 'wpr-addons' ); ?>
178
+ </a>
179
+ <?php endif; ?>
180
+
181
+ <?php if ( empty(get_option('wpr_wl_hide_settings_tab')) ) : ?>
182
+ <a href="?page=wpr-addons&tab=wpr_tab_settings" data-title="Settings" class="nav-tab <?php echo ($active_tab == 'wpr_tab_settings') ? 'nav-tab-active' : ''; ?>">
183
+ <?php esc_html_e( 'Settings', 'wpr-addons' ); ?>
184
+ </a>
185
+ <?php endif; ?>
186
+
187
+ <?php // White Label
188
+ echo !empty(get_option('wpr_wl_hide_white_label_tab')) ? '<div style="display: none;">' : '<div>';
189
+ do_action('wpr_white_label_tab');
190
+ echo '</div>';
191
+ ?>
192
+ </div>
193
+
194
+ <?php if ( $active_tab == 'wpr_tab_elements' ) : ?>
195
+
196
+ <?php
197
+
198
+ // Settings
199
+ settings_fields( 'wpr-elements-settings' );
200
+ do_settings_sections( 'wpr-elements-settings' );
201
+
202
+ ?>
203
+
204
+ <div class="wpr-elements-toggle">
205
+ <div>
206
+ <h3><?php esc_html_e( 'Toggle all Widgets', 'wpr-addons' ); ?></h3>
207
+ <input type="checkbox" name="wpr-element-toggle-all" id="wpr-element-toggle-all" <?php checked( get_option('wpr-element-toggle-all', 'on'), 'on', true ); ?>>
208
+ <label for="wpr-element-toggle-all"></label>
209
+ </div>
210
+ <p><?php esc_html_e( 'You can disable some widgets for faster page speed.', 'wpr-addons' ); ?></p>
211
+ </div>
212
+ <div class="wpr-elements">
213
+ <?php
214
+ foreach ( Utilities::get_registered_modules() as $title => $data ) {
215
+ $slug = $data[0];
216
+ $url = $data[1];
217
+ $reff = '?ref=rea-plugin-backend-elements-widget-prev'. $data[2];
218
+ $class = 'new' === $data[3] ? ' wpr-new-element' : '';
219
+
220
+ echo '<div class="wpr-element'. esc_attr($class) .'">';
221
+ echo '<div class="wpr-element-info">';
222
+ echo '<h3>'. esc_html($title) .'</h3>';
223
+ echo '<input type="checkbox" name="wpr-element-'. esc_attr($slug) .'" id="wpr-element-'. esc_attr($slug) .'" '. checked( get_option('wpr-element-'. $slug, 'on'), 'on', false ) .'>';
224
+ echo '<label for="wpr-element-'. esc_attr($slug) .'"></label>';
225
+ echo ( '' !== $url && empty(get_option('wpr_wl_plugin_links')) ) ? '<a href="'. esc_url($url . $reff) .'" target="_blank">'. esc_html__('View Widget Demo', 'wpr-addons') .'</a>' : '';
226
+ echo '</div>';
227
+ echo '</div>';
228
+ }
229
+ ?>
230
+ </div>
231
+
232
+ <div class="wpr-elements-heading">
233
+ <h3><?php esc_html_e( 'Theme Builder Widgets', 'wpr-addons' ); ?></h3>
234
+ <p><?php esc_html_e( 'Post (CPT) Archive Pages, Post (CPT) Single Pages', 'wpr-addons' ); ?></p>
235
+ </div>
236
+ <div class="wpr-elements">
237
+ <?php
238
+ foreach ( Utilities::get_theme_builder_modules() as $title => $data ) {
239
+ $slug = $data[0];
240
+ $url = $data[1];
241
+ $reff = '?ref=rea-plugin-backend-elements-widget-prev'. $data[2];
242
+ $class = 'new' === $data[3] ? ' wpr-new-element' : '';
243
+
244
+ echo '<div class="wpr-element'. esc_attr($class) .'">';
245
+ echo '<div class="wpr-element-info">';
246
+ echo '<h3>'. esc_html($title) .'</h3>';
247
+ echo '<input type="checkbox" name="wpr-element-'. esc_attr($slug) .'" id="wpr-element-'. esc_attr($slug) .'" '. checked( get_option('wpr-element-'. $slug, 'on'), 'on', false ) .'>';
248
+ echo '<label for="wpr-element-'. esc_attr($slug) .'"></label>';
249
+ echo ( '' !== $url && empty(get_option('wpr_wl_plugin_links')) ) ? '<a href="'. esc_url($url . $reff) .'" target="_blank">'. esc_html__('View Widget Demo', 'wpr-addons') .'</a>' : '';
250
+ echo '</div>';
251
+ echo '</div>';
252
+ }
253
+ ?>
254
+ </div>
255
+
256
+ <div class="wpr-elements-heading">
257
+ <h3><?php esc_html_e( 'WooCommerce Builder Widgets', 'wpr-addons' ); ?></h3>
258
+ <p><?php esc_html_e( 'Product Archive Pages, Product Single Pages. Cart, Checkout and My Account Pages', 'wpr-addons' ); ?></p>
259
+ <?php if (!class_exists('WooCommerce')) : ?>
260
+ <p class='wpr-install-activate-woocommerce'><span class="dashicons dashicons-info-outline"></span> <?php esc_html_e( 'Install/Activate WooCommerce to use these widgets', 'wpr-addons' ); ?></p>
261
+ <?php endif; ?>
262
+ </div>
263
+ <div class="wpr-elements">
264
+ <?php
265
+ $woocommerce_builder_modules = Utilities::get_woocommerce_builder_modules();
266
+ $premium_woo_modules = [
267
+ 'Product Filters' => ['product-filters-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-prodfilter-widgets-pro#purchasepro', '', 'pro'],
268
+ 'Product Breadcrumbs' => ['product-breadcrumbs-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-breadcru-widgets-pro#purchasepro', '', 'pro'],
269
+ 'Page My Account' => ['page-my-account-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-myacc-widgets-pro#purchasepro', '', 'pro'],
270
+ 'Woo Category Grid' => ['woo-category-grid-pro', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-elements-woo-catgrid-widgets-pro#purchasepro', '', 'pro'],
271
+ ];
272
+
273
+ foreach ( array_merge($woocommerce_builder_modules, $premium_woo_modules) as $title => $data ) {
274
+ $slug = $data[0];
275
+ $url = $data[1];
276
+ $reff = '?ref=rea-plugin-backend-elements-widget-prev'. $data[1];
277
+ $class = 'new' === $data[3] ? 'wpr-new-element' : '';
278
+ $class = ('pro' === $data[3] && !wpr_fs()->can_use_premium_code()) ? 'wpr-pro-element' : '';
279
+ $default_value = class_exists( 'WooCommerce' ) ? 'on' : 'off';
280
+
281
+ if ( 'wpr-pro-element' === $class ) {
282
+ $default_value = 'off';
283
+ $reff = '';
284
+ }
285
+
286
+ echo '<div class="wpr-element '. esc_attr($class) .'">';
287
+ echo '<a href="'. esc_url($url . $reff) .'" target="_blank"></a>';
288
+ echo '<div class="wpr-element-info">';
289
+ echo '<h3>'. esc_html($title) .'</h3>';
290
+ echo '<input type="checkbox" name="wpr-element-'. esc_attr($slug) .'" id="wpr-element-'. esc_attr($slug) .'" '. checked( get_option('wpr-element-'. $slug, $default_value), 'on', false ) .'>';
291
+ echo '<label for="wpr-element-'. esc_attr($slug) .'"></label>';
292
+ // echo ( '' !== $url && empty(get_option('wpr_wl_plugin_links')) ) ? '<a href="'. esc_url($url . $reff) .'" target="_blank">'. esc_html__('View Widget Demo', 'wpr-addons') .'</a>' : '';
293
+ echo '</div>';
294
+ echo '</div>';
295
+ }
296
+ ?>
297
+ </div>
298
+
299
+ <?php submit_button( '', 'wpr-options-button' ); ?>
300
+
301
+ <?php elseif ( $active_tab == 'wpr_tab_settings' ) : ?>
302
+
303
+ <?php
304
+
305
+ // Settings
306
+ settings_fields( 'wpr-settings' );
307
+ do_settings_sections( 'wpr-settings' );
308
+
309
+ ?>
310
+
311
+ <div class="wpr-settings">
312
+
313
+ <?php submit_button( '', 'wpr-options-button' ); ?>
314
+
315
+ <div class="wpr-settings-group wpr-settings-group-woo">
316
+ <h3 class="wpr-settings-group-title"><?php esc_html_e( 'WooCommerce', 'wpr-addons' ); ?></h3>
317
+
318
+ <div class="wpr-settings-group-inner">
319
+
320
+ <?php if ( !wpr_fs()->can_use_premium_code() ) : ?>
321
+ <a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-settings-woo-pro#purchasepro" class="wpr-settings-pro-overlay" target="_blank">
322
+ <span class="dashicons dashicons-lock"></span>
323
+ <span class="dashicons dashicons-unlock"></span>
324
+ <span><?php esc_html_e( 'Upgrade to Pro', 'wpr-addons' ); ?></span>
325
+ </a>
326
+ <div class="wpr-setting">
327
+ <h4>
328
+ <span><?php esc_html_e( 'Shop Page: Products Per Page', 'wpr-addons' ); ?></span>
329
+ <br>
330
+ </h4>
331
+ <input type="text" value="9">
332
+ </div>
333
+ <div class="wpr-setting">
334
+ <h4>
335
+ <span><?php esc_html_e( 'Product Category: Products Per Page', 'wpr-addons' ); ?></span>
336
+ <br>
337
+ </h4>
338
+ <input type="text" value="9">
339
+ </div>
340
+ <div class="wpr-setting">
341
+ <h4>
342
+ <span><?php esc_html_e( 'Product Tag: Products Per Page', 'wpr-addons' ); ?></span>
343
+ <br>
344
+ </h4>
345
+ <input type="text" value="9">
346
+ </div>
347
+ <?php else: ?>
348
+ <?php do_action('wpr_woocommerce_settings'); ?>
349
+ <?php endif; ?>
350
+
351
+ </div>
352
+
353
+ <div class="wpr-woo-template-info">
354
+ <div class="wpr-woo-template-title">
355
+ <h4>Royal Templates</h4>
356
+ <span>Enable/Disable Royal addons Cart, Minicart, Notifications Templates, Product Lightbox</span>
357
+ </div>
358
+ <input type="checkbox" name="wpr_override_woo_templates" id="wpr_override_woo_templates" <?php echo checked( get_option('wpr_override_woo_templates', 'on'), 'on', false ); ?>>
359
+ <label for="wpr_override_woo_templates"></label>
360
+ </div>
361
+
362
+ <div class="wpr-woo-template-info">
363
+ <div class="wpr-woo-template-title">
364
+ <h4>Product Image Zoom</h4>
365
+ <span>Enable/Disable Image Zoom Effect on Woocommerce products</span>
366
+ </div>
367
+ <input type="checkbox" name="wpr_enable_product_image_zoom" id="wpr_enable_product_image_zoom" <?php echo checked( get_option('wpr_enable_product_image_zoom', 'on'), 'on', false ); ?>>
368
+ <label for="wpr_enable_product_image_zoom"></label>
369
+ </div>
370
+
371
+ <div class="wpr-woo-template-info">
372
+ <div class="wpr-woo-template-title">
373
+ <h4>Product Slider Nav</h4>
374
+ <span>Enable/Disable Navigation Arrows on Woocommerce products slider</span>
375
+ </div>
376
+ <input type="checkbox" name="wpr_enable_woo_flexslider_navigation" id="wpr_enable_woo_flexslider_navigation" <?php echo checked( get_option('wpr_enable_woo_flexslider_navigation', 'on'), 'on', false ); ?>>
377
+ <label for="wpr_enable_woo_flexslider_navigation"></label>
378
+ </div>
379
+
380
+ </div>
381
+
382
+ <div class="wpr-settings-group">
383
+ <h3 class="wpr-settings-group-title"><?php esc_html_e( 'Integrations', 'wpr-addons' ); ?></h3>
384
+
385
+ <div class="wpr-setting">
386
+ <h4>
387
+ <span><?php esc_html_e( 'Google Map API Key', 'wpr-addons' ); ?></span>
388
+ <br>
389
+ <a href="https://www.youtube.com/watch?v=O5cUoVpVUjU" target="_blank"><?php esc_html_e( 'How to get Google Map API Key?', 'wpr-addons' ); ?></a>
390
+ </h4>
391
+
392
+ <input type="text" name="wpr_google_map_api_key" id="wpr_google_map_api_key" value="<?php echo esc_attr(get_option('wpr_google_map_api_key')); ?>">
393
+ </div>
394
+
395
+ <div class="wpr-setting">
396
+ <h4>
397
+ <span><?php esc_html_e( 'MailChimp API Key', 'wpr-addons' ); ?></span>
398
+ <br>
399
+ <a href="https://mailchimp.com/help/about-api-keys/" target="_blank"><?php esc_html_e( 'How to get MailChimp API Key?', 'wpr-addons' ); ?></a>
400
+ </h4>
401
+
402
+ <input type="text" name="wpr_mailchimp_api_key" id="wpr_mailchimp_api_key" value="<?php echo esc_attr(get_option('wpr_mailchimp_api_key')); ?>">
403
+ </div>
404
+ </div>
405
+
406
+ <div class="wpr-settings-group">
407
+ <h3 class="wpr-settings-group-title"><?php esc_html_e( 'Lightbox', 'wpr-addons' ); ?></h3>
408
+
409
+ <div class="wpr-setting">
410
+ <h4><?php esc_html_e( 'Background Color', 'wpr-addons' ); ?></h4>
411
+ <input type="text" name="wpr_lb_bg_color" id="wpr_lb_bg_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_bg_color','rgba(0,0,0,0.6)')); ?>">
412
+ </div>
413
+
414
+ <div class="wpr-setting">
415
+ <h4><?php esc_html_e( 'Toolbar BG Color', 'wpr-addons' ); ?></h4>
416
+ <input type="text" name="wpr_lb_toolbar_color" id="wpr_lb_toolbar_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_toolbar_color','rgba(0,0,0,0.8)')); ?>">
417
+ </div>
418
+
419
+ <div class="wpr-setting">
420
+ <h4><?php esc_html_e( 'Caption BG Color', 'wpr-addons' ); ?></h4>
421
+ <input type="text" name="wpr_lb_caption_color" id="wpr_lb_caption_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_caption_color','rgba(0,0,0,0.8)')); ?>">
422
+ </div>
423
+
424
+ <div class="wpr-setting">
425
+ <h4><?php esc_html_e( 'Gallery BG Color', 'wpr-addons' ); ?></h4>
426
+ <input type="text" name="wpr_lb_gallery_color" id="wpr_lb_gallery_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_gallery_color','#444444')); ?>">
427
+ </div>
428
+
429
+ <div class="wpr-setting">
430
+ <h4><?php esc_html_e( 'Progress Bar Color', 'wpr-addons' ); ?></h4>
431
+ <input type="text" name="wpr_lb_pb_color" id="wpr_lb_pb_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_pb_color','#a90707')); ?>">
432
+ </div>
433
+
434
+ <div class="wpr-setting">
435
+ <h4><?php esc_html_e( 'UI Color', 'wpr-addons' ); ?></h4>
436
+ <input type="text" name="wpr_lb_ui_color" id="wpr_lb_ui_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_ui_color','#efefef')); ?>">
437
+ </div>
438
+
439
+ <div class="wpr-setting">
440
+ <h4><?php esc_html_e( 'UI Hover Color', 'wpr-addons' ); ?></h4>
441
+ <input type="text" name="wpr_lb_ui_hr_color" id="wpr_lb_ui_hr_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_ui_hr_color','#ffffff')); ?>">
442
+ </div>
443
+
444
+ <div class="wpr-setting">
445
+ <h4><?php esc_html_e( 'Text Color', 'wpr-addons' ); ?></h4>
446
+ <input type="text" name="wpr_lb_text_color" id="wpr_lb_text_color" data-alpha="true" value="<?php echo esc_attr(get_option('wpr_lb_text_color','#efefef')); ?>">
447
+ </div>
448
+
449
+ <div class="wpr-setting">
450
+ <h4><?php esc_html_e( 'UI Icon Size', 'wpr-addons' ); ?></h4>
451
+ <input type="number" name="wpr_lb_icon_size" id="wpr_lb_icon_size" value="<?php echo esc_attr(get_option('wpr_lb_icon_size','20')); ?>">
452
+ </div>
453
+
454
+ <div class="wpr-setting">
455
+ <h4><?php esc_html_e( 'Navigation Arrow Size', 'wpr-addons' ); ?></h4>
456
+ <input type="number" name="wpr_lb_arrow_size" id="wpr_lb_arrow_size" value="<?php echo esc_attr(get_option('wpr_lb_arrow_size','35')); ?>">
457
+ </div>
458
+
459
+ <div class="wpr-setting">
460
+ <h4><?php esc_html_e( 'Text Size', 'wpr-addons' ); ?></h4>
461
+ <input type="number" name="wpr_lb_text_size" id="wpr_lb_text_size" value="<?php echo esc_attr(get_option('wpr_lb_text_size','14')); ?>">
462
+ </div>
463
+ </div>
464
+
465
+ <?php submit_button( '', 'wpr-options-button' ); ?>
466
+
467
+ </div>
468
+
469
+ <?php elseif ( $active_tab == 'wpr_tab_extensions' ) :
470
+
471
+ // Extensions
472
+ settings_fields( 'wpr-extension-settings' );
473
+ do_settings_sections( 'wpr-extension-settings' );
474
+
475
+ global $new_allowed_options;
476
+
477
+ // array of option names
478
+ $option_names = $new_allowed_options[ 'wpr-extension-settings' ];
479
+
480
+ echo '<div class="wpr-elements">';
481
+
482
+ foreach ($option_names as $option_name) {
483
+ $option_title = ucwords( preg_replace( '/-/i', ' ', preg_replace('/wpr-||-toggle/i', '', $option_name ) ));
484
+
485
+ echo '<div class="wpr-element">';
486
+ echo '<div class="wpr-element-info">';
487
+ echo '<h3>'. esc_html($option_title) .'</h3>';
488
+ echo '<input type="checkbox" name="'. esc_attr($option_name) .'" id="'. esc_attr($option_name) .'" '. checked( get_option(''. $option_name .'', 'on'), 'on', false ) .'>';
489
+ echo '<label for="'. esc_attr($option_name) .'"></label>';
490
+
491
+ if ( 'wpr-parallax-background' === $option_name ) {
492
+ echo '<br><span>Tip: Edit any Section > Navigate to Style tab</span>';
493
+ echo '<a href="https://www.youtube.com/watch?v=DcDeQ__lJbw" target="_blank">Watch Video Tutorial</a>';
494
+ } elseif ( 'wpr-parallax-multi-layer' === $option_name ) {
495
+ echo '<br><span>Tip: Edit any Section > Navigate to Style tab</span>';
496
+ echo '<a href="https://youtu.be/DcDeQ__lJbw?t=121" target="_blank">Watch Video Tutorial</a>';
497
+ } elseif ( 'wpr-particles' === $option_name ) {
498
+ echo '<br><span>Tip: Edit any Section > Navigate to Style tab</span>';
499
+ echo '<a href="https://www.youtube.com/watch?v=8OdnaoFSj94" target="_blank">Watch Video Tutorial</a>';
500
+ } elseif ( 'wpr-sticky-section' === $option_name ) {
501
+ echo '<br><span>Tip: Edit any Section > Navigate to Advanced tab</span>';
502
+ echo '<a href="https://www.youtube.com/watch?v=at0CPKtklF0&t=375s" target="_blank">Watch Video Tutorial</a>';
503
+ }
504
+
505
+ // echo '<a href="https://royal-elementor-addons.com/elementor-particle-effects/?ref=rea-plugin-backend-extentions-prev">'. esc_html('View Extension Demo', 'wpr-addons') .'</a>';
506
+ echo '</div>';
507
+ echo '</div>';
508
+ }
509
+
510
+ echo '</div>';
511
+
512
+ submit_button( '', 'wpr-options-button' );
513
+
514
+ elseif ( $active_tab == 'wpr_tab_white_label' ) :
515
+
516
+ do_action('wpr_white_label_tab_content');
517
+
518
+ endif; ?>
519
+
520
+ </form>
521
+ </div>
522
+
523
+ </div>
524
+
525
+
526
+ <?php
527
+
528
+ } // End wpr_addons_settings_page()
529
+
530
+
531
+
532
+ // Add Support Sub Menu item that will redirect to wp.org
533
+ function wpr_addons_add_support_menu() {
534
+ add_submenu_page( 'wpr-addons', 'Support', 'Support', 'manage_options', 'wpr-support', 'wpr_addons_support_page', 99 );
535
+ }
536
+ add_action( 'admin_menu', 'wpr_addons_add_support_menu', 99 );
537
+
538
+ function wpr_addons_support_page() {}
539
+
540
+ function wpr_redirect_support_page() {
541
+ ?>
542
+ <script type="text/javascript">
543
+ jQuery(document).ready( function($) {
544
+ $( 'ul#adminmenu a[href*="page=wpr-support"]' ).attr('href', 'https://wordpress.org/support/plugin/royal-elementor-addons/').attr( 'target', '_blank' );
545
+ });
546
+ </script>
547
+ <?php
548
+ }
549
+ add_action( 'admin_head', 'wpr_redirect_support_page' );
550
+
551
+
552
+ // Add Upgrade Sub Menu item that will redirect to royal-elementor-addons.com
553
+ function wpr_addons_add_upgrade_menu() {
554
+ if ( defined('WPR_ADDONS_PRO_VERSION') ) return;
555
+ add_submenu_page( 'wpr-addons', 'Upgrade', 'Upgrade', 'manage_options', 'wpr-upgrade', 'wpr_addons_upgrade_page', 99 );
556
+ }
557
+ add_action( 'admin_menu', 'wpr_addons_add_upgrade_menu', 99 );
558
+
559
+ function wpr_addons_upgrade_page() {}
560
+
561
+ function wpr_redirect_upgrade_page() {
562
+ ?>
563
+ <script type="text/javascript">
564
+ jQuery(document).ready( function($) {
565
+ $( 'ul#adminmenu a[href*="page=wpr-upgrade"]' ).attr('href', 'https://royal-elementor-addons.com/?ref=rea-plugin-backend-menu-upgrade-pro#purchasepro').attr( 'target', '_blank' );
566
+ $( 'ul#adminmenu a[href*="#purchasepro"]' ).css('color', 'greenyellow');
567
+ });
568
+ </script>
569
+ <?php
570
+ }
571
  add_action( 'admin_head', 'wpr_redirect_upgrade_page' );
admin/popups.php CHANGED
@@ -1,82 +1,87 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- use WprAddons\Admin\Includes\WPR_Templates_Loop;
8
- use WprAddons\Classes\Utilities;
9
-
10
- // Register Menus
11
- function wpr_addons_add_popups_menu() {
12
- add_submenu_page( 'wpr-addons', 'Popups', 'Popups', 'manage_options', 'wpr-popups', 'wpr_addons_popups_page' );
13
- }
14
- add_action( 'admin_menu', 'wpr_addons_add_popups_menu' );
15
-
16
- function wpr_addons_popups_page() {
17
-
18
- ?>
19
-
20
- <div class="wrap wpr-settings-page-wrap">
21
-
22
- <div class="wpr-settings-page-header">
23
- <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
24
- <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
25
-
26
- <!-- Custom Template -->
27
- <div class="wpr-preview-buttons">
28
- <div class="wpr-user-template">
29
- <span><?php esc_html_e( 'Create Template', 'wpr-addons' ); ?></span>
30
- <span class="plus-icon">+</span>
31
- </div>
32
-
33
- <a href="https://www.youtube.com/watch?v=TbKTNpuXM68" class="wpr-options-button button" target="_blank" style="padding: 8px 22px;">
34
- <?php echo esc_html__( 'How to use Popups', 'wpr-addons' ); ?>
35
- <span class="dashicons dashicons-video-alt3"></span>
36
- </a>
37
- </div>
38
- </div>
39
-
40
- <div class="wpr-settings-page">
41
- <form method="post" action="options.php">
42
- <?php
43
-
44
- // Active Tab
45
- $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_popups';
46
-
47
- ?>
48
-
49
- <!-- Template ID Holder -->
50
- <input type="hidden" name="wpr_template" id="wpr_template" value="">
51
-
52
- <!-- Conditions Popup -->
53
- <?php WPR_Templates_Loop::render_conditions_popup(); ?>
54
-
55
- <!-- Create Templte Popup -->
56
- <?php WPR_Templates_Loop::render_create_template_popup(); ?>
57
-
58
- <!-- Tabs -->
59
- <div class="nav-tab-wrapper wpr-nav-tab-wrapper">
60
- <a href="?page=wpr-theme-builder&tab=wpr_tab_popups" data-title="popup" class="nav-tab <?php echo ($active_tab == 'wpr_tab_popups') ? 'nav-tab-active' : ''; ?>">
61
- <?php esc_html_e( 'Popups', 'wpr-addons' ); ?>
62
- </a>
63
- </div>
64
-
65
- <?php if ( $active_tab == 'wpr_tab_popups' ) : ?>
66
-
67
- <!-- Save Conditions -->
68
- <input type="hidden" name="wpr_popup_conditions" id="wpr_popup_conditions" value="<?php echo esc_attr(get_option('wpr_popup_conditions', '[]')); ?>">
69
-
70
- <?php WPR_Templates_Loop::render_theme_builder_templates( 'popup' ); ?>
71
-
72
- <?php endif; ?>
73
-
74
- </form>
75
- </div>
76
-
77
- </div>
78
-
79
-
80
- <?php
81
-
 
 
 
 
 
82
  } // End wpr_addons_popups_page()
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ use WprAddons\Admin\Includes\WPR_Templates_Loop;
8
+ use WprAddons\Classes\Utilities;
9
+
10
+ // Register Menus
11
+ function wpr_addons_add_popups_menu() {
12
+ add_submenu_page( 'wpr-addons', 'Popups', 'Popups', 'manage_options', 'wpr-popups', 'wpr_addons_popups_page' );
13
+ }
14
+ add_action( 'admin_menu', 'wpr_addons_add_popups_menu' );
15
+
16
+ function wpr_addons_popups_page() {
17
+
18
+ ?>
19
+
20
+ <div class="wrap wpr-settings-page-wrap">
21
+
22
+ <div class="wpr-settings-page-header">
23
+ <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
24
+ <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
25
+
26
+ <!-- Custom Template -->
27
+ <div class="wpr-preview-buttons">
28
+ <div class="wpr-user-template">
29
+ <span><?php esc_html_e( 'Create Template', 'wpr-addons' ); ?></span>
30
+ <span class="plus-icon">+</span>
31
+ </div>
32
+
33
+ <a href="https://www.youtube.com/watch?v=TbKTNpuXM68" class="wpr-options-button button" target="_blank" style="padding: 10px 22px;">
34
+ <?php echo esc_html__( 'How to use Popups', 'wpr-addons' ); ?>
35
+ <span class="dashicons dashicons-video-alt3"></span>
36
+ </a>
37
+
38
+ <a href="https://royaladdons.frill.co/b/6m4d5qm4/feature-ideas" class="wpr-options-button button" target="_blank" style="padding: 8px 22px;">
39
+ <?php echo esc_html__( 'Request New Feature', 'wpr-addons' ); ?>
40
+ <span class="dashicons dashicons-star-empty"></span>
41
+ </a>
42
+ </div>
43
+ </div>
44
+
45
+ <div class="wpr-settings-page">
46
+ <form method="post" action="options.php">
47
+ <?php
48
+
49
+ // Active Tab
50
+ $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_popups';
51
+
52
+ ?>
53
+
54
+ <!-- Template ID Holder -->
55
+ <input type="hidden" name="wpr_template" id="wpr_template" value="">
56
+
57
+ <!-- Conditions Popup -->
58
+ <?php WPR_Templates_Loop::render_conditions_popup(); ?>
59
+
60
+ <!-- Create Templte Popup -->
61
+ <?php WPR_Templates_Loop::render_create_template_popup(); ?>
62
+
63
+ <!-- Tabs -->
64
+ <div class="nav-tab-wrapper wpr-nav-tab-wrapper">
65
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_popups" data-title="popup" class="nav-tab <?php echo ($active_tab == 'wpr_tab_popups') ? 'nav-tab-active' : ''; ?>">
66
+ <?php esc_html_e( 'Popups', 'wpr-addons' ); ?>
67
+ </a>
68
+ </div>
69
+
70
+ <?php if ( $active_tab == 'wpr_tab_popups' ) : ?>
71
+
72
+ <!-- Save Conditions -->
73
+ <input type="hidden" name="wpr_popup_conditions" id="wpr_popup_conditions" value="<?php echo esc_attr(get_option('wpr_popup_conditions', '[]')); ?>">
74
+
75
+ <?php WPR_Templates_Loop::render_theme_builder_templates( 'popup' ); ?>
76
+
77
+ <?php endif; ?>
78
+
79
+ </form>
80
+ </div>
81
+
82
+ </div>
83
+
84
+
85
+ <?php
86
+
87
  } // End wpr_addons_popups_page()
admin/premade-blocks.php CHANGED
@@ -1,39 +1,39 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- use WprAddons\Admin\Templates\WPR_Templates_Data;
8
- use WprAddons\Admin\Templates\WPR_Templates_Library_Blocks;
9
- use WprAddons\Classes\Utilities;
10
- use Elementor\Plugin;
11
-
12
- // Register Menus
13
- function wpr_addons_add_premade_blocks_menu() {
14
- add_submenu_page( 'wpr-addons', 'Premade Blocks', 'Premade Blocks', 'manage_options', 'wpr-premade-blocks', 'wpr_addons_premade_blocks_page' );
15
- }
16
- add_action( 'admin_menu', 'wpr_addons_add_premade_blocks_menu' );
17
-
18
- /**
19
- ** Render Premade Blocks Page
20
- */
21
- function wpr_addons_premade_blocks_page() {
22
-
23
- ?>
24
-
25
- <div class="wpr-premade-blocks-page">
26
-
27
- <div class="wpr-settings-page-header">
28
- <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
29
- <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
30
- </div>
31
-
32
- <?php WPR_Templates_Library_Blocks::render_library_templates_blocks(); ?>
33
-
34
- </div>
35
-
36
-
37
- <?php
38
-
39
- } // End wpr_addons_premade_blocks_page()
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ use WprAddons\Admin\Templates\WPR_Templates_Data;
8
+ use WprAddons\Admin\Templates\WPR_Templates_Library_Blocks;
9
+ use WprAddons\Classes\Utilities;
10
+ use Elementor\Plugin;
11
+
12
+ // Register Menus
13
+ function wpr_addons_add_premade_blocks_menu() {
14
+ add_submenu_page( 'wpr-addons', 'Premade Blocks', 'Premade Blocks', 'manage_options', 'wpr-premade-blocks', 'wpr_addons_premade_blocks_page' );
15
+ }
16
+ add_action( 'admin_menu', 'wpr_addons_add_premade_blocks_menu' );
17
+
18
+ /**
19
+ ** Render Premade Blocks Page
20
+ */
21
+ function wpr_addons_premade_blocks_page() {
22
+
23
+ ?>
24
+
25
+ <div class="wpr-premade-blocks-page">
26
+
27
+ <div class="wpr-settings-page-header">
28
+ <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
29
+ <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
30
+ </div>
31
+
32
+ <?php WPR_Templates_Library_Blocks::render_library_templates_blocks(); ?>
33
+
34
+ </div>
35
+
36
+
37
+ <?php
38
+
39
+ } // End wpr_addons_premade_blocks_page()
admin/templates-kit.php CHANGED
@@ -1,623 +1,623 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- use WprAddons\Admin\Templates\WPR_Templates_Data;
8
- use WprAddons\Classes\Utilities;
9
- use Elementor\Plugin;
10
-
11
- // Register Menus
12
- function wpr_addons_add_templates_kit_menu() {
13
- add_submenu_page( 'wpr-addons', 'Templates Kit', 'Templates Kit', 'manage_options', 'wpr-templates-kit', 'wpr_addons_templates_kit_page' );
14
- }
15
- add_action( 'admin_menu', 'wpr_addons_add_templates_kit_menu' );
16
-
17
- // Import Template Kit
18
- add_action( 'wp_ajax_wpr_activate_required_theme', 'wpr_activate_required_theme' );
19
- add_action( 'wp_ajax_wpr_activate_required_plugins', 'wpr_activate_required_plugins' );
20
- add_action( 'wp_ajax_wpr_fix_royal_compatibility', 'wpr_fix_royal_compatibility' );
21
- add_action( 'wp_ajax_wpr_import_templates_kit', 'wpr_import_templates_kit' );
22
- add_action( 'wp_ajax_wpr_final_settings_setup', 'wpr_final_settings_setup' );
23
- add_action( 'wp_ajax_wpr_search_query_results', 'wpr_search_query_results' );
24
- add_action( 'init', 'disable_default_woo_pages_creation', 2 );
25
-
26
-
27
- /**
28
- ** Render Templates Kit Page
29
- */
30
- function wpr_addons_templates_kit_page() {
31
-
32
- ?>
33
-
34
- <div class="wpr-templates-kit-page">
35
-
36
- <header>
37
- <div class="wpr-templates-kit-logo">
38
- <div><img src="<?php echo !empty(get_option('wpr_wl_plugin_logo')) ? esc_url(wp_get_attachment_image_src(get_option('wpr_wl_plugin_logo'), 'full')[0]) : esc_url(WPR_ADDONS_ASSETS_URL .'img/logo-40x40.png'); ?>"></div>
39
- <div class="back-btn"><?php printf( esc_html__('%s Back to Library', 'wpr-addons'), '<span class="dashicons dashicons-arrow-left-alt2"></span>'); ?></div>
40
- </div>
41
-
42
- <div class="wpr-templates-kit-search">
43
- <input type="text" autocomplete="off" placeholder="<?php esc_html_e('Search Templates Kit...', 'wpr-addons'); ?>">
44
- <span class="dashicons dashicons-search"></span>
45
- </div>
46
-
47
- <div class="wpr-templates-kit-price-filter">
48
- <span data-price="mixed"><?php esc_html_e('Price: Mixed', 'wpr-addons'); ?></span>
49
- <span class="dashicons dashicons-arrow-down-alt2"></span>
50
- <ul>
51
- <li><?php esc_html_e('Mixed', 'wpr-addons'); ?></li>
52
- <li><?php esc_html_e('Free', 'wpr-addons'); ?></li>
53
- <li><?php esc_html_e('Premium', 'wpr-addons'); ?></li>
54
- </ul>
55
- </div>
56
-
57
- <div class="wpr-templates-kit-filters">
58
- <div>Filter: All</div>
59
- <ul>
60
- <li data-filter="all">Blog</li>
61
- <li data-filter="blog">Blog</li>
62
- <li data-filter="business">Business</li>
63
- <li data-filter="ecommerce">eCommerce</li>
64
- <li data-filter="beauty">Beauty</li>
65
- </ul>
66
- </div>
67
- </header>
68
-
69
- <div class="wpr-templates-kit-page-title">
70
- <h1><?php esc_html_e('Royal Elementor Templates Kit', 'wpr-addons'); ?></h1>
71
- <p><?php esc_html_e('Import any Templates Kit with just a Single click', 'wpr-addons'); ?></p>
72
- <p>
73
- <a href="https://www.youtube.com/watch?v=kl2xBoWW81o" class="wpr-options-button button" target="_blank">
74
- <?php esc_html_e('Video Tutorial', 'wpr-addons'); ?>
75
- <span class="dashicons dashicons-video-alt3"></span>
76
- </a>
77
- </p>
78
- </div>
79
-
80
- <div class="wpr-templates-kit-grid main-grid" data-theme-status="<?php echo esc_attr(get_theme_status()); ?>">
81
- <?php
82
- $kits = WPR_Templates_Data::get_available_kits();
83
- $sorted_kits = [];
84
-
85
- foreach ($kits as $slug => $kit) {
86
- foreach ($kit as $version => $data ) {
87
- $sorted_kits[$slug .'-'. $version] = $data;
88
- }
89
- }
90
-
91
- // Sort by Priority
92
- uasort($sorted_kits, function ($item1, $item2) {
93
- if ($item1['priority'] == $item2['priority']) return 0;
94
- return $item1['priority'] < $item2['priority'] ? -1 : 1;
95
- });
96
-
97
- // Loop
98
- foreach ($sorted_kits as $kit_id => $data) {
99
- echo '<div class="grid-item" data-kit-id="'. esc_attr($kit_id) .'" data-tags="'. esc_attr($data['tags']) .'" data-plugins="'. esc_attr($data['plugins']) .'" data-pages="'. esc_attr($data['pages']) .'" data-price="'. esc_attr($data['price']) .'">';
100
- echo '<div class="image-wrap">';
101
- echo '<img src="'. esc_url('https://royal-elementor-addons.com/library/templates-kit/'. $kit_id .'/home.jpg') .'">';
102
- echo '<div class="image-overlay"><span class="dashicons dashicons-search"></span></div>';
103
- echo '</div>';
104
- echo '<footer>';
105
- echo '<h3>'. esc_html($data['name']) .'</h3>';
106
- if ( $data['woo-builder'] ) {
107
- echo '<span class="wpr-woo-builder-label">'. esc_html__( 'Woo Builder', 'wpr-addons' ) .'</span>';
108
- } elseif ( $data['theme-builder'] ) {
109
- echo '<span class="wpr-theme-builder-label">'. esc_html__( 'Theme Builder', 'wpr-addons' ) .'</span>';
110
- }
111
- echo '</footer>';
112
- echo '</div>';
113
- }
114
-
115
- ?>
116
-
117
- </div>
118
-
119
- <div class="wpr-templates-kit-single">
120
- <div class="wpr-templates-kit-grid single-grid"></div>
121
-
122
- <footer class="action-buttons-wrap">
123
- <a href="https://royal-elementor-addons.com/" class="preview-demo button" target="_blank"><?php esc_html_e('Preview Demo', 'wpr-addons'); ?> <span class="dashicons dashicons-external"></span></a>
124
-
125
- <div class="import-template-buttons">
126
- <?php
127
- echo '<button class="import-kit button">'. esc_html__('Import Templates Kit', 'wpr-addons') .' <span class="dashicons dashicons-download"></span></button>';
128
- echo '<a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-templates-upgrade-pro#purchasepro" class="get-access button" target="_blank">'. esc_html__('Get Access', 'wpr-addons') .' <span class="dashicons dashicons-external"></span></a>';
129
- ?>
130
- <button class="import-template button"><?php printf( esc_html__( 'Import %s Template', 'wpr-addons' ), '<strong></strong>' ); ?></button>
131
-
132
- </div>
133
- </footer>
134
- </div>
135
-
136
- <div class="wpr-import-kit-popup-wrap">
137
- <div class="overlay"></div>
138
- <div class="wpr-import-kit-popup">
139
- <header>
140
- <h3><?php esc_html_e('Template Kit is being imported', 'wpr-addons'); ?><span>.</span></h3>
141
- <span class="dashicons dashicons-no-alt close-btn"></span>
142
- </header>
143
- <div class="content">
144
- <p><?php esc_html_e('The import process can take a few seconds depending on the size of the kit you are importing and speed of the connection.', 'wpr-addons'); ?></p>
145
- <p><?php esc_html_e('Please do NOT close this browser window until import is completed.', 'wpr-addons'); ?></p>
146
-
147
- <div class="progress-wrap">
148
- <div class="progress-bar"></div>
149
- <strong></strong>
150
- </div>
151
-
152
- <div class="wpr-import-help">
153
- <a href="https://royal-elementor-addons.com/contactus/?ref=rea-plugin-backend-templates-import-screen" target="_blank">Having trouble with template import?&nbsp;&nbsp;Get help <span class="dashicons dashicons-sos"></span></a>
154
- </div>
155
- </div>
156
- </div>
157
- </div>
158
-
159
- <div class="wpr-templates-kit-not-found">
160
- <img src="<?php echo esc_url(WPR_ADDONS_ASSETS_URL .'img/not-found.png'); ?>">
161
- <h1><?php esc_html_e('No Search Results Found.', 'wpr-addons'); ?></h1>
162
- <p><?php esc_html_e('Cant find a Templates Kit you are looking for?', 'wpr-addons'); ?></p>
163
- <a href="https://royal-elementor-addons.com/library/request-new-kit-red.html" target="_blank"><?php esc_html_e('Request Templates Kit.', 'wpr-addons'); ?></a>
164
- </div>
165
-
166
- </div>
167
-
168
-
169
- <?php
170
-
171
- } // End wpr_addons_templates_kit_page()
172
-
173
- /**
174
- ** Get Theme Status
175
- */
176
- function get_theme_status() {
177
- $theme = wp_get_theme();
178
-
179
- // Theme installed and activate.
180
- if ( 'Royal Elementor Kit' === $theme->name || 'Royal Elementor Kit' === $theme->parent_theme ) {
181
- return 'req-theme-active';
182
- }
183
-
184
- // Theme installed but not activate.
185
- foreach ( (array) wp_get_themes() as $theme_dir => $theme ) {
186
- if ( 'Royal Elementor Kit' === $theme->name || 'Royal Elementor Kit' === $theme->parent_theme ) {
187
- return 'req-theme-inactive';
188
- }
189
- }
190
-
191
- return 'req-theme-not-installed';
192
- }
193
-
194
- /**
195
- ** Install/Activate Required Theme
196
- */
197
- function wpr_activate_required_theme() {
198
- // Get Current Theme
199
- $theme = get_option('stylesheet');
200
-
201
- // Activate Royal Elementor Kit Theme
202
- if ( 'ashe-pro-premium' !== $theme && 'bard-pro-premium' !== $theme
203
- && 'vayne-pro-premium' !== $theme && 'kayn-pro-premium' !== $theme ) {
204
- switch_theme( 'royal-elementor-kit' );
205
- set_transient( 'royal-elementor-kit_activation_notice', true );
206
- }
207
-
208
- // TODO: maybe return back - 'ashe' !== $theme && 'bard' !== $theme &&
209
- }
210
-
211
- /**
212
- ** Activate Required Plugins
213
- */
214
- function wpr_activate_required_plugins() {
215
- if ( isset($_POST['plugin']) ) {
216
- if ( 'contact-form-7' == $_POST['plugin'] ) {
217
- if ( !is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) ) {
218
- activate_plugin( 'contact-form-7/wp-contact-form-7.php' );
219
- }
220
- } elseif ( 'woocommerce' == $_POST['plugin'] ) {
221
- if ( !is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
222
- activate_plugin( 'woocommerce/woocommerce.php' );
223
- }
224
- } elseif ( 'media-library-assistant' == $_POST['plugin'] ) {
225
- if ( !is_plugin_active( 'media-library-assistant/index.php' ) ) {
226
- activate_plugin( 'media-library-assistant/index.php' );
227
- }
228
- }
229
- }
230
- }
231
-
232
- /**
233
- ** Deactivate Extra Plugins
234
- */
235
- function wpr_fix_royal_compatibility() {
236
- // Get currently active plugins
237
- $active_plugins = (array) get_option( 'active_plugins', array() );
238
- $active_plugins = array_values($active_plugins);
239
-
240
- // Deactivate Extra Import Plugins
241
- $ashe_extra_key = array_search('ashe-extra/ashe-extra.php', $active_plugins);
242
- $bard_extra_key = array_search('bard-extra/bard-extra.php', $active_plugins);
243
-
244
- if ( false !== $ashe_extra_key && array_key_exists($ashe_extra_key, $active_plugins) ) {
245
- unset($active_plugins[$ashe_extra_key]);
246
- }
247
-
248
- if ( false !== $bard_extra_key && array_key_exists($bard_extra_key, $active_plugins) ) {
249
- unset($active_plugins[$bard_extra_key]);
250
- }
251
-
252
- // Set Active Plugins
253
- update_option( 'active_plugins', array_values($active_plugins) );
254
-
255
- // Get Current Theme
256
- $theme = get_option('stylesheet');
257
-
258
- // Activate Royal Elementor Kit Theme
259
- if ( 'ashe-pro-premium' !== $theme && 'bard-pro-premium' !== $theme
260
- && 'vayne-pro-premium' !== $theme && 'kayn-pro-premium' !== $theme ) {
261
- switch_theme( 'royal-elementor-kit' );
262
- set_transient( 'royal-elementor-kit_activation_notice', true );
263
- }
264
- }
265
-
266
- /**
267
- ** Import Template Kit
268
- */
269
- function wpr_import_templates_kit() {
270
-
271
- // Temp Define Importers
272
- if ( ! defined('WP_LOAD_IMPORTERS') ) {
273
- define('WP_LOAD_IMPORTERS', true);
274
- }
275
-
276
- // Include if Class Does NOT Exist
277
- if ( ! class_exists( 'WP_Import' ) ) {
278
- $class_wp_importer = WPR_ADDONS_PATH .'admin/import/class-wordpress-importer.php';
279
- if ( file_exists( $class_wp_importer ) ) {
280
- require $class_wp_importer;
281
- }
282
- }
283
-
284
- if ( class_exists( 'WP_Import' ) ) {
285
- $kit = isset($_POST['wpr_templates_kit']) ? sanitize_file_name(wp_unslash($_POST['wpr_templates_kit'])) : '';
286
- $file = isset($_POST['wpr_templates_kit_single']) ? sanitize_file_name(wp_unslash($_POST['wpr_templates_kit_single'])) : '';
287
-
288
- // Tmp
289
- update_option( 'wpr-import-kit-id', $kit );
290
-
291
- // Download Import File
292
- $local_file_path = download_template( $kit, $file );
293
-
294
- // Prepare for Import
295
- $wp_import = new WP_Import( $local_file_path, ['fetch_attachments' => true] );
296
-
297
- // Import
298
- ob_start();
299
- $wp_import->run();
300
- ob_end_clean();
301
-
302
- // Delete Import File
303
- unlink( $local_file_path );
304
-
305
- // Send to JS
306
- echo esc_html(serialize( $wp_import ));
307
- }
308
-
309
- }
310
-
311
- /**
312
- ** Download Template
313
- */
314
- function download_template( $kit, $file ) {
315
- $file = ! $file ? 'main' : $file;
316
-
317
- // Avoid Cache
318
- $randomNum = substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"), 0, 7);
319
-
320
- // Remote and Local Files
321
- $remote_file_url = 'https://royal-elementor-addons.com/library/templates-kit/'. $kit .'/main.xml?='. $randomNum;
322
- $local_file_path = WPR_ADDONS_PATH .'admin/import/tmp.xml';
323
-
324
- // No Limit for Execution
325
- set_time_limit(0);
326
-
327
- // Copy File From Server
328
- copy( $remote_file_url, $local_file_path );
329
-
330
- return $local_file_path;
331
- }
332
-
333
- /**
334
- ** Import Elementor Site Settings
335
- */
336
- function import_elementor_site_settings( $kit ) {
337
- // Avoid Cache
338
- // $randomNum = substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"), 0, 7);
339
-
340
- // Get Remote File
341
- $site_settings = @file_get_contents('https://royal-elementor-addons.com/library/templates-kit/'. $kit .'/site-settings.json');
342
-
343
- if ( false !== $site_settings ) {
344
- $site_settings = json_decode($site_settings, true);
345
-
346
- if ( ! empty($site_settings['settings']) ) {
347
- $default_kit = \Elementor\Plugin::$instance->documents->get_doc_for_frontend( get_option( 'elementor_active_kit' ) );
348
-
349
- $kit_settings = $default_kit->get_settings();
350
- $new_settings = $site_settings['settings'];
351
- $settings = array_merge($kit_settings, $new_settings);
352
-
353
- $default_kit->save( [ 'settings' => $settings ] );
354
- }
355
- }
356
- }
357
-
358
- /**
359
- ** Setup WPR Templates
360
- */
361
- function setup_wpr_templates( $kit ) {
362
- $kit = isset($kit) ? sanitize_text_field(wp_unslash($kit)) : '';
363
-
364
- // Check if kit has Theme Builder templates
365
- $kit_name = substr($kit, 0, strripos($kit, '-v'));
366
- $kit_version = substr($kit, (strripos($kit, '-v') + 1), strlen($kit));
367
- $get_available_kits = WPR_Templates_Data::get_available_kits();
368
- $has_theme_builder = $get_available_kits[$kit_name][$kit_version]['theme-builder'];
369
- $has_woo_builder = $get_available_kits[$kit_name][$kit_version]['woo-builder'];
370
- $has_off_canvas = $get_available_kits[$kit_name][$kit_version]['off-canvas'];
371
-
372
- // Set Home & Blog Pages
373
- $home_page = get_page_by_path('home-'. $kit);
374
- $blog_page = get_page_by_path('blog-'. $kit);
375
-
376
- if ( $home_page ) {
377
- update_option( 'show_on_front', 'page' );
378
- update_option( 'page_on_front', $home_page->ID );
379
-
380
- if ( $blog_page ) {
381
- update_option( 'page_for_posts', $blog_page->ID );
382
- }
383
- }
384
-
385
- // Set Headers and Footers
386
- update_option('wpr_header_conditions', '{"user-header-'. $kit .'-header":["global"]}');
387
- update_post_meta( Utilities::get_template_id('user-header-'. $kit), 'wpr_header_show_on_canvas', 'true' );
388
- update_option('wpr_footer_conditions', '{"user-footer-'. $kit .'-footer":["global"]}');
389
- update_post_meta( Utilities::get_template_id('user-footer-'. $kit), 'wpr_footer_show_on_canvas', 'true' );
390
-
391
- // Theme Builder
392
- if ( $has_theme_builder ) {
393
- update_option('wpr_archive_conditions', '{"user-archive-'. $kit .'-blog":["archive/posts"],"user-archive-'. $kit .'-author":["archive/author"],"user-archive-'. $kit .'-date":["archive/date"],"user-archive-'. $kit .'-category-tag":["archive/categories/all","archive/tags/all"],"user-archive-'. $kit .'-search":["archive/search"]}');
394
- update_option('wpr_single_conditions', '{"user-single-'. $kit .'-404":["single/page_404"],"user-single-'. $kit .'-post":["single/posts/all"],"user-single-'. $kit .'-page":["single/pages/all"]}');
395
- }
396
-
397
- // WooCommerce Builder
398
- if ( $has_woo_builder ) {
399
- update_option('wpr_product_archive_conditions', '{"user-product_archive-'. $kit .'-shop":["product_archive/products"],"user-product_archive-'. $kit .'-product-category-tag":["product_archive/product_cat/all","product_archive/product_tag/all"]}');
400
- update_option('wpr_product_single_conditions', '{"user-product_single-'. $kit .'-product":["product_single/product"]}');
401
-
402
- $shop_id = get_page_by_path('shop-'. $kit) ? get_page_by_path('shop-'. $kit)->ID : '';
403
- $cart_id = get_page_by_path('cart-'. $kit) ? get_page_by_path('cart-'. $kit)->ID : '';
404
- $checkout_id = get_page_by_path('checkout-'. $kit) ? get_page_by_path('checkout-'. $kit)->ID : '';
405
- $myaccount_id = get_page_by_path('my-account-'. $kit) ? get_page_by_path('my-account-'. $kit)->ID : '';
406
-
407
- update_option('woocommerce_shop_page_id', $shop_id);
408
- update_option('woocommerce_cart_page_id', $cart_id);
409
- update_option('woocommerce_checkout_page_id', $checkout_id);
410
-
411
- if ( '' !== $myaccount_id ) {
412
- update_option('woocommerce_myaccount_page_id', $myaccount_id);
413
- }
414
-
415
- // Update Options
416
- update_option( 'woocommerce_queue_flush_rewrite_rules', 'yes' );
417
-
418
- // Enable Elementor Builder for WooCommerce CPT
419
- // $cpt_support = get_option( 'elementor_cpt_support' );
420
-
421
- // if ( ! in_array( 'product', $cpt_support ) ) {
422
- // $cpt_support[] = 'product';
423
- // update_option( 'elementor_cpt_support', $cpt_support );
424
- // }
425
- }
426
-
427
- // Set Popups
428
- if ( $has_off_canvas ) {
429
- update_option('wpr_popup_conditions', '{"user-popup-'. $kit .'-off-canvas":["global"],"user-popup-'. $kit .'-popup":["global"]}');
430
- } else {
431
- update_option('wpr_popup_conditions', '{"user-popup-'. $kit .'-popup":["global"]}');
432
- }
433
- }
434
-
435
- /**
436
- ** Fix Elementor Images
437
- */
438
- function wpr_fix_elementor_images() {
439
- $args = array(
440
- 'post_type' => ['wpr_templates', 'wpr_mega_menu', 'page'],
441
- 'posts_per_page' => '-1',
442
- 'meta_key' => '_elementor_version'
443
- );
444
- $elementor_pages = new WP_Query ( $args );
445
-
446
- // Check that we have query results.
447
- if ( $elementor_pages->have_posts() ) {
448
-
449
- // Start looping over the query results.
450
- while ( $elementor_pages->have_posts() ) {
451
-
452
- $elementor_pages->the_post();
453
-
454
- // Replace Demo with Current
455
- $site_url = get_site_url();
456
- $site_url = str_replace( '/', '\/', $site_url );
457
- $demo_site_url = 'https://demosites.royal-elementor-addons.com/'. get_option('wpr-import-kit-id');
458
- $demo_site_url = str_replace( '/', '\/', $demo_site_url );
459
-
460
- // Elementor Data
461
- $data = get_post_meta( get_the_ID(), '_elementor_data', true );
462
-
463
- if ( ! empty( $data ) ) {
464
- $data = preg_replace('/\\\{1}\/sites\\\{1}\/\d+/', '', $data);
465
- $data = str_replace( $demo_site_url, $site_url, $data );
466
- $data = json_decode( $data, true );
467
- }
468
-
469
- update_metadata( 'post', get_the_ID(), '_elementor_data', $data );
470
-
471
- // Elementor Page Settings
472
- $page_settings = get_post_meta( get_the_ID(), '_elementor_page_settings', true );
473
- $page_settings = json_encode($page_settings);
474
-
475
- if ( ! empty( $page_settings ) ) {
476
- $page_settings = preg_replace('/\\\{1}\/sites\\\{1}\/\d+/', '', $page_settings);
477
- $page_settings = str_replace( $demo_site_url, $site_url, $page_settings );
478
- $page_settings = json_decode( $page_settings, true );
479
- }
480
-
481
- update_metadata( 'post', get_the_ID(), '_elementor_page_settings', $page_settings );
482
-
483
- }
484
-
485
- }
486
-
487
- // Clear Elementor Cache
488
- Plugin::$instance->files_manager->clear_cache();
489
- }
490
-
491
- /**
492
- ** Final Settings Setup
493
- */
494
- function wpr_final_settings_setup() {
495
- $kit = !empty(get_option('wpr-import-kit-id')) ? esc_html(get_option('wpr-import-kit-id')) : '';
496
-
497
- // Elementor Site Settings
498
- import_elementor_site_settings($kit);
499
-
500
- // Setup WPR Templates
501
- setup_wpr_templates($kit);
502
-
503
- // Fix Elementor Images
504
- wpr_fix_elementor_images();
505
-
506
- // Track Kit
507
- wpr_track_imported_kit( $kit );
508
-
509
- // Clear DB
510
- delete_option('wpr-import-kit-id');
511
-
512
- // Delete Hello World Post
513
- $post = get_page_by_path('hello-world', OBJECT, 'post');
514
- if ( $post ) {
515
- wp_delete_post($post->ID,true);
516
- }
517
- }
518
-
519
- /**
520
- ** Prevent WooCommerce creating default pages
521
- */
522
- function disable_default_woo_pages_creation() {
523
- add_filter( 'woocommerce_create_pages', '__return_empty_array' );
524
- }
525
-
526
- /**
527
- * Allow SVG Import - Add Mime Types
528
- */
529
- function wpr_svgs_upload_mimes( $mimes = array() ) {
530
-
531
- // allow SVG file upload
532
- $mimes['svg'] = 'image/svg+xml';
533
- $mimes['svgz'] = 'image/svg+xml';
534
-
535
- // allow JSON file upload
536
- $mimes['json'] = 'text/plain';
537
-
538
- return $mimes;
539
-
540
- }
541
- add_filter( 'upload_mimes', 'wpr_svgs_upload_mimes', 99 );
542
-
543
- /**
544
- * Check Mime Types
545
- */
546
- function wpr_svgs_upload_check( $checked, $file, $filename, $mimes ) {
547
-
548
- if ( ! $checked['type'] ) {
549
-
550
- $check_filetype = wp_check_filetype( $filename, $mimes );
551
- $ext = $check_filetype['ext'];
552
- $type = $check_filetype['type'];
553
- $proper_filename = $filename;
554
-
555
- if ( $type && 0 === strpos( $type, 'image/' ) && $ext !== 'svg' ) {
556
- $ext = $type = false;
557
- }
558
-
559
- $checked = compact( 'ext','type','proper_filename' );
560
- }
561
-
562
- return $checked;
563
-
564
- }
565
- add_filter( 'wp_check_filetype_and_ext', 'wpr_svgs_upload_check', 10, 4 );
566
-
567
- /**
568
- * Mime Check fix for WP 4.7.1 / 4.7.2
569
- *
570
- * Fixes uploads for these 2 version of WordPress.
571
- * Issue was fixed in 4.7.3 core.
572
- */
573
- function wpr_svgs_allow_svg_upload( $data, $file, $filename, $mimes ) {
574
-
575
- global $wp_version;
576
- if ( $wp_version !== '4.7.1' || $wp_version !== '4.7.2' ) {
577
- return $data;
578
- }
579
-
580
- $filetype = wp_check_filetype( $filename, $mimes );
581
-
582
- return [
583
- 'ext' => $filetype['ext'],
584
- 'type' => $filetype['type'],
585
- 'proper_filename' => $data['proper_filename']
586
- ];
587
-
588
- }
589
- add_filter( 'wp_check_filetype_and_ext', 'wpr_svgs_allow_svg_upload', 10, 4 );
590
-
591
- /**
592
- ** Search Query Results
593
- */
594
- function wpr_search_query_results() {
595
- // Freemius OptIn
596
- if ( ! ( wpr_fs()->is_registered() && wpr_fs()->is_tracking_allowed() || wpr_fs()->is_pending_activation() ) ) {
597
- return;
598
- }
599
-
600
- $search_query = isset($_POST['search_query']) ? sanitize_text_field(wp_unslash($_POST['search_query'])) : '';
601
-
602
- wp_remote_post( 'http://reastats.kinsta.cloud/wp-json/templates-kit-search/data', [
603
- 'body' => [
604
- 'search_query' => $search_query
605
- ]
606
- ] );
607
- }
608
-
609
- /**
610
- ** Search Query Results
611
- */
612
- function wpr_track_imported_kit( $kit ) {
613
- // Freemius OptIn
614
- if ( ! ( wpr_fs()->is_registered() && wpr_fs()->is_tracking_allowed() || wpr_fs()->is_pending_activation() ) ) {
615
- return;
616
- }
617
-
618
- wp_remote_post( 'http://reastats.kinsta.cloud/wp-json/templates-kit-import/data', [
619
- 'body' => [
620
- 'imported_kit' => $kit
621
- ]
622
- ] );
623
  }
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ use WprAddons\Admin\Templates\WPR_Templates_Data;
8
+ use WprAddons\Classes\Utilities;
9
+ use Elementor\Plugin;
10
+
11
+ // Register Menus
12
+ function wpr_addons_add_templates_kit_menu() {
13
+ add_submenu_page( 'wpr-addons', 'Templates Kit', 'Templates Kit', 'manage_options', 'wpr-templates-kit', 'wpr_addons_templates_kit_page' );
14
+ }
15
+ add_action( 'admin_menu', 'wpr_addons_add_templates_kit_menu' );
16
+
17
+ // Import Template Kit
18
+ add_action( 'wp_ajax_wpr_activate_required_theme', 'wpr_activate_required_theme' );
19
+ add_action( 'wp_ajax_wpr_activate_required_plugins', 'wpr_activate_required_plugins' );
20
+ add_action( 'wp_ajax_wpr_fix_royal_compatibility', 'wpr_fix_royal_compatibility' );
21
+ add_action( 'wp_ajax_wpr_import_templates_kit', 'wpr_import_templates_kit' );
22
+ add_action( 'wp_ajax_wpr_final_settings_setup', 'wpr_final_settings_setup' );
23
+ add_action( 'wp_ajax_wpr_search_query_results', 'wpr_search_query_results' );
24
+ add_action( 'init', 'disable_default_woo_pages_creation', 2 );
25
+
26
+
27
+ /**
28
+ ** Render Templates Kit Page
29
+ */
30
+ function wpr_addons_templates_kit_page() {
31
+
32
+ ?>
33
+
34
+ <div class="wpr-templates-kit-page">
35
+
36
+ <header>
37
+ <div class="wpr-templates-kit-logo">
38
+ <div><img src="<?php echo !empty(get_option('wpr_wl_plugin_logo')) ? esc_url(wp_get_attachment_image_src(get_option('wpr_wl_plugin_logo'), 'full')[0]) : esc_url(WPR_ADDONS_ASSETS_URL .'img/logo-40x40.png'); ?>"></div>
39
+ <div class="back-btn"><?php printf( esc_html__('%s Back to Library', 'wpr-addons'), '<span class="dashicons dashicons-arrow-left-alt2"></span>'); ?></div>
40
+ </div>
41
+
42
+ <div class="wpr-templates-kit-search">
43
+ <input type="text" autocomplete="off" placeholder="<?php esc_html_e('Search Templates Kit...', 'wpr-addons'); ?>">
44
+ <span class="dashicons dashicons-search"></span>
45
+ </div>
46
+
47
+ <div class="wpr-templates-kit-price-filter">
48
+ <span data-price="mixed"><?php esc_html_e('Price: Mixed', 'wpr-addons'); ?></span>
49
+ <span class="dashicons dashicons-arrow-down-alt2"></span>
50
+ <ul>
51
+ <li><?php esc_html_e('Mixed', 'wpr-addons'); ?></li>
52
+ <li><?php esc_html_e('Free', 'wpr-addons'); ?></li>
53
+ <li><?php esc_html_e('Premium', 'wpr-addons'); ?></li>
54
+ </ul>
55
+ </div>
56
+
57
+ <div class="wpr-templates-kit-filters">
58
+ <div>Filter: All</div>
59
+ <ul>
60
+ <li data-filter="all">Blog</li>
61
+ <li data-filter="blog">Blog</li>
62
+ <li data-filter="business">Business</li>
63
+ <li data-filter="ecommerce">eCommerce</li>
64
+ <li data-filter="beauty">Beauty</li>
65
+ </ul>
66
+ </div>
67
+ </header>
68
+
69
+ <div class="wpr-templates-kit-page-title">
70
+ <h1><?php esc_html_e('Royal Elementor Templates Kit', 'wpr-addons'); ?></h1>
71
+ <p><?php esc_html_e('Import any Templates Kit with just a Single click', 'wpr-addons'); ?></p>
72
+ <p>
73
+ <a href="https://www.youtube.com/watch?v=kl2xBoWW81o" class="wpr-options-button button" target="_blank">
74
+ <?php esc_html_e('Video Tutorial', 'wpr-addons'); ?>
75
+ <span class="dashicons dashicons-video-alt3"></span>
76
+ </a>
77
+ </p>
78
+ </div>
79
+
80
+ <div class="wpr-templates-kit-grid main-grid" data-theme-status="<?php echo esc_attr(get_theme_status()); ?>">
81
+ <?php
82
+ $kits = WPR_Templates_Data::get_available_kits();
83
+ $sorted_kits = [];
84
+
85
+ foreach ($kits as $slug => $kit) {
86
+ foreach ($kit as $version => $data ) {
87
+ $sorted_kits[$slug .'-'. $version] = $data;
88
+ }
89
+ }
90
+
91
+ // Sort by Priority
92
+ uasort($sorted_kits, function ($item1, $item2) {
93
+ if ($item1['priority'] == $item2['priority']) return 0;
94
+ return $item1['priority'] < $item2['priority'] ? -1 : 1;
95
+ });
96
+
97
+ // Loop
98
+ foreach ($sorted_kits as $kit_id => $data) {
99
+ echo '<div class="grid-item" data-kit-id="'. esc_attr($kit_id) .'" data-tags="'. esc_attr($data['tags']) .'" data-plugins="'. esc_attr($data['plugins']) .'" data-pages="'. esc_attr($data['pages']) .'" data-price="'. esc_attr($data['price']) .'">';
100
+ echo '<div class="image-wrap">';
101
+ echo '<img src="'. esc_url('https://royal-elementor-addons.com/library/templates-kit/'. $kit_id .'/home.jpg') .'">';
102
+ echo '<div class="image-overlay"><span class="dashicons dashicons-search"></span></div>';
103
+ echo '</div>';
104
+ echo '<footer>';
105
+ echo '<h3>'. esc_html($data['name']) .'</h3>';
106
+ if ( $data['woo-builder'] ) {
107
+ echo '<span class="wpr-woo-builder-label">'. esc_html__( 'Woo Builder', 'wpr-addons' ) .'</span>';
108
+ } elseif ( $data['theme-builder'] ) {
109
+ echo '<span class="wpr-theme-builder-label">'. esc_html__( 'Theme Builder', 'wpr-addons' ) .'</span>';
110
+ }
111
+ echo '</footer>';
112
+ echo '</div>';
113
+ }
114
+
115
+ ?>
116
+
117
+ </div>
118
+
119
+ <div class="wpr-templates-kit-single">
120
+ <div class="wpr-templates-kit-grid single-grid"></div>
121
+
122
+ <footer class="action-buttons-wrap">
123
+ <a href="https://royal-elementor-addons.com/" class="preview-demo button" target="_blank"><?php esc_html_e('Preview Demo', 'wpr-addons'); ?> <span class="dashicons dashicons-external"></span></a>
124
+
125
+ <div class="import-template-buttons">
126
+ <?php
127
+ echo '<button class="import-kit button">'. esc_html__('Import Templates Kit', 'wpr-addons') .' <span class="dashicons dashicons-download"></span></button>';
128
+ echo '<a href="https://royal-elementor-addons.com/?ref=rea-plugin-backend-templates-upgrade-pro#purchasepro" class="get-access button" target="_blank">'. esc_html__('Get Access', 'wpr-addons') .' <span class="dashicons dashicons-external"></span></a>';
129
+ ?>
130
+ <button class="import-template button"><?php printf( esc_html__( 'Import %s Template', 'wpr-addons' ), '<strong></strong>' ); ?></button>
131
+
132
+ </div>
133
+ </footer>
134
+ </div>
135
+
136
+ <div class="wpr-import-kit-popup-wrap">
137
+ <div class="overlay"></div>
138
+ <div class="wpr-import-kit-popup">
139
+ <header>
140
+ <h3><?php esc_html_e('Template Kit is being imported', 'wpr-addons'); ?><span>.</span></h3>
141
+ <span class="dashicons dashicons-no-alt close-btn"></span>
142
+ </header>
143
+ <div class="content">
144
+ <p><?php esc_html_e('The import process can take a few seconds depending on the size of the kit you are importing and speed of the connection.', 'wpr-addons'); ?></p>
145
+ <p><?php esc_html_e('Please do NOT close this browser window until import is completed.', 'wpr-addons'); ?></p>
146
+
147
+ <div class="progress-wrap">
148
+ <div class="progress-bar"></div>
149
+ <strong></strong>
150
+ </div>
151
+
152
+ <div class="wpr-import-help">
153
+ <a href="https://royal-elementor-addons.com/contactus/?ref=rea-plugin-backend-templates-import-screen" target="_blank">Having trouble with template import?&nbsp;&nbsp;Get help <span class="dashicons dashicons-sos"></span></a>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+
159
+ <div class="wpr-templates-kit-not-found">
160
+ <img src="<?php echo esc_url(WPR_ADDONS_ASSETS_URL .'img/not-found.png'); ?>">
161
+ <h1><?php esc_html_e('No Search Results Found.', 'wpr-addons'); ?></h1>
162
+ <p><?php esc_html_e('Cant find a Templates Kit you are looking for?', 'wpr-addons'); ?></p>
163
+ <a href="https://royal-elementor-addons.com/library/request-new-kit-red.html" target="_blank"><?php esc_html_e('Request Templates Kit.', 'wpr-addons'); ?></a>
164
+ </div>
165
+
166
+ </div>
167
+
168
+
169
+ <?php
170
+
171
+ } // End wpr_addons_templates_kit_page()
172
+
173
+ /**
174
+ ** Get Theme Status
175
+ */
176
+ function get_theme_status() {
177
+ $theme = wp_get_theme();
178
+
179
+ // Theme installed and activate.
180
+ if ( 'Royal Elementor Kit' === $theme->name || 'Royal Elementor Kit' === $theme->parent_theme ) {
181
+ return 'req-theme-active';
182
+ }
183
+
184
+ // Theme installed but not activate.
185
+ foreach ( (array) wp_get_themes() as $theme_dir => $theme ) {
186
+ if ( 'Royal Elementor Kit' === $theme->name || 'Royal Elementor Kit' === $theme->parent_theme ) {
187
+ return 'req-theme-inactive';
188
+ }
189
+ }
190
+
191
+ return 'req-theme-not-installed';
192
+ }
193
+
194
+ /**
195
+ ** Install/Activate Required Theme
196
+ */
197
+ function wpr_activate_required_theme() {
198
+ // Get Current Theme
199
+ $theme = get_option('stylesheet');
200
+
201
+ // Activate Royal Elementor Kit Theme
202
+ if ( 'ashe-pro-premium' !== $theme && 'bard-pro-premium' !== $theme
203
+ && 'vayne-pro-premium' !== $theme && 'kayn-pro-premium' !== $theme ) {
204
+ switch_theme( 'royal-elementor-kit' );
205
+ set_transient( 'royal-elementor-kit_activation_notice', true );
206
+ }
207
+
208
+ // TODO: maybe return back - 'ashe' !== $theme && 'bard' !== $theme &&
209
+ }
210
+
211
+ /**
212
+ ** Activate Required Plugins
213
+ */
214
+ function wpr_activate_required_plugins() {
215
+ if ( isset($_POST['plugin']) ) {
216
+ if ( 'contact-form-7' == $_POST['plugin'] ) {
217
+ if ( !is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) ) {
218
+ activate_plugin( 'contact-form-7/wp-contact-form-7.php' );
219
+ }
220
+ } elseif ( 'woocommerce' == $_POST['plugin'] ) {
221
+ if ( !is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
222
+ activate_plugin( 'woocommerce/woocommerce.php' );
223
+ }
224
+ } elseif ( 'media-library-assistant' == $_POST['plugin'] ) {
225
+ if ( !is_plugin_active( 'media-library-assistant/index.php' ) ) {
226
+ activate_plugin( 'media-library-assistant/index.php' );
227
+ }
228
+ }
229
+ }
230
+ }
231
+
232
+ /**
233
+ ** Deactivate Extra Plugins
234
+ */
235
+ function wpr_fix_royal_compatibility() {
236
+ // Get currently active plugins
237
+ $active_plugins = (array) get_option( 'active_plugins', array() );
238
+ $active_plugins = array_values($active_plugins);
239
+
240
+ // Deactivate Extra Import Plugins
241
+ $ashe_extra_key = array_search('ashe-extra/ashe-extra.php', $active_plugins);
242
+ $bard_extra_key = array_search('bard-extra/bard-extra.php', $active_plugins);
243
+
244
+ if ( false !== $ashe_extra_key && array_key_exists($ashe_extra_key, $active_plugins) ) {
245
+ unset($active_plugins[$ashe_extra_key]);
246
+ }
247
+
248
+ if ( false !== $bard_extra_key && array_key_exists($bard_extra_key, $active_plugins) ) {
249
+ unset($active_plugins[$bard_extra_key]);
250
+ }
251
+
252
+ // Set Active Plugins
253
+ update_option( 'active_plugins', array_values($active_plugins) );
254
+
255
+ // Get Current Theme
256
+ $theme = get_option('stylesheet');
257
+
258
+ // Activate Royal Elementor Kit Theme
259
+ if ( 'ashe-pro-premium' !== $theme && 'bard-pro-premium' !== $theme
260
+ && 'vayne-pro-premium' !== $theme && 'kayn-pro-premium' !== $theme ) {
261
+ switch_theme( 'royal-elementor-kit' );
262
+ set_transient( 'royal-elementor-kit_activation_notice', true );
263
+ }
264
+ }
265
+
266
+ /**
267
+ ** Import Template Kit
268
+ */
269
+ function wpr_import_templates_kit() {
270
+
271
+ // Temp Define Importers
272
+ if ( ! defined('WP_LOAD_IMPORTERS') ) {
273
+ define('WP_LOAD_IMPORTERS', true);
274
+ }
275
+
276
+ // Include if Class Does NOT Exist
277
+ if ( ! class_exists( 'WP_Import' ) ) {
278
+ $class_wp_importer = WPR_ADDONS_PATH .'admin/import/class-wordpress-importer.php';
279
+ if ( file_exists( $class_wp_importer ) ) {
280
+ require $class_wp_importer;
281
+ }
282
+ }
283
+
284
+ if ( class_exists( 'WP_Import' ) ) {
285
+ $kit = isset($_POST['wpr_templates_kit']) ? sanitize_file_name(wp_unslash($_POST['wpr_templates_kit'])) : '';
286
+ $file = isset($_POST['wpr_templates_kit_single']) ? sanitize_file_name(wp_unslash($_POST['wpr_templates_kit_single'])) : '';
287
+
288
+ // Tmp
289
+ update_option( 'wpr-import-kit-id', $kit );
290
+
291
+ // Download Import File
292
+ $local_file_path = download_template( $kit, $file );
293
+
294
+ // Prepare for Import
295
+ $wp_import = new WP_Import( $local_file_path, ['fetch_attachments' => true] );
296
+
297
+ // Import
298
+ ob_start();
299
+ $wp_import->run();
300
+ ob_end_clean();
301
+
302
+ // Delete Import File
303
+ unlink( $local_file_path );
304
+
305
+ // Send to JS
306
+ echo esc_html(serialize( $wp_import ));
307
+ }
308
+
309
+ }
310
+
311
+ /**
312
+ ** Download Template
313
+ */
314
+ function download_template( $kit, $file ) {
315
+ $file = ! $file ? 'main' : $file;
316
+
317
+ // Avoid Cache
318
+ $randomNum = substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"), 0, 7);
319
+
320
+ // Remote and Local Files
321
+ $remote_file_url = 'https://royal-elementor-addons.com/library/templates-kit/'. $kit .'/main.xml?='. $randomNum;
322
+ $local_file_path = WPR_ADDONS_PATH .'admin/import/tmp.xml';
323
+
324
+ // No Limit for Execution
325
+ set_time_limit(0);
326
+
327
+ // Copy File From Server
328
+ copy( $remote_file_url, $local_file_path );
329
+
330
+ return $local_file_path;
331
+ }
332
+
333
+ /**
334
+ ** Import Elementor Site Settings
335
+ */
336
+ function import_elementor_site_settings( $kit ) {
337
+ // Avoid Cache
338
+ // $randomNum = substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"), 0, 7);
339
+
340
+ // Get Remote File
341
+ $site_settings = @file_get_contents('https://royal-elementor-addons.com/library/templates-kit/'. $kit .'/site-settings.json');
342
+
343
+ if ( false !== $site_settings ) {
344
+ $site_settings = json_decode($site_settings, true);
345
+
346
+ if ( ! empty($site_settings['settings']) ) {
347
+ $default_kit = \Elementor\Plugin::$instance->documents->get_doc_for_frontend( get_option( 'elementor_active_kit' ) );
348
+
349
+ $kit_settings = $default_kit->get_settings();
350
+ $new_settings = $site_settings['settings'];
351
+ $settings = array_merge($kit_settings, $new_settings);
352
+
353
+ $default_kit->save( [ 'settings' => $settings ] );
354
+ }
355
+ }
356
+ }
357
+
358
+ /**
359
+ ** Setup WPR Templates
360
+ */
361
+ function setup_wpr_templates( $kit ) {
362
+ $kit = isset($kit) ? sanitize_text_field(wp_unslash($kit)) : '';
363
+
364
+ // Check if kit has Theme Builder templates
365
+ $kit_name = substr($kit, 0, strripos($kit, '-v'));
366
+ $kit_version = substr($kit, (strripos($kit, '-v') + 1), strlen($kit));
367
+ $get_available_kits = WPR_Templates_Data::get_available_kits();
368
+ $has_theme_builder = $get_available_kits[$kit_name][$kit_version]['theme-builder'];
369
+ $has_woo_builder = $get_available_kits[$kit_name][$kit_version]['woo-builder'];
370
+ $has_off_canvas = $get_available_kits[$kit_name][$kit_version]['off-canvas'];
371
+
372
+ // Set Home & Blog Pages
373
+ $home_page = get_page_by_path('home-'. $kit);
374
+ $blog_page = get_page_by_path('blog-'. $kit);
375
+
376
+ if ( $home_page ) {
377
+ update_option( 'show_on_front', 'page' );
378
+ update_option( 'page_on_front', $home_page->ID );
379
+
380
+ if ( $blog_page ) {
381
+ update_option( 'page_for_posts', $blog_page->ID );
382
+ }
383
+ }
384
+
385
+ // Set Headers and Footers
386
+ update_option('wpr_header_conditions', '{"user-header-'. $kit .'-header":["global"]}');
387
+ update_post_meta( Utilities::get_template_id('user-header-'. $kit), 'wpr_header_show_on_canvas', 'true' );
388
+ update_option('wpr_footer_conditions', '{"user-footer-'. $kit .'-footer":["global"]}');
389
+ update_post_meta( Utilities::get_template_id('user-footer-'. $kit), 'wpr_footer_show_on_canvas', 'true' );
390
+
391
+ // Theme Builder
392
+ if ( $has_theme_builder ) {
393
+ update_option('wpr_archive_conditions', '{"user-archive-'. $kit .'-blog":["archive/posts"],"user-archive-'. $kit .'-author":["archive/author"],"user-archive-'. $kit .'-date":["archive/date"],"user-archive-'. $kit .'-category-tag":["archive/categories/all","archive/tags/all"],"user-archive-'. $kit .'-search":["archive/search"]}');
394
+ update_option('wpr_single_conditions', '{"user-single-'. $kit .'-404":["single/page_404"],"user-single-'. $kit .'-post":["single/posts/all"],"user-single-'. $kit .'-page":["single/pages/all"]}');
395
+ }
396
+
397
+ // WooCommerce Builder
398
+ if ( $has_woo_builder ) {
399
+ update_option('wpr_product_archive_conditions', '{"user-product_archive-'. $kit .'-shop":["product_archive/products"],"user-product_archive-'. $kit .'-product-category-tag":["product_archive/product_cat/all","product_archive/product_tag/all"]}');
400
+ update_option('wpr_product_single_conditions', '{"user-product_single-'. $kit .'-product":["product_single/product"]}');
401
+
402
+ $shop_id = get_page_by_path('shop-'. $kit) ? get_page_by_path('shop-'. $kit)->ID : '';
403
+ $cart_id = get_page_by_path('cart-'. $kit) ? get_page_by_path('cart-'. $kit)->ID : '';
404
+ $checkout_id = get_page_by_path('checkout-'. $kit) ? get_page_by_path('checkout-'. $kit)->ID : '';
405
+ $myaccount_id = get_page_by_path('my-account-'. $kit) ? get_page_by_path('my-account-'. $kit)->ID : '';
406
+
407
+ update_option('woocommerce_shop_page_id', $shop_id);
408
+ update_option('woocommerce_cart_page_id', $cart_id);
409
+ update_option('woocommerce_checkout_page_id', $checkout_id);
410
+
411
+ if ( '' !== $myaccount_id ) {
412
+ update_option('woocommerce_myaccount_page_id', $myaccount_id);
413
+ }
414
+
415
+ // Update Options
416
+ update_option( 'woocommerce_queue_flush_rewrite_rules', 'yes' );
417
+
418
+ // Enable Elementor Builder for WooCommerce CPT
419
+ // $cpt_support = get_option( 'elementor_cpt_support' );
420
+
421
+ // if ( ! in_array( 'product', $cpt_support ) ) {
422
+ // $cpt_support[] = 'product';
423
+ // update_option( 'elementor_cpt_support', $cpt_support );
424
+ // }
425
+ }
426
+
427
+ // Set Popups
428
+ if ( $has_off_canvas ) {
429
+ update_option('wpr_popup_conditions', '{"user-popup-'. $kit .'-off-canvas":["global"],"user-popup-'. $kit .'-popup":["global"]}');
430
+ } else {
431
+ update_option('wpr_popup_conditions', '{"user-popup-'. $kit .'-popup":["global"]}');
432
+ }
433
+ }
434
+
435
+ /**
436
+ ** Fix Elementor Images
437
+ */
438
+ function wpr_fix_elementor_images() {
439
+ $args = array(
440
+ 'post_type' => ['wpr_templates', 'wpr_mega_menu', 'page'],
441
+ 'posts_per_page' => '-1',
442
+ 'meta_key' => '_elementor_version'
443
+ );
444
+ $elementor_pages = new WP_Query ( $args );
445
+
446
+ // Check that we have query results.
447
+ if ( $elementor_pages->have_posts() ) {
448
+
449
+ // Start looping over the query results.
450
+ while ( $elementor_pages->have_posts() ) {
451
+
452
+ $elementor_pages->the_post();
453
+
454
+ // Replace Demo with Current
455
+ $site_url = get_site_url();
456
+ $site_url = str_replace( '/', '\/', $site_url );
457
+ $demo_site_url = 'https://demosites.royal-elementor-addons.com/'. get_option('wpr-import-kit-id');
458
+ $demo_site_url = str_replace( '/', '\/', $demo_site_url );
459
+
460
+ // Elementor Data
461
+ $data = get_post_meta( get_the_ID(), '_elementor_data', true );
462
+
463
+ if ( ! empty( $data ) ) {
464
+ $data = preg_replace('/\\\{1}\/sites\\\{1}\/\d+/', '', $data);
465
+ $data = str_replace( $demo_site_url, $site_url, $data );
466
+ $data = json_decode( $data, true );
467
+ }
468
+
469
+ update_metadata( 'post', get_the_ID(), '_elementor_data', $data );
470
+
471
+ // Elementor Page Settings
472
+ $page_settings = get_post_meta( get_the_ID(), '_elementor_page_settings', true );
473
+ $page_settings = json_encode($page_settings);
474
+
475
+ if ( ! empty( $page_settings ) ) {
476
+ $page_settings = preg_replace('/\\\{1}\/sites\\\{1}\/\d+/', '', $page_settings);
477
+ $page_settings = str_replace( $demo_site_url, $site_url, $page_settings );
478
+ $page_settings = json_decode( $page_settings, true );
479
+ }
480
+
481
+ update_metadata( 'post', get_the_ID(), '_elementor_page_settings', $page_settings );
482
+
483
+ }
484
+
485
+ }
486
+
487
+ // Clear Elementor Cache
488
+ Plugin::$instance->files_manager->clear_cache();
489
+ }
490
+
491
+ /**
492
+ ** Final Settings Setup
493
+ */
494
+ function wpr_final_settings_setup() {
495
+ $kit = !empty(get_option('wpr-import-kit-id')) ? esc_html(get_option('wpr-import-kit-id')) : '';
496
+
497
+ // Elementor Site Settings
498
+ import_elementor_site_settings($kit);
499
+
500
+ // Setup WPR Templates
501
+ setup_wpr_templates($kit);
502
+
503
+ // Fix Elementor Images
504
+ wpr_fix_elementor_images();
505
+
506
+ // Track Kit
507
+ wpr_track_imported_kit( $kit );
508
+
509
+ // Clear DB
510
+ delete_option('wpr-import-kit-id');
511
+
512
+ // Delete Hello World Post
513
+ $post = get_page_by_path('hello-world', OBJECT, 'post');
514
+ if ( $post ) {
515
+ wp_delete_post($post->ID,true);
516
+ }
517
+ }
518
+
519
+ /**
520
+ ** Prevent WooCommerce creating default pages
521
+ */
522
+ function disable_default_woo_pages_creation() {
523
+ add_filter( 'woocommerce_create_pages', '__return_empty_array' );
524
+ }
525
+
526
+ /**
527
+ * Allow SVG Import - Add Mime Types
528
+ */
529
+ function wpr_svgs_upload_mimes( $mimes = array() ) {
530
+
531
+ // allow SVG file upload
532
+ $mimes['svg'] = 'image/svg+xml';
533
+ $mimes['svgz'] = 'image/svg+xml';
534
+
535
+ // allow JSON file upload
536
+ $mimes['json'] = 'text/plain';
537
+
538
+ return $mimes;
539
+
540
+ }
541
+ add_filter( 'upload_mimes', 'wpr_svgs_upload_mimes', 99 );
542
+
543
+ /**
544
+ * Check Mime Types
545
+ */
546
+ function wpr_svgs_upload_check( $checked, $file, $filename, $mimes ) {
547
+
548
+ if ( ! $checked['type'] ) {
549
+
550
+ $check_filetype = wp_check_filetype( $filename, $mimes );
551
+ $ext = $check_filetype['ext'];
552
+ $type = $check_filetype['type'];
553
+ $proper_filename = $filename;
554
+
555
+ if ( $type && 0 === strpos( $type, 'image/' ) && $ext !== 'svg' ) {
556
+ $ext = $type = false;
557
+ }
558
+
559
+ $checked = compact( 'ext','type','proper_filename' );
560
+ }
561
+
562
+ return $checked;
563
+
564
+ }
565
+ add_filter( 'wp_check_filetype_and_ext', 'wpr_svgs_upload_check', 10, 4 );
566
+
567
+ /**
568
+ * Mime Check fix for WP 4.7.1 / 4.7.2
569
+ *
570
+ * Fixes uploads for these 2 version of WordPress.
571
+ * Issue was fixed in 4.7.3 core.
572
+ */
573
+ function wpr_svgs_allow_svg_upload( $data, $file, $filename, $mimes ) {
574
+
575
+ global $wp_version;
576
+ if ( $wp_version !== '4.7.1' || $wp_version !== '4.7.2' ) {
577
+ return $data;
578
+ }
579
+
580
+ $filetype = wp_check_filetype( $filename, $mimes );
581
+
582
+ return [
583
+ 'ext' => $filetype['ext'],
584
+ 'type' => $filetype['type'],
585
+ 'proper_filename' => $data['proper_filename']
586
+ ];
587
+
588
+ }
589
+ add_filter( 'wp_check_filetype_and_ext', 'wpr_svgs_allow_svg_upload', 10, 4 );
590
+
591
+ /**
592
+ ** Search Query Results
593
+ */
594
+ function wpr_search_query_results() {
595
+ // Freemius OptIn
596
+ if ( ! ( wpr_fs()->is_registered() && wpr_fs()->is_tracking_allowed() || wpr_fs()->is_pending_activation() ) ) {
597
+ return;
598
+ }
599
+
600
+ $search_query = isset($_POST['search_query']) ? sanitize_text_field(wp_unslash($_POST['search_query'])) : '';
601
+
602
+ wp_remote_post( 'http://reastats.kinsta.cloud/wp-json/templates-kit-search/data', [
603
+ 'body' => [
604
+ 'search_query' => $search_query
605
+ ]
606
+ ] );
607
+ }
608
+
609
+ /**
610
+ ** Search Query Results
611
+ */
612
+ function wpr_track_imported_kit( $kit ) {
613
+ // Freemius OptIn
614
+ if ( ! ( wpr_fs()->is_registered() && wpr_fs()->is_tracking_allowed() || wpr_fs()->is_pending_activation() ) ) {
615
+ return;
616
+ }
617
+
618
+ wp_remote_post( 'http://reastats.kinsta.cloud/wp-json/templates-kit-import/data', [
619
+ 'body' => [
620
+ 'imported_kit' => $kit
621
+ ]
622
+ ] );
623
  }
admin/templates/views/astra/class-astra-compat.php CHANGED
@@ -1,84 +1,84 @@
1
- <?php
2
-
3
- use WprAddons\Admin\Includes\WPR_Render_Templates;
4
-
5
- /**
6
- * Wpr_Astra_Compat setup
7
- *
8
- */
9
-
10
- /**
11
- * Astra theme compatibility.
12
- */
13
- class Wpr_Astra_Compat {
14
-
15
- /**
16
- * Instance of Wpr_Astra_Compat.
17
- *
18
- * @var Wpr_Astra_Compat
19
- */
20
- private static $instance;
21
-
22
- /**
23
- * WPR_Render_Templates() Class
24
- */
25
- private $render_templates;
26
-
27
- /**
28
- * Initiator
29
- */
30
- public static function instance() {
31
- if ( ! isset( self::$instance ) ) {
32
- self::$instance = new Wpr_Astra_Compat();
33
-
34
- add_action( 'wp', [ self::$instance, 'hooks' ] );
35
- }
36
-
37
- return self::$instance;
38
- }
39
-
40
- /**
41
- * Run all the Actions / Filters.
42
- */
43
- public function hooks() {
44
- $this->render_templates = new WPR_Render_Templates( true );
45
-
46
- if ( $this->render_templates->is_template_available('header') ) {
47
- add_action( 'template_redirect', [ $this, 'astra_setup_header' ], 10 );
48
- add_action( 'astra_header', [$this->render_templates, 'replace_header'] );
49
- add_action( 'elementor/page_templates/canvas/before_content', [ $this->render_templates, 'add_canvas_header' ] );
50
- }
51
-
52
- if ( $this->render_templates->is_template_available('footer') ) {
53
- add_action( 'template_redirect', [ $this, 'astra_setup_footer' ], 10 );
54
- add_action( 'astra_footer', [$this->render_templates, 'replace_footer'] );
55
- add_action( 'elementor/page_templates/canvas/after_content', [ $this->render_templates, 'add_canvas_footer' ] );
56
- }
57
- }
58
-
59
- /**
60
- * Disable header from the theme.
61
- */
62
- public function astra_setup_header() {
63
- remove_action( 'astra_header', 'astra_header_markup' );
64
-
65
- // Remove the new header builder action.
66
- if ( class_exists( '\Astra_Builder_Helper' ) && \Astra_Builder_Helper::$is_header_footer_builder_active ) {
67
- remove_action( 'astra_header', [ Astra_Builder_Header::get_instance(), 'prepare_header_builder_markup' ] );
68
- }
69
- }
70
-
71
- /**
72
- * Disable footer from the theme.
73
- */
74
- public function astra_setup_footer() {
75
- remove_action( 'astra_footer', 'astra_footer_markup' );
76
-
77
- // Remove the new footer builder action.
78
- if ( class_exists( '\Astra_Builder_Helper' ) && \Astra_Builder_Helper::$is_header_footer_builder_active ) {
79
- remove_action( 'astra_footer', [ Astra_Builder_Footer::get_instance(), 'footer_markup' ] );
80
- }
81
- }
82
- }
83
-
84
- Wpr_Astra_Compat::instance();
1
+ <?php
2
+
3
+ use WprAddons\Admin\Includes\WPR_Render_Templates;
4
+
5
+ /**
6
+ * Wpr_Astra_Compat setup
7
+ *
8
+ */
9
+
10
+ /**
11
+ * Astra theme compatibility.
12
+ */
13
+ class Wpr_Astra_Compat {
14
+
15
+ /**
16
+ * Instance of Wpr_Astra_Compat.
17
+ *
18
+ * @var Wpr_Astra_Compat
19
+ */
20
+ private static $instance;
21
+
22
+ /**
23
+ * WPR_Render_Templates() Class
24
+ */
25
+ private $render_templates;
26
+
27
+ /**
28
+ * Initiator
29
+ */
30
+ public static function instance() {
31
+ if ( ! isset( self::$instance ) ) {
32
+ self::$instance = new Wpr_Astra_Compat();
33
+
34
+ add_action( 'wp', [ self::$instance, 'hooks' ] );
35
+ }
36
+
37
+ return self::$instance;
38
+ }
39
+
40
+ /**
41
+ * Run all the Actions / Filters.
42
+ */
43
+ public function hooks() {
44
+ $this->render_templates = new WPR_Render_Templates( true );
45
+
46
+ if ( $this->render_templates->is_template_available('header') ) {
47
+ add_action( 'template_redirect', [ $this, 'astra_setup_header' ], 10 );
48
+ add_action( 'astra_header', [$this->render_templates, 'replace_header'] );
49
+ add_action( 'elementor/page_templates/canvas/before_content', [ $this->render_templates, 'add_canvas_header' ] );
50
+ }
51
+
52
+ if ( $this->render_templates->is_template_available('footer') ) {
53
+ add_action( 'template_redirect', [ $this, 'astra_setup_footer' ], 10 );
54
+ add_action( 'astra_footer', [$this->render_templates, 'replace_footer'] );
55
+ add_action( 'elementor/page_templates/canvas/after_content', [ $this->render_templates, 'add_canvas_footer' ] );
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Disable header from the theme.
61
+ */
62
+ public function astra_setup_header() {
63
+ remove_action( 'astra_header', 'astra_header_markup' );
64
+
65
+ // Remove the new header builder action.
66
+ if ( class_exists( '\Astra_Builder_Helper' ) && \Astra_Builder_Helper::$is_header_footer_builder_active ) {
67
+ remove_action( 'astra_header', [ Astra_Builder_Header::get_instance(), 'prepare_header_builder_markup' ] );
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Disable footer from the theme.
73
+ */
74
+ public function astra_setup_footer() {
75
+ remove_action( 'astra_footer', 'astra_footer_markup' );
76
+
77
+ // Remove the new footer builder action.
78
+ if ( class_exists( '\Astra_Builder_Helper' ) && \Astra_Builder_Helper::$is_header_footer_builder_active ) {
79
+ remove_action( 'astra_footer', [ Astra_Builder_Footer::get_instance(), 'footer_markup' ] );
80
+ }
81
+ }
82
+ }
83
+
84
+ Wpr_Astra_Compat::instance();
admin/templates/views/oceanwp/class-oceanwp-compat.php CHANGED
@@ -1,72 +1,72 @@
1
- <?php
2
-
3
- use WprAddons\Admin\Includes\WPR_Render_Templates;
4
-
5
- /**
6
- * OceanWP theme compatibility.
7
- */
8
- class Wpr_OceanWP_Compat {
9
-
10
- /**
11
- * Instance of Wpr_OceanWP_Compat.
12
- *
13
- * @var Wpr_OceanWP_Compat
14
- */
15
- private static $instance;
16
-
17
- /**
18
- * WPR_Render_Templates() Class
19
- */
20
- private $render_templates;
21
-
22
- /**
23
- * Initiator
24
- */
25
- public static function instance() {
26
- if ( ! isset( self::$instance ) ) {
27
- self::$instance = new Wpr_OceanWP_Compat();
28
-
29
- add_action( 'wp', [ self::$instance, 'hooks' ] );
30
- }
31
-
32
- return self::$instance;
33
- }
34
-
35
- /**
36
- * Run all the Actions / Filters.
37
- */
38
- public function hooks() {
39
- $this->render_templates = new WPR_Render_Templates( true );
40
-
41
- if ( $this->render_templates->is_template_available('header') ) {
42
- add_action( 'template_redirect', [ $this, 'setup_header' ], 10 );
43
- add_action( 'ocean_header', [$this->render_templates, 'replace_header'] );
44
- add_action( 'elementor/page_templates/canvas/before_content', [ $this->render_templates, 'add_canvas_header' ] );
45
- }
46
-
47
- if ( $this->render_templates->is_template_available('footer') ) {
48
- add_action( 'template_redirect', [ $this, 'setup_footer' ], 10 );
49
- add_action( 'ocean_footer', [$this->render_templates, 'replace_footer'] );
50
- add_action( 'elementor/page_templates/canvas/after_content', [ $this->render_templates, 'add_canvas_footer' ] );
51
- }
52
- }
53
-
54
- /**
55
- * Disable header from the theme.
56
- */
57
- public function setup_header() {
58
- remove_action( 'ocean_top_bar', 'oceanwp_top_bar_template' );
59
- remove_action( 'ocean_header', 'oceanwp_header_template' );
60
- remove_action( 'ocean_page_header', 'oceanwp_page_header_template' );
61
- }
62
-
63
- /**
64
- * Disable footer from the theme.
65
- */
66
- public function setup_footer() {
67
- remove_action( 'ocean_footer', 'oceanwp_footer_template' );
68
- }
69
-
70
- }
71
-
72
- Wpr_OceanWP_Compat::instance();
1
+ <?php
2
+
3
+ use WprAddons\Admin\Includes\WPR_Render_Templates;
4
+
5
+ /**
6
+ * OceanWP theme compatibility.
7
+ */
8
+ class Wpr_OceanWP_Compat {
9
+
10
+ /**
11
+ * Instance of Wpr_OceanWP_Compat.
12
+ *
13
+ * @var Wpr_OceanWP_Compat
14
+ */
15
+ private static $instance;
16
+
17
+ /**
18
+ * WPR_Render_Templates() Class
19
+ */
20
+ private $render_templates;
21
+
22
+ /**
23
+ * Initiator
24
+ */
25
+ public static function instance() {
26
+ if ( ! isset( self::$instance ) ) {
27
+ self::$instance = new Wpr_OceanWP_Compat();
28
+
29
+ add_action( 'wp', [ self::$instance, 'hooks' ] );
30
+ }
31
+
32
+ return self::$instance;
33
+ }
34
+
35
+ /**
36
+ * Run all the Actions / Filters.
37
+ */
38
+ public function hooks() {
39
+ $this->render_templates = new WPR_Render_Templates( true );
40
+
41
+ if ( $this->render_templates->is_template_available('header') ) {
42
+ add_action( 'template_redirect', [ $this, 'setup_header' ], 10 );
43
+ add_action( 'ocean_header', [$this->render_templates, 'replace_header'] );
44
+ add_action( 'elementor/page_templates/canvas/before_content', [ $this->render_templates, 'add_canvas_header' ] );
45
+ }
46
+
47
+ if ( $this->render_templates->is_template_available('footer') ) {
48
+ add_action( 'template_redirect', [ $this, 'setup_footer' ], 10 );
49
+ add_action( 'ocean_footer', [$this->render_templates, 'replace_footer'] );
50
+ add_action( 'elementor/page_templates/canvas/after_content', [ $this->render_templates, 'add_canvas_footer' ] );
51
+ }
52
+ }
53
+
54
+ /**
55
+ * Disable header from the theme.
56
+ */
57
+ public function setup_header() {
58
+ remove_action( 'ocean_top_bar', 'oceanwp_top_bar_template' );
59
+ remove_action( 'ocean_header', 'oceanwp_header_template' );
60
+ remove_action( 'ocean_page_header', 'oceanwp_page_header_template' );
61
+ }
62
+
63
+ /**
64
+ * Disable footer from the theme.
65
+ */
66
+ public function setup_footer() {
67
+ remove_action( 'ocean_footer', 'oceanwp_footer_template' );
68
+ }
69
+
70
+ }
71
+
72
+ Wpr_OceanWP_Compat::instance();
admin/templates/views/royal/theme-footer-royal.php CHANGED
@@ -1,24 +1,24 @@
1
- <?php
2
- use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
- use WprAddons\Classes\Utilities;
4
-
5
- if ( ! defined( 'ABSPATH' ) ) {
6
- exit; // Exit if accessed directly.
7
- }
8
-
9
- $conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
10
- $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
-
12
- // Render WPR Header
13
- Utilities::render_elementor_template($template_slug);
14
-
15
- wp_footer();
16
-
17
- // Royal themes compatibility
18
- echo '</div>'; // .page-content
19
- echo '</div>'; // #page-wrap
20
-
21
- ?>
22
-
23
- </body>
24
  </html>
1
+ <?php
2
+ use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
+ use WprAddons\Classes\Utilities;
4
+
5
+ if ( ! defined( 'ABSPATH' ) ) {
6
+ exit; // Exit if accessed directly.
7
+ }
8
+
9
+ $conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
10
+ $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
+
12
+ // Render WPR Header
13
+ Utilities::render_elementor_template($template_slug);
14
+
15
+ wp_footer();
16
+
17
+ // Royal themes compatibility
18
+ echo '</div>'; // .page-content
19
+ echo '</div>'; // #page-wrap
20
+
21
+ ?>
22
+
23
+ </body>
24
  </html>
admin/templates/views/royal/theme-header-royal.php CHANGED
@@ -1,40 +1,40 @@
1
- <?php
2
- use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
- use WprAddons\Classes\Utilities;
4
-
5
- if ( ! defined( 'ABSPATH' ) ) {
6
- exit; // Exit if accessed directly.
7
- }
8
-
9
- $conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
10
- $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
-
12
- ?>
13
-
14
- <!DOCTYPE html>
15
- <html <?php language_attributes(); ?>>
16
- <head>
17
- <meta charset="<?php bloginfo( 'charset' ); ?>">
18
- <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
19
- <?php if ( ! current_theme_supports( 'title-tag' ) ) : ?>
20
- <title>
21
- <?php echo esc_html(wp_get_document_title()); ?>
22
- </title>
23
- <?php endif; ?>
24
- <?php wp_head(); ?>
25
- </head>
26
-
27
- <body <?php body_class(); ?>>
28
-
29
- <?php
30
-
31
- do_action( 'wp_body_open' );
32
-
33
- // Royal themes compatibility
34
- echo '<div id="page-wrap">';
35
-
36
- // Render WPR Header
37
- Utilities::render_elementor_template($template_slug);
38
-
39
- // Royal themes compatibility
40
  echo '<div class="page-content">';
1
+ <?php
2
+ use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
+ use WprAddons\Classes\Utilities;
4
+
5
+ if ( ! defined( 'ABSPATH' ) ) {
6
+ exit; // Exit if accessed directly.
7
+ }
8
+
9
+ $conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
10
+ $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
+
12
+ ?>
13
+
14
+ <!DOCTYPE html>
15
+ <html <?php language_attributes(); ?>>
16
+ <head>
17
+ <meta charset="<?php bloginfo( 'charset' ); ?>">
18
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
19
+ <?php if ( ! current_theme_supports( 'title-tag' ) ) : ?>
20
+ <title>
21
+ <?php echo esc_html(wp_get_document_title()); ?>
22
+ </title>
23
+ <?php endif; ?>
24
+ <?php wp_head(); ?>
25
+ </head>
26
+
27
+ <body <?php body_class(); ?>>
28
+
29
+ <?php
30
+
31
+ do_action( 'wp_body_open' );
32
+
33
+ // Royal themes compatibility
34
+ echo '<div id="page-wrap">';
35
+
36
+ // Render WPR Header
37
+ Utilities::render_elementor_template($template_slug);
38
+
39
+ // Royal themes compatibility
40
  echo '<div class="page-content">';
admin/templates/views/storefront/class-storefront-compat.php CHANGED
@@ -1,105 +1,105 @@
1
- <?php
2
-
3
- use WprAddons\Admin\Includes\WPR_Render_Templates;
4
-
5
- /**
6
- * Astra theme compatibility.
7
- */
8
- class Wpr_Storefront_Compat {
9
-
10
- /**
11
- * Instance of Wpr_Storefront_Compat.
12
- *
13
- * @var Wpr_Storefront_Compat
14
- */
15
- private static $instance;
16
-
17
- /**
18
- * WPR_Render_Templates() Class
19
- */
20
- private $render_templates;
21
-
22
- /**
23
- * Initiator
24
- */
25
- public static function instance() {
26
- if ( ! isset( self::$instance ) ) {
27
- self::$instance = new Wpr_Storefront_Compat();
28
-
29
- add_action( 'wp', [ self::$instance, 'hooks' ] );
30
- }
31
-
32
- return self::$instance;
33
- }
34
-
35
- /**
36
- * Run all the Actions / Filters.
37
- */
38
- public function hooks() {
39
- $this->render_templates = new WPR_Render_Templates( true );
40
-
41
- if ( $this->render_templates->is_template_available('header') ) {
42
- add_action( 'template_redirect', [ $this, 'setup_header' ], 10 );
43
- add_action( 'storefront_before_header', [$this->render_templates, 'replace_header'], 500 );
44
- add_action( 'elementor/page_templates/canvas/before_content', [ $this->render_templates, 'add_canvas_header' ] );
45
- }
46
-
47
- if ( $this->render_templates->is_template_available('footer') ) {
48
- add_action( 'template_redirect', [ $this, 'setup_footer' ], 10 );
49
- add_action( 'storefront_after_footer', [$this->render_templates, 'replace_footer'], 500 );
50
- add_action( 'elementor/page_templates/canvas/after_content', [ $this->render_templates, 'add_canvas_footer' ] );
51
- }
52
-
53
- if ( $this->render_templates->is_template_available('header') || $this->render_templates->is_template_available('footer') ) {
54
- add_action( 'wp_head', [ $this, 'styles' ] );
55
- }
56
- }
57
-
58
- /**
59
- * Add inline CSS to hide empty divs for header and footer in storefront
60
- *
61
- * @since 1.2.0
62
- * @return void
63
- */
64
- public function styles() {
65
- $css = '<style id="wpr-disable-storefront-hf">';
66
-
67
- if ( $this->render_templates->is_template_available('header') ) {
68
- $css .= '.site-header {
69
- display: none;
70
- }';
71
- }
72
-
73
- if ( $this->render_templates->is_template_available('footer') ) {
74
- $css .= '.site-footer {
75
- display: none;
76
- }';
77
- }
78
-
79
- $css .= '</style>';
80
-
81
- // Echo plain CSS (no user input or variables)
82
- echo ''. $css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
83
- }
84
-
85
- /**
86
- * Disable header from the theme.
87
- */
88
- public function setup_header() {
89
- for ( $priority = 0; $priority < 200; $priority ++ ) {
90
- remove_all_actions( 'storefront_header', $priority );
91
- }
92
- }
93
-
94
- /**
95
- * Disable footer from the theme.
96
- */
97
- public function setup_footer() {
98
- for ( $priority = 0; $priority < 200; $priority ++ ) {
99
- remove_all_actions( 'storefront_footer', $priority );
100
- }
101
- }
102
-
103
- }
104
-
105
- Wpr_Storefront_Compat::instance();
1
+ <?php
2
+
3
+ use WprAddons\Admin\Includes\WPR_Render_Templates;
4
+
5
+ /**
6
+ * Astra theme compatibility.
7
+ */
8
+ class Wpr_Storefront_Compat {
9
+
10
+ /**
11
+ * Instance of Wpr_Storefront_Compat.
12
+ *
13
+ * @var Wpr_Storefront_Compat
14
+ */
15
+ private static $instance;
16
+
17
+ /**
18
+ * WPR_Render_Templates() Class
19
+ */
20
+ private $render_templates;
21
+
22
+ /**
23
+ * Initiator
24
+ */
25
+ public static function instance() {
26
+ if ( ! isset( self::$instance ) ) {
27
+ self::$instance = new Wpr_Storefront_Compat();
28
+
29
+ add_action( 'wp', [ self::$instance, 'hooks' ] );
30
+ }
31
+
32
+ return self::$instance;
33
+ }
34
+
35
+ /**
36
+ * Run all the Actions / Filters.
37
+ */
38
+ public function hooks() {
39
+ $this->render_templates = new WPR_Render_Templates( true );
40
+
41
+ if ( $this->render_templates->is_template_available('header') ) {
42
+ add_action( 'template_redirect', [ $this, 'setup_header' ], 10 );
43
+ add_action( 'storefront_before_header', [$this->render_templates, 'replace_header'], 500 );
44
+ add_action( 'elementor/page_templates/canvas/before_content', [ $this->render_templates, 'add_canvas_header' ] );
45
+ }
46
+
47
+ if ( $this->render_templates->is_template_available('footer') ) {
48
+ add_action( 'template_redirect', [ $this, 'setup_footer' ], 10 );
49
+ add_action( 'storefront_after_footer', [$this->render_templates, 'replace_footer'], 500 );
50
+ add_action( 'elementor/page_templates/canvas/after_content', [ $this->render_templates, 'add_canvas_footer' ] );
51
+ }
52
+
53
+ if ( $this->render_templates->is_template_available('header') || $this->render_templates->is_template_available('footer') ) {
54
+ add_action( 'wp_head', [ $this, 'styles' ] );
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Add inline CSS to hide empty divs for header and footer in storefront
60
+ *
61
+ * @since 1.2.0
62
+ * @return void
63
+ */
64
+ public function styles() {
65
+ $css = '<style id="wpr-disable-storefront-hf">';
66
+
67
+ if ( $this->render_templates->is_template_available('header') ) {
68
+ $css .= '.site-header {
69
+ display: none;
70
+ }';
71
+ }
72
+
73
+ if ( $this->render_templates->is_template_available('footer') ) {
74
+ $css .= '.site-footer {
75
+ display: none;
76
+ }';
77
+ }
78
+
79
+ $css .= '</style>';
80
+
81
+ // Echo plain CSS (no user input or variables)
82
+ echo ''. $css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
83
+ }
84
+
85
+ /**
86
+ * Disable header from the theme.
87
+ */
88
+ public function setup_header() {
89
+ for ( $priority = 0; $priority < 200; $priority ++ ) {
90
+ remove_all_actions( 'storefront_header', $priority );
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Disable footer from the theme.
96
+ */
97
+ public function setup_footer() {
98
+ for ( $priority = 0; $priority < 200; $priority ++ ) {
99
+ remove_all_actions( 'storefront_footer', $priority );
100
+ }
101
+ }
102
+
103
+ }
104
+
105
+ Wpr_Storefront_Compat::instance();
admin/templates/views/theme-footer.php CHANGED
@@ -1,20 +1,20 @@
1
- <?php
2
- use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
- use WprAddons\Classes\Utilities;
4
-
5
- if ( ! defined( 'ABSPATH' ) ) {
6
- exit; // Exit if accessed directly.
7
- }
8
-
9
- $conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
10
- $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
-
12
- // Render WPR Header
13
- Utilities::render_elementor_template($template_slug);
14
-
15
- wp_footer();
16
-
17
- ?>
18
-
19
- </body>
20
  </html>
1
+ <?php
2
+ use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
+ use WprAddons\Classes\Utilities;
4
+
5
+ if ( ! defined( 'ABSPATH' ) ) {
6
+ exit; // Exit if accessed directly.
7
+ }
8
+
9
+ $conditions = json_decode( get_option('wpr_footer_conditions', '[]'), true );
10
+ $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
+
12
+ // Render WPR Header
13
+ Utilities::render_elementor_template($template_slug);
14
+
15
+ wp_footer();
16
+
17
+ ?>
18
+
19
+ </body>
20
  </html>
admin/templates/views/theme-header.php CHANGED
@@ -1,32 +1,32 @@
1
- <?php
2
- use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
- use WprAddons\Classes\Utilities;
4
-
5
- if ( ! defined( 'ABSPATH' ) ) {
6
- exit; // Exit if accessed directly.
7
- }
8
-
9
- $conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
10
- $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
-
12
- ?><!DOCTYPE html>
13
- <html <?php language_attributes(); ?>>
14
- <head>
15
- <meta charset="<?php bloginfo( 'charset' ); ?>">
16
- <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
17
- <?php if ( ! current_theme_supports( 'title-tag' ) ) : ?>
18
- <title>
19
- <?php echo esc_html(wp_get_document_title()); ?>
20
- </title>
21
- <?php endif; ?>
22
- <?php wp_head(); ?>
23
- </head>
24
-
25
- <body <?php body_class(); ?>>
26
-
27
- <?php
28
-
29
- do_action( 'wp_body_open' );
30
-
31
- // Render WPR Header
32
- Utilities::render_elementor_template($template_slug);
1
+ <?php
2
+ use WprAddons\Admin\Includes\WPR_Conditions_Manager;
3
+ use WprAddons\Classes\Utilities;
4
+
5
+ if ( ! defined( 'ABSPATH' ) ) {
6
+ exit; // Exit if accessed directly.
7
+ }
8
+
9
+ $conditions = json_decode( get_option('wpr_header_conditions', '[]'), true );
10
+ $template_slug = WPR_Conditions_Manager::header_footer_display_conditions($conditions);
11
+
12
+ ?><!DOCTYPE html>
13
+ <html <?php language_attributes(); ?>>
14
+ <head>
15
+ <meta charset="<?php bloginfo( 'charset' ); ?>">
16
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
17
+ <?php if ( ! current_theme_supports( 'title-tag' ) ) : ?>
18
+ <title>
19
+ <?php echo esc_html(wp_get_document_title()); ?>
20
+ </title>
21
+ <?php endif; ?>
22
+ <?php wp_head(); ?>
23
+ </head>
24
+
25
+ <body <?php body_class(); ?>>
26
+
27
+ <?php
28
+
29
+ do_action( 'wp_body_open' );
30
+
31
+ // Render WPR Header
32
+ Utilities::render_elementor_template($template_slug);
admin/templates/wpr-canvas.php CHANGED
@@ -1,66 +1,66 @@
1
- <?php
2
-
3
- use Elementor\Utils;
4
- use WprAddons\Classes\Utilities;
5
-
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit; // Exit if accessed directly.
8
- }
9
-
10
- \Elementor\Plugin::$instance->frontend->add_body_class( 'elementor-template-canvas' );
11
-
12
- $is_preview_mode = \Elementor\Plugin::$instance->preview->is_preview_mode();
13
- // $woocommerce_class = $is_preview_mode && class_exists( 'WooCommerce' ) ? 'woocommerce woocommerce-page woocommerce-shop canvas-test' : '';
14
- $woocommerce_class = $is_preview_mode && class_exists( 'WooCommerce' ) ? 'woocommerce woocommerce-page' : '';
15
-
16
- ?>
17
- <!DOCTYPE html>
18
- <html <?php language_attributes(); ?>>
19
- <head>
20
- <meta charset="<?php bloginfo( 'charset' ); ?>">
21
- <?php if ( ! current_theme_supports( 'title-tag' ) ) : ?>
22
- <title><?php echo wp_get_document_title(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></title>
23
- <?php endif; ?>
24
- <?php wp_head(); ?>
25
- <?php
26
-
27
- // Keep the following line after `wp_head()` call, to ensure it's not overridden by another templates.
28
- Utils::print_unescaped_internal_string( Utils::get_meta_viewport( 'canvas' ) );
29
- ?>
30
- </head>
31
-
32
- <body <?php body_class($woocommerce_class); ?>>
33
- <?php
34
- Elementor\Modules\PageTemplates\Module::body_open();
35
- /**
36
- * Before canvas page template content.
37
- *
38
- * Fires before the content of Elementor canvas page template.
39
- *
40
- * @since 1.0.0
41
- */
42
- do_action( 'elementor/page_templates/canvas/before_content' );
43
-
44
- // Elementor Editor
45
- if (( \Elementor\Plugin::$instance->preview->is_preview_mode() && Utilities::is_theme_builder_template()) || is_singular('wpr_mega_menu') ) {
46
- \Elementor\Plugin::$instance->modules_manager->get_modules( 'page-templates' )->print_content();
47
-
48
- // Frontend
49
- } else {
50
- // Display Custom Elementor Templates
51
- do_action( 'elementor/page_templates/canvas/wpr_print_content' );
52
- }
53
-
54
- /**
55
- * After canvas page template content.
56
- *
57
- * Fires after the content of Elementor canvas page template.
58
- *
59
- * @since 1.0.0
60
- */
61
- do_action( 'elementor/page_templates/canvas/after_content' );
62
-
63
- wp_footer();
64
- ?>
65
- </body>
66
- </html>
1
+ <?php
2
+
3
+ use Elementor\Utils;
4
+ use WprAddons\Classes\Utilities;
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit; // Exit if accessed directly.
8
+ }
9
+
10
+ \Elementor\Plugin::$instance->frontend->add_body_class( 'elementor-template-canvas' );
11
+
12
+ $is_preview_mode = \Elementor\Plugin::$instance->preview->is_preview_mode();
13
+ // $woocommerce_class = $is_preview_mode && class_exists( 'WooCommerce' ) ? 'woocommerce woocommerce-page woocommerce-shop canvas-test' : '';
14
+ $woocommerce_class = $is_preview_mode && class_exists( 'WooCommerce' ) ? 'woocommerce woocommerce-page' : '';
15
+
16
+ ?>
17
+ <!DOCTYPE html>
18
+ <html <?php language_attributes(); ?>>
19
+ <head>
20
+ <meta charset="<?php bloginfo( 'charset' ); ?>">
21
+ <?php if ( ! current_theme_supports( 'title-tag' ) ) : ?>
22
+ <title><?php echo wp_get_document_title(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></title>
23
+ <?php endif; ?>
24
+ <?php wp_head(); ?>
25
+ <?php
26
+
27
+ // Keep the following line after `wp_head()` call, to ensure it's not overridden by another templates.
28
+ Utils::print_unescaped_internal_string( Utils::get_meta_viewport( 'canvas' ) );
29
+ ?>
30
+ </head>
31
+
32
+ <body <?php body_class($woocommerce_class); ?>>
33
+ <?php
34
+ Elementor\Modules\PageTemplates\Module::body_open();
35
+ /**
36
+ * Before canvas page template content.
37
+ *
38
+ * Fires before the content of Elementor canvas page template.
39
+ *
40
+ * @since 1.0.0
41
+ */
42
+ do_action( 'elementor/page_templates/canvas/before_content' );
43
+
44
+ // Elementor Editor
45
+ if (( \Elementor\Plugin::$instance->preview->is_preview_mode() && Utilities::is_theme_builder_template()) || is_singular('wpr_mega_menu') ) {
46
+ \Elementor\Plugin::$instance->modules_manager->get_modules( 'page-templates' )->print_content();
47
+
48
+ // Frontend
49
+ } else {
50
+ // Display Custom Elementor Templates
51
+ do_action( 'elementor/page_templates/canvas/wpr_print_content' );
52
+ }
53
+
54
+ /**
55
+ * After canvas page template content.
56
+ *
57
+ * Fires after the content of Elementor canvas page template.
58
+ *
59
+ * @since 1.0.0
60
+ */
61
+ do_action( 'elementor/page_templates/canvas/after_content' );
62
+
63
+ wp_footer();
64
+ ?>
65
+ </body>
66
+ </html>
admin/templates/wpr-templates-data.php CHANGED
@@ -1,880 +1,880 @@
1
- <?php
2
- namespace WprAddons\Admin\Templates;
3
-
4
- use WprAddons\Plugin;
5
-
6
- if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
7
-
8
- class WPR_Templates_Data {
9
- public static function get_available_kits() {
10
- $is_pro_active = wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION');
11
- $is_cf7_active = is_plugin_active('contact-form-7/wp-contact-form-7.php') ? 'true' : 'false';
12
- $is_mla_active = is_plugin_active('media-library-assistant/index.php') ? 'true' : 'false';
13
- $is_woo_active = is_plugin_active('woocommerce/woocommerce.php') ? 'true' : 'false';
14
-
15
- return [
16
- 'grocery-store' => [
17
- 'v1' => [
18
- 'name' => 'Grocery Store',
19
- 'pages' => 'home,shop,single-product,my-account,about,contact,',
20
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
21
- 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product online eshopping market reseller ecommerce shop',
22
- 'theme-builder' => false,
23
- 'woo-builder' => true,
24
- 'off-canvas' => false,
25
- 'price' => $is_pro_active ? 'free' : 'pro',
26
- 'priority' => 4,
27
- ],
28
- ],
29
- 'furniture-shop' => [
30
- 'v1' => [
31
- 'name' => 'Furniture Shop',
32
- 'pages' => 'home,shop-v1,shop-v2,single-product,my-account,about,contact,',
33
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
34
- 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product online furniture home office eshopping market reseller ecommerce shop ',
35
- 'theme-builder' => false,
36
- 'woo-builder' => true,
37
- 'off-canvas' => true,
38
- 'price' => $is_pro_active ? 'free' : 'pro',
39
- 'priority' => 5,
40
- ],
41
- ],
42
- 'estore' => [
43
- 'v1' => [
44
- 'name' => 'Electronic Store',
45
- 'pages' => 'home,shop,single-product,blog,faq,about,contact,',
46
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
47
- 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product online market reseller ecommerce shop gadget iphone phone electronic ',
48
- 'theme-builder' => true,
49
- 'woo-builder' => true,
50
- 'off-canvas' => false,
51
- 'price' => $is_pro_active ? 'free' : 'pro',
52
- 'priority' => 4,
53
- ],
54
- ],
55
- 'woo-food' => [
56
- 'v1' => [
57
- 'name' => 'Food Delivery',
58
- 'pages' => 'home,home-v2,food,single-product,about,contact,faq,blog,',
59
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
60
- 'tags' => 'shop woo-commerce woocommerce ecommerce product online eshopping market ecommerce shop food delivery restaurant fast food pizzeria burger recipes cooking pizza restaurant snack',
61
- 'theme-builder' => true,
62
- 'woo-builder' => true,
63
- 'off-canvas' => false,
64
- 'price' => $is_pro_active ? 'free' : 'pro',
65
- 'priority' => 144,
66
- ],
67
- ],
68
- 'fashion' => [
69
- 'v1' => [
70
- 'name' => 'Fashion',
71
- 'pages' => 'home,shop-v1,shop-v2,single-product,blog,my-account,about,faq,contact,',
72
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
73
- 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product ecommerce shop online boutique clothes eshopping fashion designer market reseller digital purchases',
74
- 'theme-builder' => true,
75
- 'woo-builder' => true,
76
- 'off-canvas' => false,
77
- 'price' => $is_pro_active ? 'free' : 'pro',
78
- 'priority' => 2,
79
- ],
80
- ],
81
- 'wooshop' => [
82
- 'v1' => [
83
- 'name' => 'Woo Shop',
84
- 'pages' => 'home,shop,single-product,about,contact,',
85
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
86
- 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce shop ecommerce product online shop online store boutique clothes eshopping fashion designer market reseller digital purchases',
87
- 'theme-builder' => false,
88
- 'woo-builder' => true,
89
- 'off-canvas' => false,
90
- 'price' => $is_pro_active ? 'free' : 'free',
91
- 'priority' => 3,
92
- ],
93
- ],
94
- 'personal-blog' => [
95
- 'v1' => [
96
- 'name' => 'Personal Blog',
97
- 'pages' => 'home,home-v1,home-v2,home-v3,lifestyle,about,contact,',
98
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
99
- 'tags' => 'blog blogger posts personal blog lifestyle blogger theme builder grid slider news',
100
- 'theme-builder' => true,
101
- 'woo-builder' => false,
102
- 'off-canvas' => false,
103
- 'price' => $is_pro_active ? 'free' : 'pro',
104
- 'priority' => 2,
105
- ],
106
- 'v2' => [
107
- 'name' => 'Personal Blog',
108
- 'pages' => 'home,single,category,about,contact,',
109
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
110
- 'tags' => 'blog blogger posts personal blog lifestyle blogger theme builder grid slider news',
111
- 'theme-builder' => true,
112
- 'woo-builder' => false,
113
- 'off-canvas' => false,
114
- 'price' => $is_pro_active ? 'free' : 'pro',
115
- 'priority' => 4,
116
- ],
117
- ],
118
- 'food-blog' => [
119
- 'v1' => [
120
- 'name' => 'Food Blog',
121
- 'pages' => 'home,home-v1,home-v2,home-v3,category,about,contact,',
122
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
123
- 'tags' => 'food blog posts food blogger theme builder recipes cooking grid slider',
124
- 'theme-builder' => true,
125
- 'woo-builder' => false,
126
- 'off-canvas' => false,
127
- 'price' => $is_pro_active ? 'free' : 'pro',
128
- 'priority' => 20,
129
- ],
130
- ],
131
- 'magazine-blog' => [
132
- 'v1' => [
133
- 'name' => 'Magazine Blog',
134
- 'pages' => 'home,home-v1,home-v2,category,about,contact,',
135
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
136
- 'tags' => 'blogger blog posts content news newspaper journal magazine business blog publishing theme builder sports grid slider',
137
- 'theme-builder' => true,
138
- 'woo-builder' => false,
139
- 'off-canvas' => false,
140
- 'price' => $is_pro_active ? 'free' : 'pro',
141
- 'priority' => 6,
142
- ],
143
- 'v2' => [
144
- 'name' => 'Magazine Blog',
145
- 'pages' => 'home,home-v1,home-v2,category,about,contact,',
146
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
147
- 'tags' => 'blogger blog posts content news newspaper journal magazine business blog publishing theme builder sports grid slider',
148
- 'theme-builder' => true,
149
- 'woo-builder' => false,
150
- 'off-canvas' => false,
151
- 'price' => $is_pro_active ? 'free' : 'pro',
152
- 'priority' => 50,
153
- ],
154
- 'v3' => [
155
- 'name' => 'Magazine Blog',
156
- 'pages' => 'home,category,about,contact,',
157
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
158
- 'tags' => 'blogger blog posts content news newspaper journal magazine business blog publishing theme builder sports grid slider',
159
- 'theme-builder' => true,
160
- 'woo-builder' => false,
161
- 'off-canvas' => false,
162
- 'price' => $is_pro_active ? 'free' : 'pro',
163
- 'priority' => 30,
164
- ],
165
- ],
166
- 'nature' => [
167
- 'v1' => [
168
- 'name' => 'nature',
169
- 'pages' => 'home,about,services,projects,contact,',
170
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
171
- 'tags' => 'nature influencer travel blogger blog content slider tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness hitchhiking mountain river lakes outdoors',
172
- 'theme-builder' => true,
173
- 'woo-builder' => false,
174
- 'off-canvas' => false,
175
- 'price' => $is_pro_active ? 'free' : 'free',
176
- 'priority' => 60,
177
- ],
178
- ],
179
- 'travel-agency' => [
180
- 'v1' => [
181
- 'name' => 'Travel agency',
182
- 'pages' => 'home,tours,gallery,services,reviews,about,contact,',
183
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
184
- 'tags' => 'nature influencer travel blogger blog content slider tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness hitchhiking mountain river lakes outdoors travel agency company office travel services',
185
- 'theme-builder' => true,
186
- 'woo-builder' => false,
187
- 'off-canvas' => false,
188
- 'price' => $is_pro_active ? 'free' : 'free',
189
- 'priority' => 61,
190
- ],
191
- ],
192
- 'digital-marketing-agency' => [
193
- 'v1' => [
194
- 'name' => 'Digital Marketing Agency',
195
- 'pages' => 'home,seo,branding,marketing,social,blog,about,contact,',
196
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
197
- 'tags' => 'digital agency company corporate digital services office agency web digital marketing seo social media branding',
198
- 'theme-builder' => true,
199
- 'woo-builder' => false,
200
- 'off-canvas' => false,
201
- 'price' => $is_pro_active ? 'free' : 'free',
202
- 'priority' => 1,
203
- ],
204
- ],
205
- 'digital-agency-dark' => [
206
- 'v1' => [
207
- 'name' => 'Digital Agency Dark',
208
- 'pages' => 'home,about,services,team,portfolio,blog,contact,',
209
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
210
- 'tags' => 'digital agency company corporate digital services office agency web digital marketing seo social media branding dark black',
211
- 'theme-builder' => true,
212
- 'woo-builder' => false,
213
- 'off-canvas' => false,
214
- 'price' => $is_pro_active ? 'free' : 'free',
215
- 'priority' => 3,
216
- ],
217
- ],
218
- 'one-page' => [
219
- 'v1' => [
220
- 'name' => 'OnePage - Digital Marketing Agency',
221
- 'pages' => 'home,blog,',
222
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
223
- 'tags' => 'digital agency company corporate digital services office agency web digital marketing seo social media branding one page onepage one pages parallax single page',
224
- 'theme-builder' => true,
225
- 'woo-builder' => false,
226
- 'off-canvas' => false,
227
- 'price' => $is_pro_active ? 'free' : 'free',
228
- 'priority' => 7,
229
- ],
230
- ],
231
- 'travel-blog' => [
232
- 'v1' => [
233
- 'name' => 'Travel Blog',
234
- 'pages' => 'home,home-v1,home-v2,category,about,contact,',
235
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
236
- 'tags' => 'nature influencer travel blogger blog posts content tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness slider hitchhiking mountain river lakes outdoors theme builder traveler hiking grid',
237
- 'theme-builder' => true,
238
- 'woo-builder' => false,
239
- 'off-canvas' => false,
240
- 'price' => $is_pro_active ? 'free' : 'pro',
241
- 'priority' => 71,
242
- ],
243
- ],
244
- 'portfolio' => [
245
- 'v1' => [
246
- 'name' => 'Portfolio/CV',
247
- 'pages' => 'home,about,portfolio,contact,',
248
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
249
- 'tags' => 'portfolio personal cv designer ux artist artwork personal resume photographer grid',
250
- 'theme-builder' => false,
251
- 'woo-builder' => false,
252
- 'off-canvas' => false,
253
- 'price' => $is_pro_active ? 'free' : 'free',
254
- 'priority' => 80,
255
- ],
256
- ],
257
- 'nft-portfolio' => [
258
- 'v1' => [
259
- 'name' => 'NFT',
260
- 'pages' => 'home,about,blog,roadmap,team,nft,faq,comingsoon,',
261
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
262
- 'tags' => 'portfolio blockchain nft crypto collection minting listing metavers digital currency art',
263
- 'theme-builder' => false,
264
- 'woo-builder' => false,
265
- 'off-canvas' => false,
266
- 'price' => $is_pro_active ? 'free' : 'free',
267
- 'priority' => 81,
268
- ],
269
- ],
270
- 'pizza' => [
271
- 'v1' => [
272
- 'name' => 'Pizza Restaurant',
273
- 'pages' => 'home,menu,about,offer,gallery,contact,',
274
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
275
- 'tags' => 'pizza italian restaurant food slider pasta fastfood fast food recipes cooking slider',
276
- 'theme-builder' => false,
277
- 'woo-builder' => false,
278
- 'off-canvas' => false,
279
- 'price' => $is_pro_active ? 'free' : 'free',
280
- 'priority' => 90,
281
- ],
282
- ],
283
- 'pet-care' => [
284
- 'v1' => [
285
- 'name' => 'Pet Care',
286
- 'pages' => 'home,about,services,reviews,contact,',
287
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
288
- 'tags' => 'pet care dog care grooming pet minding pet sitting pet training pet walking cat animal dogs dog training',
289
- 'theme-builder' => false,
290
- 'woo-builder' => false,
291
- 'off-canvas' => false,
292
- 'price' => $is_pro_active ? 'free' : 'free',
293
- 'priority' => 91,
294
- ],
295
- ],
296
- 'travel' => [
297
- 'v1' => [
298
- 'name' => 'Travel Blogger & Influencer',
299
- 'pages' => 'home,about,stories,contact,',
300
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
301
- 'tags' => 'nature influencer travel blogger blog content tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness hitchhiking mountain river lakes outdoors',
302
- 'theme-builder' => false,
303
- 'woo-builder' => false,
304
- 'off-canvas' => false,
305
- 'price' => $is_pro_active ? 'free' : 'free',
306
- 'priority' => 100,
307
- ],
308
- ],
309
- 'cybersecurity' => [
310
- 'v1' => [
311
- 'name' => 'Cybersecurity',
312
- 'pages' => 'home,about,services,pricing,contact,',
313
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
314
- 'tags' => 'cybersecurity data protection hacker security dark digital technology cybercrime computer windows technician',
315
- 'theme-builder' => false,
316
- 'woo-builder' => false,
317
- 'off-canvas' => false,
318
- 'price' => $is_pro_active ? 'free' : 'free',
319
- 'priority' => 110,
320
- ],
321
- ],
322
- 'charity' => [
323
- 'v1' => [
324
- 'name' => 'Charity',
325
- 'pages' => 'home,home-v1,contact,whatwedo,whoweare,partners,',
326
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
327
- 'tags' => 'charity donate church foundation giving non-profit organization kids charity help children save life donation fundrising ngo fundraising corona fundraising nonprofit non profit',
328
- 'theme-builder' => false,
329
- 'woo-builder' => false,
330
- 'off-canvas' => false,
331
- 'price' => $is_pro_active ? 'free' : 'free',
332
- 'priority' => 111,
333
- ],
334
- ],
335
- 'photographer' => [
336
- 'v1' => [
337
- 'name' => 'Photographer Portfolio Dark',
338
- 'pages' => 'home,about,services,portfolio,contact,',
339
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
340
- 'tags' => 'portfolio personal cv designer ux artist artwork personal resume camera fashion lens modelling photographer photography videography wedding shoot grid ',
341
- 'theme-builder' => false,
342
- 'woo-builder' => false,
343
- 'off-canvas' => false,
344
- 'price' => $is_pro_active ? 'free' : 'free',
345
- 'priority' => 120,
346
- ],
347
- 'v2' => [
348
- 'name' => 'Photographer Portfolio Light',
349
- 'pages' => 'home,about,services,portfolio,contact,',
350
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
351
- 'tags' => 'portfolio personal cv designer ux artist artwork personal resume camera fashion lens modelling photographer photography videography wedding shoot grid ',
352
- 'theme-builder' => false,
353
- 'woo-builder' => false,
354
- 'off-canvas' => false,
355
- 'price' => $is_pro_active ? 'free' : 'free',
356
- 'priority' => 130,
357
- ],
358
- ],
359
- 'cryptocurrency' => [
360
- 'v1' => [
361
- 'name' => 'Cryptocurrency',
362
- 'pages' => 'home,about,services,token,pricing,contact,',
363
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
364
- 'tags' => 'cryptocurrency bitcoin ethereum etherium blockchain protection nft coin corporate crypto dark startup token digital',
365
- 'theme-builder' => false,
366
- 'woo-builder' => false,
367
- 'off-canvas' => false,
368
- 'price' => $is_pro_active ? 'free' : 'free',
369
- 'priority' => 150,
370
- ],
371
- ],
372
- 'skincare' => [
373
- 'v1' => [
374
- 'name' => 'Skin Care',
375
- 'pages' => 'home,about,services,procedures,gallery,pricing,contact,',
376
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
377
- 'tags' => 'skincare skin care beauty clean face skin-beauty health wellness',
378
- 'theme-builder' => false,
379
- 'woo-builder' => false,
380
- 'off-canvas' => false,
381
- 'price' => $is_pro_active ? 'free' : 'free',
382
- 'priority' => 160,
383
- ],
384
- ],
385
- 'lawyer' => [
386
- 'v1' => [
387
- 'name' => 'Lawyer',
388
- 'pages' => 'home,practice,faq,reviews,attorney,contact,',
389
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
390
- 'tags' => 'lawyers criminal defence lawyer firm divorce lawyer family lawyer law legal firm ',
391
- 'theme-builder' => false,
392
- 'woo-builder' => false,
393
- 'off-canvas' => false,
394
- 'price' => $is_pro_active ? 'free' : 'free',
395
- 'priority' => 170,
396
- ],
397
- ],
398
- 'medical' => [
399
- 'v1' => [
400
- 'name' => 'Medical',
401
- 'pages' => 'home,about,services,doctors,contact,',
402
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
403
- 'tags' => 'medical clinic dental health healthcare doctor therapist wellness treatment cure',
404
- 'theme-builder' => false,
405
- 'woo-builder' => false,
406
- 'off-canvas' => false,
407
- 'price' => $is_pro_active ? 'free' : 'free',
408
- 'priority' => 180,
409
- ],
410
- ],
411
- 'digitalagency' => [
412
- 'v1' => [
413
- 'name' => 'Digital Agency',
414
- 'pages' => 'home,about,services,contact,',
415
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
416
- 'tags' => 'digital agency company corporate digital services office agency web marketing',
417
- 'theme-builder' => false,
418
- 'woo-builder' => false,
419
- 'off-canvas' => false,
420
- 'price' => $is_pro_active ? 'free' : 'free',
421
- 'priority' => 190,
422
- ],
423
- 'v2' => [
424
- 'name' => 'Digital Agency',
425
- 'pages' => 'home,about,services,pricing,contact,',
426
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
427
- 'tags' => 'digital agency company corporate digital services office agency web marketing slider',
428
- 'theme-builder' => false,
429
- 'woo-builder' => false,
430
- 'off-canvas' => false,
431
- 'price' => $is_pro_active ? 'free' : 'free',
432
- 'priority' => 200,
433
- ],
434
- ],
435
- 'drone' => [
436
- 'v1' => [
437
- 'name' => 'Drone Project',
438
- 'pages' => 'home,about,gallery,services,contact,',
439
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
440
- 'tags' => 'drone photography aerial photo ',
441
- 'theme-builder' => false,
442
- 'woo-builder' => false,
443
- 'off-canvas' => false,
444
- 'price' => $is_pro_active ? 'free' : 'free',
445
- 'priority' => 210,
446
- ],
447
- ],
448
- 'architecture' => [
449
- 'v1' => [
450
- 'name' => 'Architecture 1',
451
- 'pages' => 'home,about,portfolio,services,faq,contact,',
452
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
453
- 'tags' => 'architecture company slider interior design designer landscaping office zoning building slider',
454
- 'theme-builder' => false,
455
- 'woo-builder' => false,
456
- 'off-canvas' => false,
457
- 'price' => $is_pro_active ? 'free' : 'pro',
458
- 'priority' => 220,
459
- ],
460
- 'v2' => [
461
- 'name' => 'Architecture 2',
462
- 'pages' => 'home,about,projects,services,team,pricing,faq,contact,',
463
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
464
- 'tags' => 'architecture company slider interior design designer landscaping office zoning building slider architecture commercial construction creative decorations exterior designer home decorations interior designer landscape design modern real-estate residential',
465
- 'theme-builder' => true,
466
- 'woo-builder' => false,
467
- 'off-canvas' => false,
468
- 'price' => $is_pro_active ? 'free' : 'pro',
469
- 'priority' => 223,
470
- ],
471
- ],
472
- 'fooddelivery' => [
473
- 'v1' => [
474
- 'name' => 'Food Delivery',
475
- 'pages' => 'home,services,blog,faq,contact,',
476
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
477
- 'tags' => 'fooddelivery fast food chain restaurant service hotel italian pasta pizza pizzeria burger recipes cooking',
478
- 'theme-builder' => false,
479
- 'woo-builder' => false,
480
- 'off-canvas' => false,
481
- 'price' => $is_pro_active ? 'free' : 'pro',
482
- 'priority' => 230,
483
- ],
484
- ],
485
- 'construction' => [
486
- 'v1' => [
487
- 'name' => 'Construction',
488
- 'pages' => 'home,about,services,projects,pricing,contact,faq,',
489
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
490
- 'tags' => 'construction architecture company interior office real estate',
491
- 'theme-builder' => false,
492
- 'woo-builder' => false,
493
- 'off-canvas' => false,
494
- 'price' => $is_pro_active ? 'free' : 'free',
495
- 'priority' => 240,
496
- ],
497
- ],
498
- 'ittech' => [
499
- 'v1' => [
500
- 'name' => 'IT Tech v1',
501
- 'pages' => 'home,about,services,pricing,faq,contact,',
502
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
503
- 'tags' => 'ittech advanced technology it technique computer windows technician digital',
504
- 'theme-builder' => false,
505
- 'woo-builder' => false,
506
- 'off-canvas' => false,
507
- 'price' => $is_pro_active ? 'free' : 'free',
508
- 'priority' => 5,
509
- ],
510
- 'v2' => [
511
- 'name' => 'IT Tech v2',
512
- 'pages' => 'home,about,services,pricing,faq,contact,',
513
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
514
- 'tags' => 'ittech advanced technology it technique computer windows technician digital',
515
- 'theme-builder' => false,
516
- 'woo-builder' => false,
517
- 'off-canvas' => false,
518
- 'price' => $is_pro_active ? 'free' : 'free',
519
- 'priority' => 260,
520
- ],
521
- ],
522
- 'carwash' => [
523
- 'v1' => [
524
- 'name' => 'Carwash',
525
- 'pages' => 'home,about,services,contact,',
526
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
527
- 'tags' => 'vehicle car wash cleaning painting service maintenance care bike motorcycle detailing',
528
- 'theme-builder' => false,
529
- 'woo-builder' => false,
530
- 'off-canvas' => false,
531
- 'price' => $is_pro_active ? 'free' : 'free',
532
- 'priority' => 252,
533
- ],
534
- ],
535
- 'realestate' => [
536
- 'v1' => [
537
- 'name' => 'Real Estate',
538
- 'pages' => 'home,properties,about,services,faq,contact,',
539
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
540
- 'tags' => 'real estate agency company construction property rentals estate sales developers',
541
- 'theme-builder' => false,
542
- 'woo-builder' => false,
543
- 'off-canvas' => false,
544
- 'price' => $is_pro_active ? 'free' : 'pro',
545
- 'priority' => 270,
546
- ],
547
- ],
548
- 'restaurant' => [
549
- 'v1' => [
550
- 'name' => 'Restaurant',
551
- 'pages' => 'home,about,gallery,menu,contact,',
552
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
553
- 'tags' => 'restaurant fastfood slider hotel italian pizza pizzeria pasta dinner fast food wine recipe recipes cooking slider',
554
- 'theme-builder' => false,
555
- 'woo-builder' => false,
556
- 'off-canvas' => false,
557
- 'price' => $is_pro_active ? 'free' : 'free',
558
- 'priority' => 280,
559
- ],
560
- ],
561
- 'winebar' => [
562
- 'v1' => [
563
- 'name' => 'Wine Bar & Restaurant',
564
- 'pages' => 'home,story,wines,dishes,events,contact,',
565
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
566
- 'tags' => 'wine bar winery beer drink alcohol pub events dish wines italian restaurant food slider recipes cooking recipes slider',
567
- 'theme-builder' => false,
568
- 'woo-builder' => false,
569
- 'off-canvas' => false,
570
- 'price' => $is_pro_active ? 'free' : 'free',
571
- 'priority' => 290,
572
- ],
573
- ],
574
- 'wedding' => [
575
- 'v1' => [
576
- 'name' => 'Wedding',
577
- 'pages' => 'home,about,services,blog,gallery,contact,',
578
- 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
579
- 'tags' => 'wedding party event slider invitation planner slider photography photographer',
580
- 'theme-builder' => false,
581
- 'woo-builder' => false,
582
- 'off-canvas' => false,
583
- 'price' => $is_pro_active ? 'free' : 'free',
584
- 'priority' => 300,
585
- ],
586
- ],
587
- ];
588
- }
589
-
590
- public static function get_available_blocks() {
591
- return [
592
- 'grid' => [
593
- 'v1' => ['type' => 'iframe', 'url' => 'grid/v1/'],
594
- 'v2' => ['type' => 'iframe', 'url' => 'grid/v2/'],
595
- 'v3' => ['type' => 'iframe', 'url' => 'grid/v3/'],
596
- 'v4' => ['type' => 'iframe', 'url' => 'grid/v4/'],
597
- 'v5-pro' => ['type' => 'iframe', 'url' => 'grid/v5/'],
598
- 'v6-pro' => ['type' => 'iframe', 'url' => 'grid/v6/'],
599
- 'v7-pro' => ['type' => 'iframe', 'url' => 'grid/v7/'],
600
- 'v8-pro' => ['type' => 'iframe', 'url' => 'grid/v8/'],
601
- 'v9-pro' => ['type' => 'iframe', 'url' => 'grid/v9/'],
602
- 'v10-pro' => ['type' => 'iframe', 'url' => 'grid/v10/'],
603
- 'v11' => ['type' => 'iframe', 'url' => 'grid/v11/'],
604
- 'v12' => ['type' => 'iframe', 'url' => 'grid/v12/'],
605
- 'v13' => ['type' => 'iframe', 'url' => 'grid/v13/'],
606
- 'v14' => ['type' => 'iframe', 'url' => 'grid/v14/'],
607
- ],
608
- 'woo-grid' => [
609
- 'v1' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v1/'],
610
- 'v2' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v2/'],
611
- 'v3-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v3/'],
612
- 'v4-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v4/'],
613
- 'v5-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v5/'],
614
- 'v6-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v6/'],
615
- 'v7-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v7/'],
616
- 'v8-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v8/'],
617
- 'v9-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v9/'],
618
- ],
619
- 'media-grid' => [
620
- 'v1' => ['type' => 'iframe', 'url' => 'image-grid/v1/'],
621
- 'v2' => ['type' => 'iframe', 'url' => 'image-grid/v2/'],
622
- ],
623
- 'magazine-grid' => [
624
- 'v1' => ['type' => 'iframe', 'url' => 'magazine-grid/v1/'],
625
- 'v2' => ['type' => 'iframe', 'url' => 'magazine-grid/v2/'],
626
- // 'v3' => ['type' => 'iframe', 'url' => 'magazine-grid/v3/', 'sub' => 'carousel'], <-- Keep as example
627
- 'v3-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v3/'],
628
- 'v4-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v4/'],
629
- 'v5-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v5/'],
630
- 'v6-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v6/'],
631
- 'v7-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v7/'],
632
- 'v8-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v8/'],
633
- ],
634
- 'advanced-slider' => [
635
- 'v1' => ['type' => 'iframe', 'url' => 'advanced-slider/v1/'],
636
- 'v2' => ['type' => 'iframe', 'url' => 'advanced-slider/v2/'],
637
- 'v3' => ['type' => 'iframe', 'url' => 'advanced-slider/v3/'],
638
- 'v4-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v4/'],
639
- 'v5-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v5/'],
640
- 'v6-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v6/'],
641
- 'v7-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v7/'],
642
- 'v8-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v8/'],
643
- ],
644
- 'posts-timeline' => [
645
- 'v1' => ['type' => 'iframe', 'url' => 'timeline/v1/'],
646
- 'v2' => ['type' => 'iframe', 'url' => 'timeline/v2/'],
647
- 'v3' => ['type' => 'iframe', 'url' => 'timeline/v3/'],
648
- 'v4' => ['type' => 'iframe', 'url' => 'timeline/v4/'],
649
- 'v5' => ['type' => 'iframe', 'url' => 'timeline/v5/'],
650
- ],
651
- 'testimonial' => [
652
- 'v1' => ['type' => 'iframe', 'url' => 'testimonial-slider/v1/'],
653
- 'v2' => ['type' => 'iframe', 'url' => 'testimonial-slider/v2/'],
654
- 'v3' => ['type' => 'iframe', 'url' => 'testimonial-slider/v3/'],
655
- 'v4' => ['type' => 'iframe', 'url' => 'testimonial-slider/v4/'],
656
- 'v5-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v5/'],
657
- 'v6-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v6/'],
658
- 'v7-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v7/'],
659
- 'v8-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v8/'],
660
- 'v9-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v9/'],
661
- ],
662
- 'nav-menu' => [
663
- 'v1' => ['type' => 'iframe', 'url' => 'nav-menu/v1/'],
664
- 'v2' => ['type' => 'iframe', 'url' => 'nav-menu/v2/'],
665
- 'v3' => ['type' => 'iframe', 'url' => 'nav-menu/v3/'],
666
- 'v4' => ['type' => 'iframe', 'url' => 'nav-menu/v4/'],
667
- 'v5' => ['type' => 'iframe', 'url' => 'nav-menu/v5/'],
668
- 'v6' => ['type' => 'iframe', 'url' => 'nav-menu/v6/'],
669
- ],
670
- 'onepage-nav' => [
671
- 'v1' => ['type' => 'iframe', 'url' => 'one-page-navigation/v1/'],
672
- 'v2' => ['type' => 'iframe', 'url' => 'one-page-navigation/v2/'],
673
- 'v3' => ['type' => 'iframe', 'url' => 'one-page-navigation/v3/'],
674
- 'v4-pro' => ['type' => 'iframe', 'url' => 'one-page-navigation/v4/'],
675
- ],
676
- 'pricing-table' => [
677
- 'v1' => ['type' => 'iframe', 'url' => 'pricing-table/v1/'],
678
- 'v2' => ['type' => 'iframe', 'url' => 'pricing-table/v2/'],
679
- 'v3' => ['type' => 'iframe', 'url' => 'pricing-table/v3/'],
680
- 'v4' => ['type' => 'iframe', 'url' => 'pricing-table/v4/'],
681
- 'v5' => ['type' => 'iframe', 'url' => 'pricing-table/v5/'],
682
- 'v6-pro' => ['type' => 'iframe', 'url' => 'pricing-table/v6/'],
683
- 'v7-pro' => ['type' => 'iframe', 'url' => 'pricing-table/v7/'],
684
- 'v8-pro' => ['type' => 'iframe', 'url' => 'pricing-table/v8/'],
685
- ],
686
- 'content-toggle' => [
687
- 'v1' => ['type' => 'iframe', 'url' => 'content-toggle/v1/'],
688
- 'v2' => ['type' => 'iframe', 'url' => 'content-toggle/v2/'],
689
- 'v3-pro' => ['type' => 'iframe', 'url' => 'content-toggle/v3/'],
690
- 'v4-pro' => ['type' => 'iframe', 'url' => 'content-toggle/v4/'],
691
- ],
692
- 'data-table' => [
693
- 'v1' => ['type' => 'iframe', 'url' => 'data-table/v1/'],
694
- 'v2' => ['type' => 'iframe', 'url' => 'data-table/v2/'],
695
- 'v3' => ['type' => 'iframe', 'url' => 'data-table/v3/'],
696
- 'v4-pro' => ['type' => 'iframe', 'url' => 'data-table/v4/'],
697
- 'v5-pro' => ['type' => 'iframe', 'url' => 'data-table/v5/'],
698
- 'v6-pro' => ['type' => 'iframe', 'url' => 'data-table/v6/'],
699
- 'v7-pro' => ['type' => 'iframe', 'url' => 'data-table/v7/'],
700
- 'v8-pro' => ['type' => 'iframe', 'url' => 'data-table/v8/'],
701
- ],
702
- 'countdown' => [
703
- 'v1' => ['type' => 'iframe', 'url' => 'countdown/v1/'],
704
- 'v2' => ['type' => 'iframe', 'url' => 'countdown/v2/'],
705
- 'v3' => ['type' => 'iframe', 'url' => 'countdown/v3/'],
706
- ],
707
- 'progress-bar' => [
708
- 'v1' => ['type' => 'iframe', 'url' => 'progress-bar/v1/'],
709
- 'v2' => ['type' => 'iframe', 'url' => 'progress-bar/v2/'],
710
- 'v3' => ['type' => 'iframe', 'url' => 'progress-bar/v3/'],
711
- ],
712
- 'tabs' => [
713
- 'v1' => ['type' => 'iframe', 'url' => 'tabs/v1/'],
714
- 'v2' => ['type' => 'iframe', 'url' => 'tabs/v2/'],
715
- 'v3' => ['type' => 'iframe', 'url' => 'tabs/v3/'],
716
- ],
717
- 'advanced-text' => [
718
- 'v1' => ['type' => 'iframe', 'url' => 'advanced-text/v1/'],
719
- 'v2' => ['type' => 'iframe', 'url' => 'advanced-text/v2/'],
720
- 'v3' => ['type' => 'iframe', 'url' => 'advanced-text/v3/'],
721
- 'v4' => ['type' => 'iframe', 'url' => 'advanced-text/v4/'],
722
- 'v5' => ['type' => 'iframe', 'url' => 'advanced-text/v5/'],
723
- 'v6' => ['type' => 'iframe', 'url' => 'advanced-text/v6/'],
724
- 'v7-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v7/'],
725
- 'v8-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v8/'],
726
- 'v9-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v9/'],
727
- 'v10-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v10/'],
728
- 'v11-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v11/'],
729
- 'v12-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v12/'],
730
- ],
731
- 'flip-box' => [
732
- 'v1' => ['type' => 'iframe', 'url' => 'flip-box/v1/'],
733
- 'v2' => ['type' => 'iframe', 'url' => 'flip-box/v2/'],
734
- 'v3' => ['type' => 'iframe', 'url' => 'flip-box/v3/'],
735
- 'v4-pro' => ['type' => 'iframe', 'url' => 'flip-box/v4/'],
736
- ],
737
- 'promo-box' => [
738
- 'v1' => ['type' => 'iframe', 'url' => 'promo-box/v1/'],
739
- 'v2' => ['type' => 'iframe', 'url' => 'promo-box/v2/'],
740
- 'v3' => ['type' => 'iframe', 'url' => 'promo-box/v3/'],
741
- 'v4-pro' => ['type' => 'iframe', 'url' => 'promo-box/v4/'],
742
- 'v5-pro' => ['type' => 'iframe', 'url' => 'promo-box/v5/'],
743
- 'v6-pro' => ['type' => 'iframe', 'url' => 'promo-box/v6/'],
744
- ],
745
- 'before-after' => [
746
- 'v1' => ['type' => 'iframe', 'url' => 'before-and-after/v1/'],
747
- 'v2' => ['type' => 'iframe', 'url' => 'before-and-after/v2/'],
748
- 'v3' => ['type' => 'iframe', 'url' => 'before-and-after/v3/'],
749
- ],
750
- 'image-hotspots' => [
751
- 'v1' => ['type' => 'iframe', 'url' => 'image-hotspot/v1/'],
752
- 'v2' => ['type' => 'iframe', 'url' => 'image-hotspot/v2/'],
753
- 'v3' => ['type' => 'iframe', 'url' => 'image-hotspot/v3/'],
754
- ],
755
- 'forms' => [],
756
- 'mailchimp' => [
757
- 'v1' => ['type' => 'iframe', 'url' => 'mailchimp/v1/'],
758
- 'v2' => ['type' => 'iframe', 'url' => 'mailchimp/v2/'],
759
- 'v3' => ['type' => 'iframe', 'url' => 'mailchimp/v3/'],
760
- 'v4' => ['type' => 'iframe', 'url' => 'mailchimp/v4/'],
761
- 'v5' => ['type' => 'iframe', 'url' => 'mailchimp/v5/'],
762
- 'v6-pro' => ['type' => 'iframe', 'url' => 'mailchimp/v6/'],
763
- 'v7-pro' => ['type' => 'iframe', 'url' => 'mailchimp/v7/'],
764
- 'v8-pro' => ['type' => 'iframe', 'url' => 'mailchimp/v8/'],
765
- ],
766
- 'content-ticker' => [
767
- 'v1' => ['type' => 'iframe', 'url' => 'content-ticker/v1/'],
768
- 'v2' => ['type' => 'iframe', 'url' => 'content-ticker/v2/'],
769
- 'v3' => ['type' => 'iframe', 'url' => 'content-ticker/v3/'],
770
- 'v4-pro' => ['type' => 'iframe', 'url' => 'content-ticker/v4/'],
771
- 'v5-pro' => ['type' => 'iframe', 'url' => 'content-ticker/v5/'],
772
- 'v6-pro' => ['type' => 'iframe', 'url' => 'content-ticker/v6/'],
773
- ],
774
- 'button' => [
775
- 'v1' => ['type' => 'iframe', 'url' => 'button/v1/'],
776
- 'v2' => ['type' => 'iframe', 'url' => 'button/v2/'],
777
- 'v3' => ['type' => 'iframe', 'url' => 'button/v3/'],
778
- 'v4' => ['type' => 'iframe', 'url' => 'button/v4/'],
779
- 'v5' => ['type' => 'iframe', 'url' => 'button/v5/'],
780
- ],
781
- 'dual-button' => [
782
- 'v1' => ['type' => 'iframe', 'url' => 'dual-button/v1/'],
783
- 'v2' => ['type' => 'iframe', 'url' => 'dual-button/v2/'],
784
- 'v3' => ['type' => 'iframe', 'url' => 'dual-button/v3/'],
785
- ],
786
- 'team-member' => [
787
- 'v1' => ['type' => 'iframe', 'url' => 'team-member/v1/'],
788
- 'v2' => ['type' => 'iframe', 'url' => 'team-member/v2/'],
789
- 'v3' => ['type' => 'iframe', 'url' => 'team-member/v3/'],
790
- 'v4' => ['type' => 'iframe', 'url' => 'team-member/v4/'],
791
- 'v5' => ['type' => 'iframe', 'url' => 'team-member/v5/'],
792
- 'v6-pro' => ['type' => 'iframe', 'url' => 'team-member/v6/'],
793
- 'v7-pro' => ['type' => 'iframe', 'url' => 'team-member/v7/'],
794
- 'v8-pro' => ['type' => 'iframe', 'url' => 'team-member/v8/'],
795
- ],
796
- 'google-maps' => [
797
- 'v1' => ['type' => 'iframe', 'url' => 'google-map/v1/'],
798
- 'v2' => ['type' => 'iframe', 'url' => 'google-map/v2/'],
799
- 'v3' => ['type' => 'iframe', 'url' => 'google-map/v3/'],
800
- 'v4' => ['type' => 'iframe', 'url' => 'google-map/v4/'],
801
- 'v5' => ['type' => 'iframe', 'url' => 'google-map/v5/'],
802
- ],
803
- 'price-list' => [
804
- 'v1' => ['type' => 'iframe', 'url' => 'price-list/v1/'],
805
- 'v2' => ['type' => 'iframe', 'url' => 'price-list/v2/'],
806
- 'v3' => ['type' => 'iframe', 'url' => 'price-list/v3/'],
807
- 'v4-pro' => ['type' => 'iframe', 'url' => 'price-list/v4/'],
808
- 'v5-pro' => ['type' => 'iframe', 'url' => 'price-list/v5/'],
809
- 'v6-pro' => ['type' => 'iframe', 'url' => 'price-list/v6/'],
810
- 'v7-pro' => ['type' => 'iframe', 'url' => 'price-list/v7/'],
811
- ],
812
- 'business-hours' => [
813
- 'v1' => ['type' => 'iframe', 'url' => 'business-hours/v1/'],
814
- 'v2' => ['type' => 'iframe', 'url' => 'business-hours/v2/'],
815
- 'v3' => ['type' => 'iframe', 'url' => 'business-hours/v3/'],
816
- ],
817
- 'sharing-buttons' => [
818
- 'v1' => ['type' => 'iframe', 'url' => 'sharing-button/v1/'],
819
- 'v2' => ['type' => 'iframe', 'url' => 'sharing-button/v2/'],
820
- 'v3' => ['type' => 'iframe', 'url' => 'sharing-button/v3/'],
821
- 'v4-pro' => ['type' => 'iframe', 'url' => 'sharing-button/v4/'],
822
- 'v5-pro' => ['type' => 'iframe', 'url' => 'sharing-button/v5/'],
823
- ],
824
- 'logo' => [],
825
- 'search' => [
826
- 'v1' => ['type' => 'iframe', 'url' => 'search/v1/'],
827
- 'v2' => ['type' => 'iframe', 'url' => 'search/v2/'],
828
- 'v3' => ['type' => 'iframe', 'url' => 'search/v3/'],
829
- ],
830
- 'phone-call' => [],
831
- 'back-to-top' => [],
832
- 'lottie-animations' => [],
833
- 'popup-trigger' => [],
834
- ];
835
- }
836
-
837
- public static function get_available_popups() {
838
- return [
839
- // 'contact' => [
840
- // 'v1' => ['type' => 'iframe', 'url' => 'search/v1/'],
841
- // 'v2' => ['type' => 'iframe', 'url' => 'search/v2/'],
842
- // 'v3' => ['type' => 'iframe', 'url' => 'search/v3/'],
843
- // ],
844
- 'cookie' => [
845
- 'v1' => ['type' => 'image', 'url' => 'popups/cookie/v1-preview.jpg'],
846
- 'v2-pro' => ['type' => 'image', 'url' => 'popups/cookie/v2-pro-preview.jpg'],
847
- 'v3-pro' => ['type' => 'image', 'url' => 'popups/cookie/v3-pro-preview.jpg'],
848
- 'v4-pro' => ['type' => 'image', 'url' => 'popups/cookie/v4-pro-preview.jpg'],
849
- ],
850
- 'discount' => [
851
- 'v1' => ['type' => 'image', 'url' => 'popups/discount/v1-preview.jpg'],
852
- 'v2' => ['type' => 'image', 'url' => 'popups/discount/v2-preview.jpg'],
853
- 'v3-pro' => ['type' => 'image', 'url' => 'popups/discount/v3-pro-preview.jpg'],
854
- 'v4-pro' => ['type' => 'image', 'url' => 'popups/discount/v4-pro-preview.jpg'],
855
- 'v5' => ['type' => 'image', 'url' => 'popups/discount/v5-preview.jpg'],
856
- 'v6' => ['type' => 'image', 'url' => 'popups/discount/v6-preview.jpg'],
857
- 'v7-pro' => ['type' => 'image', 'url' => 'popups/discount/v7-pro-preview.jpg'],
858
- 'v8-pro' => ['type' => 'image', 'url' => 'popups/discount/v8-pro-preview.jpg'],
859
- 'v9' => ['type' => 'image', 'url' => 'popups/discount/v9-preview.jpg'],
860
- 'v10' => ['type' => 'image', 'url' => 'popups/discount/v10-preview.jpg'],
861
- 'v11-pro' => ['type' => 'image', 'url' => 'popups/discount/v11-pro-preview.jpg'],
862
- 'v12-pro' => ['type' => 'image', 'url' => 'popups/discount/v12-pro-preview.jpg'],
863
- 'v13-pro' => ['type' => 'image', 'url' => 'popups/discount/v13-pro-preview.jpg'],
864
- 'v14' => ['type' => 'image', 'url' => 'popups/discount/v14-preview.jpg'],
865
- 'v15' => ['type' => 'image', 'url' => 'popups/discount/v15-preview.jpg'],
866
- 'v16-pro' => ['type' => 'image', 'url' => 'popups/discount/v16-pro-preview.jpg'],
867
- ],
868
- 'subscribe' => [
869
- 'v1-pro' => ['type' => 'image', 'url' => 'popups/subscribe/v1-pro-preview.jpg'],
870
- 'v2-pro' => ['type' => 'image', 'url' => 'popups/subscribe/v2-pro-preview.jpg'],
871
- 'v3-pro' => ['type' => 'image', 'url' => 'popups/subscribe/v3-pro-preview.jpg'],
872
- ],
873
- 'yesno' => [
874
- 'v1-pro' => ['type' => 'image', 'url' => 'popups/yesno/v1-pro-preview.jpg'],
875
- 'v2-pro' => ['type' => 'image', 'url' => 'popups/yesno/v2-pro-preview.jpg'],
876
- 'v3-pro' => ['type' => 'image', 'url' => 'popups/yesno/v3-pro-preview.jpg'],
877
- ],
878
- ];
879
- }
880
  }
1
+ <?php
2
+ namespace WprAddons\Admin\Templates;
3
+
4
+ use WprAddons\Plugin;
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
7
+
8
+ class WPR_Templates_Data {
9
+ public static function get_available_kits() {
10
+ $is_pro_active = wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION');
11
+ $is_cf7_active = is_plugin_active('contact-form-7/wp-contact-form-7.php') ? 'true' : 'false';
12
+ $is_mla_active = is_plugin_active('media-library-assistant/index.php') ? 'true' : 'false';
13
+ $is_woo_active = is_plugin_active('woocommerce/woocommerce.php') ? 'true' : 'false';
14
+
15
+ return [
16
+ 'grocery-store' => [
17
+ 'v1' => [
18
+ 'name' => 'Grocery Store',
19
+ 'pages' => 'home,shop,single-product,my-account,about,contact,',
20
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
21
+ 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product online eshopping market reseller ecommerce shop',
22
+ 'theme-builder' => false,
23
+ 'woo-builder' => true,
24
+ 'off-canvas' => false,
25
+ 'price' => $is_pro_active ? 'free' : 'pro',
26
+ 'priority' => 4,
27
+ ],
28
+ ],
29
+ 'furniture-shop' => [
30
+ 'v1' => [
31
+ 'name' => 'Furniture Shop',
32
+ 'pages' => 'home,shop-v1,shop-v2,single-product,my-account,about,contact,',
33
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
34
+ 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product online furniture home office eshopping market reseller ecommerce shop ',
35
+ 'theme-builder' => false,
36
+ 'woo-builder' => true,
37
+ 'off-canvas' => true,
38
+ 'price' => $is_pro_active ? 'free' : 'pro',
39
+ 'priority' => 5,
40
+ ],
41
+ ],
42
+ 'estore' => [
43
+ 'v1' => [
44
+ 'name' => 'Electronic Store',
45
+ 'pages' => 'home,shop,single-product,blog,faq,about,contact,',
46
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
47
+ 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product online market reseller ecommerce shop gadget iphone phone electronic ',
48
+ 'theme-builder' => true,
49
+ 'woo-builder' => true,
50
+ 'off-canvas' => false,
51
+ 'price' => $is_pro_active ? 'free' : 'pro',
52
+ 'priority' => 4,
53
+ ],
54
+ ],
55
+ 'woo-food' => [
56
+ 'v1' => [
57
+ 'name' => 'Food Delivery',
58
+ 'pages' => 'home,home-v2,food,single-product,about,contact,faq,blog,',
59
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
60
+ 'tags' => 'shop woo-commerce woocommerce ecommerce product online eshopping market ecommerce shop food delivery restaurant fast food pizzeria burger recipes cooking pizza restaurant snack',
61
+ 'theme-builder' => true,
62
+ 'woo-builder' => true,
63
+ 'off-canvas' => false,
64
+ 'price' => $is_pro_active ? 'free' : 'pro',
65
+ 'priority' => 144,
66
+ ],
67
+ ],
68
+ 'fashion' => [
69
+ 'v1' => [
70
+ 'name' => 'Fashion',
71
+ 'pages' => 'home,shop-v1,shop-v2,single-product,blog,my-account,about,faq,contact,',
72
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
73
+ 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce product ecommerce shop online boutique clothes eshopping fashion designer market reseller digital purchases',
74
+ 'theme-builder' => true,
75
+ 'woo-builder' => true,
76
+ 'off-canvas' => false,
77
+ 'price' => $is_pro_active ? 'free' : 'pro',
78
+ 'priority' => 2,
79
+ ],
80
+ ],
81
+ 'wooshop' => [
82
+ 'v1' => [
83
+ 'name' => 'Woo Shop',
84
+ 'pages' => 'home,shop,single-product,about,contact,',
85
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .',"woocommerce":'. $is_woo_active .'}',
86
+ 'tags' => 'shop shopping woo-commerce woocommerce estore ecommerce shop ecommerce product online shop online store boutique clothes eshopping fashion designer market reseller digital purchases',
87
+ 'theme-builder' => false,
88
+ 'woo-builder' => true,
89
+ 'off-canvas' => false,
90
+ 'price' => $is_pro_active ? 'free' : 'free',
91
+ 'priority' => 3,
92
+ ],
93
+ ],
94
+ 'personal-blog' => [
95
+ 'v1' => [
96
+ 'name' => 'Personal Blog',
97
+ 'pages' => 'home,home-v1,home-v2,home-v3,lifestyle,about,contact,',
98
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
99
+ 'tags' => 'blog blogger posts personal blog lifestyle blogger theme builder grid slider news',
100
+ 'theme-builder' => true,
101
+ 'woo-builder' => false,
102
+ 'off-canvas' => false,
103
+ 'price' => $is_pro_active ? 'free' : 'pro',
104
+ 'priority' => 2,
105
+ ],
106
+ 'v2' => [
107
+ 'name' => 'Personal Blog',
108
+ 'pages' => 'home,single,category,about,contact,',
109
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
110
+ 'tags' => 'blog blogger posts personal blog lifestyle blogger theme builder grid slider news',
111
+ 'theme-builder' => true,
112
+ 'woo-builder' => false,
113
+ 'off-canvas' => false,
114
+ 'price' => $is_pro_active ? 'free' : 'pro',
115
+ 'priority' => 4,
116
+ ],
117
+ ],
118
+ 'food-blog' => [
119
+ 'v1' => [
120
+ 'name' => 'Food Blog',
121
+ 'pages' => 'home,home-v1,home-v2,home-v3,category,about,contact,',
122
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
123
+ 'tags' => 'food blog posts food blogger theme builder recipes cooking grid slider',
124
+ 'theme-builder' => true,
125
+ 'woo-builder' => false,
126
+ 'off-canvas' => false,
127
+ 'price' => $is_pro_active ? 'free' : 'pro',
128
+ 'priority' => 20,
129
+ ],
130
+ ],
131
+ 'magazine-blog' => [
132
+ 'v1' => [
133
+ 'name' => 'Magazine Blog',
134
+ 'pages' => 'home,home-v1,home-v2,category,about,contact,',
135
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
136
+ 'tags' => 'blogger blog posts content news newspaper journal magazine business blog publishing theme builder sports grid slider',
137
+ 'theme-builder' => true,
138
+ 'woo-builder' => false,
139
+ 'off-canvas' => false,
140
+ 'price' => $is_pro_active ? 'free' : 'pro',
141
+ 'priority' => 6,
142
+ ],
143
+ 'v2' => [
144
+ 'name' => 'Magazine Blog',
145
+ 'pages' => 'home,home-v1,home-v2,category,about,contact,',
146
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
147
+ 'tags' => 'blogger blog posts content news newspaper journal magazine business blog publishing theme builder sports grid slider',
148
+ 'theme-builder' => true,
149
+ 'woo-builder' => false,
150
+ 'off-canvas' => false,
151
+ 'price' => $is_pro_active ? 'free' : 'pro',
152
+ 'priority' => 50,
153
+ ],
154
+ 'v3' => [
155
+ 'name' => 'Magazine Blog',
156
+ 'pages' => 'home,category,about,contact,',
157
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
158
+ 'tags' => 'blogger blog posts content news newspaper journal magazine business blog publishing theme builder sports grid slider',
159
+ 'theme-builder' => true,
160
+ 'woo-builder' => false,
161
+ 'off-canvas' => false,
162
+ 'price' => $is_pro_active ? 'free' : 'pro',
163
+ 'priority' => 30,
164
+ ],
165
+ ],
166
+ 'nature' => [
167
+ 'v1' => [
168
+ 'name' => 'nature',
169
+ 'pages' => 'home,about,services,projects,contact,',
170
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
171
+ 'tags' => 'nature influencer travel blogger blog content slider tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness hitchhiking mountain river lakes outdoors',
172
+ 'theme-builder' => true,
173
+ 'woo-builder' => false,
174
+ 'off-canvas' => false,
175
+ 'price' => $is_pro_active ? 'free' : 'free',
176
+ 'priority' => 60,
177
+ ],
178
+ ],
179
+ 'travel-agency' => [
180
+ 'v1' => [
181
+ 'name' => 'Travel agency',
182
+ 'pages' => 'home,tours,gallery,services,reviews,about,contact,',
183
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
184
+ 'tags' => 'nature influencer travel blogger blog content slider tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness hitchhiking mountain river lakes outdoors travel agency company office travel services',
185
+ 'theme-builder' => true,
186
+ 'woo-builder' => false,
187
+ 'off-canvas' => false,
188
+ 'price' => $is_pro_active ? 'free' : 'free',
189
+ 'priority' => 61,
190
+ ],
191
+ ],
192
+ 'digital-marketing-agency' => [
193
+ 'v1' => [
194
+ 'name' => 'Digital Marketing Agency',
195
+ 'pages' => 'home,seo,branding,marketing,social,blog,about,contact,',
196
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
197
+ 'tags' => 'digital agency company corporate digital services office agency web digital marketing seo social media branding',
198
+ 'theme-builder' => true,
199
+ 'woo-builder' => false,
200
+ 'off-canvas' => false,
201
+ 'price' => $is_pro_active ? 'free' : 'free',
202
+ 'priority' => 1,
203
+ ],
204
+ ],
205
+ 'digital-agency-dark' => [
206
+ 'v1' => [
207
+ 'name' => 'Digital Agency Dark',
208
+ 'pages' => 'home,about,services,team,portfolio,blog,contact,',
209
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
210
+ 'tags' => 'digital agency company corporate digital services office agency web digital marketing seo social media branding dark black',
211
+ 'theme-builder' => true,
212
+ 'woo-builder' => false,
213
+ 'off-canvas' => false,
214
+ 'price' => $is_pro_active ? 'free' : 'free',
215
+ 'priority' => 3,
216
+ ],
217
+ ],
218
+ 'one-page' => [
219
+ 'v1' => [
220
+ 'name' => 'OnePage - Digital Marketing Agency',
221
+ 'pages' => 'home,blog,',
222
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
223
+ 'tags' => 'digital agency company corporate digital services office agency web digital marketing seo social media branding one page onepage one pages parallax single page',
224
+ 'theme-builder' => true,
225
+ 'woo-builder' => false,
226
+ 'off-canvas' => false,
227
+ 'price' => $is_pro_active ? 'free' : 'free',
228
+ 'priority' => 7,
229
+ ],
230
+ ],
231
+ 'travel-blog' => [
232
+ 'v1' => [
233
+ 'name' => 'Travel Blog',
234
+ 'pages' => 'home,home-v1,home-v2,category,about,contact,',
235
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
236
+ 'tags' => 'nature influencer travel blogger blog posts content tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness slider hitchhiking mountain river lakes outdoors theme builder traveler hiking grid',
237
+ 'theme-builder' => true,
238
+ 'woo-builder' => false,
239
+ 'off-canvas' => false,
240
+ 'price' => $is_pro_active ? 'free' : 'pro',
241
+ 'priority' => 71,
242
+ ],
243
+ ],
244
+ 'portfolio' => [
245
+ 'v1' => [
246
+ 'name' => 'Portfolio/CV',
247
+ 'pages' => 'home,about,portfolio,contact,',
248
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
249
+ 'tags' => 'portfolio personal cv designer ux artist artwork personal resume photographer grid',
250
+ 'theme-builder' => false,
251
+ 'woo-builder' => false,
252
+ 'off-canvas' => false,
253
+ 'price' => $is_pro_active ? 'free' : 'free',
254
+ 'priority' => 80,
255
+ ],
256
+ ],
257
+ 'nft-portfolio' => [
258
+ 'v1' => [
259
+ 'name' => 'NFT',
260
+ 'pages' => 'home,about,blog,roadmap,team,nft,faq,comingsoon,',
261
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
262
+ 'tags' => 'portfolio blockchain nft crypto collection minting listing metavers digital currency art',
263
+ 'theme-builder' => false,
264
+ 'woo-builder' => false,
265
+ 'off-canvas' => false,
266
+ 'price' => $is_pro_active ? 'free' : 'free',
267
+ 'priority' => 81,
268
+ ],
269
+ ],
270
+ 'pizza' => [
271
+ 'v1' => [
272
+ 'name' => 'Pizza Restaurant',
273
+ 'pages' => 'home,menu,about,offer,gallery,contact,',
274
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
275
+ 'tags' => 'pizza italian restaurant food slider pasta fastfood fast food recipes cooking slider',
276
+ 'theme-builder' => false,
277
+ 'woo-builder' => false,
278
+ 'off-canvas' => false,
279
+ 'price' => $is_pro_active ? 'free' : 'free',
280
+ 'priority' => 90,
281
+ ],
282
+ ],
283
+ 'pet-care' => [
284
+ 'v1' => [
285
+ 'name' => 'Pet Care',
286
+ 'pages' => 'home,about,services,reviews,contact,',
287
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
288
+ 'tags' => 'pet care dog care grooming pet minding pet sitting pet training pet walking cat animal dogs dog training',
289
+ 'theme-builder' => false,
290
+ 'woo-builder' => false,
291
+ 'off-canvas' => false,
292
+ 'price' => $is_pro_active ? 'free' : 'free',
293
+ 'priority' => 91,
294
+ ],
295
+ ],
296
+ 'travel' => [
297
+ 'v1' => [
298
+ 'name' => 'Travel Blogger & Influencer',
299
+ 'pages' => 'home,about,stories,contact,',
300
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
301
+ 'tags' => 'nature influencer travel blogger blog content tourism influencers creator travel forest slider generic multipurpose national-park nature-park sanctuary wilderness hitchhiking mountain river lakes outdoors',
302
+ 'theme-builder' => false,
303
+ 'woo-builder' => false,
304
+ 'off-canvas' => false,
305
+ 'price' => $is_pro_active ? 'free' : 'free',
306
+ 'priority' => 100,
307
+ ],
308
+ ],
309
+ 'cybersecurity' => [
310
+ 'v1' => [
311
+ 'name' => 'Cybersecurity',
312
+ 'pages' => 'home,about,services,pricing,contact,',
313
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
314
+ 'tags' => 'cybersecurity data protection hacker security dark digital technology cybercrime computer windows technician',
315
+ 'theme-builder' => false,
316
+ 'woo-builder' => false,
317
+ 'off-canvas' => false,
318
+ 'price' => $is_pro_active ? 'free' : 'free',
319
+ 'priority' => 110,
320
+ ],
321
+ ],
322
+ 'charity' => [
323
+ 'v1' => [
324
+ 'name' => 'Charity',
325
+ 'pages' => 'home,home-v1,contact,whatwedo,whoweare,partners,',
326
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
327
+ 'tags' => 'charity donate church foundation giving non-profit organization kids charity help children save life donation fundrising ngo fundraising corona fundraising nonprofit non profit',
328
+ 'theme-builder' => false,
329
+ 'woo-builder' => false,
330
+ 'off-canvas' => false,
331
+ 'price' => $is_pro_active ? 'free' : 'free',
332
+ 'priority' => 111,
333
+ ],
334
+ ],
335
+ 'photographer' => [
336
+ 'v1' => [
337
+ 'name' => 'Photographer Portfolio Dark',
338
+ 'pages' => 'home,about,services,portfolio,contact,',
339
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
340
+ 'tags' => 'portfolio personal cv designer ux artist artwork personal resume camera fashion lens modelling photographer photography videography wedding shoot grid ',
341
+ 'theme-builder' => false,
342
+ 'woo-builder' => false,
343
+ 'off-canvas' => false,
344
+ 'price' => $is_pro_active ? 'free' : 'free',
345
+ 'priority' => 120,
346
+ ],
347
+ 'v2' => [
348
+ 'name' => 'Photographer Portfolio Light',
349
+ 'pages' => 'home,about,services,portfolio,contact,',
350
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .', "media-library-assistant":'. $is_mla_active .'}',
351
+ 'tags' => 'portfolio personal cv designer ux artist artwork personal resume camera fashion lens modelling photographer photography videography wedding shoot grid ',
352
+ 'theme-builder' => false,
353
+ 'woo-builder' => false,
354
+ 'off-canvas' => false,
355
+ 'price' => $is_pro_active ? 'free' : 'free',
356
+ 'priority' => 130,
357
+ ],
358
+ ],
359
+ 'cryptocurrency' => [
360
+ 'v1' => [
361
+ 'name' => 'Cryptocurrency',
362
+ 'pages' => 'home,about,services,token,pricing,contact,',
363
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
364
+ 'tags' => 'cryptocurrency bitcoin ethereum etherium blockchain protection nft coin corporate crypto dark startup token digital',
365
+ 'theme-builder' => false,
366
+ 'woo-builder' => false,
367
+ 'off-canvas' => false,
368
+ 'price' => $is_pro_active ? 'free' : 'free',
369
+ 'priority' => 150,
370
+ ],
371
+ ],
372
+ 'skincare' => [
373
+ 'v1' => [
374
+ 'name' => 'Skin Care',
375
+ 'pages' => 'home,about,services,procedures,gallery,pricing,contact,',
376
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
377
+ 'tags' => 'skincare skin care beauty clean face skin-beauty health wellness',
378
+ 'theme-builder' => false,
379
+ 'woo-builder' => false,
380
+ 'off-canvas' => false,
381
+ 'price' => $is_pro_active ? 'free' : 'free',
382
+ 'priority' => 160,
383
+ ],
384
+ ],
385
+ 'lawyer' => [
386
+ 'v1' => [
387
+ 'name' => 'Lawyer',
388
+ 'pages' => 'home,practice,faq,reviews,attorney,contact,',
389
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
390
+ 'tags' => 'lawyers criminal defence lawyer firm divorce lawyer family lawyer law legal firm ',
391
+ 'theme-builder' => false,
392
+ 'woo-builder' => false,
393
+ 'off-canvas' => false,
394
+ 'price' => $is_pro_active ? 'free' : 'free',
395
+ 'priority' => 170,
396
+ ],
397
+ ],
398
+ 'medical' => [
399
+ 'v1' => [
400
+ 'name' => 'Medical',
401
+ 'pages' => 'home,about,services,doctors,contact,',
402
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
403
+ 'tags' => 'medical clinic dental health healthcare doctor therapist wellness treatment cure',
404
+ 'theme-builder' => false,
405
+ 'woo-builder' => false,
406
+ 'off-canvas' => false,
407
+ 'price' => $is_pro_active ? 'free' : 'free',
408
+ 'priority' => 180,
409
+ ],
410
+ ],
411
+ 'digitalagency' => [
412
+ 'v1' => [
413
+ 'name' => 'Digital Agency',
414
+ 'pages' => 'home,about,services,contact,',
415
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
416
+ 'tags' => 'digital agency company corporate digital services office agency web marketing',
417
+ 'theme-builder' => false,
418
+ 'woo-builder' => false,
419
+ 'off-canvas' => false,
420
+ 'price' => $is_pro_active ? 'free' : 'free',
421
+ 'priority' => 190,
422
+ ],
423
+ 'v2' => [
424
+ 'name' => 'Digital Agency',
425
+ 'pages' => 'home,about,services,pricing,contact,',
426
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
427
+ 'tags' => 'digital agency company corporate digital services office agency web marketing slider',
428
+ 'theme-builder' => false,
429
+ 'woo-builder' => false,
430
+ 'off-canvas' => false,
431
+ 'price' => $is_pro_active ? 'free' : 'free',
432
+ 'priority' => 200,
433
+ ],
434
+ ],
435
+ 'drone' => [
436
+ 'v1' => [
437
+ 'name' => 'Drone Project',
438
+ 'pages' => 'home,about,gallery,services,contact,',
439
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
440
+ 'tags' => 'drone photography aerial photo ',
441
+ 'theme-builder' => false,
442
+ 'woo-builder' => false,
443
+ 'off-canvas' => false,
444
+ 'price' => $is_pro_active ? 'free' : 'free',
445
+ 'priority' => 210,
446
+ ],
447
+ ],
448
+ 'architecture' => [
449
+ 'v1' => [
450
+ 'name' => 'Architecture 1',
451
+ 'pages' => 'home,about,portfolio,services,faq,contact,',
452
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
453
+ 'tags' => 'architecture company slider interior design designer landscaping office zoning building slider',
454
+ 'theme-builder' => false,
455
+ 'woo-builder' => false,
456
+ 'off-canvas' => false,
457
+ 'price' => $is_pro_active ? 'free' : 'pro',
458
+ 'priority' => 220,
459
+ ],
460
+ 'v2' => [
461
+ 'name' => 'Architecture 2',
462
+ 'pages' => 'home,about,projects,services,team,pricing,faq,contact,',
463
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
464
+ 'tags' => 'architecture company slider interior design designer landscaping office zoning building slider architecture commercial construction creative decorations exterior designer home decorations interior designer landscape design modern real-estate residential',
465
+ 'theme-builder' => true,
466
+ 'woo-builder' => false,
467
+ 'off-canvas' => false,
468
+ 'price' => $is_pro_active ? 'free' : 'pro',
469
+ 'priority' => 223,
470
+ ],
471
+ ],
472
+ 'fooddelivery' => [
473
+ 'v1' => [
474
+ 'name' => 'Food Delivery',
475
+ 'pages' => 'home,services,blog,faq,contact,',
476
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
477
+ 'tags' => 'fooddelivery fast food chain restaurant service hotel italian pasta pizza pizzeria burger recipes cooking',
478
+ 'theme-builder' => false,
479
+ 'woo-builder' => false,
480
+ 'off-canvas' => false,
481
+ 'price' => $is_pro_active ? 'free' : 'pro',
482
+ 'priority' => 230,
483
+ ],
484
+ ],
485
+ 'construction' => [
486
+ 'v1' => [
487
+ 'name' => 'Construction',
488
+ 'pages' => 'home,about,services,projects,pricing,contact,faq,',
489
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
490
+ 'tags' => 'construction architecture company interior office real estate',
491
+ 'theme-builder' => false,
492
+ 'woo-builder' => false,
493
+ 'off-canvas' => false,
494
+ 'price' => $is_pro_active ? 'free' : 'free',
495
+ 'priority' => 240,
496
+ ],
497
+ ],
498
+ 'ittech' => [
499
+ 'v1' => [
500
+ 'name' => 'IT Tech v1',
501
+ 'pages' => 'home,about,services,pricing,faq,contact,',
502
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
503
+ 'tags' => 'ittech advanced technology it technique computer windows technician digital',
504
+ 'theme-builder' => false,
505
+ 'woo-builder' => false,
506
+ 'off-canvas' => false,
507
+ 'price' => $is_pro_active ? 'free' : 'free',
508
+ 'priority' => 5,
509
+ ],
510
+ 'v2' => [
511
+ 'name' => 'IT Tech v2',
512
+ 'pages' => 'home,about,services,pricing,faq,contact,',
513
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
514
+ 'tags' => 'ittech advanced technology it technique computer windows technician digital',
515
+ 'theme-builder' => false,
516
+ 'woo-builder' => false,
517
+ 'off-canvas' => false,
518
+ 'price' => $is_pro_active ? 'free' : 'free',
519
+ 'priority' => 260,
520
+ ],
521
+ ],
522
+ 'carwash' => [
523
+ 'v1' => [
524
+ 'name' => 'Carwash',
525
+ 'pages' => 'home,about,services,contact,',
526
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
527
+ 'tags' => 'vehicle car wash cleaning painting service maintenance care bike motorcycle detailing',
528
+ 'theme-builder' => false,
529
+ 'woo-builder' => false,
530
+ 'off-canvas' => false,
531
+ 'price' => $is_pro_active ? 'free' : 'free',
532
+ 'priority' => 252,
533
+ ],
534
+ ],
535
+ 'realestate' => [
536
+ 'v1' => [
537
+ 'name' => 'Real Estate',
538
+ 'pages' => 'home,properties,about,services,faq,contact,',
539
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
540
+ 'tags' => 'real estate agency company construction property rentals estate sales developers',
541
+ 'theme-builder' => false,
542
+ 'woo-builder' => false,
543
+ 'off-canvas' => false,
544
+ 'price' => $is_pro_active ? 'free' : 'pro',
545
+ 'priority' => 270,
546
+ ],
547
+ ],
548
+ 'restaurant' => [
549
+ 'v1' => [
550
+ 'name' => 'Restaurant',
551
+ 'pages' => 'home,about,gallery,menu,contact,',
552
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
553
+ 'tags' => 'restaurant fastfood slider hotel italian pizza pizzeria pasta dinner fast food wine recipe recipes cooking slider',
554
+ 'theme-builder' => false,
555
+ 'woo-builder' => false,
556
+ 'off-canvas' => false,
557
+ 'price' => $is_pro_active ? 'free' : 'free',
558
+ 'priority' => 280,
559
+ ],
560
+ ],
561
+ 'winebar' => [
562
+ 'v1' => [
563
+ 'name' => 'Wine Bar & Restaurant',
564
+ 'pages' => 'home,story,wines,dishes,events,contact,',
565
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
566
+ 'tags' => 'wine bar winery beer drink alcohol pub events dish wines italian restaurant food slider recipes cooking recipes slider',
567
+ 'theme-builder' => false,
568
+ 'woo-builder' => false,
569
+ 'off-canvas' => false,
570
+ 'price' => $is_pro_active ? 'free' : 'free',
571
+ 'priority' => 290,
572
+ ],
573
+ ],
574
+ 'wedding' => [
575
+ 'v1' => [
576
+ 'name' => 'Wedding',
577
+ 'pages' => 'home,about,services,blog,gallery,contact,',
578
+ 'plugins' => '{"contact-form-7":'. $is_cf7_active .'}',
579
+ 'tags' => 'wedding party event slider invitation planner slider photography photographer',
580
+ 'theme-builder' => false,
581
+ 'woo-builder' => false,
582
+ 'off-canvas' => false,
583
+ 'price' => $is_pro_active ? 'free' : 'free',
584
+ 'priority' => 300,
585
+ ],
586
+ ],
587
+ ];
588
+ }
589
+
590
+ public static function get_available_blocks() {
591
+ return [
592
+ 'grid' => [
593
+ 'v1' => ['type' => 'iframe', 'url' => 'grid/v1/'],
594
+ 'v2' => ['type' => 'iframe', 'url' => 'grid/v2/'],
595
+ 'v3' => ['type' => 'iframe', 'url' => 'grid/v3/'],
596
+ 'v4' => ['type' => 'iframe', 'url' => 'grid/v4/'],
597
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'grid/v5/'],
598
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'grid/v6/'],
599
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'grid/v7/'],
600
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'grid/v8/'],
601
+ 'v9-pro' => ['type' => 'iframe', 'url' => 'grid/v9/'],
602
+ 'v10-pro' => ['type' => 'iframe', 'url' => 'grid/v10/'],
603
+ 'v11' => ['type' => 'iframe', 'url' => 'grid/v11/'],
604
+ 'v12' => ['type' => 'iframe', 'url' => 'grid/v12/'],
605
+ 'v13' => ['type' => 'iframe', 'url' => 'grid/v13/'],
606
+ 'v14' => ['type' => 'iframe', 'url' => 'grid/v14/'],
607
+ ],
608
+ 'woo-grid' => [
609
+ 'v1' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v1/'],
610
+ 'v2' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v2/'],
611
+ 'v3-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v3/'],
612
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v4/'],
613
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v5/'],
614
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v6/'],
615
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v7/'],
616
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v8/'],
617
+ 'v9-pro' => ['type' => 'iframe', 'url' => 'woocommerce-grid/v9/'],
618
+ ],
619
+ 'media-grid' => [
620
+ 'v1' => ['type' => 'iframe', 'url' => 'image-grid/v1/'],
621
+ 'v2' => ['type' => 'iframe', 'url' => 'image-grid/v2/'],
622
+ ],
623
+ 'magazine-grid' => [
624
+ 'v1' => ['type' => 'iframe', 'url' => 'magazine-grid/v1/'],
625
+ 'v2' => ['type' => 'iframe', 'url' => 'magazine-grid/v2/'],
626
+ // 'v3' => ['type' => 'iframe', 'url' => 'magazine-grid/v3/', 'sub' => 'carousel'], <-- Keep as example
627
+ 'v3-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v3/'],
628
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v4/'],
629
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v5/'],
630
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v6/'],
631
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v7/'],
632
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'magazine-grid/v8/'],
633
+ ],
634
+ 'advanced-slider' => [
635
+ 'v1' => ['type' => 'iframe', 'url' => 'advanced-slider/v1/'],
636
+ 'v2' => ['type' => 'iframe', 'url' => 'advanced-slider/v2/'],
637
+ 'v3' => ['type' => 'iframe', 'url' => 'advanced-slider/v3/'],
638
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v4/'],
639
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v5/'],
640
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v6/'],
641
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v7/'],
642
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'advanced-slider/v8/'],
643
+ ],
644
+ 'posts-timeline' => [
645
+ 'v1' => ['type' => 'iframe', 'url' => 'timeline/v1/'],
646
+ 'v2' => ['type' => 'iframe', 'url' => 'timeline/v2/'],
647
+ 'v3' => ['type' => 'iframe', 'url' => 'timeline/v3/'],
648
+ 'v4' => ['type' => 'iframe', 'url' => 'timeline/v4/'],
649
+ 'v5' => ['type' => 'iframe', 'url' => 'timeline/v5/'],
650
+ ],
651
+ 'testimonial' => [
652
+ 'v1' => ['type' => 'iframe', 'url' => 'testimonial-slider/v1/'],
653
+ 'v2' => ['type' => 'iframe', 'url' => 'testimonial-slider/v2/'],
654
+ 'v3' => ['type' => 'iframe', 'url' => 'testimonial-slider/v3/'],
655
+ 'v4' => ['type' => 'iframe', 'url' => 'testimonial-slider/v4/'],
656
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v5/'],
657
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v6/'],
658
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v7/'],
659
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v8/'],
660
+ 'v9-pro' => ['type' => 'iframe', 'url' => 'testimonial-slider/v9/'],
661
+ ],
662
+ 'nav-menu' => [
663
+ 'v1' => ['type' => 'iframe', 'url' => 'nav-menu/v1/'],
664
+ 'v2' => ['type' => 'iframe', 'url' => 'nav-menu/v2/'],
665
+ 'v3' => ['type' => 'iframe', 'url' => 'nav-menu/v3/'],
666
+ 'v4' => ['type' => 'iframe', 'url' => 'nav-menu/v4/'],
667
+ 'v5' => ['type' => 'iframe', 'url' => 'nav-menu/v5/'],
668
+ 'v6' => ['type' => 'iframe', 'url' => 'nav-menu/v6/'],
669
+ ],
670
+ 'onepage-nav' => [
671
+ 'v1' => ['type' => 'iframe', 'url' => 'one-page-navigation/v1/'],
672
+ 'v2' => ['type' => 'iframe', 'url' => 'one-page-navigation/v2/'],
673
+ 'v3' => ['type' => 'iframe', 'url' => 'one-page-navigation/v3/'],
674
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'one-page-navigation/v4/'],
675
+ ],
676
+ 'pricing-table' => [
677
+ 'v1' => ['type' => 'iframe', 'url' => 'pricing-table/v1/'],
678
+ 'v2' => ['type' => 'iframe', 'url' => 'pricing-table/v2/'],
679
+ 'v3' => ['type' => 'iframe', 'url' => 'pricing-table/v3/'],
680
+ 'v4' => ['type' => 'iframe', 'url' => 'pricing-table/v4/'],
681
+ 'v5' => ['type' => 'iframe', 'url' => 'pricing-table/v5/'],
682
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'pricing-table/v6/'],
683
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'pricing-table/v7/'],
684
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'pricing-table/v8/'],
685
+ ],
686
+ 'content-toggle' => [
687
+ 'v1' => ['type' => 'iframe', 'url' => 'content-toggle/v1/'],
688
+ 'v2' => ['type' => 'iframe', 'url' => 'content-toggle/v2/'],
689
+ 'v3-pro' => ['type' => 'iframe', 'url' => 'content-toggle/v3/'],
690
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'content-toggle/v4/'],
691
+ ],
692
+ 'data-table' => [
693
+ 'v1' => ['type' => 'iframe', 'url' => 'data-table/v1/'],
694
+ 'v2' => ['type' => 'iframe', 'url' => 'data-table/v2/'],
695
+ 'v3' => ['type' => 'iframe', 'url' => 'data-table/v3/'],
696
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'data-table/v4/'],
697
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'data-table/v5/'],
698
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'data-table/v6/'],
699
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'data-table/v7/'],
700
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'data-table/v8/'],
701
+ ],
702
+ 'countdown' => [
703
+ 'v1' => ['type' => 'iframe', 'url' => 'countdown/v1/'],
704
+ 'v2' => ['type' => 'iframe', 'url' => 'countdown/v2/'],
705
+ 'v3' => ['type' => 'iframe', 'url' => 'countdown/v3/'],
706
+ ],
707
+ 'progress-bar' => [
708
+ 'v1' => ['type' => 'iframe', 'url' => 'progress-bar/v1/'],
709
+ 'v2' => ['type' => 'iframe', 'url' => 'progress-bar/v2/'],
710
+ 'v3' => ['type' => 'iframe', 'url' => 'progress-bar/v3/'],
711
+ ],
712
+ 'tabs' => [
713
+ 'v1' => ['type' => 'iframe', 'url' => 'tabs/v1/'],
714
+ 'v2' => ['type' => 'iframe', 'url' => 'tabs/v2/'],
715
+ 'v3' => ['type' => 'iframe', 'url' => 'tabs/v3/'],
716
+ ],
717
+ 'advanced-text' => [
718
+ 'v1' => ['type' => 'iframe', 'url' => 'advanced-text/v1/'],
719
+ 'v2' => ['type' => 'iframe', 'url' => 'advanced-text/v2/'],
720
+ 'v3' => ['type' => 'iframe', 'url' => 'advanced-text/v3/'],
721
+ 'v4' => ['type' => 'iframe', 'url' => 'advanced-text/v4/'],
722
+ 'v5' => ['type' => 'iframe', 'url' => 'advanced-text/v5/'],
723
+ 'v6' => ['type' => 'iframe', 'url' => 'advanced-text/v6/'],
724
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v7/'],
725
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v8/'],
726
+ 'v9-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v9/'],
727
+ 'v10-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v10/'],
728
+ 'v11-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v11/'],
729
+ 'v12-pro' => ['type' => 'iframe', 'url' => 'advanced-text/v12/'],
730
+ ],
731
+ 'flip-box' => [
732
+ 'v1' => ['type' => 'iframe', 'url' => 'flip-box/v1/'],
733
+ 'v2' => ['type' => 'iframe', 'url' => 'flip-box/v2/'],
734
+ 'v3' => ['type' => 'iframe', 'url' => 'flip-box/v3/'],
735
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'flip-box/v4/'],
736
+ ],
737
+ 'promo-box' => [
738
+ 'v1' => ['type' => 'iframe', 'url' => 'promo-box/v1/'],
739
+ 'v2' => ['type' => 'iframe', 'url' => 'promo-box/v2/'],
740
+ 'v3' => ['type' => 'iframe', 'url' => 'promo-box/v3/'],
741
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'promo-box/v4/'],
742
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'promo-box/v5/'],
743
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'promo-box/v6/'],
744
+ ],
745
+ 'before-after' => [
746
+ 'v1' => ['type' => 'iframe', 'url' => 'before-and-after/v1/'],
747
+ 'v2' => ['type' => 'iframe', 'url' => 'before-and-after/v2/'],
748
+ 'v3' => ['type' => 'iframe', 'url' => 'before-and-after/v3/'],
749
+ ],
750
+ 'image-hotspots' => [
751
+ 'v1' => ['type' => 'iframe', 'url' => 'image-hotspot/v1/'],
752
+ 'v2' => ['type' => 'iframe', 'url' => 'image-hotspot/v2/'],
753
+ 'v3' => ['type' => 'iframe', 'url' => 'image-hotspot/v3/'],
754
+ ],
755
+ 'forms' => [],
756
+ 'mailchimp' => [
757
+ 'v1' => ['type' => 'iframe', 'url' => 'mailchimp/v1/'],
758
+ 'v2' => ['type' => 'iframe', 'url' => 'mailchimp/v2/'],
759
+ 'v3' => ['type' => 'iframe', 'url' => 'mailchimp/v3/'],
760
+ 'v4' => ['type' => 'iframe', 'url' => 'mailchimp/v4/'],
761
+ 'v5' => ['type' => 'iframe', 'url' => 'mailchimp/v5/'],
762
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'mailchimp/v6/'],
763
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'mailchimp/v7/'],
764
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'mailchimp/v8/'],
765
+ ],
766
+ 'content-ticker' => [
767
+ 'v1' => ['type' => 'iframe', 'url' => 'content-ticker/v1/'],
768
+ 'v2' => ['type' => 'iframe', 'url' => 'content-ticker/v2/'],
769
+ 'v3' => ['type' => 'iframe', 'url' => 'content-ticker/v3/'],
770
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'content-ticker/v4/'],
771
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'content-ticker/v5/'],
772
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'content-ticker/v6/'],
773
+ ],
774
+ 'button' => [
775
+ 'v1' => ['type' => 'iframe', 'url' => 'button/v1/'],
776
+ 'v2' => ['type' => 'iframe', 'url' => 'button/v2/'],
777
+ 'v3' => ['type' => 'iframe', 'url' => 'button/v3/'],
778
+ 'v4' => ['type' => 'iframe', 'url' => 'button/v4/'],
779
+ 'v5' => ['type' => 'iframe', 'url' => 'button/v5/'],
780
+ ],
781
+ 'dual-button' => [
782
+ 'v1' => ['type' => 'iframe', 'url' => 'dual-button/v1/'],
783
+ 'v2' => ['type' => 'iframe', 'url' => 'dual-button/v2/'],
784
+ 'v3' => ['type' => 'iframe', 'url' => 'dual-button/v3/'],
785
+ ],
786
+ 'team-member' => [
787
+ 'v1' => ['type' => 'iframe', 'url' => 'team-member/v1/'],
788
+ 'v2' => ['type' => 'iframe', 'url' => 'team-member/v2/'],
789
+ 'v3' => ['type' => 'iframe', 'url' => 'team-member/v3/'],
790
+ 'v4' => ['type' => 'iframe', 'url' => 'team-member/v4/'],
791
+ 'v5' => ['type' => 'iframe', 'url' => 'team-member/v5/'],
792
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'team-member/v6/'],
793
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'team-member/v7/'],
794
+ 'v8-pro' => ['type' => 'iframe', 'url' => 'team-member/v8/'],
795
+ ],
796
+ 'google-maps' => [
797
+ 'v1' => ['type' => 'iframe', 'url' => 'google-map/v1/'],
798
+ 'v2' => ['type' => 'iframe', 'url' => 'google-map/v2/'],
799
+ 'v3' => ['type' => 'iframe', 'url' => 'google-map/v3/'],
800
+ 'v4' => ['type' => 'iframe', 'url' => 'google-map/v4/'],
801
+ 'v5' => ['type' => 'iframe', 'url' => 'google-map/v5/'],
802
+ ],
803
+ 'price-list' => [
804
+ 'v1' => ['type' => 'iframe', 'url' => 'price-list/v1/'],
805
+ 'v2' => ['type' => 'iframe', 'url' => 'price-list/v2/'],
806
+ 'v3' => ['type' => 'iframe', 'url' => 'price-list/v3/'],
807
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'price-list/v4/'],
808
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'price-list/v5/'],
809
+ 'v6-pro' => ['type' => 'iframe', 'url' => 'price-list/v6/'],
810
+ 'v7-pro' => ['type' => 'iframe', 'url' => 'price-list/v7/'],
811
+ ],
812
+ 'business-hours' => [
813
+ 'v1' => ['type' => 'iframe', 'url' => 'business-hours/v1/'],
814
+ 'v2' => ['type' => 'iframe', 'url' => 'business-hours/v2/'],
815
+ 'v3' => ['type' => 'iframe', 'url' => 'business-hours/v3/'],
816
+ ],
817
+ 'sharing-buttons' => [
818
+ 'v1' => ['type' => 'iframe', 'url' => 'sharing-button/v1/'],
819
+ 'v2' => ['type' => 'iframe', 'url' => 'sharing-button/v2/'],
820
+ 'v3' => ['type' => 'iframe', 'url' => 'sharing-button/v3/'],
821
+ 'v4-pro' => ['type' => 'iframe', 'url' => 'sharing-button/v4/'],
822
+ 'v5-pro' => ['type' => 'iframe', 'url' => 'sharing-button/v5/'],
823
+ ],
824
+ 'logo' => [],
825
+ 'search' => [
826
+ 'v1' => ['type' => 'iframe', 'url' => 'search/v1/'],
827
+ 'v2' => ['type' => 'iframe', 'url' => 'search/v2/'],
828
+ 'v3' => ['type' => 'iframe', 'url' => 'search/v3/'],
829
+ ],
830
+ 'phone-call' => [],
831
+ 'back-to-top' => [],
832
+ 'lottie-animations' => [],
833
+ 'popup-trigger' => [],
834
+ ];
835
+ }
836
+
837
+ public static function get_available_popups() {
838
+ return [
839
+ // 'contact' => [
840
+ // 'v1' => ['type' => 'iframe', 'url' => 'search/v1/'],
841
+ // 'v2' => ['type' => 'iframe', 'url' => 'search/v2/'],
842
+ // 'v3' => ['type' => 'iframe', 'url' => 'search/v3/'],
843
+ // ],
844
+ 'cookie' => [
845
+ 'v1' => ['type' => 'image', 'url' => 'popups/cookie/v1-preview.jpg'],
846
+ 'v2-pro' => ['type' => 'image', 'url' => 'popups/cookie/v2-pro-preview.jpg'],
847
+ 'v3-pro' => ['type' => 'image', 'url' => 'popups/cookie/v3-pro-preview.jpg'],
848
+ 'v4-pro' => ['type' => 'image', 'url' => 'popups/cookie/v4-pro-preview.jpg'],
849
+ ],
850
+ 'discount' => [
851
+ 'v1' => ['type' => 'image', 'url' => 'popups/discount/v1-preview.jpg'],
852
+ 'v2' => ['type' => 'image', 'url' => 'popups/discount/v2-preview.jpg'],
853
+ 'v3-pro' => ['type' => 'image', 'url' => 'popups/discount/v3-pro-preview.jpg'],
854
+ 'v4-pro' => ['type' => 'image', 'url' => 'popups/discount/v4-pro-preview.jpg'],
855
+ 'v5' => ['type' => 'image', 'url' => 'popups/discount/v5-preview.jpg'],
856
+ 'v6' => ['type' => 'image', 'url' => 'popups/discount/v6-preview.jpg'],
857
+ 'v7-pro' => ['type' => 'image', 'url' => 'popups/discount/v7-pro-preview.jpg'],
858
+ 'v8-pro' => ['type' => 'image', 'url' => 'popups/discount/v8-pro-preview.jpg'],
859
+ 'v9' => ['type' => 'image', 'url' => 'popups/discount/v9-preview.jpg'],
860
+ 'v10' => ['type' => 'image', 'url' => 'popups/discount/v10-preview.jpg'],
861
+ 'v11-pro' => ['type' => 'image', 'url' => 'popups/discount/v11-pro-preview.jpg'],
862
+ 'v12-pro' => ['type' => 'image', 'url' => 'popups/discount/v12-pro-preview.jpg'],
863
+ 'v13-pro' => ['type' => 'image', 'url' => 'popups/discount/v13-pro-preview.jpg'],
864
+ 'v14' => ['type' => 'image', 'url' => 'popups/discount/v14-preview.jpg'],
865
+ 'v15' => ['type' => 'image', 'url' => 'popups/discount/v15-preview.jpg'],
866
+ 'v16-pro' => ['type' => 'image', 'url' => 'popups/discount/v16-pro-preview.jpg'],
867
+ ],
868
+ 'subscribe' => [
869
+ 'v1-pro' => ['type' => 'image', 'url' => 'popups/subscribe/v1-pro-preview.jpg'],
870
+ 'v2-pro' => ['type' => 'image', 'url' => 'popups/subscribe/v2-pro-preview.jpg'],
871
+ 'v3-pro' => ['type' => 'image', 'url' => 'popups/subscribe/v3-pro-preview.jpg'],
872
+ ],
873
+ 'yesno' => [
874
+ 'v1-pro' => ['type' => 'image', 'url' => 'popups/yesno/v1-pro-preview.jpg'],
875
+ 'v2-pro' => ['type' => 'image', 'url' => 'popups/yesno/v2-pro-preview.jpg'],
876
+ 'v3-pro' => ['type' => 'image', 'url' => 'popups/yesno/v3-pro-preview.jpg'],
877
+ ],
878
+ ];
879
+ }
880
  }
admin/templates/wpr-templates-library-blocks.php CHANGED
@@ -1,167 +1,167 @@
1
- <?php
2
- namespace WprAddons\Admin\Templates;
3
- use WprAddons\Classes\Utilities;
4
- use WprAddons\Admin\Templates\WPR_Templates_Data;
5
-
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit; // Exit if accessed directly.
8
- }
9
-
10
- /**
11
- * WPR_Templates_Library_Blocks setup
12
- *
13
- * @since 1.0
14
- */
15
- class WPR_Templates_Library_Blocks {
16
-
17
- /**
18
- ** Constructor
19
- */
20
- public function __construct() {
21
-
22
- // Template Library Popup
23
- add_action( 'wp_ajax_render_library_templates_blocks', [ $this, 'render_library_templates_blocks' ] );
24
-
25
- }
26
-
27
- /**
28
- ** Template Library Popup
29
- */
30
- public static function render_library_templates_blocks() {
31
-
32
- ?>
33
-
34
- <div class="wpr-tplib-sidebar">
35
- <div class="wpr-tplib-search">
36
- <input type="text" placeholder="Search Template">
37
- <i class="eicon-search"></i>
38
- </div>
39
-
40
- <div class="wpr-tplib-filters-wrap">
41
- <div class="wpr-tplib-filters">
42
- <h3>
43
- <span data-filter="all"><?php esc_html_e( 'Category', 'wpr-addons' ); ?></span>
44
- <i class="fas fa-angle-down"></i>
45
- </h3>
46
-
47
- <div class="wpr-tplib-filters-list">
48
- <ul>
49
-
50
- <li data-filter="all"><?php esc_html_e( 'All', 'wpr-addons' ) ?></li>
51
-
52
- <?php
53
-
54
- $modules = Utilities::get_available_modules( Utilities::get_registered_modules() );
55
-
56
- $exclude_widgets = [
57
- 'logo',
58
- 'mega-menu',
59
- 'forms',
60
- 'phone-call',
61
- 'back-to-top',
62
- 'popup-trigger',
63
- 'lottie-animations',
64
- 'taxonomy-list',
65
- 'page-list',
66
- 'elementor-template',
67
- 'flip-carousel',
68
- 'feature-list',
69
- 'dual-color-heading',
70
- 'reading-progress-bar',
71
- 'image-accordion',
72
- 'advanced-accordion',
73
- 'charts',
74
- ];
75
-
76
- foreach ($modules as $title => $slug) {
77
- if ( ! in_array($slug[0], $exclude_widgets) ) {
78
- echo '<li data-filter="'. esc_attr($slug[0]) .'">'. esc_html($title) .'</li>';
79
- }
80
- }
81
-
82
- ?>
83
- </ul>
84
- </div>
85
- </div>
86
-
87
- <div class="wpr-tplib-sub-filters">
88
- <ul>
89
- <li data-sub-filter="all" class="wpr-tplib-activ-filter"><?php esc_html_e( 'All', 'wpr-addons' ); ?></li>
90
- <li data-sub-filter="grid"><?php esc_html_e( 'Grid', 'wpr-addons' ) ?></li>
91
- <li data-sub-filter="slider"><?php esc_html_e( 'Slider', 'wpr-addons' ) ?></li>
92
- <li data-sub-filter="carousel"><?php esc_html_e( 'Carousel', 'wpr-addons' ) ?></li>
93
- </ul>
94
- </div>
95
- </div>
96
- </div>
97
-
98
- <div class="wpr-tplib-template-gird elementor-clearfix">
99
- <div class="wpr-tplib-template-gird-inner">
100
-
101
- <?php
102
-
103
- foreach ($modules as $title => $data) :
104
- $module_slug = $data[0];
105
- $blocks = WPR_Templates_Data::get_available_blocks();
106
-
107
- if ( !isset($blocks[$module_slug]) ) {
108
- continue;
109
- }
110
-
111
- for ( $i=0; $i < count($blocks[$module_slug]); $i++ ) :
112
-
113
- $template_slug = array_keys($blocks[$module_slug])[$i];
114
- $template_sub = isset($blocks[$module_slug][$template_slug]['sub']) ? $blocks[$module_slug][$template_slug]['sub'] : '';
115
- $template_title = $title .' '. $template_slug;
116
- $preview_type = $blocks[$module_slug][$template_slug]['type'];
117
- $preview_url = $blocks[$module_slug][$template_slug]['url'];
118
- $template_class = (strpos($template_slug, 'pro') && !wpr_fs()->can_use_premium_code()) || (strpos($template_slug, 'zzz') && !wpr_fs()->can_use_premium_code()) ? ' wpr-tplib-pro-wrap' : '';
119
-
120
- if (defined('WPR_ADDONS_PRO_VERSION') && wpr_fs()->can_use_premium_code()) {
121
- $template_class .= ' wpr-tplib-pro-active';
122
- }
123
-
124
- $template_slug_for_image = strpos($template_slug, 'zzz') ? substr($template_slug, 0, -4) : $template_slug;
125
-
126
- ?>
127
-
128
- <div class="wpr-tplib-template-wrap<?php echo esc_attr($template_class); ?>">
129
- <div class="wpr-tplib-template" data-slug="<?php echo esc_attr($template_slug); ?>" data-filter="<?php echo esc_attr($module_slug); ?>" data-sub-filter="<?php echo esc_attr($template_sub); ?>" data-preview-type="<?php echo esc_attr($preview_type); ?>" data-preview-url="<?php echo esc_attr($preview_url); ?>">
130
- <div class="wpr-tplib-template-media">
131
- <img src="<?php echo esc_url('https://royal-elementor-addons.com/library/premade-styles/'. $module_slug .'/'. $template_slug_for_image .'.jpg'); ?>">
132
- <div class="wpr-tplib-template-media-overlay">
133
- <i class="eicon-eye"></i>
134
- </div>
135
- </div>
136
- <div class="wpr-tplib-template-footer elementor-clearfix">
137
- <?php if ( !defined('WPR_ADDONS_PRO_VERSION') && ! wpr_fs()->can_use_premium_code() ) : ?>
138
- <h3><?php echo strpos($template_slug, 'pro') ? esc_html(str_replace('-pro', ' Pro', $template_title)) : esc_html(str_replace('-zzz', ' Pro', $template_title)); ?></h3>
139
- <?php else : ?>
140
- <h3><?php echo strpos($template_slug, 'pro') ? esc_html(str_replace('-pro', '', $template_title)) : esc_html(str_replace('-zzz', '', $template_title)); ?></h3>
141
- <?php endif; ?>
142
-
143
- <?php if ( ( strpos($template_slug, 'pro') && !wpr_fs()->can_use_premium_code() ) || ( strpos($template_slug, 'zzz') ) && !wpr_fs()->can_use_premium_code() ) : ?>
144
- <span class="wpr-tplib-insert-template wpr-tplib-insert-pro"><i class="eicon-star"></i> <span><?php esc_html_e( 'Go Pro', 'wpr-addons' ); ?></span></span>
145
- <?php else : ?>
146
- <span class="wpr-tplib-insert-template"><i class="eicon-file-download"></i> <span><?php esc_html_e( 'Insert', 'wpr-addons' ); ?></span></span>
147
- <?php endif; ?>
148
- </div>
149
- </div>
150
- </div>
151
-
152
- <?php endfor; ?>
153
- <?php endforeach;?>
154
-
155
- </div>
156
- </div>
157
-
158
- <?php
159
-
160
- $current_screen = get_current_screen();
161
-
162
- if ( !(isset($current_screen) && 'royal-addons_page_wpr-premade-blocks' === $current_screen->id) ) {
163
- exit;
164
- }
165
- }
166
-
167
- }
1
+ <?php
2
+ namespace WprAddons\Admin\Templates;
3
+ use WprAddons\Classes\Utilities;
4
+ use WprAddons\Admin\Templates\WPR_Templates_Data;
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit; // Exit if accessed directly.
8
+ }
9
+
10
+ /**
11
+ * WPR_Templates_Library_Blocks setup
12
+ *
13
+ * @since 1.0
14
+ */
15
+ class WPR_Templates_Library_Blocks {
16
+
17
+ /**
18
+ ** Constructor
19
+ */
20
+ public function __construct() {
21
+
22
+ // Template Library Popup
23
+ add_action( 'wp_ajax_render_library_templates_blocks', [ $this, 'render_library_templates_blocks' ] );
24
+
25
+ }
26
+
27
+ /**
28
+ ** Template Library Popup
29
+ */
30
+ public static function render_library_templates_blocks() {
31
+
32
+ ?>
33
+
34
+ <div class="wpr-tplib-sidebar">
35
+ <div class="wpr-tplib-search">
36
+ <input type="text" placeholder="Search Template">
37
+ <i class="eicon-search"></i>
38
+ </div>
39
+
40
+ <div class="wpr-tplib-filters-wrap">
41
+ <div class="wpr-tplib-filters">
42
+ <h3>
43
+ <span data-filter="all"><?php esc_html_e( 'Category', 'wpr-addons' ); ?></span>
44
+ <i class="fas fa-angle-down"></i>
45
+ </h3>
46
+
47
+ <div class="wpr-tplib-filters-list">
48
+ <ul>
49
+
50
+ <li data-filter="all"><?php esc_html_e( 'All', 'wpr-addons' ) ?></li>
51
+
52
+ <?php
53
+
54
+ $modules = Utilities::get_available_modules( Utilities::get_registered_modules() );
55
+
56
+ $exclude_widgets = [
57
+ 'logo',
58
+ 'mega-menu',
59
+ 'forms',
60
+ 'phone-call',
61
+ 'back-to-top',
62
+ 'popup-trigger',
63
+ 'lottie-animations',
64
+ 'taxonomy-list',
65
+ 'page-list',
66
+ 'elementor-template',
67
+ 'flip-carousel',
68
+ 'feature-list',
69
+ 'dual-color-heading',
70
+ 'reading-progress-bar',
71
+ 'image-accordion',
72
+ 'advanced-accordion',
73
+ 'charts',
74
+ ];
75
+
76
+ foreach ($modules as $title => $slug) {
77
+ if ( ! in_array($slug[0], $exclude_widgets) ) {
78
+ echo '<li data-filter="'. esc_attr($slug[0]) .'">'. esc_html($title) .'</li>';
79
+ }
80
+ }
81
+
82
+ ?>
83
+ </ul>
84
+ </div>
85
+ </div>
86
+
87
+ <div class="wpr-tplib-sub-filters">
88
+ <ul>
89
+ <li data-sub-filter="all" class="wpr-tplib-activ-filter"><?php esc_html_e( 'All', 'wpr-addons' ); ?></li>
90
+ <li data-sub-filter="grid"><?php esc_html_e( 'Grid', 'wpr-addons' ) ?></li>
91
+ <li data-sub-filter="slider"><?php esc_html_e( 'Slider', 'wpr-addons' ) ?></li>
92
+ <li data-sub-filter="carousel"><?php esc_html_e( 'Carousel', 'wpr-addons' ) ?></li>
93
+ </ul>
94
+ </div>
95
+ </div>
96
+ </div>
97
+
98
+ <div class="wpr-tplib-template-gird elementor-clearfix">
99
+ <div class="wpr-tplib-template-gird-inner">
100
+
101
+ <?php
102
+
103
+ foreach ($modules as $title => $data) :
104
+ $module_slug = $data[0];
105
+ $blocks = WPR_Templates_Data::get_available_blocks();
106
+
107
+ if ( !isset($blocks[$module_slug]) ) {
108
+ continue;
109
+ }
110
+
111
+ for ( $i=0; $i < count($blocks[$module_slug]); $i++ ) :
112
+
113
+ $template_slug = array_keys($blocks[$module_slug])[$i];
114
+ $template_sub = isset($blocks[$module_slug][$template_slug]['sub']) ? $blocks[$module_slug][$template_slug]['sub'] : '';
115
+ $template_title = $title .' '. $template_slug;
116
+ $preview_type = $blocks[$module_slug][$template_slug]['type'];
117
+ $preview_url = $blocks[$module_slug][$template_slug]['url'];
118
+ $template_class = (strpos($template_slug, 'pro') && !wpr_fs()->can_use_premium_code()) || (strpos($template_slug, 'zzz') && !wpr_fs()->can_use_premium_code()) ? ' wpr-tplib-pro-wrap' : '';
119
+
120
+ if (defined('WPR_ADDONS_PRO_VERSION') && wpr_fs()->can_use_premium_code()) {
121
+ $template_class .= ' wpr-tplib-pro-active';
122
+ }
123
+
124
+ $template_slug_for_image = strpos($template_slug, 'zzz') ? substr($template_slug, 0, -4) : $template_slug;
125
+
126
+ ?>
127
+
128
+ <div class="wpr-tplib-template-wrap<?php echo esc_attr($template_class); ?>">
129
+ <div class="wpr-tplib-template" data-slug="<?php echo esc_attr($template_slug); ?>" data-filter="<?php echo esc_attr($module_slug); ?>" data-sub-filter="<?php echo esc_attr($template_sub); ?>" data-preview-type="<?php echo esc_attr($preview_type); ?>" data-preview-url="<?php echo esc_attr($preview_url); ?>">
130
+ <div class="wpr-tplib-template-media">
131
+ <img src="<?php echo esc_url('https://royal-elementor-addons.com/library/premade-styles/'. $module_slug .'/'. $template_slug_for_image .'.jpg'); ?>">
132
+ <div class="wpr-tplib-template-media-overlay">
133
+ <i class="eicon-eye"></i>
134
+ </div>
135
+ </div>
136
+ <div class="wpr-tplib-template-footer elementor-clearfix">
137
+ <?php if ( !defined('WPR_ADDONS_PRO_VERSION') && ! wpr_fs()->can_use_premium_code() ) : ?>
138
+ <h3><?php echo strpos($template_slug, 'pro') ? esc_html(str_replace('-pro', ' Pro', $template_title)) : esc_html(str_replace('-zzz', ' Pro', $template_title)); ?></h3>
139
+ <?php else : ?>
140
+ <h3><?php echo strpos($template_slug, 'pro') ? esc_html(str_replace('-pro', '', $template_title)) : esc_html(str_replace('-zzz', '', $template_title)); ?></h3>
141
+ <?php endif; ?>
142
+
143
+ <?php if ( ( strpos($template_slug, 'pro') && !wpr_fs()->can_use_premium_code() ) || ( strpos($template_slug, 'zzz') ) && !wpr_fs()->can_use_premium_code() ) : ?>
144
+ <span class="wpr-tplib-insert-template wpr-tplib-insert-pro"><i class="eicon-star"></i> <span><?php esc_html_e( 'Go Pro', 'wpr-addons' ); ?></span></span>
145
+ <?php else : ?>
146
+ <span class="wpr-tplib-insert-template"><i class="eicon-file-download"></i> <span><?php esc_html_e( 'Insert', 'wpr-addons' ); ?></span></span>
147
+ <?php endif; ?>
148
+ </div>
149
+ </div>
150
+ </div>
151
+
152
+ <?php endfor; ?>
153
+ <?php endforeach;?>
154
+
155
+ </div>
156
+ </div>
157
+
158
+ <?php
159
+
160
+ $current_screen = get_current_screen();
161
+
162
+ if ( !(isset($current_screen) && 'royal-addons_page_wpr-premade-blocks' === $current_screen->id) ) {
163
+ exit;
164
+ }
165
+ }
166
+
167
+ }
admin/templates/wpr-templates-library-popups.php CHANGED
@@ -1,109 +1,109 @@
1
- <?php
2
- namespace WprAddons\Admin\Templates;
3
- use WprAddons\Classes\Utilities;
4
- use WprAddons\Admin\Templates\WPR_Templates_Data;
5
-
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit; // Exit if accessed directly.
8
- }
9
-
10
- /**
11
- * WPR_Templates_Library_Popups setup
12
- *
13
- * @since 1.0
14
- */
15
- class WPR_Templates_Library_Popups {
16
-
17
- /**
18
- ** Constructor
19
- */
20
- public function __construct() {
21
-
22
- // Template Library Popup
23
- add_action( 'wp_ajax_render_library_templates_popups', [ $this, 'render_library_templates_popups' ] );
24
-
25
- }
26
-
27
- /**
28
- ** Template Library Popup
29
- */
30
- public function render_library_templates_popups() {
31
-
32
- ?>
33
-
34
- <div class="wpr-tplib-sidebar">
35
- <div class="wpr-tplib-search">
36
- <input type="text" placeholder="Search Template">
37
- <i class="eicon-search"></i>
38
- </div>
39
-
40
- <div class="wpr-tplib-filters-wrap">
41
- <div class="wpr-tplib-filters">
42
- <h3>
43
- <span><?php esc_html_e( 'Category', 'wpr-addons' ); ?></span>
44
- <i class="fas fa-angle-down"></i>
45
- </h3>
46
-
47
- <div class="wpr-tplib-filters-list">
48
- <ul>
49
- <li data-filter="all"><?php esc_html_e( 'All', 'wpr-addons' ) ?></li>
50
- <li data-filter="cookie"><?php esc_html_e( 'Cookie', 'wpr-addons' ) ?></li>
51
- <li data-filter="discount"><?php esc_html_e( 'Discount', 'wpr-addons' ) ?></li>
52
- <li data-filter="subscribe"><?php esc_html_e( 'Subscribe', 'wpr-addons' ) ?></li>
53
- <li data-filter="yesno"><?php esc_html_e( 'Yes/No', 'wpr-addons' ) ?></li>
54
- </ul>
55
- </div>
56
- </div>
57
- </div>
58
-
59
- </div>
60
-
61
- <div class="wpr-tplib-template-gird elementor-clearfix">
62
- <div class="wpr-tplib-template-gird-inner">
63
-
64
- <?php
65
-
66
- $popups = WPR_Templates_Data::get_available_popups();
67
-
68
- foreach ($popups as $type => $data) :
69
-
70
- for ( $i=0; $i < count($popups[$type]); $i++ ) :
71
-
72
- $template_slug = array_keys($popups[$type])[$i];
73
- $template_title = ucfirst($type) .' '. $template_slug;
74
- $preview_type = $popups[$type][$template_slug]['type'];
75
- $preview_url = $popups[$type][$template_slug]['url'];
76
- $template_class = ( strpos($template_slug, 'pro') && ! wpr_fs()->can_use_premium_code() ) ? ' wpr-tplib-pro-wrap' : '';
77
-
78
- ?>
79
-
80
- <div class="wpr-tplib-template-wrap<?php echo esc_attr($template_class); ?>">
81
- <div class="wpr-tplib-template" data-slug="<?php echo esc_attr($template_slug); ?>" data-filter="<?php echo esc_attr($type); ?>" data-preview-type="<?php echo esc_attr($preview_type); ?>" data-preview-url="<?php echo esc_attr($preview_url); ?>">
82
- <div class="wpr-tplib-template-media">
83
- <img src="<?php echo esc_url('https://royal-elementor-addons.com/library/premade-styles/popups/'. $type .'/'. $template_slug .'.jpg'); ?>">
84
- <div class="wpr-tplib-template-media-overlay">
85
- <i class="eicon-eye"></i>
86
- </div>
87
- </div>
88
- <div class="wpr-tplib-template-footer elementor-clearfix">
89
- <h3><?php echo esc_html(str_replace('-pro', ' Pro', $template_title)); ?></h3>
90
-
91
- <?php if ( strpos($template_slug, 'pro') && ! wpr_fs()->can_use_premium_code() ) : ?>
92
- <span class="wpr-tplib-insert-template wpr-tplib-insert-pro"><i class="eicon-star"></i> <span><?php esc_html_e( 'Go Pro', 'wpr-addons' ); ?></span></span>
93
- <?php else : ?>
94
- <span class="wpr-tplib-insert-template"><i class="eicon-file-download"></i> <span><?php esc_html_e( 'Insert', 'wpr-addons' ); ?></span></span>
95
- <?php endif; ?>
96
- </div>
97
- </div>
98
- </div>
99
-
100
- <?php endfor; ?>
101
- <?php endforeach; ?>
102
-
103
- </div>
104
- </div>
105
-
106
- <?php exit();
107
- }
108
-
109
  }
1
+ <?php
2
+ namespace WprAddons\Admin\Templates;
3
+ use WprAddons\Classes\Utilities;
4
+ use WprAddons\Admin\Templates\WPR_Templates_Data;
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit; // Exit if accessed directly.
8
+ }
9
+
10
+ /**
11
+ * WPR_Templates_Library_Popups setup
12
+ *
13
+ * @since 1.0
14
+ */
15
+ class WPR_Templates_Library_Popups {
16
+
17
+ /**
18
+ ** Constructor
19
+ */
20
+ public function __construct() {
21
+
22
+ // Template Library Popup
23
+ add_action( 'wp_ajax_render_library_templates_popups', [ $this, 'render_library_templates_popups' ] );
24
+
25
+ }
26
+
27
+ /**
28
+ ** Template Library Popup
29
+ */
30
+ public function render_library_templates_popups() {
31
+
32
+ ?>
33
+
34
+ <div class="wpr-tplib-sidebar">
35
+ <div class="wpr-tplib-search">
36
+ <input type="text" placeholder="Search Template">
37
+ <i class="eicon-search"></i>
38
+ </div>
39
+
40
+ <div class="wpr-tplib-filters-wrap">
41
+ <div class="wpr-tplib-filters">
42
+ <h3>
43
+ <span><?php esc_html_e( 'Category', 'wpr-addons' ); ?></span>
44
+ <i class="fas fa-angle-down"></i>
45
+ </h3>
46
+
47
+ <div class="wpr-tplib-filters-list">
48
+ <ul>
49
+ <li data-filter="all"><?php esc_html_e( 'All', 'wpr-addons' ) ?></li>
50
+ <li data-filter="cookie"><?php esc_html_e( 'Cookie', 'wpr-addons' ) ?></li>
51
+ <li data-filter="discount"><?php esc_html_e( 'Discount', 'wpr-addons' ) ?></li>
52
+ <li data-filter="subscribe"><?php esc_html_e( 'Subscribe', 'wpr-addons' ) ?></li>
53
+ <li data-filter="yesno"><?php esc_html_e( 'Yes/No', 'wpr-addons' ) ?></li>
54
+ </ul>
55
+ </div>
56
+ </div>
57
+ </div>
58
+
59
+ </div>
60
+
61
+ <div class="wpr-tplib-template-gird elementor-clearfix">
62
+ <div class="wpr-tplib-template-gird-inner">
63
+
64
+ <?php
65
+
66
+ $popups = WPR_Templates_Data::get_available_popups();
67
+
68
+ foreach ($popups as $type => $data) :
69
+
70
+ for ( $i=0; $i < count($popups[$type]); $i++ ) :
71
+
72
+ $template_slug = array_keys($popups[$type])[$i];
73
+ $template_title = ucfirst($type) .' '. $template_slug;
74
+ $preview_type = $popups[$type][$template_slug]['type'];
75
+ $preview_url = $popups[$type][$template_slug]['url'];
76
+ $template_class = ( strpos($template_slug, 'pro') && ! wpr_fs()->can_use_premium_code() ) ? ' wpr-tplib-pro-wrap' : '';
77
+
78
+ ?>
79
+
80
+ <div class="wpr-tplib-template-wrap<?php echo esc_attr($template_class); ?>">
81
+ <div class="wpr-tplib-template" data-slug="<?php echo esc_attr($template_slug); ?>" data-filter="<?php echo esc_attr($type); ?>" data-preview-type="<?php echo esc_attr($preview_type); ?>" data-preview-url="<?php echo esc_attr($preview_url); ?>">
82
+ <div class="wpr-tplib-template-media">
83
+ <img src="<?php echo esc_url('https://royal-elementor-addons.com/library/premade-styles/popups/'. $type .'/'. $template_slug .'.jpg'); ?>">
84
+ <div class="wpr-tplib-template-media-overlay">
85
+ <i class="eicon-eye"></i>
86
+ </div>
87
+ </div>
88
+ <div class="wpr-tplib-template-footer elementor-clearfix">
89
+ <h3><?php echo esc_html(str_replace('-pro', ' Pro', $template_title)); ?></h3>
90
+
91
+ <?php if ( strpos($template_slug, 'pro') && ! wpr_fs()->can_use_premium_code() ) : ?>
92
+ <span class="wpr-tplib-insert-template wpr-tplib-insert-pro"><i class="eicon-star"></i> <span><?php esc_html_e( 'Go Pro', 'wpr-addons' ); ?></span></span>
93
+ <?php else : ?>
94
+ <span class="wpr-tplib-insert-template"><i class="eicon-file-download"></i> <span><?php esc_html_e( 'Insert', 'wpr-addons' ); ?></span></span>
95
+ <?php endif; ?>
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <?php endfor; ?>
101
+ <?php endforeach; ?>
102
+
103
+ </div>
104
+ </div>
105
+
106
+ <?php exit();
107
+ }
108
+
109
  }
admin/templates/wpr-templates-pages.php CHANGED
@@ -1,52 +1,52 @@
1
- <?php
2
- namespace WprAddons\Admin\Templates;
3
-
4
- if ( ! defined( 'ABSPATH' ) ) {
5
- exit; // Exit if accessed directly.
6
- }
7
-
8
- /**
9
- * WPR_Templates_Library_Pages setup
10
- *
11
- * @since 1.0
12
- */
13
- class WPR_Templates_Library_Pages {
14
-
15
- /**
16
- ** Constructor
17
- */
18
- public function __construct() {
19
-
20
- // Template Library Popup
21
- add_action( 'wp_ajax_render_library_templates_pages', [ $this, 'render_library_templates_pages' ] );
22
-
23
- }
24
-
25
- /**
26
- ** Template Library Popup
27
- */
28
- public function render_library_templates_pages() {
29
- ?>
30
-
31
- <div class="wpr-tplib-sidebar">
32
- <ul>
33
- <li>Home</li>
34
- <li>Blog</li>
35
- <li>Landing</li>
36
- </ul>
37
- </div>
38
-
39
- <div class="wpr-tplib-template-gird">
40
- <div class="wpr-tplib-template" data-slug="page-1">Page 1</div>
41
- <div class="wpr-tplib-template" data-slug="page-2">Page 2</div>
42
- <div class="wpr-tplib-template">Page 3</div>
43
- <div class="wpr-tplib-template">Page 4</div>
44
- <div class="wpr-tplib-template">Page 5</div>
45
- <div class="wpr-tplib-template">Page 6</div>
46
- </div>
47
-
48
-
49
- <?php exit();
50
- }
51
-
52
  }
1
+ <?php
2
+ namespace WprAddons\Admin\Templates;
3
+
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit; // Exit if accessed directly.
6
+ }
7
+
8
+ /**
9
+ * WPR_Templates_Library_Pages setup
10
+ *
11
+ * @since 1.0
12
+ */
13
+ class WPR_Templates_Library_Pages {
14
+
15
+ /**
16
+ ** Constructor
17
+ */
18
+ public function __construct() {
19
+
20
+ // Template Library Popup
21
+ add_action( 'wp_ajax_render_library_templates_pages', [ $this, 'render_library_templates_pages' ] );
22
+
23
+ }
24
+
25
+ /**
26
+ ** Template Library Popup
27
+ */
28
+ public function render_library_templates_pages() {
29
+ ?>
30
+
31
+ <div class="wpr-tplib-sidebar">
32
+ <ul>
33
+ <li>Home</li>
34
+ <li>Blog</li>
35
+ <li>Landing</li>
36
+ </ul>
37
+ </div>
38
+
39
+ <div class="wpr-tplib-template-gird">
40
+ <div class="wpr-tplib-template" data-slug="page-1">Page 1</div>
41
+ <div class="wpr-tplib-template" data-slug="page-2">Page 2</div>
42
+ <div class="wpr-tplib-template">Page 3</div>
43
+ <div class="wpr-tplib-template">Page 4</div>
44
+ <div class="wpr-tplib-template">Page 5</div>
45
+ <div class="wpr-tplib-template">Page 6</div>
46
+ </div>
47
+
48
+
49
+ <?php exit();
50
+ }
51
+
52
  }
admin/theme-builder.php CHANGED
@@ -1,159 +1,164 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- use WprAddons\Admin\Includes\WPR_Templates_Loop;
8
- use WprAddons\Classes\Utilities;
9
-
10
- // Register Menus
11
- function wpr_addons_add_theme_builder_menu() {
12
- add_submenu_page( 'wpr-addons', 'Theme Builder', 'Theme Builder', 'manage_options', 'wpr-theme-builder', 'wpr_addons_theme_builder_page' );
13
- }
14
- add_action( 'admin_menu', 'wpr_addons_add_theme_builder_menu' );
15
-
16
- function wpr_addons_theme_builder_page() {
17
-
18
- ?>
19
-
20
- <div class="wrap wpr-settings-page-wrap">
21
-
22
- <div class="wpr-settings-page-header">
23
- <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
24
- <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
25
-
26
- <!-- Custom Template -->
27
- <div class="wpr-preview-buttons">
28
- <div class="wpr-user-template">
29
- <span><?php esc_html_e( 'Create Template', 'wpr-addons' ); ?></span>
30
- <span class="plus-icon">+</span>
31
-
32
- <?php
33
- if ( ! class_exists( 'WooCommerce' ) && ('wpr_tab_product_archive' === $_GET['tab'] || 'wpr_tab_product_single' === $_GET['tab'] )) {
34
- echo '<div></div>';
35
- }
36
- ?>
37
- </div>
38
-
39
- <a href="https://www.youtube.com/watch?v=cwkhwO_rPuo" class="wpr-how-to-use-theme-builder wpr-options-button button" target="_blank" style="padding: 8px 22px;">
40
- <?php echo esc_html__( 'How to use Theme Builder', 'wpr-addons' ); ?>
41
- <span class="dashicons dashicons-video-alt3"></span>
42
- </a>
43
- <a href="https://www.youtube.com/watch?v=f_3tNiBC3dw" class="wpr-how-to-use-woo-builder wpr-options-button button" target="_blank" style="padding: 8px 22px;">
44
- <?php echo esc_html__( 'How to use WooCommerce Builder', 'wpr-addons' ); ?>
45
- <span class="dashicons dashicons-video-alt3"></span>
46
- </a>
47
- </div>
48
- </div>
49
-
50
- <div class="wpr-settings-page">
51
- <form method="post" action="options.php">
52
- <?php
53
-
54
- // Active Tab
55
- $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_header';
56
-
57
- ?>
58
-
59
- <!-- Template ID Holder -->
60
- <input type="hidden" name="wpr_template" id="wpr_template" value="">
61
-
62
- <!-- Conditions Popup -->
63
- <?php WPR_Templates_Loop::render_conditions_popup(true); ?>
64
-
65
- <!-- Create Templte Popup -->
66
- <?php WPR_Templates_Loop::render_create_template_popup(); ?>
67
-
68
- <!-- Tabs -->
69
- <div class="nav-tab-wrapper wpr-nav-tab-wrapper">
70
- <a href="?page=wpr-theme-builder&tab=wpr_tab_header" data-title="Header" class="nav-tab <?php echo ($active_tab == 'wpr_tab_header') ? 'nav-tab-active' : ''; ?>">
71
- <?php esc_html_e( 'Header', 'wpr-addons' ); ?>
72
- </a>
73
- <a href="?page=wpr-theme-builder&tab=wpr_tab_footer" data-title="Footer" class="nav-tab <?php echo ($active_tab == 'wpr_tab_footer') ? 'nav-tab-active' : ''; ?>">
74
- <?php esc_html_e( 'Footer', 'wpr-addons' ); ?>
75
- </a>
76
- <a href="?page=wpr-theme-builder&tab=wpr_tab_archive" data-title="Archive" class="nav-tab <?php echo ($active_tab == 'wpr_tab_archive') ? 'nav-tab-active' : ''; ?>">
77
- <?php esc_html_e( 'Archive', 'wpr-addons' ); ?>
78
- </a>
79
- <a href="?page=wpr-theme-builder&tab=wpr_tab_single" data-title="Single" class="nav-tab <?php echo ($active_tab == 'wpr_tab_single') ? 'nav-tab-active' : ''; ?>">
80
- <?php esc_html_e( 'Single', 'wpr-addons' ); ?>
81
- </a>
82
-
83
- <a href="?page=wpr-theme-builder&tab=wpr_tab_product_archive" data-title="Product Archive" class="nav-tab <?php echo $active_tab == 'wpr_tab_product_archive' ? 'nav-tab-active' : ''; ?>">
84
- <?php esc_html_e( 'Product Archive', 'wpr-addons' ); ?>
85
- </a>
86
- <a href="?page=wpr-theme-builder&tab=wpr_tab_product_single" data-title="Product Single" class="nav-tab <?php echo $active_tab == 'wpr_tab_product_single' ? 'nav-tab-active' : ''; ?>">
87
- <?php esc_html_e( 'Product Single', 'wpr-addons' ); ?>
88
- </a>
89
-
90
- <a href="?page=wpr-theme-builder&tab=wpr_tab_my_templates" data-title="My Templates" class="nav-tab <?php echo ($active_tab == 'wpr_tab_my_templates') ? 'nav-tab-active' : ''; ?>">
91
- <?php esc_html_e( 'Saved Templates', 'wpr-addons' ); ?>
92
- </a>
93
- </div>
94
-
95
- <?php if ( $active_tab == 'wpr_tab_header' ) : ?>
96
-
97
- <!-- Save Conditions -->
98
- <input type="hidden" name="wpr_header_conditions" id="wpr_header_conditions" value="<?php echo esc_attr(get_option('wpr_header_conditions', '[]')); ?>">
99
-
100
- <?php WPR_Templates_Loop::render_theme_builder_templates( 'header' ); ?>
101
-
102
- <?php elseif ( $active_tab == 'wpr_tab_footer' ) : ?>
103
-
104
- <!-- Save Conditions -->
105
- <input type="hidden" name="wpr_footer_conditions" id="wpr_footer_conditions" value="<?php echo esc_attr(get_option('wpr_footer_conditions', '[]')); ?>">
106
-
107
- <?php WPR_Templates_Loop::render_theme_builder_templates( 'footer' ); ?>
108
-
109
- <?php elseif ( $active_tab == 'wpr_tab_archive' ) : ?>
110
-
111
- <!-- Save Conditions -->
112
- <input type="hidden" name="wpr_archive_conditions" id="wpr_archive_conditions" value="<?php echo esc_attr(get_option('wpr_archive_conditions', '[]')); ?>">
113
-
114
- <?php WPR_Templates_Loop::render_theme_builder_templates( 'archive' ); ?>
115
-
116
- <?php elseif ( $active_tab == 'wpr_tab_single' ) : ?>
117
-
118
- <!-- Save Conditions -->
119
- <input type="hidden" name="wpr_single_conditions" id="wpr_single_conditions" value="<?php echo esc_attr(get_option('wpr_single_conditions', '[]')); ?>">
120
-
121
- <?php WPR_Templates_Loop::render_theme_builder_templates( 'single' ); ?>
122
-
123
- <?php elseif ( $active_tab == 'wpr_tab_product_archive' ) : ?>
124
-
125
- <?php if ( class_exists( 'WooCommerce' ) ) : ?>
126
- <!-- Save Conditions -->
127
- <input type="hidden" name="wpr_product_archive_conditions" id="wpr_product_archive_conditions" value="<?php echo esc_attr(get_option('wpr_product_archive_conditions', '[]')); ?>">
128
-
129
- <?php WPR_Templates_Loop::render_theme_builder_templates( 'product_archive' ); ?>
130
- <?php else : ?>
131
- <div class="wpr-activate-woo-notice"><span class="dashicons dashicons-info-outline"></span> Please install/activate WooCommerce in order to create product archive templates!</div>
132
- <?php endif; ?>
133
-
134
- <?php elseif ( $active_tab == 'wpr_tab_product_single' ) : ?>
135
-
136
- <?php if ( class_exists( 'WooCommerce' ) ) : ?>
137
- <!-- Save Conditions -->
138
- <input type="hidden" name="wpr_product_single_conditions" id="wpr_product_single_conditions" value="<?php echo esc_attr(get_option('wpr_product_single_conditions', '[]')); ?>">
139
-
140
- <?php WPR_Templates_Loop::render_theme_builder_templates( 'product_single' ); ?>
141
- <?php else : ?>
142
- <div class="wpr-activate-woo-notice"><span class="dashicons dashicons-info-outline"></span> Please install/activate WooCommerce in order to create product single templates!</div>
143
- <?php endif ; ?>
144
-
145
- <?php elseif ( $active_tab == 'wpr_tab_my_templates' ) : ?>
146
-
147
- <?php Wpr_Templates_Loop::render_elementor_saved_templates(); ?>
148
-
149
- <?php endif; ?>
150
-
151
- </form>
152
- </div>
153
-
154
- </div>
155
-
156
-
157
- <?php
158
-
 
 
 
 
 
159
  } // End wpr_addons_theme_builder_page()
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ use WprAddons\Admin\Includes\WPR_Templates_Loop;
8
+ use WprAddons\Classes\Utilities;
9
+
10
+ // Register Menus
11
+ function wpr_addons_add_theme_builder_menu() {
12
+ add_submenu_page( 'wpr-addons', 'Theme Builder', 'Theme Builder', 'manage_options', 'wpr-theme-builder', 'wpr_addons_theme_builder_page' );
13
+ }
14
+ add_action( 'admin_menu', 'wpr_addons_add_theme_builder_menu' );
15
+
16
+ function wpr_addons_theme_builder_page() {
17
+
18
+ ?>
19
+
20
+ <div class="wrap wpr-settings-page-wrap">
21
+
22
+ <div class="wpr-settings-page-header">
23
+ <h1><?php echo esc_html(Utilities::get_plugin_name(true)); ?></h1>
24
+ <p><?php esc_html_e( 'The most powerful Elementor Addons in the universe.', 'wpr-addons' ); ?></p>
25
+
26
+ <!-- Custom Template -->
27
+ <div class="wpr-preview-buttons">
28
+ <div class="wpr-user-template">
29
+ <span><?php esc_html_e( 'Create Template', 'wpr-addons' ); ?></span>
30
+ <span class="plus-icon">+</span>
31
+
32
+ <?php
33
+ if ( ! class_exists( 'WooCommerce' ) && ('wpr_tab_product_archive' === $_GET['tab'] || 'wpr_tab_product_single' === $_GET['tab'] )) {
34
+ echo '<div></div>';
35
+ }
36
+ ?>
37
+ </div>
38
+
39
+ <a href="https://www.youtube.com/watch?v=cwkhwO_rPuo" class="wpr-how-to-use-theme-builder wpr-options-button button" target="_blank" style="padding: 8px 22px; margin-left: 10px;">
40
+ <?php echo esc_html__( 'How to use Theme Builder', 'wpr-addons' ); ?>
41
+ <span class="dashicons dashicons-video-alt3"></span>
42
+ </a>
43
+ <a href="https://www.youtube.com/watch?v=f_3tNiBC3dw" class="wpr-how-to-use-woo-builder wpr-options-button button" target="_blank" style="padding: 8px 22px; margin-left: 10px;">
44
+ <?php echo esc_html__( 'How to use WooCommerce Builder', 'wpr-addons' ); ?>
45
+ <span class="dashicons dashicons-video-alt3"></span>
46
+ </a>
47
+
48
+ <a href="https://royaladdons.frill.co/b/6m4d5qm4/feature-ideas" class="wpr-options-button button" target="_blank" style="padding: 8px 22px;">
49
+ <?php echo esc_html__( 'Request New Feature', 'wpr-addons' ); ?>
50
+ <span class="dashicons dashicons-star-empty"></span>
51
+ </a>
52
+ </div>
53
+ </div>
54
+
55
+ <div class="wpr-settings-page">
56
+ <form method="post" action="options.php">
57
+ <?php
58
+
59
+ // Active Tab
60
+ $active_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'wpr_tab_header';
61
+
62
+ ?>
63
+
64
+ <!-- Template ID Holder -->
65
+ <input type="hidden" name="wpr_template" id="wpr_template" value="">
66
+
67
+ <!-- Conditions Popup -->
68
+ <?php WPR_Templates_Loop::render_conditions_popup(true); ?>
69
+
70
+ <!-- Create Templte Popup -->
71
+ <?php WPR_Templates_Loop::render_create_template_popup(); ?>
72
+
73
+ <!-- Tabs -->
74
+ <div class="nav-tab-wrapper wpr-nav-tab-wrapper">
75
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_header" data-title="Header" class="nav-tab <?php echo ($active_tab == 'wpr_tab_header') ? 'nav-tab-active' : ''; ?>">
76
+ <?php esc_html_e( 'Header', 'wpr-addons' ); ?>
77
+ </a>
78
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_footer" data-title="Footer" class="nav-tab <?php echo ($active_tab == 'wpr_tab_footer') ? 'nav-tab-active' : ''; ?>">
79
+ <?php esc_html_e( 'Footer', 'wpr-addons' ); ?>
80
+ </a>
81
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_archive" data-title="Archive" class="nav-tab <?php echo ($active_tab == 'wpr_tab_archive') ? 'nav-tab-active' : ''; ?>">
82
+ <?php esc_html_e( 'Archive', 'wpr-addons' ); ?>
83
+ </a>
84
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_single" data-title="Single" class="nav-tab <?php echo ($active_tab == 'wpr_tab_single') ? 'nav-tab-active' : ''; ?>">
85
+ <?php esc_html_e( 'Single', 'wpr-addons' ); ?>
86
+ </a>
87
+
88
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_product_archive" data-title="Product Archive" class="nav-tab <?php echo $active_tab == 'wpr_tab_product_archive' ? 'nav-tab-active' : ''; ?>">
89
+ <?php esc_html_e( 'Product Archive', 'wpr-addons' ); ?>
90
+ </a>
91
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_product_single" data-title="Product Single" class="nav-tab <?php echo $active_tab == 'wpr_tab_product_single' ? 'nav-tab-active' : ''; ?>">
92
+ <?php esc_html_e( 'Product Single', 'wpr-addons' ); ?>
93
+ </a>
94
+
95
+ <a href="?page=wpr-theme-builder&tab=wpr_tab_my_templates" data-title="My Templates" class="nav-tab <?php echo ($active_tab == 'wpr_tab_my_templates') ? 'nav-tab-active' : ''; ?>">
96
+ <?php esc_html_e( 'Saved Templates', 'wpr-addons' ); ?>
97
+ </a>
98
+ </div>
99
+
100
+ <?php if ( $active_tab == 'wpr_tab_header' ) : ?>
101
+
102
+ <!-- Save Conditions -->
103
+ <input type="hidden" name="wpr_header_conditions" id="wpr_header_conditions" value="<?php echo esc_attr(get_option('wpr_header_conditions', '[]')); ?>">
104
+
105
+ <?php WPR_Templates_Loop::render_theme_builder_templates( 'header' ); ?>
106
+
107
+ <?php elseif ( $active_tab == 'wpr_tab_footer' ) : ?>
108
+
109
+ <!-- Save Conditions -->
110
+ <input type="hidden" name="wpr_footer_conditions" id="wpr_footer_conditions" value="<?php echo esc_attr(get_option('wpr_footer_conditions', '[]')); ?>">
111
+
112
+ <?php WPR_Templates_Loop::render_theme_builder_templates( 'footer' ); ?>
113
+
114
+ <?php elseif ( $active_tab == 'wpr_tab_archive' ) : ?>
115
+
116
+ <!-- Save Conditions -->
117
+ <input type="hidden" name="wpr_archive_conditions" id="wpr_archive_conditions" value="<?php echo esc_attr(get_option('wpr_archive_conditions', '[]')); ?>">
118
+
119
+ <?php WPR_Templates_Loop::render_theme_builder_templates( 'archive' ); ?>
120
+
121
+ <?php elseif ( $active_tab == 'wpr_tab_single' ) : ?>
122
+
123
+ <!-- Save Conditions -->
124
+ <input type="hidden" name="wpr_single_conditions" id="wpr_single_conditions" value="<?php echo esc_attr(get_option('wpr_single_conditions', '[]')); ?>">
125
+
126
+ <?php WPR_Templates_Loop::render_theme_builder_templates( 'single' ); ?>
127
+
128
+ <?php elseif ( $active_tab == 'wpr_tab_product_archive' ) : ?>
129
+
130
+ <?php if ( class_exists( 'WooCommerce' ) ) : ?>
131
+ <!-- Save Conditions -->
132
+ <input type="hidden" name="wpr_product_archive_conditions" id="wpr_product_archive_conditions" value="<?php echo esc_attr(get_option('wpr_product_archive_conditions', '[]')); ?>">
133
+
134
+ <?php WPR_Templates_Loop::render_theme_builder_templates( 'product_archive' ); ?>
135
+ <?php else : ?>
136
+ <div class="wpr-activate-woo-notice"><span class="dashicons dashicons-info-outline"></span> Please install/activate WooCommerce in order to create product archive templates!</div>
137
+ <?php endif; ?>
138
+
139
+ <?php elseif ( $active_tab == 'wpr_tab_product_single' ) : ?>
140
+
141
+ <?php if ( class_exists( 'WooCommerce' ) ) : ?>
142
+ <!-- Save Conditions -->
143
+ <input type="hidden" name="wpr_product_single_conditions" id="wpr_product_single_conditions" value="<?php echo esc_attr(get_option('wpr_product_single_conditions', '[]')); ?>">
144
+
145
+ <?php WPR_Templates_Loop::render_theme_builder_templates( 'product_single' ); ?>
146
+ <?php else : ?>
147
+ <div class="wpr-activate-woo-notice"><span class="dashicons dashicons-info-outline"></span> Please install/activate WooCommerce in order to create product single templates!</div>
148
+ <?php endif ; ?>
149
+
150
+ <?php elseif ( $active_tab == 'wpr_tab_my_templates' ) : ?>
151
+
152
+ <?php Wpr_Templates_Loop::render_elementor_saved_templates(); ?>
153
+
154
+ <?php endif; ?>
155
+
156
+ </form>
157
+ </div>
158
+
159
+ </div>
160
+
161
+
162
+ <?php
163
+
164
  } // End wpr_addons_theme_builder_page()
assets/css/admin/mega-menu.css CHANGED
@@ -1,444 +1,444 @@
1
- .wpr-mm-settings-btn {
2
- visibility: hidden;
3
- opacity: 0;
4
- }
5
-
6
- .menu-item-depth-0:hover .wpr-mm-settings-btn {
7
- visibility: visible;
8
- opacity: 1;
9
- }
10
-
11
- .wpr-mm-settings-btn {
12
- position: absolute;
13
- top: 5px;
14
- left: 260px;
15
- display: -webkit-box;
16
- display: -ms-flexbox;
17
- display: flex;
18
- -webkit-box-align: center;
19
- -ms-flex-align: center;
20
- align-items: center;
21
- padding: 5px 14px 7px;
22
- color: #fff;
23
- background: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
24
- background: -o-linear-gradient(#6A4BFF, #7E94FE);
25
- background: linear-gradient(#6A4BFF, #7E94FE);
26
- font-weight: 500;
27
- border-radius: 3px;
28
- cursor: pointer;
29
- }
30
-
31
- .wpr-mm-settings-btn span {
32
- content: 'R';
33
- display: inline-block;
34
- font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
35
- font-size: 8px;
36
- font-weight: bold;
37
- text-align: center;
38
- color: #ffffff;
39
- background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
40
- background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
41
- background-image: linear-gradient(#6A4BFF, #7E94FE);
42
- -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
43
- box-shadow: 0 0 2px 2px #b8c7ff;
44
- width: 16px;
45
- height: 16px;
46
- line-height: 16px;
47
- border-radius: 15px;
48
- margin-right: 7px;
49
- }
50
-
51
- .wpr-mm-settings-popup-wrap {
52
- display: none;
53
- position: absolute;
54
- top: 0;
55
- left: 0;
56
- right: 0;
57
- bottom: 0;
58
- z-index: 9999999;
59
- background-color: rgba(0,0,0,0.3);
60
- }
61
-
62
- .wpr-mm-settings-popup {
63
- position: fixed;
64
- top: 50%;
65
- left: 50%;
66
- -webkit-transform: translate(-50%,-50%);
67
- -ms-transform: translate(-50%,-50%);
68
- transform: translate(-50%,-50%);
69
- width: 100%;
70
- max-width: 700px;
71
- margin-left: 80px;
72
- background-color: #fff;
73
- -webkit-box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
74
- box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
75
- }
76
-
77
- .wpr-mm-popup-title {
78
- margin-left: auto;
79
- margin-right: 10px;
80
- border: 1px solid #dcdcde;
81
- background-color: #f6f7f7;
82
- padding: 2px 10px 4px;
83
- }
84
-
85
- .wpr-mm-settings-close-popup-btn {
86
- cursor: pointer;
87
- }
88
-
89
- .wpr-mm-settings-popup-header {
90
- display: -webkit-box;
91
- display: -ms-flexbox;
92
- display: flex;
93
- -webkit-box-align: center;
94
- -ms-flex-align: center;
95
- align-items: center;
96
- padding: 10px;
97
- border-bottom: 1px solid #e8e8e8;
98
- font-weight: 500;
99
- }
100
-
101
- .wpr-mm-popup-logo {
102
- padding: 3px;
103
- margin-right: 10px;
104
- border-radius: 50%;
105
- color: transparent;
106
- font-family: Arial,Helvetica,sans-serif;
107
- font-size: 14px;
108
- font-weight: bold;
109
- letter-spacing: 0.3px;
110
- }
111
-
112
- .wpr-mm-settings-popup-footer {
113
- display: -webkit-box;
114
- display: -ms-flexbox;
115
- display: flex;
116
- -webkit-box-pack: end;
117
- -ms-flex-pack: end;
118
- justify-content: flex-end;
119
- padding: 10px;
120
- border-top: 1px solid #e8e8e8;
121
- }
122
-
123
- .button.wpr-save-mega-menu-btn {
124
- min-height: 0;
125
- padding: 6px 18px 7px;
126
- color: #fff;
127
- background: #6A4BFF;
128
- border-radius: 3px;
129
- font-size: 12px;
130
- text-transform: uppercase;
131
- letter-spacing: 0.5px;
132
- font-weight: 600;
133
- cursor: pointer;
134
- line-height: 1;
135
- -webkit-box-shadow: none !important;
136
- box-shadow: none !important;
137
- }
138
-
139
- .button.wpr-save-mega-menu-btn:hover {
140
- color: #fff;
141
- background: #5537e1;
142
- }
143
-
144
- .wpr-save-mega-menu-btn .dashicons {
145
- display: inline;
146
- line-height: 8px;
147
- font-size: 14px;
148
- vertical-align: sub;
149
- }
150
-
151
- .wpr-mm-settings-wrap {
152
- height: 60vh;
153
- overflow-y: scroll;
154
- padding: 20px;
155
- }
156
-
157
- .wpr-mm-settings-wrap > h4 {
158
- padding: 5px 10px 7px;
159
- background-color: #f5f3f3;
160
- margin: 5px 0;
161
- }
162
-
163
- .wpr-mm-setting {
164
- display: -webkit-box;
165
- display: -ms-flexbox;
166
- display: flex;
167
- -webkit-box-align: center;
168
- -ms-flex-align: center;
169
- align-items: center;
170
- padding: 10px;
171
- }
172
-
173
- .wpr-mm-setting h4 {
174
- width: 200px;
175
- margin: 0;
176
- }
177
-
178
- .wpr-mm-setting > div,
179
- .wpr-mm-setting select,
180
- .wpr-mm-setting input[type="text"] {
181
- width: 168px;
182
- }
183
-
184
- .wpr-mm-setting input[type="number"] {
185
- width: 103px;
186
- }
187
-
188
- .wpr-mm-setting-switcher input {
189
- position: absolute;
190
- z-index: -1000;
191
- left: -1000px;
192
- overflow: hidden;
193
- clip: rect(0 0 0 0);
194
- height: 1px;
195
- width: 1px;
196
- margin: -1px;
197
- padding: 0;
198
- border: 0;
199
- }
200
-
201
- .wpr-mm-setting-switcher label {
202
- position: relative;
203
- display: block;
204
- width: 45px;
205
- height: 23px;
206
- border-radius: 20px;
207
- background: #e8e8e8;
208
- cursor: pointer;
209
- -webkit-touch-callout: none;
210
- -webkit-user-select: none;
211
- -moz-user-select: none;
212
- -ms-user-select: none;
213
- user-select: none;
214
- -webkit-transition: all 0.2s ease-in;
215
- -o-transition: all 0.2s ease-in;
216
- transition: all 0.2s ease-in;
217
- }
218
-
219
- .wpr-mm-setting-switcher input + label:after {
220
- content: ' ';
221
- display: block;
222
- position: absolute;
223
- top: 3px;
224
- left: 3px;
225
- width: 17px;
226
- height: 17px;
227
- border-radius: 50%;
228
- background: #fff;
229
- -webkit-transition: all 0.2s ease-in;
230
- -o-transition: all 0.2s ease-in;
231
- transition: all 0.2s ease-in;
232
- }
233
-
234
- .wpr-mm-setting-switcher input:checked + label {
235
- background: #6A4BFF;
236
- }
237
-
238
- .wpr-mm-setting-switcher input:checked + label:after {
239
- left: 24px;
240
- }
241
-
242
- button.wpr-edit-mega-menu-btn {
243
- padding: 3px 22px !important;
244
- font-size: 12px !important;
245
- }
246
-
247
- .wpr-edit-mega-menu-btn i {
248
- font-size: 125%;
249
- margin-right: 3px;
250
- }
251
-
252
- .wpr-mm-editor-popup-wrap {
253
- display: none;
254
- position: fixed;
255
- top: 0;
256
- left: 0;
257
- width: 100%;
258
- height: 100%;
259
- background: rgba(0,0,0,0.5);
260
- z-index: 99999999;
261
- }
262
-
263
- .wpr-mm-editor-popup-iframe {
264
- width: calc(100vw - 70px);
265
- height: calc(100vh - 70px);
266
- margin: 35px 25px;
267
- background-color: #f9f9f9;
268
- -webkit-box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
269
- box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
270
- }
271
-
272
- .wpr-mm-editor-close-popup-btn {
273
- position: absolute;
274
- top: 40px;
275
- right: 55px;
276
- font-size: 50px !important;
277
- }
278
-
279
- .wpr-mm-editor-close-popup-btn span {
280
- color: #444;
281
- font-size: 25px;
282
- cursor: pointer;
283
- }
284
-
285
- .wpr-mm-editor-close-popup-btn span:hover {
286
- color: #888;
287
- }
288
-
289
- .wpr-mm-setting-radius div {
290
- display: -webkit-box;
291
- display: -ms-flexbox;
292
- display: flex;
293
- }
294
-
295
- .wpr-mm-setting-icon div span {
296
- display: -webkit-inline-box;
297
- display: -ms-inline-flexbox;
298
- display: inline-flex;
299
- -webkit-box-align: center;
300
- -ms-flex-align: center;
301
- align-items: center;
302
- -webkit-box-pack: center;
303
- -ms-flex-pack: center;
304
- justify-content: center;
305
- width: 30px;
306
- height: 30px;
307
- border: 1px solid #a4afb7;
308
- cursor: pointer;
309
- }
310
-
311
- .wpr-mm-setting-icon div span.wpr-mm-active-icon {
312
- background-color: #a4afb7;
313
- color: #fff;
314
- }
315
-
316
- .wpr-mm-setting-icon div span:first-child {
317
- border-radius: 3px 0 0 3px;
318
- }
319
-
320
- .wpr-mm-setting-icon div span:last-child {
321
- border-radius: 0 3px 3px 0;
322
- }
323
-
324
- .wpr-mm-setting-icon input[type="text"] {
325
- width: 0;
326
- padding: 0;
327
- border: 0;
328
- -webkit-box-shadow: none !important;
329
- box-shadow: none !important;
330
- margin-left: -15px;
331
- }
332
-
333
- .wpr-mm-setting.iconpicker-container .iconpicker-popover {
334
- padding: 5px;
335
- }
336
-
337
- .wpr-mm-setting.iconpicker-container .popover-title {
338
- padding: 0;
339
- }
340
-
341
- .wpr-mm-setting.iconpicker-container input[type="search"] {
342
- padding: 5px 10px;
343
- margin: 0 !important;
344
- border: 0;
345
- width: 100%;
346
- }
347
-
348
- .wpr-mm-setting.iconpicker-container .arrow {
349
- border-bottom-color: #f7f7f7 !important;
350
- top: -8px !important;
351
- }
352
-
353
- .wp-picker-input-wrap .wp-picker-container {
354
- display: none;
355
- }
356
-
357
- .wpr-mm-setting select,
358
- .wpr-mm-setting input:not(.iconpicker-input),
359
- .wpr-mm-setting button {
360
- border: 1px solid #e5e5e5 !important;
361
- }
362
-
363
- /* Pro Options */
364
- .wpr-mm-pro-setting h4:after,
365
- h4.wpr-mm-pro-heading:after {
366
- content: 'PRO';
367
- margin-left: 5px;
368
- padding: 1px 7px 2px;
369
- color: #fff;
370
- background-color: #f44;
371
- border-radius: 3px;
372
- font-size: 10px;
373
- font-weight: bold;
374
- letter-spacing: 1px;
375
- }
376
-
377
- .wpr-mm-pro-section,
378
- .wpr-mm-pro-setting > div {
379
- position: relative;
380
- }
381
-
382
- .wpr-mm-pro-section:before,
383
- .wpr-mm-pro-setting > div:before {
384
- content: 'Please upgrade to the Pro Version to access this options.';
385
- display: none;
386
- position: absolute;
387
- left: -20px;
388
- top: -65px;
389
- z-index: 2;
390
- width: 210px;
391
- padding: 10px;
392
- font-size: 12px;
393
- background-color: #fff;
394
- -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.1);
395
- box-shadow: 1px 1px 5px rgba(0,0,0,0.1);
396
- border: 1px solid #e8e8e8;
397
- border-radius: 4px;
398
- text-align: center;
399
- }
400
-
401
- .wpr-mm-pro-section:before {
402
- content: 'Please upgrade to the Pro Version to access these options.';
403
- top: 50%;
404
- left: 50%;
405
- -webkit-transform: translateX(-50%) translateY(-50%);
406
- -ms-transform: translateX(-50%) translateY(-50%);
407
- transform: translateX(-50%) translateY(-50%);
408
- padding: 20px 30px;
409
- font-size: 13px;
410
- }
411
-
412
- .wpr-mm-pro-section:hover:before,
413
- .wpr-mm-pro-setting > div:hover:before {
414
- display: block;
415
- }
416
-
417
- .wpr-mm-pro-setting > div:after,
418
- .wpr-mm-pro-section:after {
419
- content: '';
420
- position: absolute;
421
- top: 0;
422
- left: 0;
423
- z-index: 1;
424
- width: 100%;
425
- height: 100%;
426
- background: rgba(0,0,0,0.1);
427
- }
428
-
429
- .wpr-mm-pro-setting select {
430
- display: none;
431
- }
432
-
433
- .wpr-mm-pro-setting .wpr-mm-pro-radio {
434
- display: block;
435
- }
436
-
437
- .wpr-mm-pro-radio {
438
- display: none;
439
- padding: 5px 10px;
440
- }
441
-
442
- .wpr-mm-setting select option[value*="pro-"] {
443
- background-color: rgba(0,0,0,0.2);
444
  }
1
+ .wpr-mm-settings-btn {
2
+ visibility: hidden;
3
+ opacity: 0;
4
+ }
5
+
6
+ .menu-item-depth-0:hover .wpr-mm-settings-btn {
7
+ visibility: visible;
8
+ opacity: 1;
9
+ }
10
+
11
+ .wpr-mm-settings-btn {
12
+ position: absolute;
13
+ top: 5px;
14
+ left: 260px;
15
+ display: -webkit-box;
16
+ display: -ms-flexbox;
17
+ display: flex;
18
+ -webkit-box-align: center;
19
+ -ms-flex-align: center;
20
+ align-items: center;
21
+ padding: 5px 14px 7px;
22
+ color: #fff;
23
+ background: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
24
+ background: -o-linear-gradient(#6A4BFF, #7E94FE);
25
+ background: linear-gradient(#6A4BFF, #7E94FE);
26
+ font-weight: 500;
27
+ border-radius: 3px;
28
+ cursor: pointer;
29
+ }
30
+
31
+ .wpr-mm-settings-btn span {
32
+ content: 'R';
33
+ display: inline-block;
34
+ font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
35
+ font-size: 8px;
36
+ font-weight: bold;
37
+ text-align: center;
38
+ color: #ffffff;
39
+ background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
40
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
41
+ background-image: linear-gradient(#6A4BFF, #7E94FE);
42
+ -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
43
+ box-shadow: 0 0 2px 2px #b8c7ff;
44
+ width: 16px;
45
+ height: 16px;
46
+ line-height: 16px;
47
+ border-radius: 15px;
48
+ margin-right: 7px;
49
+ }
50
+
51
+ .wpr-mm-settings-popup-wrap {
52
+ display: none;
53
+ position: absolute;
54
+ top: 0;
55
+ left: 0;
56
+ right: 0;
57
+ bottom: 0;
58
+ z-index: 9999999;
59
+ background-color: rgba(0,0,0,0.3);
60
+ }
61
+
62
+ .wpr-mm-settings-popup {
63
+ position: fixed;
64
+ top: 50%;
65
+ left: 50%;
66
+ -webkit-transform: translate(-50%,-50%);
67
+ -ms-transform: translate(-50%,-50%);
68
+ transform: translate(-50%,-50%);
69
+ width: 100%;
70
+ max-width: 700px;
71
+ margin-left: 80px;
72
+ background-color: #fff;
73
+ -webkit-box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
74
+ box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
75
+ }
76
+
77
+ .wpr-mm-popup-title {
78
+ margin-left: auto;
79
+ margin-right: 10px;
80
+ border: 1px solid #dcdcde;
81
+ background-color: #f6f7f7;
82
+ padding: 2px 10px 4px;
83
+ }
84
+
85
+ .wpr-mm-settings-close-popup-btn {
86
+ cursor: pointer;
87
+ }
88
+
89
+ .wpr-mm-settings-popup-header {
90
+ display: -webkit-box;
91
+ display: -ms-flexbox;
92
+ display: flex;
93
+ -webkit-box-align: center;
94
+ -ms-flex-align: center;
95
+ align-items: center;
96
+ padding: 10px;
97
+ border-bottom: 1px solid #e8e8e8;
98
+ font-weight: 500;
99
+ }
100
+
101
+ .wpr-mm-popup-logo {
102
+ padding: 3px;
103
+ margin-right: 10px;
104
+ border-radius: 50%;
105
+ color: transparent;
106
+ font-family: Arial,Helvetica,sans-serif;
107
+ font-size: 14px;
108
+ font-weight: bold;
109
+ letter-spacing: 0.3px;
110
+ }
111
+
112
+ .wpr-mm-settings-popup-footer {
113
+ display: -webkit-box;
114
+ display: -ms-flexbox;
115
+ display: flex;
116
+ -webkit-box-pack: end;
117
+ -ms-flex-pack: end;
118
+ justify-content: flex-end;
119
+ padding: 10px;
120
+ border-top: 1px solid #e8e8e8;
121
+ }
122
+
123
+ .button.wpr-save-mega-menu-btn {
124
+ min-height: 0;
125
+ padding: 6px 18px 7px;
126
+ color: #fff;
127
+ background: #6A4BFF;
128
+ border-radius: 3px;
129
+ font-size: 12px;
130
+ text-transform: uppercase;
131
+ letter-spacing: 0.5px;
132
+ font-weight: 600;
133
+ cursor: pointer;
134
+ line-height: 1;
135
+ -webkit-box-shadow: none !important;
136
+ box-shadow: none !important;
137
+ }
138
+
139
+ .button.wpr-save-mega-menu-btn:hover {
140
+ color: #fff;
141
+ background: #5537e1;
142
+ }
143
+
144
+ .wpr-save-mega-menu-btn .dashicons {
145
+ display: inline;
146
+ line-height: 8px;
147
+ font-size: 14px;
148
+ vertical-align: sub;
149
+ }
150
+
151
+ .wpr-mm-settings-wrap {
152
+ height: 60vh;
153
+ overflow-y: scroll;
154
+ padding: 20px;
155
+ }
156
+
157
+ .wpr-mm-settings-wrap > h4 {
158
+ padding: 5px 10px 7px;
159
+ background-color: #f5f3f3;
160
+ margin: 5px 0;
161
+ }
162
+
163
+ .wpr-mm-setting {
164
+ display: -webkit-box;
165
+ display: -ms-flexbox;
166
+ display: flex;
167
+ -webkit-box-align: center;
168
+ -ms-flex-align: center;
169
+ align-items: center;
170
+ padding: 10px;
171
+ }
172
+
173
+ .wpr-mm-setting h4 {
174
+ width: 200px;
175
+ margin: 0;
176
+ }
177
+
178
+ .wpr-mm-setting > div,
179
+ .wpr-mm-setting select,
180
+ .wpr-mm-setting input[type="text"] {
181
+ width: 168px;
182
+ }
183
+
184
+ .wpr-mm-setting input[type="number"] {
185
+ width: 103px;
186
+ }
187
+
188
+ .wpr-mm-setting-switcher input {
189
+ position: absolute;
190
+ z-index: -1000;
191
+ left: -1000px;
192
+ overflow: hidden;
193
+ clip: rect(0 0 0 0);
194
+ height: 1px;
195
+ width: 1px;
196
+ margin: -1px;
197
+ padding: 0;
198
+ border: 0;
199
+ }
200
+
201
+ .wpr-mm-setting-switcher label {
202
+ position: relative;
203
+ display: block;
204
+ width: 45px;
205
+ height: 23px;
206
+ border-radius: 20px;
207
+ background: #e8e8e8;
208
+ cursor: pointer;
209
+ -webkit-touch-callout: none;
210
+ -webkit-user-select: none;
211
+ -moz-user-select: none;
212
+ -ms-user-select: none;
213
+ user-select: none;
214
+ -webkit-transition: all 0.2s ease-in;
215
+ -o-transition: all 0.2s ease-in;
216
+ transition: all 0.2s ease-in;
217
+ }
218
+
219
+ .wpr-mm-setting-switcher input + label:after {
220
+ content: ' ';
221
+ display: block;
222
+ position: absolute;
223
+ top: 3px;
224
+ left: 3px;
225
+ width: 17px;
226
+ height: 17px;
227
+ border-radius: 50%;
228
+ background: #fff;
229
+ -webkit-transition: all 0.2s ease-in;
230
+ -o-transition: all 0.2s ease-in;
231
+ transition: all 0.2s ease-in;
232
+ }
233
+
234
+ .wpr-mm-setting-switcher input:checked + label {
235
+ background: #6A4BFF;
236
+ }
237
+
238
+ .wpr-mm-setting-switcher input:checked + label:after {
239
+ left: 24px;
240
+ }
241
+
242
+ button.wpr-edit-mega-menu-btn {
243
+ padding: 3px 22px !important;
244
+ font-size: 12px !important;
245
+ }
246
+
247
+ .wpr-edit-mega-menu-btn i {
248
+ font-size: 125%;
249
+ margin-right: 3px;
250
+ }
251
+
252
+ .wpr-mm-editor-popup-wrap {
253
+ display: none;
254
+ position: fixed;
255
+ top: 0;
256
+ left: 0;
257
+ width: 100%;
258
+ height: 100%;
259
+ background: rgba(0,0,0,0.5);
260
+ z-index: 99999999;
261
+ }
262
+
263
+ .wpr-mm-editor-popup-iframe {
264
+ width: calc(100vw - 70px);
265
+ height: calc(100vh - 70px);
266
+ margin: 35px 25px;
267
+ background-color: #f9f9f9;
268
+ -webkit-box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
269
+ box-shadow: 2px 2px 8px rgba(0,0,0,0.3);
270
+ }
271
+
272
+ .wpr-mm-editor-close-popup-btn {
273
+ position: absolute;
274
+ top: 40px;
275
+ right: 55px;
276
+ font-size: 50px !important;
277
+ }
278
+
279
+ .wpr-mm-editor-close-popup-btn span {
280
+ color: #444;
281
+ font-size: 25px;
282
+ cursor: pointer;
283
+ }
284
+
285
+ .wpr-mm-editor-close-popup-btn span:hover {
286
+ color: #888;
287
+ }
288
+
289
+ .wpr-mm-setting-radius div {
290
+ display: -webkit-box;
291
+ display: -ms-flexbox;
292
+ display: flex;
293
+ }
294
+
295
+ .wpr-mm-setting-icon div span {
296
+ display: -webkit-inline-box;
297
+ display: -ms-inline-flexbox;
298
+ display: inline-flex;
299
+ -webkit-box-align: center;
300
+ -ms-flex-align: center;
301
+ align-items: center;
302
+ -webkit-box-pack: center;
303
+ -ms-flex-pack: center;
304
+ justify-content: center;
305
+ width: 30px;
306
+ height: 30px;
307
+ border: 1px solid #a4afb7;
308
+ cursor: pointer;
309
+ }
310
+
311
+ .wpr-mm-setting-icon div span.wpr-mm-active-icon {
312
+ background-color: #a4afb7;
313
+ color: #fff;
314
+ }
315
+
316
+ .wpr-mm-setting-icon div span:first-child {
317
+ border-radius: 3px 0 0 3px;
318
+ }
319
+
320
+ .wpr-mm-setting-icon div span:last-child {
321
+ border-radius: 0 3px 3px 0;
322
+ }
323
+
324
+ .wpr-mm-setting-icon input[type="text"] {
325
+ width: 0;
326
+ padding: 0;
327
+ border: 0;
328
+ -webkit-box-shadow: none !important;
329
+ box-shadow: none !important;
330
+ margin-left: -15px;
331
+ }
332
+
333
+ .wpr-mm-setting.iconpicker-container .iconpicker-popover {
334
+ padding: 5px;
335
+ }
336
+
337
+ .wpr-mm-setting.iconpicker-container .popover-title {
338
+ padding: 0;
339
+ }
340
+
341
+ .wpr-mm-setting.iconpicker-container input[type="search"] {
342
+ padding: 5px 10px;
343
+ margin: 0 !important;
344
+ border: 0;
345
+ width: 100%;
346
+ }
347
+
348
+ .wpr-mm-setting.iconpicker-container .arrow {
349
+ border-bottom-color: #f7f7f7 !important;
350
+ top: -8px !important;
351
+ }
352
+
353
+ .wp-picker-input-wrap .wp-picker-container {
354
+ display: none;
355
+ }
356
+
357
+ .wpr-mm-setting select,
358
+ .wpr-mm-setting input:not(.iconpicker-input),
359
+ .wpr-mm-setting button {
360
+ border: 1px solid #e5e5e5 !important;
361
+ }
362
+
363
+ /* Pro Options */
364
+ .wpr-mm-pro-setting h4:after,
365
+ h4.wpr-mm-pro-heading:after {
366
+ content: 'PRO';
367
+ margin-left: 5px;
368
+ padding: 1px 7px 2px;
369
+ color: #fff;
370
+ background-color: #f44;
371
+ border-radius: 3px;
372
+ font-size: 10px;
373
+ font-weight: bold;
374
+ letter-spacing: 1px;
375
+ }
376
+
377
+ .wpr-mm-pro-section,
378
+ .wpr-mm-pro-setting > div {
379
+ position: relative;
380
+ }
381
+
382
+ .wpr-mm-pro-section:before,
383
+ .wpr-mm-pro-setting > div:before {
384
+ content: 'Please upgrade to the Pro Version to access this options.';
385
+ display: none;
386
+ position: absolute;
387
+ left: -20px;
388
+ top: -65px;
389
+ z-index: 2;
390
+ width: 210px;
391
+ padding: 10px;
392
+ font-size: 12px;
393
+ background-color: #fff;
394
+ -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.1);
395
+ box-shadow: 1px 1px 5px rgba(0,0,0,0.1);
396
+ border: 1px solid #e8e8e8;
397
+ border-radius: 4px;
398
+ text-align: center;
399
+ }
400
+
401
+ .wpr-mm-pro-section:before {
402
+ content: 'Please upgrade to the Pro Version to access these options.';
403
+ top: 50%;
404
+ left: 50%;
405
+ -webkit-transform: translateX(-50%) translateY(-50%);
406
+ -ms-transform: translateX(-50%) translateY(-50%);
407
+ transform: translateX(-50%) translateY(-50%);
408
+ padding: 20px 30px;
409
+ font-size: 13px;
410
+ }
411
+
412
+ .wpr-mm-pro-section:hover:before,
413
+ .wpr-mm-pro-setting > div:hover:before {
414
+ display: block;
415
+ }
416
+
417
+ .wpr-mm-pro-setting > div:after,
418
+ .wpr-mm-pro-section:after {
419
+ content: '';
420
+ position: absolute;
421
+ top: 0;
422
+ left: 0;
423
+ z-index: 1;
424
+ width: 100%;
425
+ height: 100%;
426
+ background: rgba(0,0,0,0.1);
427
+ }
428
+
429
+ .wpr-mm-pro-setting select {
430
+ display: none;
431
+ }
432
+
433
+ .wpr-mm-pro-setting .wpr-mm-pro-radio {
434
+ display: block;
435
+ }
436
+
437
+ .wpr-mm-pro-radio {
438
+ display: none;
439
+ padding: 5px 10px;
440
+ }
441
+
442
+ .wpr-mm-setting select option[value*="pro-"] {
443
+ background-color: rgba(0,0,0,0.2);
444
  }
assets/css/admin/plugin-options.css CHANGED
@@ -1,1090 +1,1126 @@
1
- #wpwrap {
2
- background: #fff;
3
- }
4
-
5
- #wpcontent {
6
- padding: 0;
7
- }
8
-
9
- .wpr-settings-page-wrap {
10
- margin: 0;
11
- }
12
-
13
- .wpr-settings-page-header {
14
- display: -webkit-box;
15
- display: -ms-flexbox;
16
- display: flex;
17
- -webkit-box-orient: vertical;
18
- -webkit-box-direction: normal;
19
- -ms-flex-direction: column;
20
- flex-direction: column;
21
- padding: 10px 30px 130px;
22
- background: #f6f6f6
23
- }
24
-
25
- .wpr-settings-page-header h1,
26
- .wpr-settings-page-header p,
27
- .wpr-settings-page-header .wpr-preview-buttons,
28
- .wpr-settings-page-header .wpr-user-template {
29
- -webkit-box-ordinal-group: 3;
30
- -ms-flex-order: 2;
31
- order: 2;
32
- }
33
-
34
- .wpr-settings-page-header .wpr-options-button {
35
- -ms-flex-item-align: start;
36
- align-self: flex-start;
37
- }
38
-
39
- .button.wpr-options-button .dashicons {
40
- line-height: 30px;
41
- font-size: 16px;
42
- }
43
-
44
- .wpr-preview-buttons a:last-child,
45
- .wpr-preview-buttons a.wpr-how-to-use-theme-builder {
46
- background-color: transparent;
47
- border: 2px solid #6A4BFF !important;
48
- color: #6A4BFF;
49
- padding: 5px 22px;
50
- }
51
-
52
- .wpr-preview-buttons a.wpr-how-to-use-woo-builder {
53
- background-color: transparent !important;
54
- border: 2px solid #96588a !important;
55
- color: #96588a !important;
56
- padding: 5px 22px;
57
- }
58
-
59
- .wpr-preview-buttons a.wpr-how-to-use-woo-builder:hover,
60
- .wpr-preview-buttons a.wpr-how-to-use-woo-builder:focus {
61
- color: #fff !important;
62
- background: #96588a !important;
63
- padding: 8px 22px !important;
64
- }
65
-
66
- .wpr-settings-page-header h1 {
67
- font-size: 42px;
68
- }
69
-
70
- .wpr-settings-page-header p {
71
- margin-top: 5px;
72
- color: #5a5a5a;
73
- font-size: 16px;
74
- margin-bottom: 30px;
75
- }
76
-
77
- .wpr-user-template {
78
- position: relative;
79
- -webkit-box-sizing: border-box;
80
- box-sizing: border-box;
81
- overflow: hidden;
82
- display: inline-block;
83
- width: 220px;
84
- height: 50px;
85
- line-height: 50px;
86
- padding: 0 20px;
87
- color: #fff;
88
- background: #6A4BFF;
89
- font-size: 15px;
90
- -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
91
- box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
92
- border-radius: 5px;
93
- cursor: pointer;
94
- }
95
-
96
- .wpr-user-template .plus-icon {
97
- float: right;
98
- display: block;
99
- width: 30px;
100
- height: 30px;
101
- line-height: 28px;
102
- margin-top: 10px;
103
- border-radius: 50%;
104
- color: #333;
105
- background-color: #fff;
106
- font-size: 18px;
107
- text-align: center;
108
- }
109
-
110
- .wpr-user-template > div {
111
- position: absolute;
112
- top: 0;
113
- left: 0;
114
- width: 100%;
115
- height: 100%;
116
- background: rgba(0,0,0,0.5);
117
- }
118
-
119
- .wpr-settings-page {
120
- padding: 0 30px;
121
- }
122
-
123
- .wpr-nav-tab-wrapper {
124
- padding-top: 0;
125
- border-bottom: 0;
126
- -webkit-transform: translateY(-100%);
127
- -ms-transform: translateY(-100%);
128
- transform: translateY(-100%);
129
- }
130
-
131
- .wpr-nav-tab-wrapper a {
132
- border: 0 !important;
133
- padding: 13px 35px;
134
- background-color: transparent;
135
- font-size: 16px;
136
- margin-left: 0;
137
- margin-right: 15px;
138
- border-radius: 3px 4px 0 0;
139
- color: #333;
140
- }
141
-
142
- .wpr-nav-tab-wrapper a:hover {
143
- color: #6A4BFF;
144
- background: #fff;
145
- }
146
-
147
- .wpr-nav-tab-wrapper .nav-tab-active {
148
- color: #6A4BFF;
149
- background: #fff;
150
- -webkit-box-shadow: 3px -2px 5px rgba(0,0,0,0.03);
151
- box-shadow: 3px -2px 5px rgba(0,0,0,0.03);
152
- }
153
-
154
- .wpr-nav-tab-wrapper a:focus {
155
- -webkit-box-shadow: none;
156
- box-shadow: none;
157
- }
158
-
159
- .button.wpr-options-button {
160
- padding: 7px 22px;
161
- border: 0;
162
- color: #fff;
163
- background: #6A4BFF;
164
- -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
165
- box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
166
- font-size: 14px;
167
- }
168
-
169
- .button.wpr-options-button:hover,
170
- .button.wpr-options-button:focus {
171
- color: #fff;
172
- background: #6A4BFF;
173
- border: none;
174
- }
175
-
176
- @media screen and (max-width: 1355px) {
177
- .wpr-nav-tab-wrapper a {
178
- padding: 13px 25px;
179
- font-size: 14px;
180
- }
181
- }
182
-
183
-
184
- /*--------------------------------------------------------------
185
- == Elements
186
- --------------------------------------------------------------*/
187
- .wpr-elements-toggle {
188
- overflow: hidden;
189
- text-align: center;
190
- }
191
-
192
- .wpr-elements-toggle > div {
193
- display: inline-block;
194
- }
195
-
196
- .wpr-elements-toggle h3 {
197
- float: left;
198
- font-size: 18px;
199
- margin: 0 20px 0 0;
200
- }
201
-
202
- .wpr-elements-toggle p {
203
- margin: 10px 0 60px 0;
204
- }
205
-
206
- .wpr-elements-heading {
207
- text-align: center;
208
- margin-bottom: 30px;
209
- }
210
-
211
- .wpr-elements-heading h3 {
212
- font-size: 18px;
213
- text-align: center;
214
- margin-bottom: 0;
215
- }
216
-
217
- .wpr-elements-heading .wpr-install-activate-woocommerce {
218
- color: red;
219
- font-weight: 700;
220
- }
221
-
222
- .wpr-install-activate-woocommerce .dashicons {
223
- font-size: 18px;
224
- }
225
-
226
- .wpr-woo-templates,
227
- .wpr-elements {
228
- display: -webkit-box;
229
- display: -ms-flexbox;
230
- display: flex;
231
- -ms-flex-wrap: wrap;
232
- flex-wrap: wrap;
233
- width: 100%;
234
- margin-bottom: 50px;
235
- }
236
-
237
- .wpr-woo-templates {
238
- margin-bottom: 0;
239
- }
240
-
241
- .wpr-woo-template,
242
- .wpr-element {
243
- -webkit-box-sizing: border-box;
244
- box-sizing: border-box;
245
- position: relative;
246
- width: 24%;
247
- padding: 22px 30px;
248
- margin-right: 1%;
249
- margin-bottom: 20px;
250
- -webkit-box-shadow: 0 0 15px rgba(0,0,0,0.05);
251
- box-shadow: 0 0 15px rgba(0,0,0,0.05);
252
- border-radius: 4px;
253
- }
254
-
255
- .wpr-woo-template {
256
- width: 100%;
257
- }
258
-
259
- .wpr-woo-template-info {
260
- display: flex;
261
- justify-content: space-between;
262
- margin-top: 10px;
263
- }
264
-
265
- .wpr-woo-template-info .wpr-woo-template-title {
266
- display: inline-flex;
267
- flex-direction: column;
268
- }
269
-
270
- .wpr-woo-template-title h3 {
271
- font-weight: 600 !important;
272
- font-size: 13px !important;
273
- color: #3c434a !important;
274
- }
275
-
276
- .wpr-woo-template-title p {
277
- margin: 0;
278
- font-size: 12px;
279
- }
280
-
281
- .wpr-woo-template-info h4 {
282
- font-size: 1em !important;
283
- font-weight: 600 !important;
284
- margin: 0;
285
- }
286
-
287
- .wpr-element-info h3 {
288
- float: left;
289
- margin: 0;
290
- color: #3a3a3a;
291
- font-size: 16px;
292
- }
293
-
294
- .wpr-woo-template-info label {
295
- min-width: 45px;
296
- }
297
-
298
- .wpr-woo-template-info label,
299
- .wpr-element-info label,
300
- .wpr-elements-toggle label {
301
- float: right;
302
- }
303
-
304
- .wpr-woo-template-info span,
305
- .wpr-element-info span {
306
- display: block;
307
- margin-top: 3px;
308
- color: #999;
309
- font-style: normal;
310
- font-size: 12px;
311
- }
312
-
313
- .wpr-woo-template-info a,
314
- .wpr-element-info a {
315
- display: block;
316
- clear: both;
317
- font-size: 12px;
318
- -webkit-box-shadow: none !important;
319
- box-shadow: none !important;
320
- }
321
-
322
- .wpr-woo-template-info input,
323
- .wpr-element-info input,
324
- .wpr-elements-toggle input,
325
- .wpr-setting-custom-ckbox input {
326
- position: absolute;
327
- z-index: -1000;
328
- left: -1000px;
329
- overflow: hidden;
330
- clip: rect(0 0 0 0);
331
- height: 1px;
332
- width: 1px;
333
- margin: -1px;
334
- padding: 0;
335
- border: 0;
336
- }
337
-
338
- .wpr-woo-template-info label,
339
- .wpr-element-info label,
340
- .wpr-elements-toggle label,
341
- .wpr-setting-custom-ckbox label {
342
- position: relative;
343
- display: block;
344
- width: 45px;
345
- height: 23px;
346
- border-radius: 20px;
347
- background: #e8e8e8;
348
- cursor: pointer;
349
- -webkit-touch-callout: none;
350
- -webkit-user-select: none;
351
- -moz-user-select: none;
352
- -ms-user-select: none;
353
- user-select: none;
354
- -webkit-transition: all 0.2s ease-in;
355
- -o-transition: all 0.2s ease-in;
356
- transition: all 0.2s ease-in;
357
- }
358
-
359
- .wpr-woo-template-info input + label:after,
360
- .wpr-element-info input + label:after,
361
- .wpr-elements-toggle input + label:after,
362
- .wpr-setting-custom-ckbox input + label:after {
363
- content: ' ';
364
- display: block;
365
- position: absolute;
366
- top: 3px;
367
- left: 3px;
368
- width: 17px;
369
- height: 17px;
370
- border-radius: 50%;
371
- background: #fff;
372
- -webkit-transition: all 0.2s ease-in;
373
- -o-transition: all 0.2s ease-in;
374
- transition: all 0.2s ease-in;
375
- }
376
-
377
- .wpr-woo-template-info input:checked + label,
378
- .wpr-element-info input:checked + label,
379
- .wpr-elements-toggle input:checked + label,
380
- .wpr-setting-custom-ckbox input:checked + label {
381
- background: #6A4BFF;
382
- }
383
-
384
- .wpr-woo-template-info input:checked + label:after,
385
- .wpr-element-info input:checked + label:after,
386
- .wpr-elements-toggle input:checked + label:after,
387
- .wpr-setting-custom-ckbox input:checked + label:after {
388
- left: 24px;
389
- }
390
-
391
- .wpr-new-element:before {
392
- content: 'NEW';
393
- position: absolute;
394
- top: -10px;
395
- left: 28px;
396
- padding: 1px 7px;
397
- color: #fff;
398
- background-color: #f44;
399
- border-radius: 3px;
400
- font-size: 10px;
401
- font-weight: bold;
402
- letter-spacing: 1px;
403
- }
404
-
405
- .wpr-pro-element:before {
406
- content: 'PRO';
407
- position: absolute;
408
- top: -10px;
409
- left: 28px;
410
- z-index: 10;
411
- padding: 1px 7px;
412
- color: #fff;
413
- background-color: #f44;
414
- border-radius: 3px;
415
- font-size: 10px;
416
- font-weight: bold;
417
- letter-spacing: 1px;
418
- }
419
-
420
- .wpr-pro-element > a {
421
- display: block;
422
- position: absolute;
423
- top: 0;
424
- left: 0;
425
- z-index: 1;
426
- width: 100%;
427
- height: 100%;
428
- background: rgba(0,0,0,0.1);
429
- }
430
-
431
- /*--------------------------------------------------------------
432
- == My Templates
433
- --------------------------------------------------------------*/
434
- .wpr-my-templates-list {
435
- width: 65%;
436
- }
437
-
438
- @media screen and (max-width: 1400px) {
439
- .wpr-my-templates-list {
440
- width: 100%;
441
- }
442
- }
443
-
444
- .wpr-activate-woo-notice,
445
- .wpr-my-templates-list li {
446
- overflow: hidden;
447
- padding: 20px 35px;
448
- margin-bottom: 15px;
449
- -webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
450
- box-shadow: 0 0 2px rgba(0,0,0,0.2);
451
- }
452
-
453
- .wpr-my-templates-list li h3 {
454
- float: left;
455
- margin: 0;
456
- color: #555;
457
- font-size: 16px;
458
- line-height: 34px;
459
- text-transform: capitalize;
460
- }
461
-
462
- .wpr-my-templates-list .wpr-action-buttons {
463
- float: right;
464
- }
465
-
466
- .wpr-my-templates-list .wpr-template-conditions {
467
- background: #b3b3b3;
468
- }
469
-
470
- .wpr-active-conditions-template .wpr-template-conditions {
471
- background: #7a5ffd;
472
- }
473
-
474
- .wpr-my-templates-list .wpr-template-conditions:hover,
475
- .wpr-active-conditions-template .wpr-template-conditions:hover {
476
- background: #6A4BFF;
477
- }
478
-
479
- .wpr-my-templates-list .wpr-edit-template {
480
- background: #646464;
481
- }
482
-
483
- .wpr-my-templates-list .wpr-edit-template:hover {
484
- background: #535353;
485
- }
486
-
487
- .wpr-edit-template:focus {
488
- -webkit-box-shadow: none !important;
489
- box-shadow: none !important;
490
- }
491
-
492
- .wpr-my-templates-list .wpr-delete-template {
493
- background: #ff5a4b;
494
- }
495
-
496
- .wpr-my-templates-list .wpr-delete-template:hover {
497
- background: #FF4635;
498
- }
499
-
500
- .wpr-my-templates-list .wpr-action-buttons > * {
501
- display: inline-block;
502
- padding: 3px 20px;
503
- margin-right: 10px;
504
- border: 0;
505
- letter-spacing: 0.5px;
506
- }
507
-
508
- .wpr-my-templates-list .wpr-action-buttons > *:last-child {
509
- margin-right: 0;
510
- }
511
-
512
- .wpr-my-templates-list .wpr-action-buttons .dashicons {
513
- font-size: 16px;
514
- line-height: 30px;
515
- }
516
-
517
- .wpr-active-conditions-template {
518
- border-left: 5px solid #6A4BFF;
519
- background: #F6F7F7;
520
- }
521
-
522
- .wpr-my-templates-list .wpr-no-templates {
523
- background: #fff !important;
524
- }
525
-
526
-
527
- /*--------------------------------------------------------------
528
- == Settings
529
- --------------------------------------------------------------*/
530
- .wpr-settings-group:first-of-type {
531
- margin-top: 50px;
532
- }
533
-
534
- .wpr-settings-group {
535
- position: relative;
536
- width: 35%;
537
- background: #f9f9f9;
538
- padding: 30px;
539
- margin-bottom: 80px;
540
- -webkit-box-shadow: 1px 2px 3px rgba(0,0,0,0.1);
541
- box-shadow: 1px 2px 3px rgba(0,0,0,0.1);
542
- border-radius: 0 3px 3px 3px;
543
- }
544
-
545
- .wpr-settings-group-inner {
546
- position: relative;
547
- }
548
-
549
- .wpr-settings-group-title {
550
- position: absolute;
551
- top: 0;
552
- left: 0;
553
- -webkit-transform: translateY(-100%);
554
- -ms-transform: translateY(-100%);
555
- transform: translateY(-100%);
556
- padding: 10px 30px;
557
- background: #f9f9f9;
558
- margin: 0;
559
- -webkit-box-shadow: 0 -2px 3px rgba(0,0,0,0.05);
560
- box-shadow: 0 -2px 3px rgba(0,0,0,0.05);
561
- border-radius: 3px 3px 0 0;
562
- color: #6A4BFF;
563
- font-size: 14px;
564
- }
565
-
566
- .wpr-setting {
567
- margin-bottom: 20px;
568
- }
569
-
570
- .wpr-setting h4 {
571
- margin-bottom: 8px;
572
- }
573
-
574
- .wpr-setting input:not(input[type='checkbox']) {
575
- border: 1px solid #e8e8e8;
576
- width: 100%;
577
- padding: 5px 15px;
578
- }
579
-
580
- .wpr-setting input[type='checkbox'] {
581
- margin-right: 8px;
582
- }
583
-
584
- .wpr-settings .submit:first-of-type {
585
- margin-top: 0;
586
- padding-top: 0;
587
- margin-bottom: 70px;
588
- }
589
-
590
- .wp-picker-clear {
591
- width: 100px !important;
592
- }
593
-
594
- /*--------------------------------------------------------------
595
- == Conditions
596
- --------------------------------------------------------------*/
597
- .wpr-admin-popup-wrap {
598
- display: none;
599
- position: fixed;
600
- top: 0;
601
- left: 0;
602
- z-index: 9999;
603
- background-color: rgba(0, 0, 0, 0.6);
604
- width: 100%;
605
- height: 100%;
606
- }
607
-
608
- .wpr-admin-popup {
609
- display: -webkit-box;
610
- display: -ms-flexbox;
611
- display: flex;
612
- -ms-flex-pack: distribute;
613
- justify-content: space-around;
614
- -webkit-box-align: center;
615
- -ms-flex-align: center;
616
- align-items: center;
617
- -webkit-box-orient: vertical;
618
- -webkit-box-direction: normal;
619
- -ms-flex-direction: column;
620
- flex-direction: column;
621
- position: absolute;
622
- top: 50%;
623
- left: 50%;
624
- -webkit-transform: translate(-50%,-50%);
625
- -ms-transform: translate(-50%,-50%);
626
- transform: translate(-50%,-50%);
627
- width: 80%;
628
- max-width: 850px;
629
- padding: 70px 20px 20px 20px;
630
- background-color: #F1F3F5;
631
- }
632
-
633
-
634
- .wpr-admin-popup .close-popup {
635
- position: absolute;
636
- top: 10px;
637
- right: 15px;
638
- font-size: 26px;
639
- cursor: pointer;
640
- color: #59626a;
641
- }
642
-
643
- .wpr-conditions.wpr-tab-archive .global-condition-select,
644
- .wpr-conditions.wpr-tab-archive .singles-condition-select,
645
- .wpr-conditions.wpr-tab-product_archive .global-condition-select,
646
- .wpr-conditions.wpr-tab-product_archive .singles-condition-select,
647
- .wpr-conditions.wpr-tab-single .global-condition-select,
648
- .wpr-conditions.wpr-tab-single .archives-condition-select,
649
- .wpr-conditions.wpr-tab-product_single .global-condition-select,
650
- .wpr-conditions.wpr-tab-product_single .archives-condition-select {
651
- display: none !important;
652
- }
653
-
654
- .wpr-conditions-wrap.blog-posts .singles-condition-select option:nth-child(1),
655
- .wpr-conditions-wrap.blog-posts .singles-condition-select option:nth-child(2),
656
- .wpr-conditions-wrap.blog-posts .singles-condition-select option:nth-child(3) {
657
- /*display: none;*/
658
- }
659
-
660
- .wpr-conditions.wpr-tab-archive .archives-condition-select,
661
- .wpr-conditions.wpr-tab-product_archive .archives-condition-select,
662
- .wpr-conditions.wpr-tab-single .singles-condition-select,
663
- .wpr-conditions.wpr-tab-product_single .singles-condition-select {
664
- display: block !important;
665
- }
666
-
667
- .wpr-conditions-sample {
668
- display: none !important;
669
- }
670
-
671
- .wpr-conditions {
672
- position: relative;
673
- display: -webkit-box;
674
- display: -ms-flexbox;
675
- display: flex;
676
- -webkit-box-align: center;
677
- -ms-flex-align: center;
678
- align-items: center;
679
- margin-top: 10px;
680
- width: 600px;
681
- border-radius: 3px;
682
- border: 1px solid #e8e8e8;
683
- background: #fff;
684
- }
685
-
686
- .wpr-admin-popup header {
687
- margin-top: 0;
688
- margin-bottom: 20px;
689
- text-align: center;
690
- }
691
-
692
- .wpr-admin-popup header h2 {
693
- margin: 25px auto;
694
- font-size: 26px;
695
- color: #59626a;
696
- }
697
-
698
- .wpr-admin-popup header p {
699
- margin-top: 0;
700
- margin-bottom: 0;
701
- color: #7f8b96;
702
- }
703
-
704
- .wpr-conditions select {
705
- height: 35px;
706
- height: 100%;
707
- padding-top: 5px;
708
- padding-bottom: 5px;
709
- border-radius: 0;
710
- border: none;
711
- -webkit-box-flex: 1;
712
- -ms-flex-positive: 1;
713
- flex-grow: 1;
714
- border-right: 1px solid #e8e8e8 !important;
715
- background-size: 14px 14px;
716
- }
717
-
718
- span.wpr-add-conditions {
719
- margin-top: 30px;
720
- background: #A4AFB7;
721
- color: #fff;
722
- font-weight: 600;
723
- letter-spacing: 1px;
724
- text-transform: uppercase;
725
- padding: 8px 20px;
726
- border-radius: 3px;
727
- cursor: pointer;
728
- }
729
-
730
- span.wpr-add-conditions:hover {
731
- background: #848c92;
732
- }
733
-
734
- input.wpr-condition-input-ids {
735
- display: none;
736
- padding: 5px;
737
- outline: none;
738
- border: none;
739
- border-radius: 0;
740
- }
741
-
742
- input.wpr-condition-input-ids,
743
- .wpr-conditions select {
744
- -ms-flex-negative: 0;
745
- flex-shrink: 0;
746
- -webkit-box-flex: 1;
747
- -ms-flex-positive: 1;
748
- flex-grow: 1;
749
- max-width: none;
750
- border: none;
751
- -webkit-box-shadow: none !important;
752
- box-shadow: none !important;
753
- outline: none;
754
- margin: 0;
755
- text-indent: 5px;
756
- }
757
-
758
- .wpr-canvas-condition {
759
- display: none;
760
- margin-top: 20px;
761
- }
762
-
763
- .wpr-canvas-condition label {
764
- display: inline-block;
765
- }
766
-
767
- .wpr-canvas-condition span {
768
- margin-right: 20px;
769
- }
770
-
771
- #wpr-woo-products-per-page {
772
- width: 40px;
773
- border: 1px solid #e8e8e8;
774
- text-align: center;
775
- -webkit-box-shadow: none !important;
776
- box-shadow: none !important;
777
- margin-left: 10px;
778
- }
779
-
780
- .wpr-delete-template-conditions {
781
- margin-left: auto;
782
- position: absolute;
783
- right: -30px;
784
- color: #C2CBD2;
785
- font-size: 22px;
786
- cursor: pointer;
787
- }
788
-
789
- .wpr-delete-template-conditions:hover {
790
- color: #81868a;
791
- }
792
-
793
- .wpr-save-conditions {
794
- padding: 8px 20px;
795
- color: #fff;
796
- background: #6A4BFF;
797
- margin-left: auto;
798
- border-radius: 3px;
799
- margin-top: 80px;
800
- text-transform: uppercase;
801
- letter-spacing: 0.5px;
802
- font-weight: 600;
803
- cursor: pointer;
804
- }
805
-
806
- .wpr-user-template-popup {
807
- padding-top: 40px;
808
- }
809
-
810
- .wpr-user-template-popup header {
811
- margin-bottom: 27px;
812
- }
813
-
814
- .wpr-user-template-popup .wpr-create-template {
815
- padding: 11px 20px;
816
- margin: 25px auto;
817
- color: #fff;
818
- background: #6A4BFF;
819
- border-radius: 3px;
820
- cursor: pointer;
821
- }
822
-
823
- .wpr-user-template-popup p {
824
- max-width: 70%;
825
- margin: auto;
826
- }
827
-
828
- input.wpr-user-template-title {
829
- width: 350px;
830
- border: 1px solid #d1d1d1;
831
- padding: 5px 10px;
832
- border-radius: 3px;
833
- }
834
-
835
- input.wpr-user-template-title::-webkit-input-placeholder,
836
- input.wpr-condition-input-ids::-webkit-input-placeholder {
837
- color: #9a9a9a;
838
- }
839
-
840
- input.wpr-user-template-title::-moz-placeholder,
841
- input.wpr-condition-input-ids::-moz-placeholder {
842
- color: #9a9a9a;
843
- }
844
-
845
- input.wpr-user-template-title:-ms-input-placeholder,
846
- input.wpr-condition-input-ids:-ms-input-placeholder {
847
- color: #9a9a9a;
848
- }
849
-
850
- input.wpr-user-template-title::-ms-input-placeholder,
851
- input.wpr-condition-input-ids::-ms-input-placeholder {
852
- color: #9a9a9a;
853
- }
854
-
855
- input.wpr-user-template-title::-webkit-input-placeholder, input.wpr-condition-input-ids::-webkit-input-placeholder {
856
- color: #9a9a9a;
857
- }
858
-
859
- input.wpr-user-template-title::-moz-placeholder, input.wpr-condition-input-ids::-moz-placeholder {
860
- color: #9a9a9a;
861
- }
862
-
863
- input.wpr-user-template-title:-ms-input-placeholder, input.wpr-condition-input-ids:-ms-input-placeholder {
864
- color: #9a9a9a;
865
- }
866
-
867
- input.wpr-user-template-title::-ms-input-placeholder, input.wpr-condition-input-ids::-ms-input-placeholder {
868
- color: #9a9a9a;
869
- }
870
-
871
- input.wpr-user-template-title::placeholder,
872
- input.wpr-condition-input-ids::placeholder {
873
- color: #9a9a9a;
874
- }
875
-
876
- input.wpr-user-template-title:focus {
877
- border-color: #6A4BFF;
878
- -webkit-box-shadow: none;
879
- box-shadow: none;
880
- }
881
-
882
- /*--------------------------------------------------------------
883
- == White Label
884
- --------------------------------------------------------------*/
885
- .wpr-wl-tab-content {
886
- display: -webkit-box;
887
- display: -ms-flexbox;
888
- display: flex;
889
- -webkit-box-align: start;
890
- -ms-flex-align: start;
891
- align-items: flex-start;
892
- }
893
-
894
- .wpr-wl-tab-content .wpr-settings-group:last-of-type {
895
- margin-top: 50px;
896
- margin-left: 50px;
897
- }
898
-
899
- .wpr-setting-custom-img-upload div button {
900
- display: -webkit-box;
901
- display: -ms-flexbox;
902
- display: flex;
903
- -webkit-box-align: center;
904
- -ms-flex-align: center;
905
- align-items: center;
906
- margin-top: 10px;
907
- padding: 10px 20px;
908
- background: #ffffff;
909
- border: 1px solid #e8e8e8;
910
- border-radius: 3px;
911
- font-weight: bold;
912
- cursor: pointer;
913
- }
914
-
915
- .wpr-setting-custom-img-upload div button span {
916
- margin-left: 5px;
917
- }
918
-
919
- .wpr-setting-custom-img-upload div button img {
920
- width: 50px;
921
- }
922
-
923
- .wpr-setting-custom-ckbox h4 {
924
- display: -webkit-box;
925
- display: -ms-flexbox;
926
- display: flex;
927
- -webkit-box-orient: horizontal;
928
- -webkit-box-direction: normal;
929
- -ms-flex-direction: row;
930
- flex-direction: row;
931
- -webkit-box-pack: justify;
932
- -ms-flex-pack: justify;
933
- justify-content: space-between;
934
- }
935
-
936
- .wpr-setting-custom-ckbox label {
937
- background: #dddbdb;
938
- }
939
-
940
- .wpr-setting-custom-ckbox p {
941
- color: #a09f9f;
942
- }
943
-
944
- /*--------------------------------------------------------------
945
- == Freemius
946
- --------------------------------------------------------------*/
947
- #fs_connect {
948
- margin: 40px !important;
949
- width: 615px !important;
950
- border-top: 3px solid #2271B1 !important;
951
- }
952
-
953
- #fs_connect .fs-content {
954
- padding: 25px 20px 35px 20px !important;
955
- }
956
-
957
- #fs_connect .fs-visual {
958
- background: transparent !important;
959
- }
960
-
961
- #fs_connect .fs-visual .fs-site-icon,
962
- #fs_connect .fs-visual .fs-plugin-icon,
963
- #fs_connect .fs-visual .fs-connect-logo {
964
- top: 20px !important;
965
- }
966
-
967
- #fs_connect .fs-visual .fs-plugin-icon,
968
- #fs_connect .fs-visual .fs-connect-logo,
969
- #fs_connect .fs-visual .fs-site-icon {
970
- border: none !important;
971
- }
972
-
973
- #fs_connect .fs-visual .fs-site-icon i,
974
- #fs_connect .fs-visual img{
975
- overflow: hidden !important;
976
- border-radius: 100px !important;
977
- }
978
-
979
- #fs_connect .fs-actions {
980
- border-top: 1px solid #F2F2F2 !important;
981
- background: #F2F2F2 !important;
982
- }
983
-
984
- #fs_connect .fs-actions .button {
985
- font-size: 14px !important;
986
- }
987
-
988
- #fs_connect .fs-actions .button.button-secondary {
989
- padding: 0 25px !important;
990
- }
991
-
992
- #fs_connect .fs-permissions {
993
- margin-top: 20px !important;
994
- }
995
-
996
- #fs_connect .fs-permissions>.fs-trigger {
997
- -webkit-box-shadow: none !important;
998
- box-shadow: none !important;
999
- }
1000
-
1001
- #fs_connect .fs-permissions.fs-open ul {
1002
- margin: 30px 20px !important;
1003
- }
1004
-
1005
- #fs_connect .fs-permissions ul li {
1006
- margin-bottom: 20px !important;
1007
- }
1008
-
1009
- #fs_connect .fs-permissions ul li .fs-permission-description span {
1010
- font-size: 12px !important;
1011
- text-transform: capitalize !important;
1012
- }
1013
-
1014
- #fs_connect .fs-permissions ul li .fs-permission-description p {
1015
- font-size: 11px !important;
1016
- margin-top: 0 !important;
1017
- }
1018
-
1019
- #fs_connect .fs-license-key-container {
1020
- width: 100% !important;
1021
- margin-top: 20px;
1022
- }
1023
-
1024
- #pframe,
1025
- #fs_connect.require-license-key .fs-permissions,
1026
- #fs_connect.require-license-key .fs-terms,
1027
- #fs_connect .fs-freemium-licensing,
1028
- #license_issues_link {
1029
- display: none !important;
1030
- }
1031
-
1032
- /*--------------------------------------------------------------
1033
- == Settings: Pro Options
1034
- --------------------------------------------------------------*/
1035
- .wpr-settings-pro-overlay {
1036
- display: -webkit-box;
1037
- display: -ms-flexbox;
1038
- display: flex;
1039
- -webkit-box-orient: vertical;
1040
- -webkit-box-direction: normal;
1041
- -ms-flex-direction: column;
1042
- flex-direction: column;
1043
- -webkit-box-align: center;
1044
- -ms-flex-align: center;
1045
- align-items: center;
1046
- -webkit-box-pack: center;
1047
- -ms-flex-pack: center;
1048
- justify-content: center;
1049
- position: absolute;
1050
- top: 0;
1051
- left: 0;
1052
- width: 100%;
1053
- height: 100%;
1054
- background: rgba(0,0,0,0.4);
1055
- color: #f9f9f9;
1056
- font-size: 16px;
1057
- text-decoration: none;
1058
- text-transform: uppercase;
1059
- font-weight: bold;
1060
-
1061
- text-shadow: 1px 1px 1px #000;
1062
- -webkit-box-shadow: 1px 1px 15px rgba(0,0,0,0.3);
1063
- box-shadow: 1px 1px 15px rgba(0,0,0,0.3);
1064
- }
1065
-
1066
- .wpr-settings-pro-overlay:hover,
1067
- .wpr-settings-pro-overlay:focus{
1068
- color: #f9f9f9;
1069
- }
1070
-
1071
- .wpr-settings-pro-overlay .dashicons {
1072
- font-size: 50px;
1073
- line-height: 50px;
1074
- margin-bottom: 40px;
1075
- -webkit-transform: translateX(-50%);
1076
- -ms-transform: translateX(-50%);
1077
- transform: translateX(-50%);
1078
- }
1079
-
1080
- .wpr-settings-pro-overlay .dashicons:nth-child(2) {
1081
- display: none;
1082
- }
1083
-
1084
- .wpr-settings-pro-overlay:hover .dashicons:nth-child(2) {
1085
- display: block;
1086
- }
1087
-
1088
- .wpr-settings-pro-overlay:hover .dashicons:nth-child(1) {
1089
- display: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1090
  }
1
+ #wpwrap {
2
+ background: #fff;
3
+ }
4
+
5
+ #wpcontent {
6
+ padding: 0;
7
+ }
8
+
9
+ .wpr-settings-page-wrap {
10
+ margin: 0;
11
+ }
12
+
13
+ .wpr-settings-page-header {
14
+ display: -webkit-box;
15
+ display: -ms-flexbox;
16
+ display: flex;
17
+ -webkit-box-orient: vertical;
18
+ -webkit-box-direction: normal;
19
+ -ms-flex-direction: column;
20
+ flex-direction: column;
21
+ padding: 10px 30px 130px;
22
+ background: #f6f6f6
23
+ }
24
+
25
+ .wpr-settings-page-header h1,
26
+ .wpr-settings-page-header p,
27
+ .wpr-settings-page-header .wpr-preview-buttons,
28
+ .wpr-settings-page-header .wpr-user-template {
29
+ -webkit-box-ordinal-group: 3;
30
+ -ms-flex-order: 2;
31
+ order: 2;
32
+ }
33
+
34
+ .wpr-settings-page-header .wpr-options-button {
35
+ -ms-flex-item-align: start;
36
+ align-self: flex-start;
37
+ }
38
+
39
+ .button.wpr-options-button .dashicons {
40
+ line-height: 30px;
41
+ font-size: 16px;
42
+ }
43
+
44
+ .wpr-preview-buttons a:last-child,
45
+ .wpr-preview-buttons a.wpr-how-to-use-theme-builder {
46
+ background-color: transparent;
47
+ border: 2px solid #6A4BFF !important;
48
+ color: #6A4BFF;
49
+ padding: 5px 22px;
50
+ }
51
+
52
+ .wpr-preview-buttons a.wpr-how-to-use-woo-builder {
53
+ background-color: transparent !important;
54
+ border: 2px solid #96588a !important;
55
+ color: #96588a !important;
56
+ padding: 5px 22px;
57
+ }
58
+
59
+ .wpr-preview-buttons a.wpr-how-to-use-woo-builder:hover,
60
+ .wpr-preview-buttons a.wpr-how-to-use-woo-builder:focus {
61
+ color: #fff !important;
62
+ background: #96588a !important;
63
+ padding: 8px 22px !important;
64
+ }
65
+
66
+ .wpr-settings-page-header h1 {
67
+ font-size: 42px;
68
+ }
69
+
70
+ .wpr-settings-page-header p {
71
+ margin-top: 5px;
72
+ color: #5a5a5a;
73
+ font-size: 16px;
74
+ margin-bottom: 30px;
75
+ }
76
+
77
+ .wpr-user-template {
78
+ position: relative;
79
+ -webkit-box-sizing: border-box;
80
+ box-sizing: border-box;
81
+ overflow: hidden;
82
+ display: inline-block;
83
+ width: 220px;
84
+ height: 50px;
85
+ line-height: 50px;
86
+ padding: 0 20px;
87
+ color: #fff;
88
+ background: #6A4BFF;
89
+ font-size: 15px;
90
+ -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
91
+ box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
92
+ border-radius: 5px;
93
+ cursor: pointer;
94
+ }
95
+
96
+ .wpr-user-template .plus-icon {
97
+ float: right;
98
+ display: block;
99
+ width: 30px;
100
+ height: 30px;
101
+ line-height: 28px;
102
+ margin-top: 10px;
103
+ border-radius: 50%;
104
+ color: #333;
105
+ background-color: #fff;
106
+ font-size: 18px;
107
+ text-align: center;
108
+ }
109
+
110
+ .wpr-user-template > div {
111
+ position: absolute;
112
+ top: 0;
113
+ left: 0;
114
+ width: 100%;
115
+ height: 100%;
116
+ background: rgba(0,0,0,0.5);
117
+ }
118
+
119
+ .royal-addons_page_wpr-theme-builder .wpr-preview-buttons {
120
+ display: -webkit-box;
121
+ display: -ms-flexbox;
122
+ display: flex;
123
+ -webkit-box-orient: horizontal;
124
+ -webkit-box-direction: reverse;
125
+ -ms-flex-direction: row-reverse;
126
+ flex-direction: row-reverse;
127
+ }
128
+
129
+ .royal-addons_page_wpr-theme-builder .wpr-user-template {
130
+ margin-right: auto;
131
+ }
132
+
133
+ .wpr-settings-page {
134
+ padding: 0 30px;
135
+ }
136
+
137
+ .wpr-nav-tab-wrapper {
138
+ padding-top: 0;
139
+ border-bottom: 0;
140
+ -webkit-transform: translateY(-100%);
141
+ -ms-transform: translateY(-100%);
142
+ transform: translateY(-100%);
143
+ }
144
+
145
+ .wpr-nav-tab-wrapper a {
146
+ border: 0 !important;
147
+ padding: 13px 35px;
148
+ background-color: transparent;
149
+ font-size: 16px;
150
+ margin-left: 0;
151
+ margin-right: 15px;
152
+ border-radius: 3px 4px 0 0;
153
+ color: #333;
154
+ }
155
+
156
+ .wpr-nav-tab-wrapper a:hover {
157
+ color: #6A4BFF;
158
+ background: #fff;
159
+ }
160
+
161
+ .wpr-nav-tab-wrapper .nav-tab-active {
162
+ color: #6A4BFF;
163
+ background: #fff;
164
+ -webkit-box-shadow: 3px -2px 5px rgba(0,0,0,0.03);
165
+ box-shadow: 3px -2px 5px rgba(0,0,0,0.03);
166
+ }
167
+
168
+ .wpr-nav-tab-wrapper a:focus {
169
+ -webkit-box-shadow: none;
170
+ box-shadow: none;
171
+ }
172
+
173
+ .button.wpr-options-button {
174
+ padding: 7px 22px;
175
+ border: 0;
176
+ color: #fff;
177
+ background: #6A4BFF;
178
+ -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
179
+ box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
180
+ font-size: 14px;
181
+ }
182
+
183
+ .button.wpr-options-button:hover,
184
+ .button.wpr-options-button:focus {
185
+ color: #fff;
186
+ background: #6A4BFF;
187
+ border: none;
188
+ }
189
+
190
+ @media screen and (max-width: 1355px) {
191
+ .wpr-nav-tab-wrapper a {
192
+ padding: 13px 25px;
193
+ font-size: 14px;
194
+ }
195
+ }
196
+
197
+
198
+ /*--------------------------------------------------------------
199
+ == Elements
200
+ --------------------------------------------------------------*/
201
+ .wpr-elements-toggle {
202
+ overflow: hidden;
203
+ text-align: center;
204
+ }
205
+
206
+ .wpr-elements-toggle > div {
207
+ display: inline-block;
208
+ }
209
+
210
+ .wpr-elements-toggle h3 {
211
+ float: left;
212
+ font-size: 18px;
213
+ margin: 0 20px 0 0;
214
+ }
215
+
216
+ .wpr-elements-toggle p {
217
+ margin: 10px 0 60px 0;
218
+ }
219
+
220
+ .wpr-elements-heading {
221
+ text-align: center;
222
+ margin-bottom: 30px;
223
+ }
224
+
225
+ .wpr-elements-heading h3 {
226
+ font-size: 18px;
227
+ text-align: center;
228
+ margin-bottom: 0;
229
+ }
230
+
231
+ .wpr-elements-heading .wpr-install-activate-woocommerce {
232
+ color: red;
233
+ font-weight: 700;
234
+ }
235
+
236
+ .wpr-install-activate-woocommerce .dashicons {
237
+ font-size: 18px;
238
+ }
239
+
240
+ .wpr-woo-templates,
241
+ .wpr-elements {
242
+ display: -webkit-box;
243
+ display: -ms-flexbox;
244
+ display: flex;
245
+ -ms-flex-wrap: wrap;
246
+ flex-wrap: wrap;
247
+ width: 100%;
248
+ margin-bottom: 50px;
249
+ }
250
+
251
+ .wpr-woo-templates {
252
+ margin-bottom: 0;
253
+ }
254
+
255
+ .wpr-woo-template,
256
+ .wpr-element {
257
+ -webkit-box-sizing: border-box;
258
+ box-sizing: border-box;
259
+ position: relative;
260
+ width: 24%;
261
+ padding: 22px 30px;
262
+ margin-right: 1%;
263
+ margin-bottom: 20px;
264
+ -webkit-box-shadow: 0 0 15px rgba(0,0,0,0.05);
265
+ box-shadow: 0 0 15px rgba(0,0,0,0.05);
266
+ border-radius: 4px;
267
+ }
268
+
269
+ .wpr-woo-template {
270
+ width: 100%;
271
+ }
272
+
273
+ .wpr-woo-template-info {
274
+ display: -webkit-box;
275
+ display: -ms-flexbox;
276
+ display: flex;
277
+ -webkit-box-pack: justify;
278
+ -ms-flex-pack: justify;
279
+ justify-content: space-between;
280
+ margin-top: 10px;
281
+ }
282
+
283
+ .wpr-woo-template-info .wpr-woo-template-title {
284
+ display: -webkit-inline-box;
285
+ display: -ms-inline-flexbox;
286
+ display: inline-flex;
287
+ -webkit-box-orient: vertical;
288
+ -webkit-box-direction: normal;
289
+ -ms-flex-direction: column;
290
+ flex-direction: column;
291
+ }
292
+
293
+ .wpr-woo-template-title h3 {
294
+ font-weight: 600 !important;
295
+ font-size: 13px !important;
296
+ color: #3c434a !important;
297
+ }
298
+
299
+ .wpr-woo-template-title p {
300
+ margin: 0;
301
+ font-size: 12px;
302
+ }
303
+
304
+ .wpr-woo-template-info h4 {
305
+ font-size: 1em !important;
306
+ font-weight: 600 !important;
307
+ margin: 0;
308
+ }
309
+
310
+ .wpr-element-info h3 {
311
+ float: left;
312
+ margin: 0;
313
+ color: #3a3a3a;
314
+ font-size: 16px;
315
+ }
316
+
317
+ .wpr-woo-template-info label {
318
+ min-width: 45px;
319
+ }
320
+
321
+ .wpr-woo-template-info label,
322
+ .wpr-element-info label,
323
+ .wpr-elements-toggle label {
324
+ float: right;
325
+ }
326
+
327
+ .wpr-woo-template-info span,
328
+ .wpr-element-info span {
329
+ display: block;
330
+ margin-top: 3px;
331
+ color: #999;
332
+ font-style: normal;
333
+ font-size: 12px;
334
+ }
335
+
336
+ .wpr-woo-template-info a,
337
+ .wpr-element-info a {
338
+ display: block;
339
+ clear: both;
340
+ font-size: 12px;
341
+ -webkit-box-shadow: none !important;
342
+ box-shadow: none !important;
343
+ }
344
+
345
+ .wpr-woo-template-info input,
346
+ .wpr-element-info input,
347
+ .wpr-elements-toggle input,
348
+ .wpr-setting-custom-ckbox input {
349
+ position: absolute;
350
+ z-index: -1000;
351
+ left: -1000px;
352
+ overflow: hidden;
353
+ clip: rect(0 0 0 0);
354
+ height: 1px;
355
+ width: 1px;
356
+ margin: -1px;
357
+ padding: 0;
358
+ border: 0;
359
+ }
360
+
361
+ .wpr-woo-template-info label,
362
+ .wpr-element-info label,
363
+ .wpr-elements-toggle label,
364
+ .wpr-setting-custom-ckbox label {
365
+ position: relative;
366
+ display: block;
367
+ width: 45px;
368
+ height: 23px;
369
+ border-radius: 20px;
370
+ background: #e8e8e8;
371
+ cursor: pointer;
372
+ -webkit-touch-callout: none;
373
+ -webkit-user-select: none;
374
+ -moz-user-select: none;
375
+ -ms-user-select: none;
376
+ user-select: none;
377
+ -webkit-transition: all 0.2s ease-in;
378
+ -o-transition: all 0.2s ease-in;
379
+ transition: all 0.2s ease-in;
380
+ }
381
+
382
+ .wpr-woo-template-info input + label:after,
383
+ .wpr-element-info input + label:after,
384
+ .wpr-elements-toggle input + label:after,
385
+ .wpr-setting-custom-ckbox input + label:after {
386
+ content: ' ';
387
+ display: block;
388
+ position: absolute;
389
+ top: 3px;
390
+ left: 3px;
391
+ width: 17px;
392
+ height: 17px;
393
+ border-radius: 50%;
394
+ background: #fff;
395
+ -webkit-transition: all 0.2s ease-in;
396
+ -o-transition: all 0.2s ease-in;
397
+ transition: all 0.2s ease-in;
398
+ }
399
+
400
+ .wpr-woo-template-info input:checked + label,
401
+ .wpr-element-info input:checked + label,
402
+ .wpr-elements-toggle input:checked + label,
403
+ .wpr-setting-custom-ckbox input:checked + label {
404
+ background: #6A4BFF;
405
+ }
406
+
407
+ .wpr-woo-template-info input:checked + label:after,
408
+ .wpr-element-info input:checked + label:after,
409
+ .wpr-elements-toggle input:checked + label:after,
410
+ .wpr-setting-custom-ckbox input:checked + label:after {
411
+ left: 24px;
412
+ }
413
+
414
+ .wpr-new-element:before {
415
+ content: 'NEW';
416
+ position: absolute;
417
+ top: -10px;
418
+ left: 28px;
419
+ padding: 1px 7px;
420
+ color: #fff;
421
+ background-color: #f44;
422
+ border-radius: 3px;
423
+ font-size: 10px;
424
+ font-weight: bold;
425
+ letter-spacing: 1px;
426
+ }
427
+
428
+ .wpr-pro-element:before {
429
+ content: 'PRO';
430
+ position: absolute;
431
+ top: -10px;
432
+ left: 28px;
433
+ z-index: 10;
434
+ padding: 1px 7px;
435
+ color: #fff;
436
+ background-color: #f44;
437
+ border-radius: 3px;
438
+ font-size: 10px;
439
+ font-weight: bold;
440
+ letter-spacing: 1px;
441
+ }
442
+
443
+ .wpr-pro-element > a {
444
+ display: block;
445
+ position: absolute;
446
+ top: 0;
447
+ left: 0;
448
+ z-index: 1;
449
+ width: 100%;
450
+ height: 100%;
451
+ background: rgba(0,0,0,0.1);
452
+ }
453
+
454
+ /*--------------------------------------------------------------
455
+ == My Templates
456
+ --------------------------------------------------------------*/
457
+ .wpr-my-templates-list {
458
+ width: 65%;
459
+ }
460
+
461
+ @media screen and (max-width: 1400px) {
462
+ .wpr-my-templates-list {
463
+ width: 100%;
464
+ }
465
+ }
466
+
467
+ .wpr-activate-woo-notice,
468
+ .wpr-my-templates-list li {
469
+ overflow: hidden;
470
+ padding: 20px 35px;
471
+ margin-bottom: 15px;
472
+ -webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
473
+ box-shadow: 0 0 2px rgba(0,0,0,0.2);
474
+ }
475
+
476
+ .wpr-my-templates-list li h3 {
477
+ float: left;
478
+ margin: 0;
479
+ color: #555;
480
+ font-size: 16px;
481
+ line-height: 34px;
482
+ text-transform: capitalize;
483
+ }
484
+
485
+ .wpr-my-templates-list .wpr-action-buttons {
486
+ float: right;
487
+ }
488
+
489
+ .wpr-my-templates-list .wpr-template-conditions {
490
+ background: #b3b3b3;
491
+ }
492
+
493
+ .wpr-active-conditions-template .wpr-template-conditions {
494
+ background: #7a5ffd;
495
+ }
496
+
497
+ .wpr-my-templates-list .wpr-template-conditions:hover,
498
+ .wpr-active-conditions-template .wpr-template-conditions:hover {
499
+ background: #6A4BFF;
500
+ }
501
+
502
+ .wpr-my-templates-list .wpr-edit-template {
503
+ background: #646464;
504
+ }
505
+
506
+ .wpr-my-templates-list .wpr-edit-template:hover {
507
+ background: #535353;
508
+ }
509
+
510
+ .wpr-edit-template:focus {
511
+ -webkit-box-shadow: none !important;
512
+ box-shadow: none !important;
513
+ }
514
+
515
+ .wpr-my-templates-list .wpr-delete-template {
516
+ background: #ff5a4b;
517
+ }
518
+
519
+ .wpr-my-templates-list .wpr-delete-template:hover {
520
+ background: #FF4635;
521
+ }
522
+
523
+ .wpr-my-templates-list .wpr-action-buttons > * {
524
+ display: inline-block;
525
+ padding: 3px 20px;
526
+ margin-right: 10px;
527
+ border: 0;
528
+ letter-spacing: 0.5px;
529
+ }
530
+
531
+ .wpr-my-templates-list .wpr-action-buttons > *:last-child {
532
+ margin-right: 0;
533
+ }
534
+
535
+ .wpr-my-templates-list .wpr-action-buttons .dashicons {
536
+ font-size: 16px;
537
+ line-height: 30px;
538
+ }
539
+
540
+ .wpr-active-conditions-template {
541
+ border-left: 5px solid #6A4BFF;
542
+ background: #F6F7F7;
543
+ }
544
+
545
+ .wpr-my-templates-list .wpr-no-templates {
546
+ background: #fff !important;
547
+ }
548
+
549
+
550
+ /*--------------------------------------------------------------
551
+ == Settings
552
+ --------------------------------------------------------------*/
553
+ .wpr-settings-group:first-of-type {
554
+ margin-top: 50px;
555
+ }
556
+
557
+ .wpr-settings-group {
558
+ position: relative;
559
+ width: 35%;
560
+ background: #f9f9f9;
561
+ padding: 30px;
562
+ margin-bottom: 80px;
563
+ -webkit-box-shadow: 1px 2px 3px rgba(0,0,0,0.1);
564
+ box-shadow: 1px 2px 3px rgba(0,0,0,0.1);
565
+ border-radius: 0 3px 3px 3px;
566
+ }
567
+
568
+ .wpr-settings-group-inner {
569
+ position: relative;
570
+ }
571
+
572
+ .wpr-settings-group-title {
573
+ position: absolute;
574
+ top: 0;
575
+ left: 0;
576
+ -webkit-transform: translateY(-100%);
577
+ -ms-transform: translateY(-100%);
578
+ transform: translateY(-100%);
579
+ padding: 10px 30px;
580
+ background: #f9f9f9;
581
+ margin: 0;
582
+ -webkit-box-shadow: 0 -2px 3px rgba(0,0,0,0.05);
583
+ box-shadow: 0 -2px 3px rgba(0,0,0,0.05);
584
+ border-radius: 3px 3px 0 0;
585
+ color: #6A4BFF;
586
+ font-size: 14px;
587
+ }
588
+
589
+ .wpr-setting {
590
+ margin-bottom: 20px;
591
+ }
592
+
593
+ .wpr-setting h4 {
594
+ margin-bottom: 8px;
595
+ }
596
+
597
+ .wpr-setting input:not(input[type='checkbox']) {
598
+ border: 1px solid #e8e8e8;
599
+ width: 100%;
600
+ padding: 5px 15px;
601
+ }
602
+
603
+ .wpr-setting input[type='checkbox'] {
604
+ margin-right: 8px;
605
+ }
606
+
607
+ .wpr-settings .submit:first-of-type {
608
+ margin-top: 0;
609
+ padding-top: 0;
610
+ margin-bottom: 70px;
611
+ }
612
+
613
+ .wp-picker-clear {
614
+ width: 100px !important;
615
+ }
616
+
617
+ /*--------------------------------------------------------------
618
+ == Conditions
619
+ --------------------------------------------------------------*/
620
+ .wpr-admin-popup-wrap {
621
+ display: none;
622
+ position: fixed;
623
+ top: 0;
624
+ left: 0;
625
+ z-index: 9999;
626
+ background-color: rgba(0, 0, 0, 0.6);
627
+ width: 100%;
628
+ height: 100%;
629
+ }
630
+
631
+ .wpr-admin-popup {
632
+ display: -webkit-box;
633
+ display: -ms-flexbox;
634
+ display: flex;
635
+ -ms-flex-pack: distribute;
636
+ justify-content: space-around;
637
+ -webkit-box-align: center;
638
+ -ms-flex-align: center;
639
+ align-items: center;
640
+ -webkit-box-orient: vertical;
641
+ -webkit-box-direction: normal;
642
+ -ms-flex-direction: column;
643
+ flex-direction: column;
644
+ position: absolute;
645
+ top: 50%;
646
+ left: 50%;
647
+ -webkit-transform: translate(-50%,-50%);
648
+ -ms-transform: translate(-50%,-50%);
649
+ transform: translate(-50%,-50%);
650
+ width: 80%;
651
+ max-width: 850px;
652
+ padding: 70px 20px 20px 20px;
653
+ background-color: #F1F3F5;
654
+ }
655
+
656
+
657
+ .wpr-admin-popup .close-popup {
658
+ position: absolute;
659
+ top: 10px;
660
+ right: 15px;
661
+ font-size: 26px;
662
+ cursor: pointer;
663
+ color: #59626a;
664
+ }
665
+
666
+ .wpr-conditions.wpr-tab-archive .global-condition-select,
667
+ .wpr-conditions.wpr-tab-archive .singles-condition-select,
668
+ .wpr-conditions.wpr-tab-product_archive .global-condition-select,
669
+ .wpr-conditions.wpr-tab-product_archive .singles-condition-select,
670
+ .wpr-conditions.wpr-tab-single .global-condition-select,
671
+ .wpr-conditions.wpr-tab-single .archives-condition-select,
672
+ .wpr-conditions.wpr-tab-product_single .global-condition-select,
673
+ .wpr-conditions.wpr-tab-product_single .archives-condition-select {
674
+ display: none !important;
675
+ }
676
+
677
+ .wpr-conditions-wrap.blog-posts .singles-condition-select option:nth-child(1),
678
+ .wpr-conditions-wrap.blog-posts .singles-condition-select option:nth-child(2),
679
+ .wpr-conditions-wrap.blog-posts .singles-condition-select option:nth-child(3) {
680
+ /*display: none;*/
681
+ }
682
+
683
+ .wpr-conditions.wpr-tab-archive .archives-condition-select,
684
+ .wpr-conditions.wpr-tab-product_archive .archives-condition-select,
685
+ .wpr-conditions.wpr-tab-single .singles-condition-select,
686
+ .wpr-conditions.wpr-tab-product_single .singles-condition-select {
687
+ display: block !important;
688
+ }
689
+
690
+ .wpr-conditions-sample {
691
+ display: none !important;
692
+ }
693
+
694
+ .wpr-conditions {
695
+ position: relative;
696
+ display: -webkit-box;
697
+ display: -ms-flexbox;
698
+ display: flex;
699
+ -webkit-box-align: center;
700
+ -ms-flex-align: center;
701
+ align-items: center;
702
+ margin-top: 10px;
703
+ width: 600px;
704
+ border-radius: 3px;
705
+ border: 1px solid #e8e8e8;
706
+ background: #fff;
707
+ }
708
+
709
+ .wpr-admin-popup header {
710
+ margin-top: 0;
711
+ margin-bottom: 20px;
712
+ text-align: center;
713
+ }
714
+
715
+ .wpr-admin-popup header h2 {
716
+ margin: 25px auto;
717
+ font-size: 26px;
718
+ color: #59626a;
719
+ }
720
+
721
+ .wpr-admin-popup header p {
722
+ margin-top: 0;
723
+ margin-bottom: 0;
724
+ color: #7f8b96;
725
+ }
726
+
727
+ .wpr-conditions select {
728
+ height: 35px;
729
+ height: 100%;
730
+ padding-top: 5px;
731
+ padding-bottom: 5px;
732
+ border-radius: 0;
733
+ border: none;
734
+ -webkit-box-flex: 1;
735
+ -ms-flex-positive: 1;
736
+ flex-grow: 1;
737
+ border-right: 1px solid #e8e8e8 !important;
738
+ background-size: 14px 14px;
739
+ }
740
+
741
+ span.wpr-add-conditions {
742
+ margin-top: 30px;
743
+ background: #A4AFB7;
744
+ color: #fff;
745
+ font-weight: 600;
746
+ letter-spacing: 1px;
747
+ text-transform: uppercase;
748
+ padding: 8px 20px;
749
+ border-radius: 3px;
750
+ cursor: pointer;
751
+ }
752
+
753
+ span.wpr-add-conditions:hover {
754
+ background: #848c92;
755
+ }
756
+
757
+ input.wpr-condition-input-ids {
758
+ display: none;
759
+ padding: 5px;
760
+ outline: none;
761
+ border: none;
762
+ border-radius: 0;
763
+ }
764
+
765
+ input.wpr-condition-input-ids,
766
+ .wpr-conditions select {
767
+ -ms-flex-negative: 0;
768
+ flex-shrink: 0;
769
+ -webkit-box-flex: 1;
770
+ -ms-flex-positive: 1;
771
+ flex-grow: 1;
772
+ max-width: none;
773
+ border: none;
774
+ -webkit-box-shadow: none !important;
775
+ box-shadow: none !important;
776
+ outline: none;
777
+ margin: 0;
778
+ text-indent: 5px;
779
+ }
780
+
781
+ .wpr-canvas-condition {
782
+ display: none;
783
+ margin-top: 20px;
784
+ }
785
+
786
+ .wpr-canvas-condition label {
787
+ display: inline-block;
788
+ }
789
+
790
+ .wpr-canvas-condition span {
791
+ margin-right: 20px;
792
+ }
793
+
794
+ #wpr-woo-products-per-page {
795
+ width: 40px;
796
+ border: 1px solid #e8e8e8;
797
+ text-align: center;
798
+ -webkit-box-shadow: none !important;
799
+ box-shadow: none !important;
800
+ margin-left: 10px;
801
+ }
802
+
803
+ .wpr-delete-template-conditions {
804
+ margin-left: auto;
805
+ position: absolute;
806
+ right: -30px;
807
+ color: #C2CBD2;
808
+ font-size: 22px;
809
+ cursor: pointer;
810
+ }
811
+
812
+ .wpr-delete-template-conditions:hover {
813
+ color: #81868a;
814
+ }
815
+
816
+ .wpr-save-conditions {
817
+ padding: 8px 20px;
818
+ color: #fff;
819
+ background: #6A4BFF;
820
+ margin-left: auto;
821
+ border-radius: 3px;
822
+ margin-top: 80px;
823
+ text-transform: uppercase;
824
+ letter-spacing: 0.5px;
825
+ font-weight: 600;
826
+ cursor: pointer;
827
+ }
828
+
829
+ .wpr-user-template-popup {
830
+ padding-top: 40px;
831
+ }
832
+
833
+ .wpr-user-template-popup header {
834
+ margin-bottom: 27px;
835
+ }
836
+
837
+ .wpr-user-template-popup .wpr-create-template {
838
+ padding: 11px 20px;
839
+ margin: 25px auto;
840
+ color: #fff;
841
+ background: #6A4BFF;
842
+ border-radius: 3px;
843
+ cursor: pointer;
844
+ }
845
+
846
+ .wpr-user-template-popup p {
847
+ max-width: 70%;
848
+ margin: auto;
849
+ }
850
+
851
+ input.wpr-user-template-title {
852
+ width: 350px;
853
+ border: 1px solid #d1d1d1;
854
+ padding: 5px 10px;
855
+ border-radius: 3px;
856
+ }
857
+
858
+ input.wpr-user-template-title::-webkit-input-placeholder,
859
+ input.wpr-condition-input-ids::-webkit-input-placeholder {
860
+ color: #9a9a9a;
861
+ }
862
+
863
+ input.wpr-user-template-title::-moz-placeholder,
864
+ input.wpr-condition-input-ids::-moz-placeholder {
865
+ color: #9a9a9a;
866
+ }
867
+
868
+ input.wpr-user-template-title:-ms-input-placeholder,
869
+ input.wpr-condition-input-ids:-ms-input-placeholder {
870
+ color: #9a9a9a;
871
+ }
872
+
873
+ input.wpr-user-template-title::-ms-input-placeholder,
874
+ input.wpr-condition-input-ids::-ms-input-placeholder {
875
+ color: #9a9a9a;
876
+ }
877
+
878
+ input.wpr-user-template-title::-webkit-input-placeholder, input.wpr-condition-input-ids::-webkit-input-placeholder {
879
+ color: #9a9a9a;
880
+ }
881
+
882
+ input.wpr-user-template-title::-moz-placeholder, input.wpr-condition-input-ids::-moz-placeholder {
883
+ color: #9a9a9a;
884
+ }
885
+
886
+ input.wpr-user-template-title:-ms-input-placeholder, input.wpr-condition-input-ids:-ms-input-placeholder {
887
+ color: #9a9a9a;
888
+ }
889
+
890
+ input.wpr-user-template-title::-ms-input-placeholder, input.wpr-condition-input-ids::-ms-input-placeholder {
891
+ color: #9a9a9a;
892
+ }
893
+
894
+ input.wpr-user-template-title::placeholder,
895
+ input.wpr-condition-input-ids::placeholder {
896
+ color: #9a9a9a;
897
+ }
898
+
899
+ input.wpr-user-template-title:focus {
900
+ border-color: #6A4BFF;
901
+ -webkit-box-shadow: none;
902
+ box-shadow: none;
903
+ }
904
+
905
+ /*--------------------------------------------------------------
906
+ == White Label
907
+ --------------------------------------------------------------*/
908
+ .wpr-wl-tab-content {
909
+ display: -webkit-box;
910
+ display: -ms-flexbox;
911
+ display: flex;
912
+ -webkit-box-align: start;
913
+ -ms-flex-align: start;
914
+ align-items: flex-start;
915
+ }
916
+
917
+ .wpr-wl-tab-content .wpr-settings-group:last-of-type {
918
+ margin-top: 50px;
919
+ margin-left: 50px;
920
+ }
921
+
922
+ .wpr-setting-custom-img-upload div button {
923
+ display: -webkit-box;
924
+ display: -ms-flexbox;
925
+ display: flex;
926
+ -webkit-box-align: center;
927
+ -ms-flex-align: center;
928
+ align-items: center;
929
+ margin-top: 10px;
930
+ padding: 10px 20px;
931
+ background: #ffffff;
932
+ border: 1px solid #e8e8e8;
933
+ border-radius: 3px;
934
+ font-weight: bold;
935
+ cursor: pointer;
936
+ }
937
+
938
+ .wpr-setting-custom-img-upload div button span {
939
+ margin-left: 5px;
940
+ }
941
+
942
+ .wpr-setting-custom-img-upload div button img {
943
+ width: 50px;
944
+ }
945
+
946
+ .wpr-setting-custom-ckbox h4 {
947
+ display: -webkit-box;
948
+ display: -ms-flexbox;
949
+ display: flex;
950
+ -webkit-box-orient: horizontal;
951
+ -webkit-box-direction: normal;
952
+ -ms-flex-direction: row;
953
+ flex-direction: row;
954
+ -webkit-box-pack: justify;
955
+ -ms-flex-pack: justify;
956
+ justify-content: space-between;
957
+ }
958
+
959
+ .wpr-setting-custom-ckbox label {
960
+ background: #dddbdb;
961
+ }
962
+
963
+ .wpr-setting-custom-ckbox p {
964
+ color: #a09f9f;
965
+ }
966
+
967
+ /*--------------------------------------------------------------
968
+ == Freemius
969
+ --------------------------------------------------------------*/
970
+ #fs_connect {
971
+ margin: 40px !important;
972
+ width: 615px !important;
973
+ border-top: 3px solid #2271B1 !important;
974
+ }
975
+
976
+ #fs_connect .fs-content {
977
+ padding: 25px 20px 35px 20px !important;
978
+ }
979
+
980
+ #fs_connect .fs-visual {
981
+ background: transparent !important;
982
+ }
983
+
984
+ #fs_connect .fs-visual .fs-site-icon,
985
+ #fs_connect .fs-visual .fs-plugin-icon,
986
+ #fs_connect .fs-visual .fs-connect-logo {
987
+ top: 20px !important;
988
+ }
989
+
990
+ #fs_connect .fs-visual .fs-plugin-icon,
991
+ #fs_connect .fs-visual .fs-connect-logo,
992
+ #fs_connect .fs-visual .fs-site-icon {
993
+ border: none !important;
994
+ }
995
+
996
+ #fs_connect .fs-visual .fs-site-icon i,
997
+ #fs_connect .fs-visual img{
998
+ overflow: hidden !important;
999
+ border-radius: 100px !important;
1000
+ }
1001
+
1002
+ #fs_connect .fs-actions {
1003
+ border-top: 1px solid #F2F2F2 !important;
1004
+ background: #F2F2F2 !important;
1005
+ }
1006
+
1007
+ #fs_connect .fs-actions .button {
1008
+ font-size: 14px !important;
1009
+ }
1010
+
1011
+ #fs_connect .fs-actions .button.button-secondary {
1012
+ padding: 0 25px !important;
1013
+ }
1014
+
1015
+ #fs_connect .fs-permissions {
1016
+ margin-top: 20px !important;
1017
+ }
1018
+
1019
+ #fs_connect .fs-permissions>.fs-trigger {
1020
+ -webkit-box-shadow: none !important;
1021
+ box-shadow: none !important;
1022
+ }
1023
+
1024
+ #fs_connect .fs-permissions.fs-open ul {
1025
+ margin: 30px 20px !important;
1026
+ }
1027
+
1028
+ #fs_connect .fs-permissions ul li {
1029
+ margin-bottom: 20px !important;
1030
+ }
1031
+
1032
+ #fs_connect .fs-permissions ul li .fs-permission-description span {
1033
+ font-size: 12px !important;
1034
+ text-transform: capitalize !important;
1035
+ }
1036
+
1037
+ #fs_connect .fs-permissions ul li .fs-permission-description p {
1038
+ font-size: 11px !important;
1039
+ margin-top: 0 !important;
1040
+ }
1041
+
1042
+ #fs_connect .fs-license-key-container {
1043
+ width: 100% !important;
1044
+ margin-top: 20px;
1045
+ }
1046
+
1047
+ #pframe,
1048
+ #fs_connect.require-license-key .fs-permissions,
1049
+ #fs_connect.require-license-key .fs-terms,
1050
+ #fs_connect .fs-freemium-licensing,
1051
+ #license_issues_link {
1052
+ display: none !important;
1053
+ }
1054
+
1055
+ /*--------------------------------------------------------------
1056
+ == Settings: Pro Options
1057
+ --------------------------------------------------------------*/
1058
+ .wpr-settings-pro-overlay {
1059
+ display: -webkit-box;
1060
+ display: -ms-flexbox;
1061
+ display: flex;
1062
+ -webkit-box-orient: vertical;
1063
+ -webkit-box-direction: normal;
1064
+ -ms-flex-direction: column;
1065
+ flex-direction: column;
1066
+ -webkit-box-align: center;
1067
+ -ms-flex-align: center;
1068
+ align-items: center;
1069
+ -webkit-box-pack: center;
1070
+ -ms-flex-pack: center;
1071
+ justify-content: center;
1072
+ position: absolute;
1073
+ top: 0;
1074
+ left: 0;
1075
+ width: 100%;
1076
+ height: 100%;
1077
+ background: rgba(0,0,0,0.4);
1078
+ color: #f9f9f9;
1079
+ font-size: 16px;
1080
+ text-decoration: none;
1081
+ text-transform: uppercase;
1082
+ font-weight: bold;
1083
+
1084
+ text-shadow: 1px 1px 1px #000;
1085
+ -webkit-box-shadow: 1px 1px 15px rgba(0,0,0,0.3);
1086
+ box-shadow: 1px 1px 15px rgba(0,0,0,0.3);
1087
+ }
1088
+
1089
+ .wpr-settings-pro-overlay:hover,
1090
+ .wpr-settings-pro-overlay:focus{
1091
+ color: #f9f9f9;
1092
+ }
1093
+
1094
+ .wpr-settings-pro-overlay .dashicons {
1095
+ font-size: 50px;
1096
+ line-height: 50px;
1097
+ margin-bottom: 40px;
1098
+ -webkit-transform: translateX(-50%);
1099
+ -ms-transform: translateX(-50%);
1100
+ transform: translateX(-50%);
1101
+ }
1102
+
1103
+ .wpr-settings-pro-overlay .dashicons:nth-child(2) {
1104
+ display: none;
1105
+ }
1106
+
1107
+ .wpr-settings-pro-overlay:hover .dashicons:nth-child(2) {
1108
+ display: block;
1109
+ }
1110
+
1111
+ .wpr-settings-pro-overlay:hover .dashicons:nth-child(1) {
1112
+ display: none;
1113
+ }.example {
1114
+ display: -ms-grid;
1115
+ display: grid;
1116
+ -webkit-transition: all .5s;
1117
+ -o-transition: all .5s;
1118
+ transition: all .5s;
1119
+ -webkit-user-select: none;
1120
+ -moz-user-select: none;
1121
+ -ms-user-select: none;
1122
+ user-select: none;
1123
+ background: -webkit-gradient(linear, left top, left bottom, from(white), to(black));
1124
+ background: -o-linear-gradient(top, white, black);
1125
+ background: linear-gradient(to bottom, white, black);
1126
  }
assets/css/admin/premade-blocks.css CHANGED
@@ -1,437 +1,437 @@
1
- #wpcontent {
2
- padding: 0;
3
- }
4
-
5
- .wpr-settings-page-header {
6
- padding: 10px 30px 30px;
7
- }
8
-
9
- .wpr-settings-page-header h1 {
10
- font-size: 42px;
11
- }
12
-
13
- .wpr-settings-page-header p {
14
- margin-top: 5px;
15
- color: #5a5a5a;
16
- font-size: 16px;
17
- margin-bottom: 30px;
18
- }
19
-
20
- .wpr-premade-blocks-tutorial {
21
- display: inline-block;
22
- margin-left: 45px;
23
- padding: 9px 25px;
24
- border: 0;
25
- color: #fff;
26
- background: #6A4BFF;
27
- -webkit-box-shadow: 2px 2px 5px rgb(0 0 0 / 30%);
28
- box-shadow: 2px 2px 5px rgb(0 0 0 / 30%);
29
- font-size: 14px;
30
- text-decoration: none;
31
- border-radius: 3px;
32
- }
33
-
34
- .wpr-premade-blocks-tutorial:hover,
35
- .wpr-premade-blocks-tutorial:focus {
36
- color: #fff;
37
- background: #5a39fb;
38
- }
39
-
40
- .wpr-tplib-content-wrap {
41
- }
42
-
43
- .wpr-tplib-sidebar {
44
- padding: 30px;
45
- display: -webkit-box;
46
- display: -ms-flexbox;
47
- display: flex;
48
- }
49
-
50
- .wpr-tplib-sidebar .wpr-tplib-search {
51
- display: none;
52
- position: relative;
53
- margin: 30px 0;
54
- }
55
-
56
- .wpr-tplib-sidebar .wpr-tplib-search i {
57
- position: absolute;
58
- top: 50%;
59
- right: 10px;
60
- font-size: 12px;
61
- -webkit-transform: translateY(-50%);
62
- -ms-transform: translateY(-50%);
63
- transform: translateY(-50%);
64
- }
65
-
66
- .wpr-tplib-sidebar .wpr-tplib-search input {
67
- width: 100%;
68
- padding: 8px 10px;
69
- border: 0;
70
- border-bottom: 1px solid #efefef;
71
- }
72
-
73
- .wpr-tplib-sidebar .wpr-tplib-search input::-webkit-input-placeholder {
74
- color: #9a9a9a;
75
- }
76
-
77
- .wpr-tplib-sidebar .wpr-tplib-search input::-moz-placeholder {
78
- color: #9a9a9a;
79
- }
80
-
81
- .wpr-tplib-sidebar .wpr-tplib-search input:-ms-input-placeholder {
82
- color: #9a9a9a;
83
- }
84
-
85
- .wpr-tplib-sidebar .wpr-tplib-search input::-ms-input-placeholder {
86
- color: #9a9a9a;
87
- }
88
-
89
- .wpr-tplib-sidebar .wpr-tplib-search input::placeholder {
90
- color: #9a9a9a;
91
- }
92
-
93
- .wpr-tplib-filters-wrap {
94
- display: -webkit-box;
95
- display: -ms-flexbox;
96
- display: flex;
97
- }
98
-
99
- .wpr-tplib-sub-filters {
100
- display: none;
101
- margin-left: 20px;
102
- }
103
-
104
- .wpr-tplib-sub-filters ul {
105
- display: -webkit-box;
106
- display: -ms-flexbox;
107
- display: flex;
108
- }
109
-
110
- .wpr-tplib-sub-filters ul li {
111
- padding: 10px 25px;
112
- margin-right: 7px;
113
- line-height: 15px;
114
- font-size: 13px;
115
- font-weight: normal;
116
- background: #fff;
117
- -webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
118
- box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
119
- cursor: pointer;
120
- border-radius: 3px;
121
- }
122
-
123
- .wpr-tplib-sub-filters ul li:hover,
124
- .wpr-tplib-sub-filters ul .wpr-tplib-activ-filter {
125
- background: #6A4BFF;
126
- color: #fff;
127
- }
128
-
129
- .wpr-tplib-filters {
130
- -webkit-box-sizing: border-box;
131
- box-sizing: border-box;
132
- display: -webkit-box;
133
- display: -ms-flexbox;
134
- display: flex;
135
- -webkit-box-orient: vertical;
136
- -webkit-box-direction: normal;
137
- -ms-flex-direction: column;
138
- flex-direction: column;
139
- -webkit-box-align: start;
140
- -ms-flex-align: start;
141
- align-items: flex-start;
142
- position: relative;
143
- width: 200px;
144
- font-size: 14px;
145
- font-weight: normal;
146
- font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
147
- color: #6d7882;
148
- }
149
-
150
- .wpr-tplib-filters h3 {
151
- display: -webkit-box;
152
- display: -ms-flexbox;
153
- display: flex;
154
- width: 100%;
155
- padding: 10px 15px;
156
- margin: 0;
157
- font-size: 13px;
158
- font-weight: normal;
159
- font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
160
- background: #fff;
161
- -webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
162
- box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
163
- cursor: pointer;
164
- border-radius: 3px;
165
- }
166
-
167
- .wpr-tplib-filters h3 span {
168
- width: 100%;
169
- }
170
-
171
- .wpr-tplib-filters h3 i.fa-angle-down:before {
172
- content: "\f347";
173
- font-family: dashicons;
174
- line-height: 18px;
175
- font-weight: 400;
176
- font-style: normal;
177
- speak: never;
178
- text-decoration: inherit;
179
- text-transform: none;
180
- text-rendering: auto;
181
- -webkit-font-smoothing: antialiased;
182
- -moz-osx-font-smoothing: grayscale;
183
- font-size: 15px;
184
- vertical-align: top;
185
- text-align: center;
186
- }
187
-
188
- .wpr-tplib-filters-list {
189
- visibility: hidden;
190
- opacity: 0;
191
- position: absolute;
192
- top: 38px;
193
- z-index: 999;
194
- width: 700px;
195
- padding: 20px 30px;
196
- background: #fff;
197
- -webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
198
- box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
199
- -webkit-transition: all 0.2s ease-in;
200
- -o-transition: all 0.2s ease-in;
201
- transition: all 0.2s ease-in;
202
- border-radius: 3px;
203
- }
204
-
205
- .wpr-tplib-filters-list ul {
206
- display: -webkit-box;
207
- display: -ms-flexbox;
208
- display: flex;
209
- -ms-flex-wrap: wrap;
210
- flex-wrap: wrap;
211
- margin-top: 0;
212
- }
213
-
214
- .wpr-tplib-filters-list ul li {
215
- -webkit-box-sizing: border-box;
216
- box-sizing: border-box;
217
- width: 25%;
218
- padding: 12px;
219
- color: #6d7882;
220
- background: #fff;
221
- font-size: 13px;
222
- line-height: 1;
223
- cursor: pointer;
224
- }
225
-
226
- .wpr-tplib-filters-list ul li:hover {
227
- background: #f9f9f9;
228
- color: #222;
229
- }
230
-
231
- .wpr-tplib-template-gird {
232
- overflow: auto;
233
- margin-left: -10px;
234
- padding: 0 30px;
235
- }
236
-
237
- .elementor-clearfix:after {
238
- content: '';
239
- display: block;
240
- clear: both;
241
- width: 0;
242
- height: 0;
243
- }
244
-
245
- .wpr-tplib-template-wrap {
246
- position: relative;
247
- float: left;
248
- overflow: hidden;
249
- width: 18.5%;
250
- margin: 10px;
251
- border-radius: 3px;
252
- -webkit-box-shadow: 0 1px 20px 0 rgba(0,0,0,0.07);
253
- box-shadow: 0 1px 20px 0 rgba(0,0,0,0.07);
254
- }
255
-
256
- .wpr-tplib-template-wrap:not(.wpr-tplib-pro-active):before {
257
- content: 'Free';
258
- display: block;
259
- position: absolute;
260
- top: 10px;
261
- right: 10px;
262
- z-index: 1;
263
- width: 45px;
264
- padding: 4px;
265
- font-size: 11px;
266
- font-weight: bold;
267
- letter-spacing: 0.3px;
268
- text-transform: uppercase;
269
- text-align: center;
270
- background: #555;
271
- color: #fff;
272
- -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.3);
273
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.3);
274
- border-radius: 3px;
275
- }
276
-
277
- .wpr-tplib-pro-wrap:not(.wpr-tplib-pro-active):before {
278
- content: 'Pro';
279
- background: #6A4BFF;
280
- }
281
-
282
- @media screen and ( max-width: 1364px ) {
283
- .wpr-tplib-template-wrap {
284
- width: 23%;
285
- }
286
- }
287
-
288
- .wpr-tplib-template {
289
- }
290
-
291
- .wpr-tplib-insert-template:not(.wpr-tplib-insert-pro) {
292
- display: none;
293
- }
294
-
295
- .wpr-tplib-template-wrap:hover .wpr-tplib-insert-pro {
296
- opacity: 1;
297
- visibility: visible;
298
- }
299
-
300
- .wpr-tplib-template-media {
301
- position: relative;
302
- background-color: #e8e8e8;
303
- }
304
-
305
- .wpr-tplib-template-media img {
306
- display: block;
307
- width: 100%;
308
- max-width: 100%;
309
- height: auto;
310
- }
311
-
312
- .wpr-tplib-template-media:hover .wpr-tplib-template-media-overlay {
313
- opacity: 1;
314
- }
315
-
316
- .wpr-tplib-template-media-overlay {
317
- opacity: 0;
318
- position: absolute;
319
- top: 0;
320
- left: 0;
321
- width: 100%;
322
- height: 100%;
323
- background-color: rgba(0, 0, 0, 0.5);
324
- color: #fff;
325
- cursor: pointer;
326
- -webkit-transition: opacity 0.1s ease-in;
327
- -o-transition: opacity 0.1s ease-in;
328
- transition: opacity 0.1s ease-in;
329
- }
330
-
331
- .wpr-tplib-template-media-overlay i {
332
- position: absolute;
333
- top: 50%;
334
- left: 50%;
335
- -webkit-transform: translate(-50%, -50%);
336
- -ms-transform: translate(-50%, -50%);
337
- transform: translate(-50%, -50%);
338
- font-size: 25px;
339
- }
340
-
341
- .wpr-tplib-preview-wrap {
342
- display: none;
343
- }
344
-
345
- .wpr-tplib-image {
346
- display: -webkit-box;
347
- display: -ms-flexbox;
348
- display: flex;
349
- -webkit-box-pack: center;
350
- -ms-flex-pack: center;
351
- justify-content: center;
352
- padding: 20px;
353
- }
354
-
355
- .wpr-tplib-iframe {
356
- position: relative;
357
- padding-top: 56.25%;
358
- }
359
-
360
- .wpr-tplib-iframe iframe {
361
- position: absolute;
362
- top: 0;
363
- left: 0;
364
- width: 100%;
365
- height: 100%;
366
- border: none;
367
- }
368
-
369
- .wpr-tplib-template-footer {
370
- display: -webkit-box;
371
- display: -ms-flexbox;
372
- display: flex;
373
- -webkit-box-orient: vertical;
374
- -webkit-box-direction: normal;
375
- -ms-flex-flow: column wrap;
376
- flex-flow: column wrap;
377
- -ms-flex-line-pack: justify;
378
- align-content: space-between;
379
- -webkit-box-pack: center;
380
- -ms-flex-pack: center;
381
- justify-content: center;
382
- height: 45px;
383
- padding: 5px 15px;
384
- background-color: #fff;
385
- border-top: 1px solid #efefef;
386
- }
387
-
388
- .wpr-tplib-template-footer h3 {
389
- overflow: hidden;
390
- color: #6d7882;
391
- font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
392
- font-size: 13px;
393
- font-weight: normal;
394
- white-space: nowrap;
395
- -o-text-overflow: ellipsis;
396
- text-overflow: ellipsis;
397
- }
398
-
399
- .wpr-tplib-template-footer .wpr-tplib-insert-template {
400
- opacity: 0;
401
- visibility: hidden;
402
- padding: 6px 10px;
403
- color: #fff;
404
- background-color: #6A4BFF;
405
- font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
406
- font-size: 13px;
407
- line-height: 1;
408
- letter-spacing: 0.3px;
409
- border-radius: 3px;
410
- cursor: pointer;
411
- -webkit-transition: all 0.1s ease-in;
412
- -o-transition: all 0.1s ease-in;
413
- transition: all 0.1s ease-in;
414
- }
415
-
416
-
417
- #masonry-effect {
418
- display: -webkit-box;
419
- display: -ms-flexbox;
420
- display: flex;
421
- -webkit-box-orient: horizontal;
422
- -webkit-box-direction: normal;
423
- -ms-flex-direction: row;
424
- flex-direction: row;
425
- -ms-flex-wrap: wrap;
426
- flex-wrap: wrap;
427
- }
428
- .item {
429
- -webkit-box-sizing: border-box;
430
- box-sizing: border-box;
431
- -webkit-box-orient: vertical;
432
- -webkit-box-direction: normal;
433
- -ms-flex-direction: column;
434
- flex-direction: column;
435
- position: relative;
436
- width: calc(33.3%);
437
  }
1
+ #wpcontent {
2
+ padding: 0;
3
+ }
4
+
5
+ .wpr-settings-page-header {
6
+ padding: 10px 30px 30px;
7
+ }
8
+
9
+ .wpr-settings-page-header h1 {
10
+ font-size: 42px;
11
+ }
12
+
13
+ .wpr-settings-page-header p {
14
+ margin-top: 5px;
15
+ color: #5a5a5a;
16
+ font-size: 16px;
17
+ margin-bottom: 30px;
18
+ }
19
+
20
+ .wpr-premade-blocks-tutorial {
21
+ display: inline-block;
22
+ margin-left: 45px;
23
+ padding: 9px 25px;
24
+ border: 0;
25
+ color: #fff;
26
+ background: #6A4BFF;
27
+ -webkit-box-shadow: 2px 2px 5px rgb(0 0 0 / 30%);
28
+ box-shadow: 2px 2px 5px rgb(0 0 0 / 30%);
29
+ font-size: 14px;
30
+ text-decoration: none;
31
+ border-radius: 3px;
32
+ }
33
+
34
+ .wpr-premade-blocks-tutorial:hover,
35
+ .wpr-premade-blocks-tutorial:focus {
36
+ color: #fff;
37
+ background: #5a39fb;
38
+ }
39
+
40
+ .wpr-tplib-content-wrap {
41
+ }
42
+
43
+ .wpr-tplib-sidebar {
44
+ padding: 30px;
45
+ display: -webkit-box;
46
+ display: -ms-flexbox;
47
+ display: flex;
48
+ }
49
+
50
+ .wpr-tplib-sidebar .wpr-tplib-search {
51
+ display: none;
52
+ position: relative;
53
+ margin: 30px 0;
54
+ }
55
+
56
+ .wpr-tplib-sidebar .wpr-tplib-search i {
57
+ position: absolute;
58
+ top: 50%;
59
+ right: 10px;
60
+ font-size: 12px;
61
+ -webkit-transform: translateY(-50%);
62
+ -ms-transform: translateY(-50%);
63
+ transform: translateY(-50%);
64
+ }
65
+
66
+ .wpr-tplib-sidebar .wpr-tplib-search input {
67
+ width: 100%;
68
+ padding: 8px 10px;
69
+ border: 0;
70
+ border-bottom: 1px solid #efefef;
71
+ }
72
+
73
+ .wpr-tplib-sidebar .wpr-tplib-search input::-webkit-input-placeholder {
74
+ color: #9a9a9a;
75
+ }
76
+
77
+ .wpr-tplib-sidebar .wpr-tplib-search input::-moz-placeholder {
78
+ color: #9a9a9a;
79
+ }
80
+
81
+ .wpr-tplib-sidebar .wpr-tplib-search input:-ms-input-placeholder {
82
+ color: #9a9a9a;
83
+ }
84
+
85
+ .wpr-tplib-sidebar .wpr-tplib-search input::-ms-input-placeholder {
86
+ color: #9a9a9a;
87
+ }
88
+
89
+ .wpr-tplib-sidebar .wpr-tplib-search input::placeholder {
90
+ color: #9a9a9a;
91
+ }
92
+
93
+ .wpr-tplib-filters-wrap {
94
+ display: -webkit-box;
95
+ display: -ms-flexbox;
96
+ display: flex;
97
+ }
98
+
99
+ .wpr-tplib-sub-filters {
100
+ display: none;
101
+ margin-left: 20px;
102
+ }
103
+
104
+ .wpr-tplib-sub-filters ul {
105
+ display: -webkit-box;
106
+ display: -ms-flexbox;
107
+ display: flex;
108
+ }
109
+
110
+ .wpr-tplib-sub-filters ul li {
111
+ padding: 10px 25px;
112
+ margin-right: 7px;
113
+ line-height: 15px;
114
+ font-size: 13px;
115
+ font-weight: normal;
116
+ background: #fff;
117
+ -webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
118
+ box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
119
+ cursor: pointer;
120
+ border-radius: 3px;
121
+ }
122
+
123
+ .wpr-tplib-sub-filters ul li:hover,
124
+ .wpr-tplib-sub-filters ul .wpr-tplib-activ-filter {
125
+ background: #6A4BFF;
126
+ color: #fff;
127
+ }
128
+
129
+ .wpr-tplib-filters {
130
+ -webkit-box-sizing: border-box;
131
+ box-sizing: border-box;
132
+ display: -webkit-box;
133
+ display: -ms-flexbox;
134
+ display: flex;
135
+ -webkit-box-orient: vertical;
136
+ -webkit-box-direction: normal;
137
+ -ms-flex-direction: column;
138
+ flex-direction: column;
139
+ -webkit-box-align: start;
140
+ -ms-flex-align: start;
141
+ align-items: flex-start;
142
+ position: relative;
143
+ width: 200px;
144
+ font-size: 14px;
145
+ font-weight: normal;
146
+ font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
147
+ color: #6d7882;
148
+ }
149
+
150
+ .wpr-tplib-filters h3 {
151
+ display: -webkit-box;
152
+ display: -ms-flexbox;
153
+ display: flex;
154
+ width: 100%;
155
+ padding: 10px 15px;
156
+ margin: 0;
157
+ font-size: 13px;
158
+ font-weight: normal;
159
+ font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
160
+ background: #fff;
161
+ -webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
162
+ box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
163
+ cursor: pointer;
164
+ border-radius: 3px;
165
+ }
166
+
167
+ .wpr-tplib-filters h3 span {
168
+ width: 100%;
169
+ }
170
+
171
+ .wpr-tplib-filters h3 i.fa-angle-down:before {
172
+ content: "\f347";
173
+ font-family: dashicons;
174
+ line-height: 18px;
175
+ font-weight: 400;
176
+ font-style: normal;
177
+ speak: never;
178
+ text-decoration: inherit;
179
+ text-transform: none;
180
+ text-rendering: auto;
181
+ -webkit-font-smoothing: antialiased;
182
+ -moz-osx-font-smoothing: grayscale;
183
+ font-size: 15px;
184
+ vertical-align: top;
185
+ text-align: center;
186
+ }
187
+
188
+ .wpr-tplib-filters-list {
189
+ visibility: hidden;
190
+ opacity: 0;
191
+ position: absolute;
192
+ top: 38px;
193
+ z-index: 999;
194
+ width: 700px;
195
+ padding: 20px 30px;
196
+ background: #fff;
197
+ -webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
198
+ box-shadow: 0 2px 5px 0 rgba(0,0,0,0.05);
199
+ -webkit-transition: all 0.2s ease-in;
200
+ -o-transition: all 0.2s ease-in;
201
+ transition: all 0.2s ease-in;
202
+ border-radius: 3px;
203
+ }
204
+
205
+ .wpr-tplib-filters-list ul {
206
+ display: -webkit-box;
207
+ display: -ms-flexbox;
208
+ display: flex;
209
+ -ms-flex-wrap: wrap;
210
+ flex-wrap: wrap;
211
+ margin-top: 0;
212
+ }
213
+
214
+ .wpr-tplib-filters-list ul li {
215
+ -webkit-box-sizing: border-box;
216
+ box-sizing: border-box;
217
+ width: 25%;
218
+ padding: 12px;
219
+ color: #6d7882;
220
+ background: #fff;
221
+ font-size: 13px;
222
+ line-height: 1;
223
+ cursor: pointer;
224
+ }
225
+
226
+ .wpr-tplib-filters-list ul li:hover {
227
+ background: #f9f9f9;
228
+ color: #222;
229
+ }
230
+
231
+ .wpr-tplib-template-gird {
232
+ overflow: auto;
233
+ margin-left: -10px;
234
+ padding: 0 30px;
235
+ }
236
+
237
+ .elementor-clearfix:after {
238
+ content: '';
239
+ display: block;
240
+ clear: both;
241
+ width: 0;
242
+ height: 0;
243
+ }
244
+
245
+ .wpr-tplib-template-wrap {
246
+ position: relative;
247
+ float: left;
248
+ overflow: hidden;
249
+ width: 18.5%;
250
+ margin: 10px;
251
+ border-radius: 3px;
252
+ -webkit-box-shadow: 0 1px 20px 0 rgba(0,0,0,0.07);
253
+ box-shadow: 0 1px 20px 0 rgba(0,0,0,0.07);
254
+ }
255
+
256
+ .wpr-tplib-template-wrap:not(.wpr-tplib-pro-active):before {
257
+ content: 'Free';
258
+ display: block;
259
+ position: absolute;
260
+ top: 10px;
261
+ right: 10px;
262
+ z-index: 1;
263
+ width: 45px;
264
+ padding: 4px;
265
+ font-size: 11px;
266
+ font-weight: bold;
267
+ letter-spacing: 0.3px;
268
+ text-transform: uppercase;
269
+ text-align: center;
270
+ background: #555;
271
+ color: #fff;
272
+ -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.3);
273
+ box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.3);
274
+ border-radius: 3px;
275
+ }
276
+
277
+ .wpr-tplib-pro-wrap:not(.wpr-tplib-pro-active):before {
278
+ content: 'Pro';
279
+ background: #6A4BFF;
280
+ }
281
+
282
+ @media screen and ( max-width: 1364px ) {
283
+ .wpr-tplib-template-wrap {
284
+ width: 23%;
285
+ }
286
+ }
287
+
288
+ .wpr-tplib-template {
289
+ }
290
+
291
+ .wpr-tplib-insert-template:not(.wpr-tplib-insert-pro) {
292
+ display: none;
293
+ }
294
+
295
+ .wpr-tplib-template-wrap:hover .wpr-tplib-insert-pro {
296
+ opacity: 1;
297
+ visibility: visible;
298
+ }
299
+
300
+ .wpr-tplib-template-media {
301
+ position: relative;
302
+ background-color: #e8e8e8;
303
+ }
304
+
305
+ .wpr-tplib-template-media img {
306
+ display: block;
307
+ width: 100%;
308
+ max-width: 100%;
309
+ height: auto;
310
+ }
311
+
312
+ .wpr-tplib-template-media:hover .wpr-tplib-template-media-overlay {
313
+ opacity: 1;
314
+ }
315
+
316
+ .wpr-tplib-template-media-overlay {
317
+ opacity: 0;
318
+ position: absolute;
319
+ top: 0;
320
+ left: 0;
321
+ width: 100%;
322
+ height: 100%;
323
+ background-color: rgba(0, 0, 0, 0.5);
324
+ color: #fff;
325
+ cursor: pointer;
326
+ -webkit-transition: opacity 0.1s ease-in;
327
+ -o-transition: opacity 0.1s ease-in;
328
+ transition: opacity 0.1s ease-in;
329
+ }
330
+
331
+ .wpr-tplib-template-media-overlay i {
332
+ position: absolute;
333
+ top: 50%;
334
+ left: 50%;
335
+ -webkit-transform: translate(-50%, -50%);
336
+ -ms-transform: translate(-50%, -50%);
337
+ transform: translate(-50%, -50%);
338
+ font-size: 25px;
339
+ }
340
+
341
+ .wpr-tplib-preview-wrap {
342
+ display: none;
343
+ }
344
+
345
+ .wpr-tplib-image {
346
+ display: -webkit-box;
347
+ display: -ms-flexbox;
348
+ display: flex;
349
+ -webkit-box-pack: center;
350
+ -ms-flex-pack: center;
351
+ justify-content: center;
352
+ padding: 20px;
353
+ }
354
+
355
+ .wpr-tplib-iframe {
356
+ position: relative;
357
+ padding-top: 56.25%;
358
+ }
359
+
360
+ .wpr-tplib-iframe iframe {
361
+ position: absolute;
362
+ top: 0;
363
+ left: 0;
364
+ width: 100%;
365
+ height: 100%;
366
+ border: none;
367
+ }
368
+
369
+ .wpr-tplib-template-footer {
370
+ display: -webkit-box;
371
+ display: -ms-flexbox;
372
+ display: flex;
373
+ -webkit-box-orient: vertical;
374
+ -webkit-box-direction: normal;
375
+ -ms-flex-flow: column wrap;
376
+ flex-flow: column wrap;
377
+ -ms-flex-line-pack: justify;
378
+ align-content: space-between;
379
+ -webkit-box-pack: center;
380
+ -ms-flex-pack: center;
381
+ justify-content: center;
382
+ height: 45px;
383
+ padding: 5px 15px;
384
+ background-color: #fff;
385
+ border-top: 1px solid #efefef;
386
+ }
387
+
388
+ .wpr-tplib-template-footer h3 {
389
+ overflow: hidden;
390
+ color: #6d7882;
391
+ font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
392
+ font-size: 13px;
393
+ font-weight: normal;
394
+ white-space: nowrap;
395
+ -o-text-overflow: ellipsis;
396
+ text-overflow: ellipsis;
397
+ }
398
+
399
+ .wpr-tplib-template-footer .wpr-tplib-insert-template {
400
+ opacity: 0;
401
+ visibility: hidden;
402
+ padding: 6px 10px;
403
+ color: #fff;
404
+ background-color: #6A4BFF;
405
+ font-family: "Roboto",Arial,Helvetica,Verdana,sans-serif;
406
+ font-size: 13px;
407
+ line-height: 1;
408
+ letter-spacing: 0.3px;
409
+ border-radius: 3px;
410
+ cursor: pointer;
411
+ -webkit-transition: all 0.1s ease-in;
412
+ -o-transition: all 0.1s ease-in;
413
+ transition: all 0.1s ease-in;
414
+ }
415
+
416
+
417
+ #masonry-effect {
418
+ display: -webkit-box;
419
+ display: -ms-flexbox;
420
+ display: flex;
421
+ -webkit-box-orient: horizontal;
422
+ -webkit-box-direction: normal;
423
+ -ms-flex-direction: row;
424
+ flex-direction: row;
425
+ -ms-flex-wrap: wrap;
426
+ flex-wrap: wrap;
427
+ }
428
+ .item {
429
+ -webkit-box-sizing: border-box;
430
+ box-sizing: border-box;
431
+ -webkit-box-orient: vertical;
432
+ -webkit-box-direction: normal;
433
+ -ms-flex-direction: column;
434
+ flex-direction: column;
435
+ position: relative;
436
+ width: calc(33.3%);
437
  }
assets/css/admin/templates-kit.css CHANGED
@@ -1,604 +1,604 @@
1
- .royal-addons_page_wpr-templates-kit #wpwrap {
2
- background: #F6F6F6;
3
- }
4
-
5
- .royal-addons_page_wpr-templates-kit #wpcontent {
6
- padding: 0;
7
- }
8
-
9
- img {
10
- display: block;
11
- max-width: 100%;
12
- width: 100%;
13
- }
14
-
15
- .wpr-templates-kit-page > header {
16
- position: sticky;
17
- top: 32px;
18
- z-index: 99;
19
- display: -webkit-box;
20
- display: -ms-flexbox;
21
- display: flex;
22
- -webkit-box-pack: justify;
23
- -ms-flex-pack: justify;
24
- justify-content: space-between;
25
- background: #fff;
26
- -webkit-box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
27
- box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
28
- }
29
-
30
- .wpr-templates-kit-logo {
31
- display: -webkit-box;
32
- display: -ms-flexbox;
33
- display: flex;
34
- }
35
-
36
- .wpr-templates-kit-logo div {
37
- padding: 20px;
38
- border-right: 1px solid #e8e8e8;
39
- }
40
-
41
- .wpr-templates-kit-logo .back-btn {
42
- display: none;
43
- -webkit-box-align: center;
44
- -ms-flex-align: center;
45
- align-items: center;
46
- font-weight: bold;
47
- color: #6d7882;
48
- cursor: pointer;
49
- }
50
-
51
- .wpr-templates-kit-logo .back-btn:hover {
52
- color: #222;
53
- }
54
-
55
- .wpr-templates-kit-search {
56
- display: -webkit-box;
57
- display: -ms-flexbox;
58
- display: flex;
59
- -webkit-box-align: center;
60
- -ms-flex-align: center;
61
- align-items: center;
62
- position: absolute;
63
- top: 20px;
64
- left: 50%;
65
- -webkit-transform: translateX(-50%);
66
- -ms-transform: translateX(-50%);
67
- transform: translateX(-50%);
68
- }
69
-
70
- .wpr-templates-kit-search input {
71
- width: 500px;
72
- height: 45px;
73
- padding-left: 15px;
74
- border: 2px solid #e8e8e8 !important;
75
- -webkit-box-shadow: none !important;
76
- box-shadow: none !important;
77
- }
78
-
79
- .wpr-templates-kit-search .dashicons {
80
- margin-left: -32px;
81
- color: #777;
82
- }
83
-
84
- .wpr-templates-kit-price-filter {
85
- position: relative;
86
- width: 110px;
87
- height: 40px;
88
- margin: 20px;
89
- border: 2px solid #e8e8e8;
90
- line-height: 40px;
91
- padding: 0 20px;
92
- border-radius: 3px;
93
- font-size: 14px;
94
- cursor: pointer;
95
- }
96
-
97
- .wpr-templates-kit-price-filter .dashicons {
98
- position: absolute;
99
- right: 12px;
100
- line-height: 40px;
101
- font-size: 14px;
102
- }
103
-
104
- .wpr-templates-kit-price-filter:hover ul {
105
- display: block;
106
- }
107
-
108
- .wpr-templates-kit-price-filter ul {
109
- display: none;
110
- background: #fff;
111
- position: absolute;
112
- width: 100%;
113
- top: 26px;
114
- left: -2px;
115
- padding: 0;
116
- border: 2px solid #e8e8e8;
117
- }
118
-
119
- .wpr-templates-kit-price-filter ul li {
120
- padding: 0 20px;
121
- line-height: 32px;
122
- margin-bottom: 0 !important;
123
- border-bottom: 1px solid #e8e8e8;
124
- }
125
-
126
- .wpr-templates-kit-price-filter ul li:last-child {
127
- border-bottom: 0;
128
- }
129
-
130
- .wpr-templates-kit-price-filter ul li:hover {
131
- background: #e8e8e8;
132
- }
133
-
134
- .wpr-templates-kit-filters {
135
- display: none;
136
- padding: 20px;
137
- }
138
-
139
- .wpr-templates-kit-filters div {
140
- padding: 10px 20px;
141
- border: 2px solid #e8e8e8;
142
- border-radius: 3px;
143
- font-size: 16px;
144
- }
145
-
146
- .wpr-templates-kit-filters ul {
147
- display: none;
148
- }
149
-
150
- .wpr-templates-kit-page-title {
151
- text-align: center;
152
- margin-top: 65px;
153
- margin-bottom: 35px;
154
- }
155
-
156
- .wpr-templates-kit-page-title h1 {
157
- font-size: 35px;
158
- color: #555;
159
- }
160
-
161
- .button.wpr-options-button {
162
- padding: 3px 18px;
163
- border: 0;
164
- color: #fff;
165
- background: #6A4BFF;
166
- -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
167
- box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
168
- font-size: 14px;
169
- }
170
-
171
- .button.wpr-options-button:hover,
172
- .button.wpr-options-button:focus {
173
- color: #fff;
174
- background: #6A4BFF;
175
- border: none;
176
- }
177
-
178
- .button.wpr-options-button .dashicons {
179
- font-size: 16px;
180
- line-height: 32px;
181
- }
182
-
183
- .wpr-templates-kit-grid {
184
- display: -ms-grid;
185
- display: grid;
186
- -ms-grid-columns: 1fr 20px 1fr 20px 1fr 20px 1fr;
187
- grid-template-columns: repeat(4, 1fr);
188
- grid-column-gap: 30px;
189
- grid-row-gap: 30px;
190
- padding: 30px;
191
- }
192
-
193
-
194
- @media screen and (max-width: 1400px) {
195
- .wpr-templates-kit-grid {
196
- grid-template-columns: repeat(3, 1fr);
197
- }
198
- }
199
-
200
- .wpr-templates-kit-grid .grid-item {
201
- position: relative;
202
- overflow: hidden;
203
- border: 1px solid #e8e8e8;
204
- -webkit-box-shadow: 0 0 3px 0 rgba(0,0,0,0.1);
205
- box-shadow: 0 0 3px 0 rgba(0,0,0,0.1);
206
- background: #fff;
207
- }
208
-
209
-
210
- .wpr-templates-kit-grid .grid-item[data-price="pro"]:before {
211
- content: 'Premium';
212
- display: block;
213
- position: absolute;
214
- top: 20px;
215
- right: -30px;
216
- z-index: 10;
217
- -webkit-transform: rotate(45deg);
218
- -ms-transform: rotate(45deg);
219
- transform: rotate(45deg);
220
- padding: 7px 40px;
221
- font-size: 13px;
222
- letter-spacing: .4px;
223
- background: #6a4bff;
224
- color: #fff;
225
- -webkit-box-shadow: 0 0 5px 0 rgb(0 0 0 / 70%);
226
- box-shadow: 0 0 5px 0 rgb(0 0 0 / 70%);
227
- }
228
-
229
- .wpr-templates-kit-grid .image-wrap {
230
- position: relative;
231
- border-bottom: 1px solid #e8e8e8;
232
- }
233
-
234
- .wpr-templates-kit-grid .image-wrap:hover .image-overlay {
235
- opacity: 1;
236
- }
237
-
238
- .wpr-templates-kit-grid .image-overlay {
239
- opacity: 0;
240
- display: -webkit-box;
241
- display: -ms-flexbox;
242
- display: flex;
243
- -webkit-box-align: center;
244
- -ms-flex-align: center;
245
- align-items: center;
246
- -webkit-box-pack: center;
247
- -ms-flex-pack: center;
248
- justify-content: center;
249
- position: absolute;
250
- top: 0;
251
- left: 0;
252
- width: 100%;
253
- height: 100%;
254
- background: rgba(0,0,0,0.2);
255
- cursor: pointer;
256
- -webkit-transition: opacity 0.2s ease-in;
257
- -o-transition: opacity 0.2s ease-in;
258
- transition: opacity 0.2s ease-in;
259
- }
260
-
261
- .wpr-templates-kit-grid .image-overlay .dashicons {
262
- font-size: 30px;
263
- color: #fff;
264
- }
265
-
266
- .wpr-templates-kit-grid .grid-item footer {
267
- display: -webkit-box;
268
- display: -ms-flexbox;
269
- display: flex;
270
- padding: 15px;
271
- -webkit-box-pack: justify;
272
- -ms-flex-pack: justify;
273
- justify-content: space-between;
274
- }
275
-
276
- .wpr-templates-kit-grid .grid-item footer h3 {
277
- margin: 0;
278
- font-size: 16px;
279
- text-transform: capitalize;
280
- }
281
-
282
- .wpr-templates-kit-grid .grid-item footer span {
283
- position: relative;
284
- min-width: 77px;
285
- height: 20px;
286
- background-color: #5130ef;
287
- color: #fff;
288
- font-size: 12px;
289
- padding: 2px 10px;
290
- border-radius: 3px;
291
- }
292
-
293
- span.wpr-woo-builder-label {
294
- background-color: #7B51AD !important;
295
- text-align: center;
296
- }
297
-
298
- .wpr-templates-kit-grid .grid-item footer span:after {
299
- display: none;
300
- width: 125px;
301
- position: absolute;
302
- top: -50px;
303
- left: 30%;
304
- -webkit-transform: translateX(-50%);
305
- -ms-transform: translateX(-50%);
306
- transform: translateX(-50%);
307
- padding: 7px 10px;
308
- border-radius: 3px;
309
- background-color: #333;
310
- font-size: 12px;
311
- line-height: 15px;
312
- -webkit-box-shadow: 0 0 5px rgba(0,0,0,0.4);
313
- box-shadow: 0 0 5px rgba(0,0,0,0.4);
314
- }
315
-
316
- .wpr-templates-kit-grid .grid-item footer span.wpr-theme-builder-label:after {
317
- content: "This Kit includes Theme Builder templates.";
318
- }
319
-
320
- .wpr-templates-kit-grid .grid-item footer span.wpr-woo-builder-label:after {
321
- content: "This Kit includes WooCommerce Builder templates.";
322
- }
323
-
324
- .wpr-templates-kit-grid .grid-item footer span:hover:after {
325
- display: block;
326
- }
327
-
328
- .wpr-templates-kit-single {
329
- display: none;
330
- }
331
-
332
- .wpr-templates-kit-single .grid-item a {
333
- text-decoration: none;
334
- }
335
-
336
- .wpr-templates-kit-single .action-buttons-wrap {
337
- display: -webkit-box;
338
- display: -ms-flexbox;
339
- display: flex;
340
- -webkit-box-pack: justify;
341
- -ms-flex-pack: justify;
342
- justify-content: space-between;
343
- position: fixed;
344
- bottom: 0;
345
- left: 0;
346
- right: 0;
347
- z-index: 10;
348
- padding: 25px 30px;
349
- background: #fff;
350
- -webkit-box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
351
- box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
352
- }
353
-
354
- .action-buttons-wrap a,
355
- .action-buttons-wrap button {
356
- padding: 5px 25px !important;
357
- }
358
-
359
- .wpr-templates-kit-single .preview-demo .dashicons {
360
- font-size: 14px;
361
- line-height: 28px;
362
- }
363
-
364
- .wpr-templates-kit-single .import-kit,
365
- .wpr-templates-kit-single .get-access {
366
- background: #6A4BFF;
367
- color: #fff;
368
- }
369
-
370
- .wpr-templates-kit-single .import-kit:hover,
371
- .wpr-templates-kit-single .import-kit:focus,
372
- .wpr-templates-kit-single .get-access:hover,
373
- .wpr-templates-kit-single .get-access:focus {
374
- background: #5130ef;
375
- color: #fff;
376
- -webkit-box-shadow: none !important;
377
- box-shadow: none !important;
378
- }
379
-
380
- .wpr-templates-kit-single .import-kit .dashicons,
381
- .wpr-templates-kit-single .get-access .dashicons {
382
- font-size: 14px;
383
- line-height: 30px;
384
- }
385
-
386
- .wpr-templates-kit-single .selected-template {
387
- border: 1px solid #2271B1;
388
- -webkit-box-shadow: 0 0 5px 0 rgba(0,0,0,0.1);
389
- box-shadow: 0 0 5px 0 rgba(0,0,0,0.1);
390
- }
391
-
392
- .import-template-buttons .import-template {
393
- display: none;
394
- }
395
-
396
- .wpr-templates-kit-single .import-template strong {
397
- text-transform: capitalize;
398
- }
399
-
400
- .wpr-import-kit-popup-wrap {
401
- display: none;
402
- position: relative;
403
- z-index: 9999999;
404
- }
405
-
406
- .wpr-import-kit-popup-wrap .overlay {
407
- position: fixed;
408
- top: 0;
409
- left: 0;
410
- z-index: 9999999;
411
- width: 100%;
412
- height: 100%;
413
- background: rgba(0,0,0,0.5);
414
- }
415
-
416
- .wpr-import-help {
417
- margin-top: 20px;
418
- text-align: right;
419
- }
420
-
421
- .wpr-import-help a {
422
- width: 50%;
423
- font-size: 12px;
424
- text-align: right;
425
- text-decoration: none;
426
- color: #8F5D64;
427
- }
428
-
429
- .wpr-import-help a:hover {
430
- text-decoration: underline;
431
- }
432
-
433
- .wpr-import-help a span {
434
- vertical-align: middle;
435
- margin-bottom: 2px;
436
- font-size: 12px !important;
437
- width: 12px !important;
438
- height: 12px !important;
439
- text-decoration: none !important
440
- }
441
-
442
- .wpr-import-kit-popup {
443
- overflow: hidden;
444
- position: fixed;
445
- top: 50%;
446
- left: 50%;
447
- -webkit-transform: translate(-50%,-50%);
448
- -ms-transform: translate(-50%,-50%);
449
- transform: translate(-50%,-50%);
450
- z-index: 9999999;
451
- width: 555px;
452
- background: #f5f5f5;
453
- border-radius: 3px;
454
- }
455
-
456
- .wpr-import-kit-popup header {
457
- display: -webkit-box;
458
- display: -ms-flexbox;
459
- display: flex;
460
- -webkit-box-pack: justify;
461
- -ms-flex-pack: justify;
462
- justify-content: space-between;
463
- padding-left: 25px;
464
- -webkit-box-shadow: 2px 0 5px 0 rgba(0,0,0,0.2);
465
- box-shadow: 2px 0 5px 0 rgba(0,0,0,0.2);
466
- }
467
-
468
- .wpr-import-kit-popup .close-btn {
469
- display: none;
470
- height: 50px;
471
- line-height: 50px;
472
- width: 50px;
473
- cursor: pointer;
474
- border-left: 1px solid #eee;
475
- color: #aaa;
476
- font-size: 22px;
477
- }
478
-
479
- .wpr-import-kit-popup .content {
480
- padding: 25px;
481
- }
482
-
483
- .wpr-import-kit-popup .content p:first-child {
484
- margin-top: 0;
485
- }
486
-
487
- .wpr-import-kit-popup .progress-wrap {
488
- background: #fff;
489
- border-radius: 3px;
490
- margin-top: 25px;
491
- }
492
-
493
- .wpr-import-kit-popup .progress-wrap strong {
494
- padding: 10px;
495
- display: block;
496
- }
497
-
498
- .wpr-import-kit-popup .progress-bar {
499
- width: 30px;
500
- height: 4px;
501
- background: #2271B1;
502
- }
503
-
504
- .dot-flashing {
505
- display: inline-block;
506
- margin-left: 10px;
507
- margin-bottom: -1px;
508
- position: relative;
509
- width: 3px;
510
- height: 3px;
511
- border-radius: 10px;
512
- background-color: #3c434a;
513
- color: #3c434a;
514
- -webkit-animation: dotFlashing 1s infinite linear alternate;
515
- animation: dotFlashing 1s infinite linear alternate;
516
- -webkit-animation-delay: .5s;
517
- animation-delay: .5s;
518
- }
519
-
520
- .dot-flashing::before, .dot-flashing::after {
521
- content: '';
522
- display: inline-block;
523
- position: absolute;
524
- top: 0;
525
- }
526
-
527
- .dot-flashing::before {
528
- left: -6px;
529
- width: 3px;
530
- height: 3px;
531
- border-radius: 10px;
532
- background-color: #3c434a;
533
- color: #3c434a;
534
- -webkit-animation: dotFlashing 1s infinite alternate;
535
- animation: dotFlashing 1s infinite alternate;
536
- -webkit-animation-delay: 0s;
537
- animation-delay: 0s;
538
- }
539
-
540
- .dot-flashing::after {
541
- left: 6px;
542
- width: 3px;
543
- height: 3px;
544
- border-radius: 10px;
545
- background-color: #3c434a;
546
- color: #3c434a;
547
- -webkit-animation: dotFlashing 1s infinite alternate;
548
- animation: dotFlashing 1s infinite alternate;
549
- -webkit-animation-delay: 1s;
550
- animation-delay: 1s;
551
- }
552
-
553
- @-webkit-keyframes dotFlashing {
554
- 0% {
555
- background-color: #3c434a;
556
- }
557
- 50%,
558
- 100% {
559
- background-color: #ebe6ff;
560
- }
561
- }
562
-
563
- @keyframes dotFlashing {
564
- 0% {
565
- background-color: #3c434a;
566
- }
567
- 50%,
568
- 100% {
569
- background-color: #ebe6ff;
570
- }
571
- }
572
-
573
- .wpr-templates-kit-not-found {
574
- display: none;
575
- -webkit-box-orient: vertical;
576
- -webkit-box-direction: normal;
577
- -ms-flex-direction: column;
578
- flex-direction: column;
579
- -webkit-box-align: center;
580
- -ms-flex-align: center;
581
- align-items: center
582
- }
583
-
584
- .wpr-templates-kit-not-found img {
585
- width: 180px;
586
- }
587
-
588
- .wpr-templates-kit-not-found h1 {
589
- margin: 0;
590
- }
591
-
592
- .wpr-templates-kit-not-found a {
593
- display: inline-block;
594
- padding: 10px 25px;
595
- margin-top: 15px;
596
- background: #6A4BFF;
597
- color: #fff;
598
- text-decoration: none;
599
- border-radius: 3px;
600
- }
601
-
602
- .wpr-templates-kit-not-found a:hover {
603
- background: #5836fd;
604
  }
1
+ .royal-addons_page_wpr-templates-kit #wpwrap {
2
+ background: #F6F6F6;
3
+ }
4
+
5
+ .royal-addons_page_wpr-templates-kit #wpcontent {
6
+ padding: 0;
7
+ }
8
+
9
+ img {
10
+ display: block;
11
+ max-width: 100%;
12
+ width: 100%;
13
+ }
14
+
15
+ .wpr-templates-kit-page > header {
16
+ position: sticky;
17
+ top: 32px;
18
+ z-index: 99;
19
+ display: -webkit-box;
20
+ display: -ms-flexbox;
21
+ display: flex;
22
+ -webkit-box-pack: justify;
23
+ -ms-flex-pack: justify;
24
+ justify-content: space-between;
25
+ background: #fff;
26
+ -webkit-box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
27
+ box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
28
+ }
29
+
30
+ .wpr-templates-kit-logo {
31
+ display: -webkit-box;
32
+ display: -ms-flexbox;
33
+ display: flex;
34
+ }
35
+
36
+ .wpr-templates-kit-logo div {
37
+ padding: 20px;
38
+ border-right: 1px solid #e8e8e8;
39
+ }
40
+
41
+ .wpr-templates-kit-logo .back-btn {
42
+ display: none;
43
+ -webkit-box-align: center;
44
+ -ms-flex-align: center;
45
+ align-items: center;
46
+ font-weight: bold;
47
+ color: #6d7882;
48
+ cursor: pointer;
49
+ }
50
+
51
+ .wpr-templates-kit-logo .back-btn:hover {
52
+ color: #222;
53
+ }
54
+
55
+ .wpr-templates-kit-search {
56
+ display: -webkit-box;
57
+ display: -ms-flexbox;
58
+ display: flex;
59
+ -webkit-box-align: center;
60
+ -ms-flex-align: center;
61
+ align-items: center;
62
+ position: absolute;
63
+ top: 20px;
64
+ left: 50%;
65
+ -webkit-transform: translateX(-50%);
66
+ -ms-transform: translateX(-50%);
67
+ transform: translateX(-50%);
68
+ }
69
+
70
+ .wpr-templates-kit-search input {
71
+ width: 500px;
72
+ height: 45px;
73
+ padding-left: 15px;
74
+ border: 2px solid #e8e8e8 !important;
75
+ -webkit-box-shadow: none !important;
76
+ box-shadow: none !important;
77
+ }
78
+
79
+ .wpr-templates-kit-search .dashicons {
80
+ margin-left: -32px;
81
+ color: #777;
82
+ }
83
+
84
+ .wpr-templates-kit-price-filter {
85
+ position: relative;
86
+ width: 110px;
87
+ height: 40px;
88
+ margin: 20px;
89
+ border: 2px solid #e8e8e8;
90
+ line-height: 40px;
91
+ padding: 0 20px;
92
+ border-radius: 3px;
93
+ font-size: 14px;
94
+ cursor: pointer;
95
+ }
96
+
97
+ .wpr-templates-kit-price-filter .dashicons {
98
+ position: absolute;
99
+ right: 12px;
100
+ line-height: 40px;
101
+ font-size: 14px;
102
+ }
103
+
104
+ .wpr-templates-kit-price-filter:hover ul {
105
+ display: block;
106
+ }
107
+
108
+ .wpr-templates-kit-price-filter ul {
109
+ display: none;
110
+ background: #fff;
111
+ position: absolute;
112
+ width: 100%;
113
+ top: 26px;
114
+ left: -2px;
115
+ padding: 0;
116
+ border: 2px solid #e8e8e8;
117
+ }
118
+
119
+ .wpr-templates-kit-price-filter ul li {
120
+ padding: 0 20px;
121
+ line-height: 32px;
122
+ margin-bottom: 0 !important;
123
+ border-bottom: 1px solid #e8e8e8;
124
+ }
125
+
126
+ .wpr-templates-kit-price-filter ul li:last-child {
127
+ border-bottom: 0;
128
+ }
129
+
130
+ .wpr-templates-kit-price-filter ul li:hover {
131
+ background: #e8e8e8;
132
+ }
133
+
134
+ .wpr-templates-kit-filters {
135
+ display: none;
136
+ padding: 20px;
137
+ }
138
+
139
+ .wpr-templates-kit-filters div {
140
+ padding: 10px 20px;
141
+ border: 2px solid #e8e8e8;
142
+ border-radius: 3px;
143
+ font-size: 16px;
144
+ }
145
+
146
+ .wpr-templates-kit-filters ul {
147
+ display: none;
148
+ }
149
+
150
+ .wpr-templates-kit-page-title {
151
+ text-align: center;
152
+ margin-top: 65px;
153
+ margin-bottom: 35px;
154
+ }
155
+
156
+ .wpr-templates-kit-page-title h1 {
157
+ font-size: 35px;
158
+ color: #555;
159
+ }
160
+
161
+ .button.wpr-options-button {
162
+ padding: 3px 18px;
163
+ border: 0;
164
+ color: #fff;
165
+ background: #6A4BFF;
166
+ -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
167
+ box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
168
+ font-size: 14px;
169
+ }
170
+
171
+ .button.wpr-options-button:hover,
172
+ .button.wpr-options-button:focus {
173
+ color: #fff;
174
+ background: #6A4BFF;
175
+ border: none;
176
+ }
177
+
178
+ .button.wpr-options-button .dashicons {
179
+ font-size: 16px;
180
+ line-height: 32px;
181
+ }
182
+
183
+ .wpr-templates-kit-grid {
184
+ display: -ms-grid;
185
+ display: grid;
186
+ -ms-grid-columns: 1fr 20px 1fr 20px 1fr 20px 1fr;
187
+ grid-template-columns: repeat(4, 1fr);
188
+ grid-column-gap: 30px;
189
+ grid-row-gap: 30px;
190
+ padding: 30px;
191
+ }
192
+
193
+
194
+ @media screen and (max-width: 1400px) {
195
+ .wpr-templates-kit-grid {
196
+ grid-template-columns: repeat(3, 1fr);
197
+ }
198
+ }
199
+
200
+ .wpr-templates-kit-grid .grid-item {
201
+ position: relative;
202
+ overflow: hidden;
203
+ border: 1px solid #e8e8e8;
204
+ -webkit-box-shadow: 0 0 3px 0 rgba(0,0,0,0.1);
205
+ box-shadow: 0 0 3px 0 rgba(0,0,0,0.1);
206
+ background: #fff;
207
+ }
208
+
209
+
210
+ .wpr-templates-kit-grid .grid-item[data-price="pro"]:before {
211
+ content: 'Premium';
212
+ display: block;
213
+ position: absolute;
214
+ top: 20px;
215
+ right: -30px;
216
+ z-index: 10;
217
+ -webkit-transform: rotate(45deg);
218
+ -ms-transform: rotate(45deg);
219
+ transform: rotate(45deg);
220
+ padding: 7px 40px;
221
+ font-size: 13px;
222
+ letter-spacing: .4px;
223
+ background: #6a4bff;
224
+ color: #fff;
225
+ -webkit-box-shadow: 0 0 5px 0 rgb(0 0 0 / 70%);
226
+ box-shadow: 0 0 5px 0 rgb(0 0 0 / 70%);
227
+ }
228
+
229
+ .wpr-templates-kit-grid .image-wrap {
230
+ position: relative;
231
+ border-bottom: 1px solid #e8e8e8;
232
+ }
233
+
234
+ .wpr-templates-kit-grid .image-wrap:hover .image-overlay {
235
+ opacity: 1;
236
+ }
237
+
238
+ .wpr-templates-kit-grid .image-overlay {
239
+ opacity: 0;
240
+ display: -webkit-box;
241
+ display: -ms-flexbox;
242
+ display: flex;
243
+ -webkit-box-align: center;
244
+ -ms-flex-align: center;
245
+ align-items: center;
246
+ -webkit-box-pack: center;
247
+ -ms-flex-pack: center;
248
+ justify-content: center;
249
+ position: absolute;
250
+ top: 0;
251
+ left: 0;
252
+ width: 100%;
253
+ height: 100%;
254
+ background: rgba(0,0,0,0.2);
255
+ cursor: pointer;
256
+ -webkit-transition: opacity 0.2s ease-in;
257
+ -o-transition: opacity 0.2s ease-in;
258
+ transition: opacity 0.2s ease-in;
259
+ }
260
+
261
+ .wpr-templates-kit-grid .image-overlay .dashicons {
262
+ font-size: 30px;
263
+ color: #fff;
264
+ }
265
+
266
+ .wpr-templates-kit-grid .grid-item footer {
267
+ display: -webkit-box;
268
+ display: -ms-flexbox;
269
+ display: flex;
270
+ padding: 15px;
271
+ -webkit-box-pack: justify;
272
+ -ms-flex-pack: justify;
273
+ justify-content: space-between;
274
+ }
275
+
276
+ .wpr-templates-kit-grid .grid-item footer h3 {
277
+ margin: 0;
278
+ font-size: 16px;
279
+ text-transform: capitalize;
280
+ }
281
+
282
+ .wpr-templates-kit-grid .grid-item footer span {
283
+ position: relative;
284
+ min-width: 77px;
285
+ height: 20px;
286
+ background-color: #5130ef;
287
+ color: #fff;
288
+ font-size: 12px;
289
+ padding: 2px 10px;
290
+ border-radius: 3px;
291
+ }
292
+
293
+ span.wpr-woo-builder-label {
294
+ background-color: #7B51AD !important;
295
+ text-align: center;
296
+ }
297
+
298
+ .wpr-templates-kit-grid .grid-item footer span:after {
299
+ display: none;
300
+ width: 125px;
301
+ position: absolute;
302
+ top: -50px;
303
+ left: 30%;
304
+ -webkit-transform: translateX(-50%);
305
+ -ms-transform: translateX(-50%);
306
+ transform: translateX(-50%);
307
+ padding: 7px 10px;
308
+ border-radius: 3px;
309
+ background-color: #333;
310
+ font-size: 12px;
311
+ line-height: 15px;
312
+ -webkit-box-shadow: 0 0 5px rgba(0,0,0,0.4);
313
+ box-shadow: 0 0 5px rgba(0,0,0,0.4);
314
+ }
315
+
316
+ .wpr-templates-kit-grid .grid-item footer span.wpr-theme-builder-label:after {
317
+ content: "This Kit includes Theme Builder templates.";
318
+ }
319
+
320
+ .wpr-templates-kit-grid .grid-item footer span.wpr-woo-builder-label:after {
321
+ content: "This Kit includes WooCommerce Builder templates.";
322
+ }
323
+
324
+ .wpr-templates-kit-grid .grid-item footer span:hover:after {
325
+ display: block;
326
+ }
327
+
328
+ .wpr-templates-kit-single {
329
+ display: none;
330
+ }
331
+
332
+ .wpr-templates-kit-single .grid-item a {
333
+ text-decoration: none;
334
+ }
335
+
336
+ .wpr-templates-kit-single .action-buttons-wrap {
337
+ display: -webkit-box;
338
+ display: -ms-flexbox;
339
+ display: flex;
340
+ -webkit-box-pack: justify;
341
+ -ms-flex-pack: justify;
342
+ justify-content: space-between;
343
+ position: fixed;
344
+ bottom: 0;
345
+ left: 0;
346
+ right: 0;
347
+ z-index: 10;
348
+ padding: 25px 30px;
349
+ background: #fff;
350
+ -webkit-box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
351
+ box-shadow: 0 0 7px 0 rgba(0,0,0,0.2);
352
+ }
353
+
354
+ .action-buttons-wrap a,
355
+ .action-buttons-wrap button {
356
+ padding: 5px 25px !important;
357
+ }
358
+
359
+ .wpr-templates-kit-single .preview-demo .dashicons {
360
+ font-size: 14px;
361
+ line-height: 28px;
362
+ }
363
+
364
+ .wpr-templates-kit-single .import-kit,
365
+ .wpr-templates-kit-single .get-access {
366
+ background: #6A4BFF;
367
+ color: #fff;
368
+ }
369
+
370
+ .wpr-templates-kit-single .import-kit:hover,
371
+ .wpr-templates-kit-single .import-kit:focus,
372
+ .wpr-templates-kit-single .get-access:hover,
373
+ .wpr-templates-kit-single .get-access:focus {
374
+ background: #5130ef;
375
+ color: #fff;
376
+ -webkit-box-shadow: none !important;
377
+ box-shadow: none !important;
378
+ }
379
+
380
+ .wpr-templates-kit-single .import-kit .dashicons,
381
+ .wpr-templates-kit-single .get-access .dashicons {
382
+ font-size: 14px;
383
+ line-height: 30px;
384
+ }
385
+
386
+ .wpr-templates-kit-single .selected-template {
387
+ border: 1px solid #2271B1;
388
+ -webkit-box-shadow: 0 0 5px 0 rgba(0,0,0,0.1);
389
+ box-shadow: 0 0 5px 0 rgba(0,0,0,0.1);
390
+ }
391
+
392
+ .import-template-buttons .import-template {
393
+ display: none;
394
+ }
395
+
396
+ .wpr-templates-kit-single .import-template strong {
397
+ text-transform: capitalize;
398
+ }
399
+
400
+ .wpr-import-kit-popup-wrap {
401
+ display: none;
402
+ position: relative;
403
+ z-index: 9999999;
404
+ }
405
+
406
+ .wpr-import-kit-popup-wrap .overlay {
407
+ position: fixed;
408
+ top: 0;
409
+ left: 0;
410
+ z-index: 9999999;
411
+ width: 100%;
412
+ height: 100%;
413
+ background: rgba(0,0,0,0.5);
414
+ }
415
+
416
+ .wpr-import-help {
417
+ margin-top: 20px;
418
+ text-align: right;
419
+ }
420
+
421
+ .wpr-import-help a {
422
+ width: 50%;
423
+ font-size: 12px;
424
+ text-align: right;
425
+ text-decoration: none;
426
+ color: #8F5D64;
427
+ }
428
+
429
+ .wpr-import-help a:hover {
430
+ text-decoration: underline;
431
+ }
432
+
433
+ .wpr-import-help a span {
434
+ vertical-align: middle;
435
+ margin-bottom: 2px;
436
+ font-size: 12px !important;
437
+ width: 12px !important;
438
+ height: 12px !important;
439
+ text-decoration: none !important
440
+ }
441
+
442
+ .wpr-import-kit-popup {
443
+ overflow: hidden;
444
+ position: fixed;
445
+ top: 50%;
446
+ left: 50%;
447
+ -webkit-transform: translate(-50%,-50%);
448
+ -ms-transform: translate(-50%,-50%);
449
+ transform: translate(-50%,-50%);
450
+ z-index: 9999999;
451
+ width: 555px;
452
+ background: #f5f5f5;
453
+ border-radius: 3px;
454
+ }
455
+
456
+ .wpr-import-kit-popup header {
457
+ display: -webkit-box;
458
+ display: -ms-flexbox;
459
+ display: flex;
460
+ -webkit-box-pack: justify;
461
+ -ms-flex-pack: justify;
462
+ justify-content: space-between;
463
+ padding-left: 25px;
464
+ -webkit-box-shadow: 2px 0 5px 0 rgba(0,0,0,0.2);
465
+ box-shadow: 2px 0 5px 0 rgba(0,0,0,0.2);
466
+ }
467
+
468
+ .wpr-import-kit-popup .close-btn {
469
+ display: none;
470
+ height: 50px;
471
+ line-height: 50px;
472
+ width: 50px;
473
+ cursor: pointer;
474
+ border-left: 1px solid #eee;
475
+ color: #aaa;
476
+ font-size: 22px;
477
+ }
478
+
479
+ .wpr-import-kit-popup .content {
480
+ padding: 25px;
481
+ }
482
+
483
+ .wpr-import-kit-popup .content p:first-child {
484
+ margin-top: 0;
485
+ }
486
+
487
+ .wpr-import-kit-popup .progress-wrap {
488
+ background: #fff;
489
+ border-radius: 3px;
490
+ margin-top: 25px;
491
+ }
492
+
493
+ .wpr-import-kit-popup .progress-wrap strong {
494
+ padding: 10px;
495
+ display: block;
496
+ }
497
+
498
+ .wpr-import-kit-popup .progress-bar {
499
+ width: 30px;
500
+ height: 4px;
501
+ background: #2271B1;
502
+ }
503
+
504
+ .dot-flashing {
505
+ display: inline-block;
506
+ margin-left: 10px;
507
+ margin-bottom: -1px;
508
+ position: relative;
509
+ width: 3px;
510
+ height: 3px;
511
+ border-radius: 10px;
512
+ background-color: #3c434a;
513
+ color: #3c434a;
514
+ -webkit-animation: dotFlashing 1s infinite linear alternate;
515
+ animation: dotFlashing 1s infinite linear alternate;
516
+ -webkit-animation-delay: .5s;
517
+ animation-delay: .5s;
518
+ }
519
+
520
+ .dot-flashing::before, .dot-flashing::after {
521
+ content: '';
522
+ display: inline-block;
523
+ position: absolute;
524
+ top: 0;
525
+ }
526
+
527
+ .dot-flashing::before {
528
+ left: -6px;
529
+ width: 3px;
530
+ height: 3px;
531
+ border-radius: 10px;
532
+ background-color: #3c434a;
533
+ color: #3c434a;
534
+ -webkit-animation: dotFlashing 1s infinite alternate;
535
+ animation: dotFlashing 1s infinite alternate;
536
+ -webkit-animation-delay: 0s;
537
+ animation-delay: 0s;
538
+ }
539
+
540
+ .dot-flashing::after {
541
+ left: 6px;
542
+ width: 3px;
543
+ height: 3px;
544
+ border-radius: 10px;
545
+ background-color: #3c434a;
546
+ color: #3c434a;
547
+ -webkit-animation: dotFlashing 1s infinite alternate;
548
+ animation: dotFlashing 1s infinite alternate;
549
+ -webkit-animation-delay: 1s;
550
+ animation-delay: 1s;
551
+ }
552
+
553
+ @-webkit-keyframes dotFlashing {
554
+ 0% {
555
+ background-color: #3c434a;
556
+ }
557
+ 50%,
558
+ 100% {
559
+ background-color: #ebe6ff;
560
+ }
561
+ }
562
+
563
+ @keyframes dotFlashing {
564
+ 0% {
565
+ background-color: #3c434a;
566
+ }
567
+ 50%,
568
+ 100% {
569
+ background-color: #ebe6ff;
570
+ }
571
+ }
572
+
573
+ .wpr-templates-kit-not-found {
574
+ display: none;
575
+ -webkit-box-orient: vertical;
576
+ -webkit-box-direction: normal;
577
+ -ms-flex-direction: column;
578
+ flex-direction: column;
579
+ -webkit-box-align: center;
580
+ -ms-flex-align: center;
581
+ align-items: center
582
+ }
583
+
584
+ .wpr-templates-kit-not-found img {
585
+ width: 180px;
586
+ }
587
+
588
+ .wpr-templates-kit-not-found h1 {
589
+ margin: 0;
590
+ }
591
+
592
+ .wpr-templates-kit-not-found a {
593
+ display: inline-block;
594
+ padding: 10px 25px;
595
+ margin-top: 15px;
596
+ background: #6A4BFF;
597
+ color: #fff;
598
+ text-decoration: none;
599
+ border-radius: 3px;
600
+ }
601
+
602
+ .wpr-templates-kit-not-found a:hover {
603
+ background: #5836fd;
604
  }
assets/css/admin/wporg-theme-notice.css CHANGED
@@ -1,3 +1,3 @@
1
- .rek-notice {
2
- display: none !important;
3
  }
1
+ .rek-notice {
2
+ display: none !important;
3
  }
assets/css/editor.css CHANGED
@@ -1,944 +1,944 @@
1
- /*--------------------------------------------------------------
2
- == General
3
- --------------------------------------------------------------*/
4
- .wpr-elementor-hidden-control {
5
- overflow: hidden;
6
- width: 0 !important;
7
- height: 0 !important;
8
- padding: 0 !important;
9
- margin: 0 !important;
10
- visibility: hidden !important;
11
- opacity: 0 !important;
12
- }
13
-
14
-
15
- /*--------------------------------------------------------------
16
- == WPR Widgets
17
- --------------------------------------------------------------*/
18
- .elementor-panel .wpr-icon:after {
19
- content: 'R';
20
- display: block;
21
- position: absolute;
22
- top: 3px;
23
- right: 3px;
24
- font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
25
- font-size: 10px;
26
- font-weight: bold;
27
- color: #ffffff;
28
- background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
29
- background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
30
- background-image: linear-gradient(#6A4BFF, #7E94FE);
31
- -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
32
- box-shadow: 0 0 2px 2px #b8c7ff;
33
- width: 19px;
34
- height: 19px;
35
- line-height: 19px;
36
- border-radius: 15px;
37
- margin: 3px;
38
- }
39
-
40
- .elementor-panel .elementor-element .icon {
41
- position: relative !important;
42
- }
43
-
44
- .elementor-element--promotion .wpr-icon:after {
45
- top: 22px;
46
- right: -1px;
47
- opacity: 0.7;
48
- }
49
-
50
- #elementor-element--promotion__dialog .dialog-button {
51
- text-align: center;
52
- }
53
-
54
- .elementor-control-type-section[class*="elementor-control-wpr_section_"]:after {
55
- content: 'R';
56
- display: block;
57
- position: absolute;
58
- top: 7px;
59
- right: 7px;
60
- font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
61
- font-size: 10px;
62
- font-weight: bold;
63
- color: #ffffff;
64
- background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
65
- background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
66
- background-image: linear-gradient(#6A4BFF, #7E94FE);
67
- -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
68
- box-shadow: 0 0 2px 2px #b8c7ff;
69
- width: 19px;
70
- height: 19px;
71
- line-height: 19px;
72
- border-radius: 15px;
73
- margin: 3px;
74
- text-align: center;
75
- }
76
-
77
- /*--------------------------------------------------------------
78
- == Adjustments
79
- --------------------------------------------------------------*/
80
- .elementor-control-element_select,
81
- .elementor-control-element_align_hr,
82
- .elementor-control-element_read_more_text,
83
- .elementor-control-element_tax_sep,
84
- .elementor-control-element_sharing_icon_6,
85
- .elementor-control-element_sharing_trigger_direction,
86
- .elementor-control-element_sharing_icon_display,
87
- .elementor-control-element_sharing_tooltip,
88
- .elementor-control-element_custom_field_wrapper_html,
89
- .elementor-control-slider_item_bg_size,
90
- .elementor-control-element_addcart_variable_txt,
91
- .elementor-control-type,
92
- .elementor-control-show_last_update_date {
93
- margin-bottom: 15px;
94
- }
95
-
96
- .elementor-control-slider_content_bg_color,
97
- .elementor-control-slider_nav_border_border,
98
- .elementor-control-slider_nav_border_radius,
99
- .elementor-control-scroll_btn_vr,
100
- .elementor-control-pagination_load_more_text,
101
- .elementor-control-pagination_finish_text,
102
- .elementor-control-pagination_prev_next,
103
- .elementor-control-author_transition_duration,
104
- .elementor-control-comments_transition_duration,
105
- .elementor-control-likes_transition_duration,
106
- .elementor-control-sharing_transition_duration,
107
- .elementor-control-lightbox_transition_duration,
108
- .elementor-control-custom_field1_transition_duration,
109
- .elementor-control-custom_field2_transition_duration,
110
- .elementor-control-custom_field3_transition_duration,
111
- .elementor-control-custom_field4_transition_duration,
112
- .elementor-control-filters_transition_duration,
113
- .elementor-control-pagination_transition_duration,
114
- .elementor-control-element_extra_text_pos,
115
- .elementor-control-element_custom_field_wrapper,
116
- .elementor-control-overlay_post_link,
117
- .elementor-control-read_more_animation_height,
118
- .elementor-control-archive_link_transition_duration,
119
- .elementor-control-post_info_tax_select,
120
- .elementor-control-post_info_link_wrap,
121
- .elementor-control-post_info_modified_time,
122
- .elementor-control-tabs_sharing_custom_colors,
123
- .elementor-control-post_info_show_avatar,
124
- .elementor-control-post_info_cf,
125
- .elementor-control-pricing_items .elementor-control-price,
126
- .elementor-control-pricing_items .elementor-control-feature_text,
127
- .elementor-control-pricing_items .elementor-control-btn_text,
128
- .elementor-control-divider_style,
129
- .elementor-control-filters_pointer,
130
- .elementor-control-title_transition_duration,
131
- .elementor-control-tax1_transition_duration,
132
- .elementor-control-tax2_transition_duration,
133
- .elementor-control-filters_transition_duration,
134
- .elementor-control-pagination_older_text,
135
- .elementor-control-tooltip_position,
136
- .elementor-control-post_info_comments_text_1 {
137
- padding-top: 15px !important;
138
- }
139
-
140
- .elementor-control-post_info_custom_field_video_tutorial {
141
- margin-top: 15px;
142
- }
143
-
144
- .elementor-control-title_pointer_animation + .elementor-control-title_transition_duration,
145
- .elementor-control-tax1_pointer_animation + .elementor-control-tax1_transition_duration,
146
- .elementor-control-tax2_pointer_animation + .elementor-control-tax2_transition_duration,
147
- .elementor-control-filters_pointer_animation + .elementor-control-filters_transition_duration {
148
- padding-top: 0 !important;
149
- }
150
-
151
- .elementor-control-pagination_load_more_text {
152
- padding-bottom: 0 !important;
153
- }
154
-
155
- .elementor-control-filters_transition_duration,
156
- .elementor-control-show_last_update_date {
157
- padding-top: 0 !important;
158
- }
159
-
160
- .elementor-control-animation_divider,
161
- .elementor-control-overlay_divider,
162
- .elementor-control-slider_item_btn_1_divider,
163
- .elementor-control-slider_item_btn_2_divider,
164
- .elementor-control-slider_btn_typography_1_divider,
165
- .elementor-control-slider_btn_box_shadow_1_divider,
166
- .elementor-control-slider_btn_typography_2_divider,
167
- .elementor-control-slider_btn_box_shadow_2_divider,
168
- .elementor-control-testimonial_title_divider,
169
- .elementor-control-social_media_divider,
170
- .elementor-control-social_divider_1,
171
- .elementor-control-social_divider_2,
172
- .elementor-control-social_divider_3,
173
- .elementor-control-social_divider_4,
174
- .elementor-control-social_divider_5,
175
- .elementor-control-custom_field_wrapper_html_divider1,
176
- .elementor-control-custom_field_wrapper_html_divider2,
177
- .elementor-control-lightbox_shadow_divider {
178
- padding: 0 !important;
179
- }
180
-
181
- .elementor-control-custom_field_wrapper_html_divider1 hr,
182
- .elementor-control-lightbox_shadow_divider hr {
183
- height: 1px !important;
184
- }
185
-
186
- .elementor-control-element_show_on {
187
- padding-top: 15px !important;
188
- border-top: 1px solid #d5dadf;
189
- }
190
-
191
- [class*="wpr__section_"] ~ .elementor-control-type-number .elementor-control-input-wrapper,
192
- [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-number .elementor-control-input-wrapper {
193
- max-width: 30% !important;
194
- margin-left: auto !important;
195
- }
196
-
197
- [class*="wpr__section_"] ~ .elementor-control-type-select .elementor-control-input-wrapper,
198
- [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-select .elementor-control-input-wrapper {
199
- width: auto !important;
200
- min-width: 30% !important;
201
- margin-left: auto !important;
202
- }
203
-
204
- .elementor-control-submit_preview_changes .elementor-control-input-wrapper {
205
- text-align: center !important;
206
- }
207
-
208
- .elementor-control-query_manual_related,
209
- .elementor-control-query_manual_current {
210
- display: none !important;
211
- }
212
-
213
- /* Fix Select Inputs */
214
- .elementor-control-button_hover_animation .elementor-control-input-wrapper,
215
- .elementor-control-front_btn_animation .elementor-control-input-wrapper,
216
- .elementor-control-back_btn_animation .elementor-control-input-wrapper,
217
-
218
- .elementor-control-select_template .select2-selection,
219
- .elementor-control-switcher_first_select_template .select2-selection,
220
- .elementor-control-switcher_second_select_template .select2-selection,
221
- .elementor-control-switcher_select_template .select2-selection,
222
- .elementor-control-slider_select_template .select2-selection {
223
- width: 135px !important;
224
- }
225
-
226
- .elementor-control-type-repeater .elementor-control-content > label {
227
- display: none !important;
228
- }
229
-
230
-
231
- /*--------------------------------------------------------------
232
- == Notification
233
- --------------------------------------------------------------*/
234
- #wpr-template-settings-notification {
235
- position: fixed;
236
- left: 40px;
237
- bottom: 5px;
238
- z-index: 9999;
239
- padding: 13px 25px;
240
- background: #fff;
241
- color: #222;
242
- -webkit-box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
243
- box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
244
- border-radius: 3px;
245
- }
246
-
247
- #wpr-template-settings-notification:before {
248
- content: "";
249
- position: absolute;
250
- left: -6px;
251
- bottom: 10px;
252
- width: 0;
253
- height: 0;
254
- border-top: 6px solid transparent;
255
- border-bottom: 6px solid transparent;
256
- border-right-style: solid;
257
- border-right-width: 6px;
258
- border-right-color: #fff;
259
- }
260
-
261
- #wpr-template-settings-notification h4 {
262
- margin-bottom: 10px;
263
- }
264
-
265
- #wpr-template-settings-notification h4 span {
266
- font-size: 14px;
267
- vertical-align: super;
268
- color: #5f5f5f;
269
- }
270
-
271
- #wpr-template-settings-notification h4 i {
272
- margin-right: 10px;
273
- color: #3db050;
274
- font-size: 24px;
275
- }
276
-
277
- #wpr-template-settings-notification p {
278
- color: #666;
279
- font-size: 12px;
280
- line-height: 1.5;
281
- }
282
-
283
- #wpr-template-settings-notification > i {
284
- position: absolute;
285
- top: 7px;
286
- right: 7px;
287
- cursor: pointer;
288
- color: #999;
289
- }
290
-
291
- .elementor-control-cf7_notice,
292
- .elementor-control-wpforms_notice,
293
- .elementor-control-ninja_forms_notice,
294
- .elementor-control-caldera_notice {
295
- color: red;
296
- }
297
-
298
- /* Help Button - select with referrals - [href^="https://royal-elementor-addons.com/contact/"] */
299
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] {
300
- display: inline-block;
301
- padding: 12px 35px;
302
- font-size: 13px;
303
- font-weight: normal;
304
- color: #fff;
305
- background: #6A65FF;
306
- border-radius: 3px;
307
- -webkit-box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
308
- box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
309
- letter-spacing: 0.3px;
310
- -webkit-transition: all 0.2s ease-in;
311
- -o-transition: all 0.2s ease-in;
312
- transition: all 0.2s ease-in;
313
- }
314
-
315
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover {
316
- color: #fff;
317
- background: #6A4BFF;
318
- }
319
-
320
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] i {
321
- color: #fff;
322
- font-size: 14px;
323
- vertical-align: top;
324
- }
325
-
326
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i {
327
- color: #fff;
328
- }
329
-
330
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i:before {
331
- content: '\e942' !important;
332
- }
333
-
334
- .elementor-control-posts_slider_notice .elementor-control-raw-html {
335
- font-style: normal !important;
336
- }
337
-
338
- .elementor-control-product_notice_widget_info .elementor-control-raw-html {
339
- color: red;
340
- }
341
-
342
-
343
- /*--------------------------------------------------------------
344
- == Modal Popup Editor
345
- --------------------------------------------------------------*/
346
- .elementor-editor-wpr-popups .elementor-control-document_settings,
347
- .elementor-editor-wpr-popups .elementor-control-post_title,
348
- .elementor-editor-wpr-popups .elementor-control-post_status {
349
- display: none !important;
350
- }
351
-
352
-
353
- /*--------------------------------------------------------------
354
- == Elementor Editor Popup
355
- --------------------------------------------------------------*/
356
- #wpr-template-editor-popup .dialog-widget-content {
357
- width: 90vw;
358
- height: 90vh;
359
- }
360
-
361
- #wpr-template-editor-popup .dialog-message {
362
- padding: 0;
363
- width: 100%;
364
- height: 100%;
365
- }
366
-
367
- #wpr-template-editor-popup .dialog-close-button {
368
- font-size: 24px;
369
- color: #222;
370
- }
371
-
372
- #wpr-template-editor-popup .dialog-header {
373
- display: none;
374
- }
375
-
376
- #wpr-template-editor-loading {
377
- position: absolute;
378
- top: 0;
379
- left: 0;
380
- width: 100%;
381
- height: 100%;
382
- background: #f1f3f5;
383
- z-index: 9999;
384
- -webkit-transform: translateZ(0);
385
- transform: translateZ(0);
386
- display: -webkit-box;
387
- display: -ms-flexbox;
388
- display: flex;
389
- -webkit-box-pack: center;
390
- -ms-flex-pack: center;
391
- justify-content: center;
392
- -webkit-box-align: center;
393
- -ms-flex-align: center;
394
- align-items: center;
395
- }
396
-
397
- #wpr-template-editor-loading .elementor-loader-wrapper {
398
- top: auto;
399
- left: auto;
400
- -webkit-transform: none;
401
- -ms-transform: none;
402
- transform: none;
403
- }
404
-
405
- /* Disable Transitions on Responsive Preview */
406
- #elementor-preview-responsive-wrapper {
407
- -webkit-transition: none !important;
408
- -o-transition: none !important;
409
- transition: none !important;
410
- }
411
-
412
-
413
- /*--------------------------------------------------------------
414
- == Magazine Grid Layout
415
- --------------------------------------------------------------*/
416
- .elementor-control-layout_select.elementor-control .elementor-control-field {
417
- -webkit-box-orient: vertical !important;
418
- -webkit-box-direction: normal !important;
419
- -ms-flex-direction: column !important;
420
- flex-direction: column !important;
421
- -webkit-box-align: start;
422
- -ms-flex-align: start;
423
- align-items: flex-start;
424
- }
425
-
426
- .elementor-control-layout_select.elementor-control .elementor-control-input-wrapper {
427
- display: -webkit-box;
428
- display: -ms-flexbox;
429
- display: flex;
430
- width: 100% !important;
431
- margin-top: 10px;
432
- }
433
-
434
- .elementor-control-layout_select.elementor-control .elementor-choices {
435
- -ms-flex-wrap: wrap;
436
- flex-wrap: wrap;
437
- -webkit-box-align: stretch;
438
- -ms-flex-align: stretch;
439
- align-items: stretch;
440
- width: 100% !important;
441
- height: auto;
442
- border: 1px solid #dfd5d5;
443
- }
444
-
445
- .elementor-control-layout_select.elementor-control .elementor-choices label {
446
- width: 33.3%;
447
- height: 50px;
448
- background-size: 75%;
449
- background-position: center center;
450
- background-repeat: no-repeat;
451
- }
452
-
453
- .elementor-control-layout_select input[type="radio"]:checked + label {
454
- border: 2px solid #D30C5C;
455
- border-radius: 0 !important;
456
- background-color: #ffffff;
457
- }
458
-
459
- .elementor-control-layout_select label:nth-child(2) {
460
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='15.2' class='st1' width='22.2' height='11.9'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='9.2'/%3E%3C/g%3E%3C/svg%3E");
461
- }
462
-
463
- .elementor-control-layout_select label:nth-child(4) {
464
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
465
- }
466
-
467
- .elementor-control-layout_select label:nth-child(6) {
468
- background: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Cg%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
469
- }
470
-
471
- .elementor-control-layout_select label:nth-child(8) {
472
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
473
- }
474
-
475
- .elementor-control-layout_select label:nth-child(10) {
476
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
477
- }
478
-
479
- .elementor-control-layout_select label:nth-child(12) {
480
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='28.5' height='22.2'/%3E%3Crect x='31.8' y='12.9' class='st1' width='15.9' height='6.3'/%3E%3Crect x='31.8' y='4.9' class='st1' width='15.9' height='6.8'/%3E%3Crect x='31.8' y='20.3' class='st1' width='15.9' height='6.8'/%3E%3C/g%3E%3C/svg%3E");
481
- }
482
-
483
- .elementor-control-layout_select label:nth-child(14) {
484
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='2.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
485
- }
486
-
487
- .elementor-control-layout_select label:nth-child(16) {
488
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='33.9' height='13.2'/%3E%3Crect x='2.2' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='19.7' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='13.2'/%3E%3Crect x='37.2' y='19.3' class='st1' width='10.5' height='7.8'/%3E%3C/g%3E%3C/svg%3E");
489
- }
490
-
491
- .elementor-control-layout_select label:nth-child(18) {
492
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='2.2' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='17.8' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='33.3' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3C/g%3E%3C/svg%3E");
493
- }
494
-
495
- .elementor-control-layout_select label:nth-child(20) {
496
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
497
- }
498
-
499
- .elementor-control-layout_select label:nth-child(22) {
500
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='14.5' height='22.2'/%3E%3Crect x='33.4' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3Crect x='17.9' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
501
- }
502
-
503
- .elementor-control-layout_select label:nth-child(24) {
504
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='10.6' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='14' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
505
- }
506
-
507
- /*--------------------------------------------------------------
508
- == Widget Preview and Library buttons
509
- --------------------------------------------------------------*/
510
- .elementor-control-wpr_library_buttons {
511
- height: 60px;
512
- padding: 0;
513
- }
514
-
515
- .elementor-control-wpr_library_buttons .elementor-control-raw-html {
516
- padding: 0 10px 10px 10px;
517
- border-bottom: 1px solid #efefef;
518
- }
519
-
520
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div {
521
- display: -webkit-box;
522
- display: -ms-flexbox;
523
- display: flex;
524
- -webkit-box-pack: center;
525
- -ms-flex-pack: center;
526
- justify-content: center;
527
- }
528
-
529
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div a {
530
- -webkit-box-flex: 1;
531
- -ms-flex-positive: 1;
532
- flex-grow: 1;
533
- padding: 10px 15px;
534
- border-radius: 3px;
535
- /*box-shadow: 1px 2px 5px 0 rgba(0,0,0,0.2);*/
536
- white-space: nowrap;
537
- overflow: hidden;
538
- -o-text-overflow: ellipsis;
539
- text-overflow: ellipsis;
540
- text-align: center;
541
- }
542
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:first-child {
543
- background-color: #1CB4E4;
544
- color: #fff;
545
- margin-right: 3px;
546
- }
547
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:last-child {
548
- margin-left: 3px;
549
- background-color: #6A65FF;
550
- color: #fff;
551
- }
552
-
553
- .elementor-control-wpr_library_buttons .elementor-control-raw-html > a {
554
- display: block;
555
- margin-top: 10px;
556
- line-height: 20px;
557
- color: #777;
558
- border: none !important;
559
- }
560
-
561
- .elementor-section-title > a {
562
- top: 10px;
563
- right: 20px;
564
- position: absolute;
565
- line-height: 20px;
566
- }
567
-
568
- .elementor-section-title > a:hover {
569
- border-color: transparent;
570
- }
571
-
572
- /*--------------------------------------------------------------
573
- == Apply Changes Button
574
- --------------------------------------------------------------*/
575
- .editor-wpr-preview-update {
576
- margin: 0;
577
- display: -webkit-box;
578
- display: -ms-flexbox;
579
- display: flex;
580
- -webkit-box-pack: justify;
581
- -ms-flex-pack: justify;
582
- justify-content: space-between;
583
- }
584
-
585
- .editor-wpr-preview-update button {
586
- font-size: 13px;
587
- padding: 5px 10px;
588
- }
589
-
590
-
591
- /*--------------------------------------------------------------
592
- == Free/Pro Options
593
- --------------------------------------------------------------*/
594
- .elementor-control select option[value*=pro-] {
595
- background: #f0f0f0;
596
- }
597
-
598
- .elementor-control[class*="pro_notice"] {
599
- padding: 5px 0 15px 0 !important;
600
- }
601
-
602
- .wpr-pro-notice {
603
- padding: 20px;
604
- border-top: 1px solid #e6e9ec;
605
- border-bottom: 1px solid #e6e9ec;
606
- background-color: #f2fbff;
607
- line-height: 1.4;
608
- text-align: center;
609
- }
610
-
611
- .wpr-pro-notice-video {
612
- display: block;
613
- margin-top: 7px;
614
- line-height: 20px;
615
- border: none !important;
616
- }
617
-
618
- #elementor-controls .elementor-control-slider_section_pro_notice {
619
- margin-top: -16px;
620
- padding-bottom: 0 !important;
621
- }
622
-
623
- .elementor-control-layout_select_pro_notice + div,
624
- .elementor-control-element_align_pro_notice + div {
625
- padding-top: 15px;
626
- }
627
-
628
- .elementor-control-layout_select .elementor-choices label {
629
- position: relative;
630
- }
631
-
632
- .elementor-control-layout_select .elementor-choices label:nth-child(2):after,
633
- .elementor-control-layout_select .elementor-choices label:nth-child(4):after,
634
- .elementor-control-layout_select .elementor-choices label:nth-child(6):after,
635
- .elementor-control-layout_select .elementor-choices label:nth-child(8):after,
636
- .elementor-control-layout_select .elementor-choices label:nth-child(10):after,
637
- .elementor-control-layout_select .elementor-choices label:nth-child(12):after {
638
- content: ' ';
639
- display: block;
640
- width: 100%;
641
- height: 100%;
642
- position: absolute;
643
- top: 0;
644
- left: 0;
645
- background: rgba(0,0,0,0.2);
646
- }
647
-
648
- /* Adjustments */
649
- .elementor-control.elementor-control-element_align_pro_notice,
650
- .elementor-control.elementor-control-search_pro_notice,
651
- .elementor-control.elementor-control-layout_select_pro_notice,
652
- .elementor-control.elementor-control-grid_columns_pro_notice,
653
- .elementor-control.elementor-control-slider_content_type_pro_notice,
654
- .elementor-control.elementor-control-slider_repeater_pro_notice,
655
- .elementor-control.elementor-control-slider_dots_layout_pro_notice,
656
- .elementor-control.elementor-control-testimonial_repeater_pro_notice,
657
- .elementor-control.elementor-control-testimonial_icon_pro_notice,
658
- .elementor-control.elementor-control-menu_layout_pro_notice,
659
- .elementor-control.elementor-control-menu_items_submenu_entrance_pro_notice,
660
- .elementor-control.elementor-control-switcher_label_style_pro_notice,
661
- .elementor-control.elementor-control-countdown_type_pro_notice,
662
- .elementor-control.elementor-control-layout_pro_notice,
663
- .elementor-control.elementor-control-anim_timing_pro_notice,
664
- .elementor-control.elementor-control-tab_content_type_pro_notice,
665
- .elementor-control.elementor-control-tabs_repeater_pro_notice,
666
- .elementor-control.elementor-control-tabs_align_pro_notice,
667
- .elementor-control.elementor-control-front_trigger_pro_notice,
668
- .elementor-control.elementor-control-back_link_type_pro_notice,
669
- .elementor-control.elementor-control-box_anim_timing_pro_notice,
670
- .elementor-control.elementor-control-image_style_pro_notice,
671
- .elementor-control.elementor-control-image_animation_timing_pro_notice,
672
- .elementor-control.elementor-control-label_display_pro_notice,
673
- .elementor-control.elementor-control-post_type_pro_notice,
674
- .elementor-control.elementor-control-type_select_pro_notice,
675
- .elementor-control.elementor-control-icon_style_pro_notice,
676
- .elementor-control.elementor-control-dual_button_pro_notice,
677
- .elementor-control.elementor-control-team_member_pro_notice,
678
- .elementor-control.elementor-control-price_list_pro_notice,
679
- .elementor-control.elementor-control-business_hours_pro_notice,
680
- .elementor-control.elementor-control-sharing_columns_pro_notice,
681
- .elementor-control.elementor-control-popup_trigger_pro_notice,
682
- .elementor-control.elementor-control-popup_show_again_delay_pro_notice,
683
- .elementor-control.elementor-control-group_popup_settings_pro_notice,
684
- .elementor-control.elementor-control-which_particle_pro_notice,
685
- .elementor-control.elementor-control-paralax_repeater_pro_notice,
686
- .elementor-control.elementor-control-opnepage_pro_notice,
687
- .elementor-control.elementor-control-timeline_repeater_pro_notice,
688
- .elementor-control.elementor-control-limit_grid_items_pro_notice,
689
- .elementor-control.elementor-control-post_nav_layout_pro_notice,
690
- .elementor-control.elementor-control-author_name_links_to_pro_notice,
691
- .elementor-control.elementor-control-author_title_links_to_pro_notice,
692
- .elementor-control.elementor-control-comments_form_layout_pro_notice,
693
- .elementor-control.elementor-control-sharing_repeater_pro_notice,
694
- .elementor-control.elementor-control-mini_cart_style_pro_notice,
695
- .elementor-control.elementor-control-tabs_position_pro_notice,
696
- .elementor-control.elementor-control-choose_table_type_pro_notice,
697
- .elementor-control.elementor-control-accordion_repeater_pro_notice,
698
- .elementor-control.elementor-control-acc_repeater_pro_notice,
699
- .elementor-control.elementor-control-data_source_pro_notice,
700
- .elementor-control.elementor-control-charts_repeater_pro_notice,
701
- .elementor-control.elementor-control-mob_menu_display_as_pro_notice {
702
- padding-bottom: 0 !important;
703
- }
704
-
705
- .elementor-control-search_pro_notice .wpr-pro-notice,
706
- .elementor-control-grid_columns_pro_notice .wpr-pro-notice,
707
- .elementor-control-slider_content_type_pro_notice .wpr-pro-notice,
708
- .elementor-control-slider_repeater_pro_notice .wpr-pro-notice,
709
- .elementor-control-slider_dots_layout_pro_notice .wpr-pro-notice,
710
- .elementor-control-testimonial_repeater_pro_notice .wpr-pro-notice,
711
- .elementor-control-testimonial_icon_pro_notice .wpr-pro-notice,
712
- .elementor-control-menu_layout_pro_notice .wpr-pro-notice,
713
- .elementor-control-menu_items_submenu_entrance_pro_notice .wpr-pro-notice,
714
- .elementor-control-switcher_label_style_pro_notice .wpr-pro-notice,
715
- .elementor-control-countdown_type_pro_notice .wpr-pro-notice,
716
- .elementor-control-layout_pro_notice .wpr-pro-notice,
717
- .elementor-control-anim_timing_pro_notice .wpr-pro-notice,
718
- .elementor-control-tab_content_type_pro_notice .wpr-pro-notice,
719
- .elementor-control-tabs_repeater_pro_notice .wpr-pro-notice,
720
- .elementor-control-tabs_align_pro_notice .wpr-pro-notice,
721
- .elementor-control-front_trigger_pro_notice .wpr-pro-notice,
722
- .elementor-control-back_link_type_pro_notice .wpr-pro-notice,
723
- .elementor-control-box_anim_timing_pro_notice .wpr-pro-notice,
724
- .elementor-control-image_style_pro_notice .wpr-pro-notice,
725
- .elementor-control-image_animation_timing_pro_notice .wpr-pro-notice,
726
- .elementor-control-label_display_pro_notice .wpr-pro-notice,
727
- .elementor-control-post_type_pro_notice .wpr-pro-notice,
728
- .elementor-control-type_select_pro_notice .wpr-pro-notice,
729
- .elementor-control-icon_style_pro_notice .wpr-pro-notice,
730
- .elementor-control-dual_button_pro_notice .wpr-pro-notice,
731
- .elementor-control-team_member_pro_notice .wpr-pro-notice,
732
- .elementor-control-price_list_pro_notice .wpr-pro-notice,
733
- .elementor-control-business_hours_pro_notice .wpr-pro-notice,
734
- .elementor-control-sharing_columns_pro_notice .wpr-pro-notice,
735
- .elementor-control-popup_trigger_pro_notice .wpr-pro-notice,
736
- .elementor-control-popup_show_again_delay_pro_notice .wpr-pro-notice,
737
- .elementor-control-group_popup_settings_pro_notice .wpr-pro-notice,
738
- .elementor-control-post_nav_layout_pro_notice .wpr-pro-notice,
739
- .elementor-control-author_name_links_to_pro_notice .wpr-pro-notice,
740
- .elementor-control-author_title_links_to_pro_notice .wpr-pro-notice,
741
- .elementor-control-comments_form_layout_pro_notice .wpr-pro-notice,
742
- .elementor-control-sharing_repeater_pro_notice .wpr-pro-notice,
743
- .elementor-control-mini_cart_style_pro_notice .wpr-pro-notice,
744
- .elementor-control-tabs_position_pro_notice .wpr-pro-notice,
745
- .elementor-control-choose_table_type_pro_notice .wpr-pro-notice,
746
- .elementor-control-accordion_repeater_pro_notice .wpr-pro-notice,
747
- .elementor-control.elementor-control-data_source_pro_notice .wpr-pro-notice,
748
- .elementor-control.elementor-control-mob_menu_display_as_pro_notice .wpr-pro-notice {
749
- border-bottom: none !important;
750
- }
751
-
752
- /* Both */
753
- .elementor-control.elementor-control-pagination_type_pro_notice,
754
- .elementor-control.elementor-control-tooltip_trigger_pro_notice,
755
- .elementor-control.elementor-control-post_info_select_pro_notice {
756
- padding-top: 0 !important;
757
- padding-bottom: 0 !important;
758
- }
759
-
760
- .elementor-control-pagination_type_pro_notice .wpr-pro-notice {
761
- border-top: none !important;
762
- border-bottom: none !important;
763
- }
764
-
765
- .elementor-control-pro_features_section .elementor-section-toggle,
766
- .elementor-control-pro_features_section .elementor-section-title {
767
- color: #f54;
768
- }
769
-
770
- .elementor-control-pro_features_section .elementor-section-title {
771
- line-height: 20px;
772
- }
773
- .elementor-control-pro_features_section .elementor-section-title .dashicons {
774
- line-height: 20px;
775
- font-size: 13px;
776
- }
777
-
778
- .wpr-pro-features-list {
779
- text-align: center;
780
- }
781
-
782
- .wpr-pro-features-list ul {
783
- text-align: left;
784
- }
785
-
786
- .wpr-pro-features-list ul li {
787
- position: relative;
788
- line-height: 22px;
789
- padding-left: 20px;
790
- }
791
-
792
- .wpr-pro-features-list ul li::before {
793
- content: '.';
794
- font-size: 38px;
795
- position: absolute;
796
- top: -11px;
797
- left: 0;
798
- }
799
-
800
- .wpr-pro-features-list ul + a {
801
- display: inline-block;
802
- background-color: #f54;
803
- color: #fff;
804
- margin: 15px 15px 10px 0;
805
- padding: 7px 12px;
806
- border-radius: 3px;
807
- }
808
-
809
- .wpr-pro-features-list ul + a:hover {
810
- color: #fff;
811
- }
812
-
813
- /* Video Tutorial Link */
814
- .elementor-control[class*="video_tutorial"] {
815
- padding-top: 0 !important;
816
- padding-bottom: 5px !important;
817
- }
818
-
819
- .elementor-control.elementor-control-woo_grid_notice_video_tutorial,
820
- .elementor-control-show_last_update_date {
821
- padding-bottom: 15px !important;
822
- }
823
-
824
- .elementor-control.elementor-control-woo_grid_notice_video_tutorial a {
825
- display: inline-block;
826
- margin-top: 5px;
827
- }
828
-
829
- .elementor-control[class*="video_tutorial"] a {
830
- line-height: 16px;
831
- font-size: 12px;
832
- }
833
-
834
- .elementor-control[class*="video_tutorial"] a .dashicons {
835
- font-size: 16px;
836
- }
837
-
838
- /* Pro Control Class */
839
- .elementor-control.wpr-pro-control label i {
840
- color: #aeaeae;
841
- font-size: 14px;
842
- margin-left: 3px;
843
- }
844
-
845
- .elementor-control.wpr-pro-control .elementor-control-content:before {
846
- content: '';
847
- position: absolute;
848
- width: 100%;
849
- height: 100%;
850
- z-index: 9;
851
- background: transparent;
852
- }
853
-
854
- .elementor-control.wpr-pro-control .elementor-control-content:after {
855
- content: "This option is available in the Pro Version.";
856
- visibility: hidden;
857
- opacity: 0;
858
- position: absolute;
859
- top: 30px;
860
- padding: 15px;
861
- z-index: 99;
862
- margin-top: 10px;
863
- font-size: 12px;
864
- color: #93003c;
865
- background-color: #ffffff;
866
- border-radius: 5px;
867
- -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
868
- box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
869
- border: 1px solid #e6e9ec;
870
- -webkit-transition: all 0.2s ease-in;
871
- -o-transition: all 0.2s ease-in;
872
- transition: all 0.2s ease-in;
873
- }
874
-
875
- .elementor-repeater-fields .elementor-control.wpr-pro-control .elementor-control-content:after {
876
- content: "This is available in the Pro Version.";
877
- }
878
-
879
- .elementor-control.wpr-pro-control.no-distance .elementor-control-content:after {
880
- margin: 0;
881
- }
882
-
883
- .elementor-control.wpr-pro-control .elementor-control-content:hover:after {
884
- visibility: visible;
885
- opacity: 1;
886
- }
887
-
888
- /*--------------------------------------------------------------
889
- == Theme Builder Widgets
890
- --------------------------------------------------------------*/
891
- #elementor-panel-categories {
892
- display: -webkit-box;
893
- display: -ms-flexbox;
894
- display: flex;
895
- -webkit-box-orient: vertical;
896
- -webkit-box-direction: normal;
897
- -ms-flex-direction: column;
898
- flex-direction: column;
899
- }
900
-
901
- #elementor-panel-categories > div {
902
- -webkit-box-ordinal-group: 3;
903
- -ms-flex-order: 2;
904
- order: 2;
905
- }
906
-
907
- #elementor-panel-category-wpr-theme-builder-widgets,
908
- #elementor-panel-category-wpr-woocommerce-builder-widgets {
909
- -webkit-box-ordinal-group: 2 !important;
910
- -ms-flex-order: 1 !important;
911
- order: 1 !important;
912
- }
913
-
914
- .elementor-editor-wpr-theme-builder #elementor-panel-footer-saver-preview {
915
- display: none !important;
916
- }
917
-
918
-
919
- /*--------------------------------------------------------------
920
- == Elementor Search Notice
921
- --------------------------------------------------------------*/
922
- .wpr-elementor-search-notice {
923
- background: #fff;
924
- font-size: 13px;
925
- padding: 20px;
926
- line-height: 18px;
927
- margin: 10px;
928
- border-left: 3px solid #71d7f7;
929
- -webkit-box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
930
- box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
931
- }
932
-
933
-
934
- /*--------------------------------------------------------------
935
- == Debug
936
- --------------------------------------------------------------*/
937
- pre.xdebug-var-dump {
938
- position: absolute;
939
- z-index: 999999;
940
- background: #fff;
941
- border: 2px solid #000;
942
- padding: 20px;
943
- left: 300px;
944
  }
1
+ /*--------------------------------------------------------------
2
+ == General
3
+ --------------------------------------------------------------*/
4
+ .wpr-elementor-hidden-control {
5
+ overflow: hidden;
6
+ width: 0 !important;
7
+ height: 0 !important;
8
+ padding: 0 !important;
9
+ margin: 0 !important;
10
+ visibility: hidden !important;
11
+ opacity: 0 !important;
12
+ }
13
+
14
+
15
+ /*--------------------------------------------------------------
16
+ == WPR Widgets
17
+ --------------------------------------------------------------*/
18
+ .elementor-panel .wpr-icon:after {
19
+ content: 'R';
20
+ display: block;
21
+ position: absolute;
22
+ top: 3px;
23
+ right: 3px;
24
+ font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
25
+ font-size: 10px;
26
+ font-weight: bold;
27
+ color: #ffffff;
28
+ background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
29
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
30
+ background-image: linear-gradient(#6A4BFF, #7E94FE);
31
+ -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
32
+ box-shadow: 0 0 2px 2px #b8c7ff;
33
+ width: 19px;
34
+ height: 19px;
35
+ line-height: 19px;
36
+ border-radius: 15px;
37
+ margin: 3px;
38
+ }
39
+
40
+ .elementor-panel .elementor-element .icon {
41
+ position: relative !important;
42
+ }
43
+
44
+ .elementor-element--promotion .wpr-icon:after {
45
+ top: 22px;
46
+ right: -1px;
47
+ opacity: 0.7;
48
+ }
49
+
50
+ #elementor-element--promotion__dialog .dialog-button {
51
+ text-align: center;
52
+ }
53
+
54
+ .elementor-control-type-section[class*="elementor-control-wpr_section_"]:after {
55
+ content: 'R';
56
+ display: block;
57
+ position: absolute;
58
+ top: 7px;
59
+ right: 7px;
60
+ font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
61
+ font-size: 10px;
62
+ font-weight: bold;
63
+ color: #ffffff;
64
+ background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
65
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
66
+ background-image: linear-gradient(#6A4BFF, #7E94FE);
67
+ -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
68
+ box-shadow: 0 0 2px 2px #b8c7ff;
69
+ width: 19px;
70
+ height: 19px;
71
+ line-height: 19px;
72
+ border-radius: 15px;
73
+ margin: 3px;
74
+ text-align: center;
75
+ }
76
+
77
+ /*--------------------------------------------------------------
78
+ == Adjustments
79
+ --------------------------------------------------------------*/
80
+ .elementor-control-element_select,
81
+ .elementor-control-element_align_hr,
82
+ .elementor-control-element_read_more_text,
83
+ .elementor-control-element_tax_sep,
84
+ .elementor-control-element_sharing_icon_6,
85
+ .elementor-control-element_sharing_trigger_direction,
86
+ .elementor-control-element_sharing_icon_display,
87
+ .elementor-control-element_sharing_tooltip,
88
+ .elementor-control-element_custom_field_wrapper_html,
89
+ .elementor-control-slider_item_bg_size,
90
+ .elementor-control-element_addcart_variable_txt,
91
+ .elementor-control-type,
92
+ .elementor-control-show_last_update_date {
93
+ margin-bottom: 15px;
94
+ }
95
+
96
+ .elementor-control-slider_content_bg_color,
97
+ .elementor-control-slider_nav_border_border,
98
+ .elementor-control-slider_nav_border_radius,
99
+ .elementor-control-scroll_btn_vr,
100
+ .elementor-control-pagination_load_more_text,
101
+ .elementor-control-pagination_finish_text,
102
+ .elementor-control-pagination_prev_next,
103
+ .elementor-control-author_transition_duration,
104
+ .elementor-control-comments_transition_duration,
105
+ .elementor-control-likes_transition_duration,
106
+ .elementor-control-sharing_transition_duration,
107
+ .elementor-control-lightbox_transition_duration,
108
+ .elementor-control-custom_field1_transition_duration,
109
+ .elementor-control-custom_field2_transition_duration,
110
+ .elementor-control-custom_field3_transition_duration,
111
+ .elementor-control-custom_field4_transition_duration,
112
+ .elementor-control-filters_transition_duration,
113
+ .elementor-control-pagination_transition_duration,
114
+ .elementor-control-element_extra_text_pos,
115
+ .elementor-control-element_custom_field_wrapper,
116
+ .elementor-control-overlay_post_link,
117
+ .elementor-control-read_more_animation_height,
118
+ .elementor-control-archive_link_transition_duration,
119
+ .elementor-control-post_info_tax_select,
120
+ .elementor-control-post_info_link_wrap,
121
+ .elementor-control-post_info_modified_time,
122
+ .elementor-control-tabs_sharing_custom_colors,
123
+ .elementor-control-post_info_show_avatar,
124
+ .elementor-control-post_info_cf,
125
+ .elementor-control-pricing_items .elementor-control-price,
126
+ .elementor-control-pricing_items .elementor-control-feature_text,
127
+ .elementor-control-pricing_items .elementor-control-btn_text,
128
+ .elementor-control-divider_style,
129
+ .elementor-control-filters_pointer,
130
+ .elementor-control-title_transition_duration,
131
+ .elementor-control-tax1_transition_duration,
132
+ .elementor-control-tax2_transition_duration,
133
+ .elementor-control-filters_transition_duration,
134
+ .elementor-control-pagination_older_text,
135
+ .elementor-control-tooltip_position,
136
+ .elementor-control-post_info_comments_text_1 {
137
+ padding-top: 15px !important;
138
+ }
139
+
140
+ .elementor-control-post_info_custom_field_video_tutorial {
141
+ margin-top: 15px;
142
+ }
143
+
144
+ .elementor-control-title_pointer_animation + .elementor-control-title_transition_duration,
145
+ .elementor-control-tax1_pointer_animation + .elementor-control-tax1_transition_duration,
146
+ .elementor-control-tax2_pointer_animation + .elementor-control-tax2_transition_duration,
147
+ .elementor-control-filters_pointer_animation + .elementor-control-filters_transition_duration {
148
+ padding-top: 0 !important;
149
+ }
150
+
151
+ .elementor-control-pagination_load_more_text {
152
+ padding-bottom: 0 !important;
153
+ }
154
+
155
+ .elementor-control-filters_transition_duration,
156
+ .elementor-control-show_last_update_date {
157
+ padding-top: 0 !important;
158
+ }
159
+
160
+ .elementor-control-animation_divider,
161
+ .elementor-control-overlay_divider,
162
+ .elementor-control-slider_item_btn_1_divider,
163
+ .elementor-control-slider_item_btn_2_divider,
164
+ .elementor-control-slider_btn_typography_1_divider,
165
+ .elementor-control-slider_btn_box_shadow_1_divider,
166
+ .elementor-control-slider_btn_typography_2_divider,
167
+ .elementor-control-slider_btn_box_shadow_2_divider,
168
+ .elementor-control-testimonial_title_divider,
169
+ .elementor-control-social_media_divider,
170
+ .elementor-control-social_divider_1,
171
+ .elementor-control-social_divider_2,
172
+ .elementor-control-social_divider_3,
173
+ .elementor-control-social_divider_4,
174
+ .elementor-control-social_divider_5,
175
+ .elementor-control-custom_field_wrapper_html_divider1,
176
+ .elementor-control-custom_field_wrapper_html_divider2,
177
+ .elementor-control-lightbox_shadow_divider {
178
+ padding: 0 !important;
179
+ }
180
+
181
+ .elementor-control-custom_field_wrapper_html_divider1 hr,
182
+ .elementor-control-lightbox_shadow_divider hr {
183
+ height: 1px !important;
184
+ }
185
+
186
+ .elementor-control-element_show_on {
187
+ padding-top: 15px !important;
188
+ border-top: 1px solid #d5dadf;
189
+ }
190
+
191
+ [class*="wpr__section_"] ~ .elementor-control-type-number .elementor-control-input-wrapper,
192
+ [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-number .elementor-control-input-wrapper {
193
+ max-width: 30% !important;
194
+ margin-left: auto !important;
195
+ }
196
+
197
+ [class*="wpr__section_"] ~ .elementor-control-type-select .elementor-control-input-wrapper,
198
+ [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-select .elementor-control-input-wrapper {
199
+ width: auto !important;
200
+ min-width: 30% !important;
201
+ margin-left: auto !important;
202
+ }
203
+
204
+ .elementor-control-submit_preview_changes .elementor-control-input-wrapper {
205
+ text-align: center !important;
206
+ }
207
+
208
+ .elementor-control-query_manual_related,
209
+ .elementor-control-query_manual_current {
210
+ display: none !important;
211
+ }
212
+
213
+ /* Fix Select Inputs */
214
+ .elementor-control-button_hover_animation .elementor-control-input-wrapper,
215
+ .elementor-control-front_btn_animation .elementor-control-input-wrapper,
216
+ .elementor-control-back_btn_animation .elementor-control-input-wrapper,
217
+
218
+ .elementor-control-select_template .select2-selection,
219
+ .elementor-control-switcher_first_select_template .select2-selection,
220
+ .elementor-control-switcher_second_select_template .select2-selection,
221
+ .elementor-control-switcher_select_template .select2-selection,
222
+ .elementor-control-slider_select_template .select2-selection {
223
+ width: 135px !important;
224
+ }
225
+
226
+ .elementor-control-type-repeater .elementor-control-content > label {
227
+ display: none !important;
228
+ }
229
+
230
+
231
+ /*--------------------------------------------------------------
232
+ == Notification
233
+ --------------------------------------------------------------*/
234
+ #wpr-template-settings-notification {
235
+ position: fixed;
236
+ left: 40px;
237
+ bottom: 5px;
238
+ z-index: 9999;
239
+ padding: 13px 25px;
240
+ background: #fff;
241
+ color: #222;
242
+ -webkit-box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
243
+ box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
244
+ border-radius: 3px;
245
+ }
246
+
247
+ #wpr-template-settings-notification:before {
248
+ content: "";
249
+ position: absolute;
250
+ left: -6px;
251
+ bottom: 10px;
252
+ width: 0;
253
+ height: 0;
254
+ border-top: 6px solid transparent;
255
+ border-bottom: 6px solid transparent;
256
+ border-right-style: solid;
257
+ border-right-width: 6px;
258
+ border-right-color: #fff;
259
+ }
260
+
261
+ #wpr-template-settings-notification h4 {
262
+ margin-bottom: 10px;
263
+ }
264
+
265
+ #wpr-template-settings-notification h4 span {
266
+ font-size: 14px;
267
+ vertical-align: super;
268
+ color: #5f5f5f;
269
+ }
270
+
271
+ #wpr-template-settings-notification h4 i {
272
+ margin-right: 10px;
273
+ color: #3db050;
274
+ font-size: 24px;
275
+ }
276
+
277
+ #wpr-template-settings-notification p {
278
+ color: #666;
279
+ font-size: 12px;
280
+ line-height: 1.5;
281
+ }
282
+
283
+ #wpr-template-settings-notification > i {
284
+ position: absolute;
285
+ top: 7px;
286
+ right: 7px;
287
+ cursor: pointer;
288
+ color: #999;
289
+ }
290
+
291
+ .elementor-control-cf7_notice,
292
+ .elementor-control-wpforms_notice,
293
+ .elementor-control-ninja_forms_notice,
294
+ .elementor-control-caldera_notice {
295
+ color: red;
296
+ }
297
+
298
+ /* Help Button - select with referrals - [href^="https://royal-elementor-addons.com/contact/"] */
299
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] {
300
+ display: inline-block;
301
+ padding: 12px 35px;
302
+ font-size: 13px;
303
+ font-weight: normal;
304
+ color: #fff;
305
+ background: #6A65FF;
306
+ border-radius: 3px;
307
+ -webkit-box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
308
+ box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
309
+ letter-spacing: 0.3px;
310
+ -webkit-transition: all 0.2s ease-in;
311
+ -o-transition: all 0.2s ease-in;
312
+ transition: all 0.2s ease-in;
313
+ }
314
+
315
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover {
316
+ color: #fff;
317
+ background: #6A4BFF;
318
+ }
319
+
320
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] i {
321
+ color: #fff;
322
+ font-size: 14px;
323
+ vertical-align: top;
324
+ }
325
+
326
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i {
327
+ color: #fff;
328
+ }
329
+
330
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i:before {
331
+ content: '\e942' !important;
332
+ }
333
+
334
+ .elementor-control-posts_slider_notice .elementor-control-raw-html {
335
+ font-style: normal !important;
336
+ }
337
+
338
+ .elementor-control-product_notice_widget_info .elementor-control-raw-html {
339
+ color: red;
340
+ }
341
+
342
+
343
+ /*--------------------------------------------------------------
344
+ == Modal Popup Editor
345
+ --------------------------------------------------------------*/
346
+ .elementor-editor-wpr-popups .elementor-control-document_settings,
347
+ .elementor-editor-wpr-popups .elementor-control-post_title,
348
+ .elementor-editor-wpr-popups .elementor-control-post_status {
349
+ display: none !important;
350
+ }
351
+
352
+
353
+ /*--------------------------------------------------------------
354
+ == Elementor Editor Popup
355
+ --------------------------------------------------------------*/
356
+ #wpr-template-editor-popup .dialog-widget-content {
357
+ width: 90vw;
358
+ height: 90vh;
359
+ }
360
+
361
+ #wpr-template-editor-popup .dialog-message {
362
+ padding: 0;
363
+ width: 100%;
364
+ height: 100%;
365
+ }
366
+
367
+ #wpr-template-editor-popup .dialog-close-button {
368
+ font-size: 24px;
369
+ color: #222;
370
+ }
371
+
372
+ #wpr-template-editor-popup .dialog-header {
373
+ display: none;
374
+ }
375
+
376
+ #wpr-template-editor-loading {
377
+ position: absolute;
378
+ top: 0;
379
+ left: 0;
380
+ width: 100%;
381
+ height: 100%;
382
+ background: #f1f3f5;
383
+ z-index: 9999;
384
+ -webkit-transform: translateZ(0);
385
+ transform: translateZ(0);
386
+ display: -webkit-box;
387
+ display: -ms-flexbox;
388
+ display: flex;
389
+ -webkit-box-pack: center;
390
+ -ms-flex-pack: center;
391
+ justify-content: center;
392
+ -webkit-box-align: center;
393
+ -ms-flex-align: center;
394
+ align-items: center;
395
+ }
396
+
397
+ #wpr-template-editor-loading .elementor-loader-wrapper {
398
+ top: auto;
399
+ left: auto;
400
+ -webkit-transform: none;
401
+ -ms-transform: none;
402
+ transform: none;
403
+ }
404
+
405
+ /* Disable Transitions on Responsive Preview */
406
+ #elementor-preview-responsive-wrapper {
407
+ -webkit-transition: none !important;
408
+ -o-transition: none !important;
409
+ transition: none !important;
410
+ }
411
+
412
+
413
+ /*--------------------------------------------------------------
414
+ == Magazine Grid Layout
415
+ --------------------------------------------------------------*/
416
+ .elementor-control-layout_select.elementor-control .elementor-control-field {
417
+ -webkit-box-orient: vertical !important;
418
+ -webkit-box-direction: normal !important;
419
+ -ms-flex-direction: column !important;
420
+ flex-direction: column !important;
421
+ -webkit-box-align: start;
422
+ -ms-flex-align: start;
423
+ align-items: flex-start;
424
+ }
425
+
426
+ .elementor-control-layout_select.elementor-control .elementor-control-input-wrapper {
427
+ display: -webkit-box;
428
+ display: -ms-flexbox;
429
+ display: flex;
430
+ width: 100% !important;
431
+ margin-top: 10px;
432
+ }
433
+
434
+ .elementor-control-layout_select.elementor-control .elementor-choices {
435
+ -ms-flex-wrap: wrap;
436
+ flex-wrap: wrap;
437
+ -webkit-box-align: stretch;
438
+ -ms-flex-align: stretch;
439
+ align-items: stretch;
440
+ width: 100% !important;
441
+ height: auto;
442
+ border: 1px solid #dfd5d5;
443
+ }
444
+
445
+ .elementor-control-layout_select.elementor-control .elementor-choices label {
446
+ width: 33.3%;
447
+ height: 50px;
448
+ background-size: 75%;
449
+ background-position: center center;
450
+ background-repeat: no-repeat;
451
+ }
452
+
453
+ .elementor-control-layout_select input[type="radio"]:checked + label {
454
+ border: 2px solid #D30C5C;
455
+ border-radius: 0 !important;
456
+ background-color: #ffffff;
457
+ }
458
+
459
+ .elementor-control-layout_select label:nth-child(2) {
460
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='15.2' class='st1' width='22.2' height='11.9'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='9.2'/%3E%3C/g%3E%3C/svg%3E");
461
+ }
462
+
463
+ .elementor-control-layout_select label:nth-child(4) {
464
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
465
+ }
466
+
467
+ .elementor-control-layout_select label:nth-child(6) {
468
+ background: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Cg%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
469
+ }
470
+
471
+ .elementor-control-layout_select label:nth-child(8) {
472
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
473
+ }
474
+
475
+ .elementor-control-layout_select label:nth-child(10) {
476
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
477
+ }
478
+
479
+ .elementor-control-layout_select label:nth-child(12) {
480
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='28.5' height='22.2'/%3E%3Crect x='31.8' y='12.9' class='st1' width='15.9' height='6.3'/%3E%3Crect x='31.8' y='4.9' class='st1' width='15.9' height='6.8'/%3E%3Crect x='31.8' y='20.3' class='st1' width='15.9' height='6.8'/%3E%3C/g%3E%3C/svg%3E");
481
+ }
482
+
483
+ .elementor-control-layout_select label:nth-child(14) {
484
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='2.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
485
+ }
486
+
487
+ .elementor-control-layout_select label:nth-child(16) {
488
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='33.9' height='13.2'/%3E%3Crect x='2.2' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='19.7' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='13.2'/%3E%3Crect x='37.2' y='19.3' class='st1' width='10.5' height='7.8'/%3E%3C/g%3E%3C/svg%3E");
489
+ }
490
+
491
+ .elementor-control-layout_select label:nth-child(18) {
492
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='2.2' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='17.8' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='33.3' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3C/g%3E%3C/svg%3E");
493
+ }
494
+
495
+ .elementor-control-layout_select label:nth-child(20) {
496
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
497
+ }
498
+
499
+ .elementor-control-layout_select label:nth-child(22) {
500
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='14.5' height='22.2'/%3E%3Crect x='33.4' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3Crect x='17.9' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
501
+ }
502
+
503
+ .elementor-control-layout_select label:nth-child(24) {
504
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='10.6' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='14' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
505
+ }
506
+
507
+ /*--------------------------------------------------------------
508
+ == Widget Preview and Library buttons
509
+ --------------------------------------------------------------*/
510
+ .elementor-control-wpr_library_buttons {
511
+ height: 60px;
512
+ padding: 0;
513
+ }
514
+
515
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html {
516
+ padding: 0 10px 10px 10px;
517
+ border-bottom: 1px solid #efefef;
518
+ }
519
+
520
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div {
521
+ display: -webkit-box;
522
+ display: -ms-flexbox;
523
+ display: flex;
524
+ -webkit-box-pack: center;
525
+ -ms-flex-pack: center;
526
+ justify-content: center;
527
+ }
528
+
529
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div a {
530
+ -webkit-box-flex: 1;
531
+ -ms-flex-positive: 1;
532
+ flex-grow: 1;
533
+ padding: 10px 15px;
534
+ border-radius: 3px;
535
+ /*box-shadow: 1px 2px 5px 0 rgba(0,0,0,0.2);*/
536
+ white-space: nowrap;
537
+ overflow: hidden;
538
+ -o-text-overflow: ellipsis;
539
+ text-overflow: ellipsis;
540
+ text-align: center;
541
+ }
542
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:first-child {
543
+ background-color: #1CB4E4;
544
+ color: #fff;
545
+ margin-right: 3px;
546
+ }
547
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:last-child {
548
+ margin-left: 3px;
549
+ background-color: #6A65FF;
550
+ color: #fff;
551
+ }
552
+
553
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html > a {
554
+ display: block;
555
+ margin-top: 10px;
556
+ line-height: 20px;
557
+ color: #777;
558
+ border: none !important;
559
+ }
560
+
561
+ .elementor-section-title > a {
562
+ top: 10px;
563
+ right: 20px;
564
+ position: absolute;
565
+ line-height: 20px;
566
+ }
567
+
568
+ .elementor-section-title > a:hover {
569
+ border-color: transparent;
570
+ }
571
+
572
+ /*--------------------------------------------------------------
573
+ == Apply Changes Button
574
+ --------------------------------------------------------------*/
575
+ .editor-wpr-preview-update {
576
+ margin: 0;
577
+ display: -webkit-box;
578
+ display: -ms-flexbox;
579
+ display: flex;
580
+ -webkit-box-pack: justify;
581
+ -ms-flex-pack: justify;
582
+ justify-content: space-between;
583
+ }
584
+
585
+ .editor-wpr-preview-update button {
586
+ font-size: 13px;
587
+ padding: 5px 10px;
588
+ }
589
+
590
+
591
+ /*--------------------------------------------------------------
592
+ == Free/Pro Options
593
+ --------------------------------------------------------------*/
594
+ .elementor-control select option[value*=pro-] {
595
+ background: #f0f0f0;
596
+ }
597
+
598
+ .elementor-control[class*="pro_notice"] {
599
+ padding: 5px 0 15px 0 !important;
600
+ }
601
+
602
+ .wpr-pro-notice {
603
+ padding: 20px;
604
+ border-top: 1px solid #e6e9ec;
605
+ border-bottom: 1px solid #e6e9ec;
606
+ background-color: #f2fbff;
607
+ line-height: 1.4;
608
+ text-align: center;
609
+ }
610
+
611
+ .wpr-pro-notice-video {
612
+ display: block;
613
+ margin-top: 7px;
614
+ line-height: 20px;
615
+ border: none !important;
616
+ }
617
+
618
+ #elementor-controls .elementor-control-slider_section_pro_notice {
619
+ margin-top: -16px;
620
+ padding-bottom: 0 !important;
621
+ }
622
+
623
+ .elementor-control-layout_select_pro_notice + div,
624
+ .elementor-control-element_align_pro_notice + div {
625
+ padding-top: 15px;
626
+ }
627
+
628
+ .elementor-control-layout_select .elementor-choices label {
629
+ position: relative;
630
+ }
631
+
632
+ .elementor-control-layout_select .elementor-choices label:nth-child(2):after,
633
+ .elementor-control-layout_select .elementor-choices label:nth-child(4):after,
634
+ .elementor-control-layout_select .elementor-choices label:nth-child(6):after,
635
+ .elementor-control-layout_select .elementor-choices label:nth-child(8):after,
636
+ .elementor-control-layout_select .elementor-choices label:nth-child(10):after,
637
+ .elementor-control-layout_select .elementor-choices label:nth-child(12):after {
638
+ content: ' ';
639
+ display: block;
640
+ width: 100%;
641
+ height: 100%;
642
+ position: absolute;
643
+ top: 0;
644
+ left: 0;
645
+ background: rgba(0,0,0,0.2);
646
+ }
647
+
648
+ /* Adjustments */
649
+ .elementor-control.elementor-control-element_align_pro_notice,
650
+ .elementor-control.elementor-control-search_pro_notice,
651
+ .elementor-control.elementor-control-layout_select_pro_notice,
652
+ .elementor-control.elementor-control-grid_columns_pro_notice,
653
+ .elementor-control.elementor-control-slider_content_type_pro_notice,
654
+ .elementor-control.elementor-control-slider_repeater_pro_notice,
655
+ .elementor-control.elementor-control-slider_dots_layout_pro_notice,
656
+ .elementor-control.elementor-control-testimonial_repeater_pro_notice,
657
+ .elementor-control.elementor-control-testimonial_icon_pro_notice,
658
+ .elementor-control.elementor-control-menu_layout_pro_notice,
659
+ .elementor-control.elementor-control-menu_items_submenu_entrance_pro_notice,
660
+ .elementor-control.elementor-control-switcher_label_style_pro_notice,
661
+ .elementor-control.elementor-control-countdown_type_pro_notice,
662
+ .elementor-control.elementor-control-layout_pro_notice,
663
+ .elementor-control.elementor-control-anim_timing_pro_notice,
664
+ .elementor-control.elementor-control-tab_content_type_pro_notice,
665
+ .elementor-control.elementor-control-tabs_repeater_pro_notice,
666
+ .elementor-control.elementor-control-tabs_align_pro_notice,
667
+ .elementor-control.elementor-control-front_trigger_pro_notice,
668
+ .elementor-control.elementor-control-back_link_type_pro_notice,
669
+ .elementor-control.elementor-control-box_anim_timing_pro_notice,
670
+ .elementor-control.elementor-control-image_style_pro_notice,
671
+ .elementor-control.elementor-control-image_animation_timing_pro_notice,
672
+ .elementor-control.elementor-control-label_display_pro_notice,
673
+ .elementor-control.elementor-control-post_type_pro_notice,
674
+ .elementor-control.elementor-control-type_select_pro_notice,
675
+ .elementor-control.elementor-control-icon_style_pro_notice,
676
+ .elementor-control.elementor-control-dual_button_pro_notice,
677
+ .elementor-control.elementor-control-team_member_pro_notice,
678
+ .elementor-control.elementor-control-price_list_pro_notice,
679
+ .elementor-control.elementor-control-business_hours_pro_notice,
680
+ .elementor-control.elementor-control-sharing_columns_pro_notice,
681
+ .elementor-control.elementor-control-popup_trigger_pro_notice,
682
+ .elementor-control.elementor-control-popup_show_again_delay_pro_notice,
683
+ .elementor-control.elementor-control-group_popup_settings_pro_notice,
684
+ .elementor-control.elementor-control-which_particle_pro_notice,
685
+ .elementor-control.elementor-control-paralax_repeater_pro_notice,
686
+ .elementor-control.elementor-control-opnepage_pro_notice,
687
+ .elementor-control.elementor-control-timeline_repeater_pro_notice,
688
+ .elementor-control.elementor-control-limit_grid_items_pro_notice,
689
+ .elementor-control.elementor-control-post_nav_layout_pro_notice,
690
+ .elementor-control.elementor-control-author_name_links_to_pro_notice,
691
+ .elementor-control.elementor-control-author_title_links_to_pro_notice,
692
+ .elementor-control.elementor-control-comments_form_layout_pro_notice,
693
+ .elementor-control.elementor-control-sharing_repeater_pro_notice,
694
+ .elementor-control.elementor-control-mini_cart_style_pro_notice,
695
+ .elementor-control.elementor-control-tabs_position_pro_notice,
696
+ .elementor-control.elementor-control-choose_table_type_pro_notice,
697
+ .elementor-control.elementor-control-accordion_repeater_pro_notice,
698
+ .elementor-control.elementor-control-acc_repeater_pro_notice,
699
+ .elementor-control.elementor-control-data_source_pro_notice,
700
+ .elementor-control.elementor-control-charts_repeater_pro_notice,
701
+ .elementor-control.elementor-control-mob_menu_display_as_pro_notice {
702
+ padding-bottom: 0 !important;
703
+ }
704
+
705
+ .elementor-control-search_pro_notice .wpr-pro-notice,
706
+ .elementor-control-grid_columns_pro_notice .wpr-pro-notice,
707
+ .elementor-control-slider_content_type_pro_notice .wpr-pro-notice,
708
+ .elementor-control-slider_repeater_pro_notice .wpr-pro-notice,
709
+ .elementor-control-slider_dots_layout_pro_notice .wpr-pro-notice,
710
+ .elementor-control-testimonial_repeater_pro_notice .wpr-pro-notice,
711
+ .elementor-control-testimonial_icon_pro_notice .wpr-pro-notice,
712
+ .elementor-control-menu_layout_pro_notice .wpr-pro-notice,
713
+ .elementor-control-menu_items_submenu_entrance_pro_notice .wpr-pro-notice,
714
+ .elementor-control-switcher_label_style_pro_notice .wpr-pro-notice,
715
+ .elementor-control-countdown_type_pro_notice .wpr-pro-notice,
716
+ .elementor-control-layout_pro_notice .wpr-pro-notice,
717
+ .elementor-control-anim_timing_pro_notice .wpr-pro-notice,
718
+ .elementor-control-tab_content_type_pro_notice .wpr-pro-notice,
719
+ .elementor-control-tabs_repeater_pro_notice .wpr-pro-notice,
720
+ .elementor-control-tabs_align_pro_notice .wpr-pro-notice,
721
+ .elementor-control-front_trigger_pro_notice .wpr-pro-notice,
722
+ .elementor-control-back_link_type_pro_notice .wpr-pro-notice,
723
+ .elementor-control-box_anim_timing_pro_notice .wpr-pro-notice,
724
+ .elementor-control-image_style_pro_notice .wpr-pro-notice,
725
+ .elementor-control-image_animation_timing_pro_notice .wpr-pro-notice,
726
+ .elementor-control-label_display_pro_notice .wpr-pro-notice,
727
+ .elementor-control-post_type_pro_notice .wpr-pro-notice,
728
+ .elementor-control-type_select_pro_notice .wpr-pro-notice,
729
+ .elementor-control-icon_style_pro_notice .wpr-pro-notice,
730
+ .elementor-control-dual_button_pro_notice .wpr-pro-notice,
731
+ .elementor-control-team_member_pro_notice .wpr-pro-notice,
732
+ .elementor-control-price_list_pro_notice .wpr-pro-notice,
733
+ .elementor-control-business_hours_pro_notice .wpr-pro-notice,
734
+ .elementor-control-sharing_columns_pro_notice .wpr-pro-notice,
735
+ .elementor-control-popup_trigger_pro_notice .wpr-pro-notice,
736
+ .elementor-control-popup_show_again_delay_pro_notice .wpr-pro-notice,
737
+ .elementor-control-group_popup_settings_pro_notice .wpr-pro-notice,
738
+ .elementor-control-post_nav_layout_pro_notice .wpr-pro-notice,
739
+ .elementor-control-author_name_links_to_pro_notice .wpr-pro-notice,
740
+ .elementor-control-author_title_links_to_pro_notice .wpr-pro-notice,
741
+ .elementor-control-comments_form_layout_pro_notice .wpr-pro-notice,
742
+ .elementor-control-sharing_repeater_pro_notice .wpr-pro-notice,
743
+ .elementor-control-mini_cart_style_pro_notice .wpr-pro-notice,
744
+ .elementor-control-tabs_position_pro_notice .wpr-pro-notice,
745
+ .elementor-control-choose_table_type_pro_notice .wpr-pro-notice,
746
+ .elementor-control-accordion_repeater_pro_notice .wpr-pro-notice,
747
+ .elementor-control.elementor-control-data_source_pro_notice .wpr-pro-notice,
748
+ .elementor-control.elementor-control-mob_menu_display_as_pro_notice .wpr-pro-notice {
749
+ border-bottom: none !important;
750
+ }
751
+
752
+ /* Both */
753
+ .elementor-control.elementor-control-pagination_type_pro_notice,
754
+ .elementor-control.elementor-control-tooltip_trigger_pro_notice,
755
+ .elementor-control.elementor-control-post_info_select_pro_notice {
756
+ padding-top: 0 !important;
757
+ padding-bottom: 0 !important;
758
+ }
759
+
760
+ .elementor-control-pagination_type_pro_notice .wpr-pro-notice {
761
+ border-top: none !important;
762
+ border-bottom: none !important;
763
+ }
764
+
765
+ .elementor-control-pro_features_section .elementor-section-toggle,
766
+ .elementor-control-pro_features_section .elementor-section-title {
767
+ color: #f54;
768
+ }
769
+
770
+ .elementor-control-pro_features_section .elementor-section-title {
771
+ line-height: 20px;
772
+ }
773
+ .elementor-control-pro_features_section .elementor-section-title .dashicons {
774
+ line-height: 20px;
775
+ font-size: 13px;
776
+ }
777
+
778
+ .wpr-pro-features-list {
779
+ text-align: center;
780
+ }
781
+
782
+ .wpr-pro-features-list ul {
783
+ text-align: left;
784
+ }
785
+
786
+ .wpr-pro-features-list ul li {
787
+ position: relative;
788
+ line-height: 22px;
789
+ padding-left: 20px;
790
+ }
791
+
792
+ .wpr-pro-features-list ul li::before {
793
+ content: '.';
794
+ font-size: 38px;
795
+ position: absolute;
796
+ top: -11px;
797
+ left: 0;
798
+ }
799
+
800
+ .wpr-pro-features-list ul + a {
801
+ display: inline-block;
802
+ background-color: #f54;
803
+ color: #fff;
804
+ margin: 15px 15px 10px 0;
805
+ padding: 7px 12px;
806
+ border-radius: 3px;
807
+ }
808
+
809
+ .wpr-pro-features-list ul + a:hover {
810
+ color: #fff;
811
+ }
812
+
813
+ /* Video Tutorial Link */
814
+ .elementor-control[class*="video_tutorial"] {
815
+ padding-top: 0 !important;
816
+ padding-bottom: 5px !important;
817
+ }
818
+
819
+ .elementor-control.elementor-control-woo_grid_notice_video_tutorial,
820
+ .elementor-control-show_last_update_date {
821
+ padding-bottom: 15px !important;
822
+ }
823
+
824
+ .elementor-control.elementor-control-woo_grid_notice_video_tutorial a {
825
+ display: inline-block;
826
+ margin-top: 5px;
827
+ }
828
+
829
+ .elementor-control[class*="video_tutorial"] a {
830
+ line-height: 16px;
831
+ font-size: 12px;
832
+ }
833
+
834
+ .elementor-control[class*="video_tutorial"] a .dashicons {
835
+ font-size: 16px;
836
+ }
837
+
838
+ /* Pro Control Class */
839
+ .elementor-control.wpr-pro-control label i {
840
+ color: #aeaeae;
841
+ font-size: 14px;
842
+ margin-left: 3px;
843
+ }
844
+
845
+ .elementor-control.wpr-pro-control .elementor-control-content:before {
846
+ content: '';
847
+ position: absolute;
848
+ width: 100%;
849
+ height: 100%;
850
+ z-index: 9;
851
+ background: transparent;
852
+ }
853
+
854
+ .elementor-control.wpr-pro-control .elementor-control-content:after {
855
+ content: "This option is available in the Pro Version.";
856
+ visibility: hidden;
857
+ opacity: 0;
858
+ position: absolute;
859
+ top: 30px;
860
+ padding: 15px;
861
+ z-index: 99;
862
+ margin-top: 10px;
863
+ font-size: 12px;
864
+ color: #93003c;
865
+ background-color: #ffffff;
866
+ border-radius: 5px;
867
+ -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
868
+ box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
869
+ border: 1px solid #e6e9ec;
870
+ -webkit-transition: all 0.2s ease-in;
871
+ -o-transition: all 0.2s ease-in;
872
+ transition: all 0.2s ease-in;
873
+ }
874
+
875
+ .elementor-repeater-fields .elementor-control.wpr-pro-control .elementor-control-content:after {
876
+ content: "This is available in the Pro Version.";
877
+ }
878
+
879
+ .elementor-control.wpr-pro-control.no-distance .elementor-control-content:after {
880
+ margin: 0;
881
+ }
882
+
883
+ .elementor-control.wpr-pro-control .elementor-control-content:hover:after {
884
+ visibility: visible;
885
+ opacity: 1;
886
+ }
887
+
888
+ /*--------------------------------------------------------------
889
+ == Theme Builder Widgets
890
+ --------------------------------------------------------------*/
891
+ #elementor-panel-categories {
892
+ display: -webkit-box;
893
+ display: -ms-flexbox;
894
+ display: flex;
895
+ -webkit-box-orient: vertical;
896
+ -webkit-box-direction: normal;
897
+ -ms-flex-direction: column;
898
+ flex-direction: column;
899
+ }
900
+
901
+ #elementor-panel-categories > div {
902
+ -webkit-box-ordinal-group: 3;
903
+ -ms-flex-order: 2;
904
+ order: 2;
905
+ }
906
+
907
+ #elementor-panel-category-wpr-theme-builder-widgets,
908
+ #elementor-panel-category-wpr-woocommerce-builder-widgets {
909
+ -webkit-box-ordinal-group: 2 !important;
910
+ -ms-flex-order: 1 !important;
911
+ order: 1 !important;
912
+ }
913
+
914
+ .elementor-editor-wpr-theme-builder #elementor-panel-footer-saver-preview {
915
+ display: none !important;
916
+ }
917
+
918
+
919
+ /*--------------------------------------------------------------
920
+ == Elementor Search Notice
921
+ --------------------------------------------------------------*/
922
+ .wpr-elementor-search-notice {
923
+ background: #fff;
924
+ font-size: 13px;
925
+ padding: 20px;
926
+ line-height: 18px;
927
+ margin: 10px;
928
+ border-left: 3px solid #71d7f7;
929
+ -webkit-box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
930
+ box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
931
+ }
932
+
933
+
934
+ /*--------------------------------------------------------------
935
+ == Debug
936
+ --------------------------------------------------------------*/
937
+ pre.xdebug-var-dump {
938
+ position: absolute;
939
+ z-index: 999999;
940
+ background: #fff;
941
+ border: 2px solid #000;
942
+ padding: 20px;
943
+ left: 300px;
944
  }
assets/css/editor.min.css CHANGED
@@ -1,960 +1,1009 @@
1
- /*--------------------------------------------------------------
2
- == General
3
- --------------------------------------------------------------*/
4
- .wpr-elementor-hidden-control {
5
- overflow: hidden;
6
- width: 0 !important;
7
- height: 0 !important;
8
- padding: 0 !important;
9
- margin: 0 !important;
10
- visibility: hidden !important;
11
- opacity: 0 !important;
12
- }
13
-
14
-
15
- /*--------------------------------------------------------------
16
- == WPR Widgets
17
- --------------------------------------------------------------*/
18
- .elementor-panel .wpr-icon:after {
19
- content: 'R';
20
- display: block;
21
- position: absolute;
22
- top: 3px;
23
- right: 3px;
24
- font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
25
- font-size: 10px;
26
- font-weight: bold;
27
- color: #ffffff;
28
- background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
29
- background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
30
- background-image: linear-gradient(#6A4BFF, #7E94FE);
31
- -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
32
- box-shadow: 0 0 2px 2px #b8c7ff;
33
- width: 19px;
34
- height: 19px;
35
- line-height: 19px;
36
- border-radius: 15px;
37
- margin: 3px;
38
- }
39
-
40
- .elementor-panel .elementor-element .icon {
41
- position: relative !important;
42
- }
43
-
44
- .elementor-element--promotion .wpr-icon:after {
45
- top: 22px;
46
- right: -1px;
47
- opacity: 0.7;
48
- }
49
-
50
- #elementor-element--promotion__dialog .dialog-button {
51
- text-align: center;
52
- }
53
-
54
- .elementor-control-type-section[class*="elementor-control-wpr_section_"]:after {
55
- content: 'R';
56
- display: block;
57
- position: absolute;
58
- top: 7px;
59
- right: 7px;
60
- font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
61
- font-size: 10px;
62
- font-weight: bold;
63
- color: #ffffff;
64
- background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
65
- background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
66
- background-image: linear-gradient(#6A4BFF, #7E94FE);
67
- -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
68
- box-shadow: 0 0 2px 2px #b8c7ff;
69
- width: 19px;
70
- height: 19px;
71
- line-height: 19px;
72
- border-radius: 15px;
73
- margin: 3px;
74
- text-align: center;
75
- }
76
-
77
- /*--------------------------------------------------------------
78
- == Adjustments
79
- --------------------------------------------------------------*/
80
- .elementor-control-element_select,
81
- .elementor-control-element_align_hr,
82
- .elementor-control-element_read_more_text,
83
- .elementor-control-element_tax_sep,
84
- .elementor-control-element_sharing_icon_6,
85
- .elementor-control-element_sharing_trigger_direction,
86
- .elementor-control-element_sharing_icon_display,
87
- .elementor-control-element_sharing_tooltip,
88
- .elementor-control-element_custom_field_wrapper_html,
89
- .elementor-control-slider_item_bg_size,
90
- .elementor-control-element_addcart_variable_txt,
91
- .elementor-control-type,
92
- .elementor-control-show_last_update_date {
93
- margin-bottom: 15px;
94
- }
95
-
96
- .elementor-control-slider_content_bg_color,
97
- .elementor-control-slider_nav_border_border,
98
- .elementor-control-slider_nav_border_radius,
99
- .elementor-control-scroll_btn_vr,
100
- .elementor-control-pagination_load_more_text,
101
- .elementor-control-pagination_finish_text,
102
- .elementor-control-pagination_prev_next,
103
- .elementor-control-author_transition_duration,
104
- .elementor-control-comments_transition_duration,
105
- .elementor-control-likes_transition_duration,
106
- .elementor-control-sharing_transition_duration,
107
- .elementor-control-lightbox_transition_duration,
108
- .elementor-control-custom_field1_transition_duration,
109
- .elementor-control-custom_field2_transition_duration,
110
- .elementor-control-custom_field3_transition_duration,
111
- .elementor-control-custom_field4_transition_duration,
112
- .elementor-control-filters_transition_duration,
113
- .elementor-control-pagination_transition_duration,
114
- .elementor-control-element_extra_text_pos,
115
- .elementor-control-element_custom_field_wrapper,
116
- .elementor-control-overlay_post_link,
117
- .elementor-control-read_more_animation_height,
118
- .elementor-control-archive_link_transition_duration,
119
- .elementor-control-post_info_tax_select,
120
- .elementor-control-post_info_link_wrap,
121
- .elementor-control-post_info_modified_time,
122
- .elementor-control-tabs_sharing_custom_colors,
123
- .elementor-control-post_info_show_avatar,
124
- .elementor-control-post_info_cf,
125
- .elementor-control-pricing_items .elementor-control-price,
126
- .elementor-control-pricing_items .elementor-control-feature_text,
127
- .elementor-control-pricing_items .elementor-control-btn_text,
128
- .elementor-control-divider_style,
129
- .elementor-control-filters_pointer,
130
- .elementor-control-title_transition_duration,
131
- .elementor-control-tax1_transition_duration,
132
- .elementor-control-tax2_transition_duration,
133
- .elementor-control-filters_transition_duration,
134
- .elementor-control-pagination_older_text,
135
- .elementor-control-tooltip_position,
136
- .elementor-control-post_info_comments_text_1 {
137
- padding-top: 15px !important;
138
- }
139
-
140
- .elementor-control-post_info_custom_field_video_tutorial {
141
- margin-top: 15px;
142
- }
143
-
144
- .elementor-control-title_pointer_animation + .elementor-control-title_transition_duration,
145
- .elementor-control-tax1_pointer_animation + .elementor-control-tax1_transition_duration,
146
- .elementor-control-tax2_pointer_animation + .elementor-control-tax2_transition_duration,
147
- .elementor-control-filters_pointer_animation + .elementor-control-filters_transition_duration {
148
- padding-top: 0 !important;
149
- }
150
-
151
- .elementor-control-pagination_load_more_text {
152
- padding-bottom: 0 !important;
153
- }
154
-
155
- .elementor-control-filters_transition_duration,
156
- .elementor-control-show_last_update_date {
157
- padding-top: 0 !important;
158
- }
159
-
160
- .elementor-control-animation_divider,
161
- .elementor-control-overlay_divider,
162
- .elementor-control-slider_item_btn_1_divider,
163
- .elementor-control-slider_item_btn_2_divider,
164
- .elementor-control-slider_btn_typography_1_divider,
165
- .elementor-control-slider_btn_box_shadow_1_divider,
166
- .elementor-control-slider_btn_typography_2_divider,
167
- .elementor-control-slider_btn_box_shadow_2_divider,
168
- .elementor-control-testimonial_title_divider,
169
- .elementor-control-social_media_divider,
170
- .elementor-control-social_divider_1,
171
- .elementor-control-social_divider_2,
172
- .elementor-control-social_divider_3,
173
- .elementor-control-social_divider_4,
174
- .elementor-control-social_divider_5,
175
- .elementor-control-custom_field_wrapper_html_divider1,
176
- .elementor-control-custom_field_wrapper_html_divider2,
177
- .elementor-control-lightbox_shadow_divider {
178
- padding: 0 !important;
179
- }
180
-
181
- .elementor-control-custom_field_wrapper_html_divider1 hr,
182
- .elementor-control-lightbox_shadow_divider hr {
183
- height: 1px !important;
184
- }
185
-
186
- .elementor-control-element_show_on {
187
- padding-top: 15px !important;
188
- border-top: 1px solid #d5dadf;
189
- }
190
-
191
- [class*="wpr__section_"] ~ .elementor-control-type-number .elementor-control-input-wrapper,
192
- [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-number .elementor-control-input-wrapper {
193
- max-width: 30% !important;
194
- margin-left: auto !important;
195
- }
196
-
197
- [class*="wpr__section_"] ~ .elementor-control-type-select .elementor-control-input-wrapper,
198
- [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-select .elementor-control-input-wrapper {
199
- width: auto !important;
200
- min-width: 30% !important;
201
- margin-left: auto !important;
202
- }
203
-
204
- .elementor-control-submit_preview_changes .elementor-control-input-wrapper {
205
- text-align: center !important;
206
- }
207
-
208
- .elementor-control-query_manual_related,
209
- .elementor-control-query_manual_current {
210
- display: none !important;
211
- }
212
-
213
- /* Fix Select Inputs */
214
- .elementor-control-button_hover_animation .elementor-control-input-wrapper,
215
- .elementor-control-front_btn_animation .elementor-control-input-wrapper,
216
- .elementor-control-back_btn_animation .elementor-control-input-wrapper,
217
-
218
- .elementor-control-select_template .select2-selection,
219
- .elementor-control-switcher_first_select_template .select2-selection,
220
- .elementor-control-switcher_second_select_template .select2-selection,
221
- .elementor-control-switcher_select_template .select2-selection,
222
- .elementor-control-slider_select_template .select2-selection {
223
- width: 135px !important;
224
- }
225
-
226
- .elementor-control-type-repeater .elementor-control-content > label {
227
- display: none !important;
228
- }
229
-
230
-
231
- /*--------------------------------------------------------------
232
- == Notification
233
- --------------------------------------------------------------*/
234
- #wpr-template-settings-notification {
235
- position: fixed;
236
- left: 40px;
237
- bottom: 5px;
238
- z-index: 9999;
239
- padding: 13px 25px;
240
- background: #fff;
241
- color: #222;
242
- -webkit-box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
243
- box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
244
- border-radius: 3px;
245
- }
246
-
247
- #wpr-template-settings-notification:before {
248
- content: "";
249
- position: absolute;
250
- left: -6px;
251
- bottom: 10px;
252
- width: 0;
253
- height: 0;
254
- border-top: 6px solid transparent;
255
- border-bottom: 6px solid transparent;
256
- border-right-style: solid;
257
- border-right-width: 6px;
258
- border-right-color: #fff;
259
- }
260
-
261
- #wpr-template-settings-notification h4 {
262
- margin-bottom: 10px;
263
- }
264
-
265
- #wpr-template-settings-notification h4 span {
266
- font-size: 14px;
267
- vertical-align: super;
268
- color: #5f5f5f;
269
- }
270
-
271
- #wpr-template-settings-notification h4 i {
272
- margin-right: 10px;
273
- color: #3db050;
274
- font-size: 24px;
275
- }
276
-
277
- #wpr-template-settings-notification p {
278
- color: #666;
279
- font-size: 12px;
280
- line-height: 1.5;
281
- }
282
-
283
- #wpr-template-settings-notification > i {
284
- position: absolute;
285
- top: 7px;
286
- right: 7px;
287
- cursor: pointer;
288
- color: #999;
289
- }
290
-
291
- .elementor-control-cf7_notice,
292
- .elementor-control-wpforms_notice,
293
- .elementor-control-ninja_forms_notice,
294
- .elementor-control-caldera_notice {
295
- color: red;
296
- }
297
-
298
- /* Help Button - select with referrals - [href^="https://royal-elementor-addons.com/contact/"] */
299
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] {
300
- display: inline-block;
301
- padding: 12px 35px;
302
- font-size: 13px;
303
- font-weight: normal;
304
- color: #fff;
305
- background: #6A65FF;
306
- border-radius: 3px;
307
- -webkit-box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
308
- box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
309
- letter-spacing: 0.3px;
310
- -webkit-transition: all 0.2s ease-in;
311
- -o-transition: all 0.2s ease-in;
312
- transition: all 0.2s ease-in;
313
- }
314
-
315
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover {
316
- color: #fff;
317
- background: #6A4BFF;
318
- }
319
-
320
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] i {
321
- color: #fff;
322
- font-size: 14px;
323
- vertical-align: top;
324
- }
325
-
326
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i {
327
- color: #fff;
328
- }
329
-
330
- #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i:before {
331
- content: '\e942' !important;
332
- }
333
-
334
- .elementor-control-posts_slider_notice .elementor-control-raw-html {
335
- font-style: normal !important;
336
- }
337
-
338
- .elementor-control-product_notice_widget_info .elementor-control-raw-html {
339
- color: red;
340
- }
341
-
342
-
343
- /*--------------------------------------------------------------
344
- == Modal Popup Editor
345
- --------------------------------------------------------------*/
346
- .elementor-editor-wpr-popups .elementor-control-document_settings,
347
- .elementor-editor-wpr-popups .elementor-control-post_title,
348
- .elementor-editor-wpr-popups .elementor-control-post_status {
349
- display: none !important;
350
- }
351
-
352
-
353
- /*--------------------------------------------------------------
354
- == Elementor Editor Popup
355
- --------------------------------------------------------------*/
356
- #wpr-template-editor-popup .dialog-widget-content {
357
- width: 90vw;
358
- height: 90vh;
359
- }
360
-
361
- #wpr-template-editor-popup .dialog-message {
362
- padding: 0;
363
- width: 100%;
364
- height: 100%;
365
- }
366
-
367
- #wpr-template-editor-popup .dialog-close-button {
368
- font-size: 24px;
369
- color: #222;
370
- }
371
-
372
- #wpr-template-editor-popup .dialog-header {
373
- display: none;
374
- }
375
-
376
- #wpr-template-editor-loading {
377
- position: absolute;
378
- top: 0;
379
- left: 0;
380
- width: 100%;
381
- height: 100%;
382
- background: #f1f3f5;
383
- z-index: 9999;
384
- -webkit-transform: translateZ(0);
385
- transform: translateZ(0);
386
- display: -webkit-box;
387
- display: -ms-flexbox;
388
- display: flex;
389
- -webkit-box-pack: center;
390
- -ms-flex-pack: center;
391
- justify-content: center;
392
- -webkit-box-align: center;
393
- -ms-flex-align: center;
394
- align-items: center;
395
- }
396
-
397
- #wpr-template-editor-loading .elementor-loader-wrapper {
398
- top: auto;
399
- left: auto;
400
- -webkit-transform: none;
401
- -ms-transform: none;
402
- transform: none;
403
- }
404
-
405
- /* Disable Transitions on Responsive Preview */
406
- #elementor-preview-responsive-wrapper {
407
- -webkit-transition: none !important;
408
- -o-transition: none !important;
409
- transition: none !important;
410
- }
411
-
412
-
413
- /*--------------------------------------------------------------
414
- == Magazine Grid Layout
415
- --------------------------------------------------------------*/
416
- .elementor-control-layout_select.elementor-control .elementor-control-field {
417
- -webkit-box-orient: vertical !important;
418
- -webkit-box-direction: normal !important;
419
- -ms-flex-direction: column !important;
420
- flex-direction: column !important;
421
- -webkit-box-align: start;
422
- -ms-flex-align: start;
423
- align-items: flex-start;
424
- }
425
-
426
- .elementor-control-layout_select.elementor-control .elementor-control-input-wrapper {
427
- display: -webkit-box;
428
- display: -ms-flexbox;
429
- display: flex;
430
- width: 100% !important;
431
- margin-top: 10px;
432
- }
433
-
434
- .elementor-control-layout_select.elementor-control .elementor-choices {
435
- -ms-flex-wrap: wrap;
436
- flex-wrap: wrap;
437
- -webkit-box-align: stretch;
438
- -ms-flex-align: stretch;
439
- align-items: stretch;
440
- width: 100% !important;
441
- height: auto;
442
- border: 1px solid #dfd5d5;
443
- }
444
-
445
- .elementor-control-layout_select.elementor-control .elementor-choices label {
446
- width: 33.3%;
447
- height: 50px;
448
- background-size: 75%;
449
- background-position: center center;
450
- background-repeat: no-repeat;
451
- }
452
-
453
- .elementor-control-layout_select input[type="radio"]:checked + label {
454
- border: 2px solid #D30C5C;
455
- border-radius: 0 !important;
456
- background-color: #ffffff;
457
- }
458
-
459
- .elementor-control-layout_select label:nth-child(2) {
460
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='15.2' class='st1' width='22.2' height='11.9'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='9.2'/%3E%3C/g%3E%3C/svg%3E");
461
- }
462
-
463
- .elementor-control-layout_select label:nth-child(4) {
464
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
465
- }
466
-
467
- .elementor-control-layout_select label:nth-child(6) {
468
- background: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Cg%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
469
- }
470
-
471
- .elementor-control-layout_select label:nth-child(8) {
472
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
473
- }
474
-
475
- .elementor-control-layout_select label:nth-child(10) {
476
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
477
- }
478
-
479
- .elementor-control-layout_select label:nth-child(12) {
480
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='28.5' height='22.2'/%3E%3Crect x='31.8' y='12.9' class='st1' width='15.9' height='6.3'/%3E%3Crect x='31.8' y='4.9' class='st1' width='15.9' height='6.8'/%3E%3Crect x='31.8' y='20.3' class='st1' width='15.9' height='6.8'/%3E%3C/g%3E%3C/svg%3E");
481
- }
482
-
483
- .elementor-control-layout_select label:nth-child(14) {
484
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='2.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
485
- }
486
-
487
- .elementor-control-layout_select label:nth-child(16) {
488
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='33.9' height='13.2'/%3E%3Crect x='2.2' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='19.7' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='13.2'/%3E%3Crect x='37.2' y='19.3' class='st1' width='10.5' height='7.8'/%3E%3C/g%3E%3C/svg%3E");
489
- }
490
-
491
- .elementor-control-layout_select label:nth-child(18) {
492
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='2.2' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='17.8' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='33.3' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3C/g%3E%3C/svg%3E");
493
- }
494
-
495
- .elementor-control-layout_select label:nth-child(20) {
496
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
497
- }
498
-
499
- .elementor-control-layout_select label:nth-child(22) {
500
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='14.5' height='22.2'/%3E%3Crect x='33.4' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3Crect x='17.9' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
501
- }
502
-
503
- .elementor-control-layout_select label:nth-child(24) {
504
- background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='10.6' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='14' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
505
- }
506
-
507
- /*--------------------------------------------------------------
508
- == Widget Preview and Library buttons
509
- --------------------------------------------------------------*/
510
-
511
- .elementor-control-wpr_library_buttons .wpr-forms a:last-child,
512
- .elementor-control-wpr_library_buttons .wpr-phone-call a:last-child,
513
- .elementor-control-wpr_library_buttons .wpr-back-to-top a:last-child,
514
- .elementor-control-wpr_library_buttons .wpr-lottie-animations a:last-child,
515
- .elementor-control-wpr_library_buttons .wpr-feature-list a:last-child,
516
- .elementor-control-wpr_library_buttons .wpr-reading-progress-bar a:last-child,
517
- .elementor-control-wpr_library_buttons .wpr-dual-color-heading a:last-child,
518
- .elementor-control-wpr_library_buttons .wpr-flip-carousel a:last-child,
519
- .elementor-control-wpr_library_buttons .wpr-advanced-accordion a:last-child,
520
- .elementor-control-wpr_library_buttons .wpr-image-accordion a:last-child,
521
- .elementor-control-wpr_library_buttons .wpr-mega-menu a:last-child,
522
- .elementor-control-wpr_library_buttons .wpr-charts a:last-child {
523
- display: none;
524
- }
525
-
526
- .elementor-control-wpr_library_buttons {
527
- height: 60px;
528
- padding: 0;
529
- }
530
-
531
- .elementor-control-wpr_library_buttons .elementor-control-raw-html {
532
- padding: 0 10px 10px 10px;
533
- border-bottom: 1px solid #efefef;
534
- }
535
-
536
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div {
537
- display: -webkit-box;
538
- display: -ms-flexbox;
539
- display: flex;
540
- -webkit-box-pack: center;
541
- -ms-flex-pack: center;
542
- justify-content: center;
543
- }
544
-
545
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div a {
546
- -webkit-box-flex: 1;
547
- -ms-flex-positive: 1;
548
- flex-grow: 1;
549
- padding: 10px 15px;
550
- border-radius: 3px;
551
- /*box-shadow: 1px 2px 5px 0 rgba(0,0,0,0.2);*/
552
- white-space: nowrap;
553
- overflow: hidden;
554
- -o-text-overflow: ellipsis;
555
- text-overflow: ellipsis;
556
- text-align: center;
557
- }
558
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:first-child {
559
- background-color: #1CB4E4;
560
- color: #fff;
561
- margin-right: 3px;
562
- }
563
- .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:last-child {
564
- margin-left: 3px;
565
- background-color: #6A65FF;
566
- color: #fff;
567
- }
568
-
569
- .elementor-control-wpr_library_buttons .elementor-control-raw-html > a {
570
- display: block;
571
- margin-top: 10px;
572
- line-height: 20px;
573
- color: #777;
574
- border: none !important;
575
- }
576
-
577
- .elementor-section-title > a {
578
- top: 10px;
579
- right: 20px;
580
- position: absolute;
581
- line-height: 20px;
582
- }
583
-
584
- .elementor-section-title > a:hover {
585
- border-color: transparent;
586
- }
587
-
588
- /*--------------------------------------------------------------
589
- == Apply Changes Button
590
- --------------------------------------------------------------*/
591
- .editor-wpr-preview-update {
592
- margin: 0;
593
- display: -webkit-box;
594
- display: -ms-flexbox;
595
- display: flex;
596
- -webkit-box-pack: justify;
597
- -ms-flex-pack: justify;
598
- justify-content: space-between;
599
- }
600
-
601
- .editor-wpr-preview-update button {
602
- font-size: 13px;
603
- padding: 5px 10px;
604
- }
605
-
606
-
607
- /*--------------------------------------------------------------
608
- == Free/Pro Options
609
- --------------------------------------------------------------*/
610
- .elementor-control select option[value*=pro-] {
611
- background: #f0f0f0;
612
- }
613
-
614
- .elementor-control[class*="pro_notice"] {
615
- padding: 5px 0 15px 0 !important;
616
- }
617
-
618
- .wpr-pro-notice {
619
- padding: 20px;
620
- border-top: 1px solid #e6e9ec;
621
- border-bottom: 1px solid #e6e9ec;
622
- background-color: #f2fbff;
623
- line-height: 1.4;
624
- text-align: center;
625
- }
626
-
627
- .wpr-pro-notice-video {
628
- display: block;
629
- margin-top: 7px;
630
- line-height: 20px;
631
- border: none !important;
632
- }
633
-
634
- #elementor-controls .elementor-control-slider_section_pro_notice {
635
- margin-top: -16px;
636
- padding-bottom: 0 !important;
637
- }
638
-
639
- .elementor-control-layout_select_pro_notice + div,
640
- .elementor-control-element_align_pro_notice + div {
641
- padding-top: 15px;
642
- }
643
-
644
- .elementor-control-layout_select .elementor-choices label {
645
- position: relative;
646
- }
647
-
648
- .elementor-control-layout_select .elementor-choices label:nth-child(2):after,
649
- .elementor-control-layout_select .elementor-choices label:nth-child(4):after,
650
- .elementor-control-layout_select .elementor-choices label:nth-child(6):after,
651
- .elementor-control-layout_select .elementor-choices label:nth-child(8):after,
652
- .elementor-control-layout_select .elementor-choices label:nth-child(10):after,
653
- .elementor-control-layout_select .elementor-choices label:nth-child(12):after {
654
- content: ' ';
655
- display: block;
656
- width: 100%;
657
- height: 100%;
658
- position: absolute;
659
- top: 0;
660
- left: 0;
661
- background: rgba(0,0,0,0.2);
662
- }
663
-
664
- /* Adjustments */
665
- .elementor-control.elementor-control-element_align_pro_notice,
666
- .elementor-control.elementor-control-search_pro_notice,
667
- .elementor-control.elementor-control-layout_select_pro_notice,
668
- .elementor-control.elementor-control-grid_columns_pro_notice,
669
- .elementor-control.elementor-control-slider_content_type_pro_notice,
670
- .elementor-control.elementor-control-slider_repeater_pro_notice,
671
- .elementor-control.elementor-control-slider_dots_layout_pro_notice,
672
- .elementor-control.elementor-control-testimonial_repeater_pro_notice,
673
- .elementor-control.elementor-control-testimonial_icon_pro_notice,
674
- .elementor-control.elementor-control-menu_layout_pro_notice,
675
- .elementor-control.elementor-control-menu_items_submenu_entrance_pro_notice,
676
- .elementor-control.elementor-control-switcher_label_style_pro_notice,
677
- .elementor-control.elementor-control-countdown_type_pro_notice,
678
- .elementor-control.elementor-control-layout_pro_notice,
679
- .elementor-control.elementor-control-anim_timing_pro_notice,
680
- .elementor-control.elementor-control-tab_content_type_pro_notice,
681
- .elementor-control.elementor-control-tabs_repeater_pro_notice,
682
- .elementor-control.elementor-control-tabs_align_pro_notice,
683
- .elementor-control.elementor-control-front_trigger_pro_notice,
684
- .elementor-control.elementor-control-back_link_type_pro_notice,
685
- .elementor-control.elementor-control-box_anim_timing_pro_notice,
686
- .elementor-control.elementor-control-image_style_pro_notice,
687
- .elementor-control.elementor-control-image_animation_timing_pro_notice,
688
- .elementor-control.elementor-control-label_display_pro_notice,
689
- .elementor-control.elementor-control-post_type_pro_notice,
690
- .elementor-control.elementor-control-type_select_pro_notice,
691
- .elementor-control.elementor-control-icon_style_pro_notice,
692
- .elementor-control.elementor-control-dual_button_pro_notice,
693
- .elementor-control.elementor-control-team_member_pro_notice,
694
- .elementor-control.elementor-control-price_list_pro_notice,
695
- .elementor-control.elementor-control-business_hours_pro_notice,
696
- .elementor-control.elementor-control-sharing_columns_pro_notice,
697
- .elementor-control.elementor-control-popup_trigger_pro_notice,
698
- .elementor-control.elementor-control-popup_show_again_delay_pro_notice,
699
- .elementor-control.elementor-control-group_popup_settings_pro_notice,
700
- .elementor-control.elementor-control-which_particle_pro_notice,
701
- .elementor-control.elementor-control-paralax_repeater_pro_notice,
702
- .elementor-control.elementor-control-opnepage_pro_notice,
703
- .elementor-control.elementor-control-timeline_repeater_pro_notice,
704
- .elementor-control.elementor-control-limit_grid_items_pro_notice,
705
- .elementor-control.elementor-control-post_nav_layout_pro_notice,
706
- .elementor-control.elementor-control-author_name_links_to_pro_notice,
707
- .elementor-control.elementor-control-author_title_links_to_pro_notice,
708
- .elementor-control.elementor-control-comments_form_layout_pro_notice,
709
- .elementor-control.elementor-control-sharing_repeater_pro_notice,
710
- .elementor-control.elementor-control-mini_cart_style_pro_notice,
711
- .elementor-control.elementor-control-tabs_position_pro_notice,
712
- .elementor-control.elementor-control-choose_table_type_pro_notice,
713
- .elementor-control.elementor-control-accordion_repeater_pro_notice,
714
- .elementor-control.elementor-control-acc_repeater_pro_notice,
715
- .elementor-control.elementor-control-data_source_pro_notice,
716
- .elementor-control.elementor-control-charts_repeater_pro_notice,
717
- .elementor-control.elementor-control-mob_menu_display_as_pro_notice {
718
- padding-bottom: 0 !important;
719
- }
720
-
721
- .elementor-control-search_pro_notice .wpr-pro-notice,
722
- .elementor-control-grid_columns_pro_notice .wpr-pro-notice,
723
- .elementor-control-slider_content_type_pro_notice .wpr-pro-notice,
724
- .elementor-control-slider_repeater_pro_notice .wpr-pro-notice,
725
- .elementor-control-slider_dots_layout_pro_notice .wpr-pro-notice,
726
- .elementor-control-testimonial_repeater_pro_notice .wpr-pro-notice,
727
- .elementor-control-testimonial_icon_pro_notice .wpr-pro-notice,
728
- .elementor-control-menu_layout_pro_notice .wpr-pro-notice,
729
- .elementor-control-menu_items_submenu_entrance_pro_notice .wpr-pro-notice,
730
- .elementor-control-switcher_label_style_pro_notice .wpr-pro-notice,
731
- .elementor-control-countdown_type_pro_notice .wpr-pro-notice,
732
- .elementor-control-layout_pro_notice .wpr-pro-notice,
733
- .elementor-control-anim_timing_pro_notice .wpr-pro-notice,
734
- .elementor-control-tab_content_type_pro_notice .wpr-pro-notice,
735
- .elementor-control-tabs_repeater_pro_notice .wpr-pro-notice,
736
- .elementor-control-tabs_align_pro_notice .wpr-pro-notice,
737
- .elementor-control-front_trigger_pro_notice .wpr-pro-notice,
738
- .elementor-control-back_link_type_pro_notice .wpr-pro-notice,
739
- .elementor-control-box_anim_timing_pro_notice .wpr-pro-notice,
740
- .elementor-control-image_style_pro_notice .wpr-pro-notice,
741
- .elementor-control-image_animation_timing_pro_notice .wpr-pro-notice,
742
- .elementor-control-label_display_pro_notice .wpr-pro-notice,
743
- .elementor-control-post_type_pro_notice .wpr-pro-notice,
744
- .elementor-control-type_select_pro_notice .wpr-pro-notice,
745
- .elementor-control-icon_style_pro_notice .wpr-pro-notice,
746
- .elementor-control-dual_button_pro_notice .wpr-pro-notice,
747
- .elementor-control-team_member_pro_notice .wpr-pro-notice,
748
- .elementor-control-price_list_pro_notice .wpr-pro-notice,
749
- .elementor-control-business_hours_pro_notice .wpr-pro-notice,
750
- .elementor-control-sharing_columns_pro_notice .wpr-pro-notice,
751
- .elementor-control-popup_trigger_pro_notice .wpr-pro-notice,
752
- .elementor-control-popup_show_again_delay_pro_notice .wpr-pro-notice,
753
- .elementor-control-group_popup_settings_pro_notice .wpr-pro-notice,
754
- .elementor-control-post_nav_layout_pro_notice .wpr-pro-notice,
755
- .elementor-control-author_name_links_to_pro_notice .wpr-pro-notice,
756
- .elementor-control-author_title_links_to_pro_notice .wpr-pro-notice,
757
- .elementor-control-comments_form_layout_pro_notice .wpr-pro-notice,
758
- .elementor-control-sharing_repeater_pro_notice .wpr-pro-notice,
759
- .elementor-control-mini_cart_style_pro_notice .wpr-pro-notice,
760
- .elementor-control-tabs_position_pro_notice .wpr-pro-notice,
761
- .elementor-control-choose_table_type_pro_notice .wpr-pro-notice,
762
- .elementor-control-accordion_repeater_pro_notice .wpr-pro-notice,
763
- .elementor-control.elementor-control-data_source_pro_notice .wpr-pro-notice,
764
- .elementor-control.elementor-control-mob_menu_display_as_pro_notice .wpr-pro-notice {
765
- border-bottom: none !important;
766
- }
767
-
768
- /* Both */
769
- .elementor-control.elementor-control-pagination_type_pro_notice,
770
- .elementor-control.elementor-control-tooltip_trigger_pro_notice,
771
- .elementor-control.elementor-control-post_info_select_pro_notice {
772
- padding-top: 0 !important;
773
- padding-bottom: 0 !important;
774
- }
775
-
776
- .elementor-control-pagination_type_pro_notice .wpr-pro-notice {
777
- border-top: none !important;
778
- border-bottom: none !important;
779
- }
780
-
781
- .elementor-control-pro_features_section .elementor-section-toggle,
782
- .elementor-control-pro_features_section .elementor-section-title {
783
- color: #f54;
784
- }
785
-
786
- .elementor-control-pro_features_section .elementor-section-title {
787
- line-height: 20px;
788
- }
789
- .elementor-control-pro_features_section .elementor-section-title .dashicons {
790
- line-height: 20px;
791
- font-size: 13px;
792
- }
793
-
794
- .wpr-pro-features-list {
795
- text-align: center;
796
- }
797
-
798
- .wpr-pro-features-list ul {
799
- text-align: left;
800
- }
801
-
802
- .wpr-pro-features-list ul li {
803
- position: relative;
804
- line-height: 22px;
805
- padding-left: 20px;
806
- }
807
-
808
- .wpr-pro-features-list ul li::before {
809
- content: '.';
810
- font-size: 38px;
811
- position: absolute;
812
- top: -11px;
813
- left: 0;
814
- }
815
-
816
- .wpr-pro-features-list ul + a {
817
- display: inline-block;
818
- background-color: #f54;
819
- color: #fff;
820
- margin: 15px 15px 10px 0;
821
- padding: 7px 12px;
822
- border-radius: 3px;
823
- }
824
-
825
- .wpr-pro-features-list ul + a:hover {
826
- color: #fff;
827
- }
828
-
829
- /* Video Tutorial Link */
830
- .elementor-control[class*="video_tutorial"] {
831
- padding-top: 0 !important;
832
- padding-bottom: 5px !important;
833
- }
834
-
835
- .elementor-control.elementor-control-woo_grid_notice_video_tutorial,
836
- .elementor-control-show_last_update_date {
837
- padding-bottom: 15px !important;
838
- }
839
-
840
- .elementor-control.elementor-control-woo_grid_notice_video_tutorial a {
841
- display: inline-block;
842
- margin-top: 5px;
843
- }
844
-
845
- .elementor-control[class*="video_tutorial"] a {
846
- line-height: 16px;
847
- font-size: 12px;
848
- }
849
-
850
- .elementor-control[class*="video_tutorial"] a .dashicons {
851
- font-size: 16px;
852
- }
853
-
854
- /* Pro Control Class */
855
- .elementor-control.wpr-pro-control label i {
856
- color: #aeaeae;
857
- font-size: 14px;
858
- margin-left: 3px;
859
- }
860
-
861
- .elementor-control.wpr-pro-control .elementor-control-content:before {
862
- content: '';
863
- position: absolute;
864
- width: 100%;
865
- height: 100%;
866
- z-index: 9;
867
- background: transparent;
868
- }
869
-
870
- .elementor-control.wpr-pro-control .elementor-control-content:after {
871
- content: "This option is available in the Pro Version.";
872
- visibility: hidden;
873
- opacity: 0;
874
- position: absolute;
875
- top: 30px;
876
- padding: 15px;
877
- z-index: 99;
878
- margin-top: 10px;
879
- font-size: 12px;
880
- color: #93003c;
881
- background-color: #ffffff;
882
- border-radius: 5px;
883
- -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
884
- box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
885
- border: 1px solid #e6e9ec;
886
- -webkit-transition: all 0.2s ease-in;
887
- -o-transition: all 0.2s ease-in;
888
- transition: all 0.2s ease-in;
889
- }
890
-
891
- .elementor-repeater-fields .elementor-control.wpr-pro-control .elementor-control-content:after {
892
- content: "This is available in the Pro Version.";
893
- }
894
-
895
- .elementor-control.wpr-pro-control.no-distance .elementor-control-content:after {
896
- margin: 0;
897
- }
898
-
899
- .elementor-control.wpr-pro-control .elementor-control-content:hover:after {
900
- visibility: visible;
901
- opacity: 1;
902
- }
903
-
904
- /*--------------------------------------------------------------
905
- == Theme Builder Widgets
906
- --------------------------------------------------------------*/
907
- #elementor-panel-categories {
908
- display: -webkit-box;
909
- display: -ms-flexbox;
910
- display: flex;
911
- -webkit-box-orient: vertical;
912
- -webkit-box-direction: normal;
913
- -ms-flex-direction: column;
914
- flex-direction: column;
915
- }
916
-
917
- #elementor-panel-categories > div {
918
- -webkit-box-ordinal-group: 3;
919
- -ms-flex-order: 2;
920
- order: 2;
921
- }
922
-
923
- #elementor-panel-category-wpr-theme-builder-widgets,
924
- #elementor-panel-category-wpr-woocommerce-builder-widgets {
925
- -webkit-box-ordinal-group: 2 !important;
926
- -ms-flex-order: 1 !important;
927
- order: 1 !important;
928
- }
929
-
930
- .elementor-editor-wpr-theme-builder #elementor-panel-footer-saver-preview {
931
- display: none !important;
932
- }
933
-
934
-
935
- /*--------------------------------------------------------------
936
- == Elementor Search Notice
937
- --------------------------------------------------------------*/
938
- .wpr-elementor-search-notice {
939
- background: #fff;
940
- font-size: 13px;
941
- padding: 20px;
942
- line-height: 18px;
943
- margin: 10px;
944
- border-left: 3px solid #71d7f7;
945
- -webkit-box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
946
- box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
947
- }
948
-
949
-
950
- /*--------------------------------------------------------------
951
- == Debug
952
- --------------------------------------------------------------*/
953
- pre.xdebug-var-dump {
954
- position: absolute;
955
- z-index: 999999;
956
- background: #fff;
957
- border: 2px solid #000;
958
- padding: 20px;
959
- left: 300px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
960
  }
1
+ /*--------------------------------------------------------------
2
+ == General
3
+ --------------------------------------------------------------*/
4
+ .wpr-elementor-hidden-control {
5
+ overflow: hidden;
6
+ width: 0 !important;
7
+ height: 0 !important;
8
+ padding: 0 !important;
9
+ margin: 0 !important;
10
+ visibility: hidden !important;
11
+ opacity: 0 !important;
12
+ }
13
+
14
+
15
+ /*--------------------------------------------------------------
16
+ == WPR Widgets
17
+ --------------------------------------------------------------*/
18
+ .elementor-panel .wpr-icon:after {
19
+ content: 'R';
20
+ display: block;
21
+ position: absolute;
22
+ top: 3px;
23
+ right: 3px;
24
+ font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
25
+ font-size: 10px;
26
+ font-weight: bold;
27
+ color: #ffffff;
28
+ background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
29
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
30
+ background-image: linear-gradient(#6A4BFF, #7E94FE);
31
+ -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
32
+ box-shadow: 0 0 2px 2px #b8c7ff;
33
+ width: 19px;
34
+ height: 19px;
35
+ line-height: 19px;
36
+ border-radius: 15px;
37
+ margin: 3px;
38
+ }
39
+
40
+ .elementor-panel .elementor-element .icon {
41
+ position: relative !important;
42
+ }
43
+
44
+ .elementor-element--promotion .wpr-icon:after {
45
+ top: 22px;
46
+ right: -1px;
47
+ opacity: 0.7;
48
+ }
49
+
50
+ #elementor-element--promotion__dialog .dialog-button {
51
+ text-align: center;
52
+ }
53
+
54
+ .elementor-control-type-section[class*="elementor-control-wpr_section_"]:after {
55
+ content: 'R';
56
+ display: block;
57
+ position: absolute;
58
+ top: 7px;
59
+ right: 7px;
60
+ font-family: Roboto,Arial,Helvetica,Verdana,sans-serif;
61
+ font-size: 10px;
62
+ font-weight: bold;
63
+ color: #ffffff;
64
+ background-image: -o-linear-gradient(#6A4BFF, #7E94FE);
65
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#6A4BFF), to(#7E94FE));
66
+ background-image: linear-gradient(#6A4BFF, #7E94FE);
67
+ -webkit-box-shadow: 0 0 2px 2px #b8c7ff;
68
+ box-shadow: 0 0 2px 2px #b8c7ff;
69
+ width: 19px;
70
+ height: 19px;
71
+ line-height: 19px;
72
+ border-radius: 15px;
73
+ margin: 3px;
74
+ text-align: center;
75
+ }
76
+
77
+ /*--------------------------------------------------------------
78
+ == Adjustments
79
+ --------------------------------------------------------------*/
80
+ .elementor-control-element_select,
81
+ .elementor-control-element_align_hr,
82
+ .elementor-control-element_read_more_text,
83
+ .elementor-control-element_tax_sep,
84
+ .elementor-control-element_sharing_icon_6,
85
+ .elementor-control-element_sharing_trigger_direction,
86
+ .elementor-control-element_sharing_icon_display,
87
+ .elementor-control-element_sharing_tooltip,
88
+ .elementor-control-element_custom_field_wrapper_html,
89
+ .elementor-control-slider_item_bg_size,
90
+ .elementor-control-element_addcart_variable_txt,
91
+ .elementor-control-type,
92
+ .elementor-control-show_last_update_date {
93
+ margin-bottom: 15px;
94
+ }
95
+
96
+ .elementor-control-slider_content_bg_color,
97
+ .elementor-control-slider_nav_border_border,
98
+ .elementor-control-slider_nav_border_radius,
99
+ .elementor-control-scroll_btn_vr,
100
+ .elementor-control-pagination_load_more_text,
101
+ .elementor-control-pagination_finish_text,
102
+ .elementor-control-pagination_prev_next,
103
+ .elementor-control-author_transition_duration,
104
+ .elementor-control-comments_transition_duration,
105
+ .elementor-control-likes_transition_duration,
106
+ .elementor-control-sharing_transition_duration,
107
+ .elementor-control-lightbox_transition_duration,
108
+ .elementor-control-custom_field1_transition_duration,
109
+ .elementor-control-custom_field2_transition_duration,
110
+ .elementor-control-custom_field3_transition_duration,
111
+ .elementor-control-custom_field4_transition_duration,
112
+ .elementor-control-filters_transition_duration,
113
+ .elementor-control-pagination_transition_duration,
114
+ .elementor-control-element_extra_text_pos,
115
+ .elementor-control-element_custom_field_wrapper,
116
+ .elementor-control-overlay_post_link,
117
+ .elementor-control-read_more_animation_height,
118
+ .elementor-control-archive_link_transition_duration,
119
+ .elementor-control-post_info_tax_select,
120
+ .elementor-control-post_info_link_wrap,
121
+ .elementor-control-post_info_modified_time,
122
+ .elementor-control-tabs_sharing_custom_colors,
123
+ .elementor-control-post_info_show_avatar,
124
+ .elementor-control-post_info_cf,
125
+ .elementor-control-pricing_items .elementor-control-price,
126
+ .elementor-control-pricing_items .elementor-control-feature_text,
127
+ .elementor-control-pricing_items .elementor-control-btn_text,
128
+ .elementor-control-divider_style,
129
+ .elementor-control-filters_pointer,
130
+ .elementor-control-title_transition_duration,
131
+ .elementor-control-tax1_transition_duration,
132
+ .elementor-control-tax2_transition_duration,
133
+ .elementor-control-filters_transition_duration,
134
+ .elementor-control-pagination_older_text,
135
+ .elementor-control-tooltip_position,
136
+ .elementor-control-post_info_comments_text_1 {
137
+ padding-top: 15px !important;
138
+ }
139
+
140
+ .elementor-control-post_info_custom_field_video_tutorial {
141
+ margin-top: 15px;
142
+ }
143
+
144
+ .elementor-control-title_pointer_animation + .elementor-control-title_transition_duration,
145
+ .elementor-control-tax1_pointer_animation + .elementor-control-tax1_transition_duration,
146
+ .elementor-control-tax2_pointer_animation + .elementor-control-tax2_transition_duration,
147
+ .elementor-control-filters_pointer_animation + .elementor-control-filters_transition_duration {
148
+ padding-top: 0 !important;
149
+ }
150
+
151
+ .elementor-control-pagination_load_more_text {
152
+ padding-bottom: 0 !important;
153
+ }
154
+
155
+ .elementor-control-filters_transition_duration,
156
+ .elementor-control-show_last_update_date {
157
+ padding-top: 0 !important;
158
+ }
159
+
160
+ .elementor-control-animation_divider,
161
+ .elementor-control-overlay_divider,
162
+ .elementor-control-slider_item_btn_1_divider,
163
+ .elementor-control-slider_item_btn_2_divider,
164
+ .elementor-control-slider_btn_typography_1_divider,
165
+ .elementor-control-slider_btn_box_shadow_1_divider,
166
+ .elementor-control-slider_btn_typography_2_divider,
167
+ .elementor-control-slider_btn_box_shadow_2_divider,
168
+ .elementor-control-testimonial_title_divider,
169
+ .elementor-control-social_media_divider,
170
+ .elementor-control-social_divider_1,
171
+ .elementor-control-social_divider_2,
172
+ .elementor-control-social_divider_3,
173
+ .elementor-control-social_divider_4,
174
+ .elementor-control-social_divider_5,
175
+ .elementor-control-custom_field_wrapper_html_divider1,
176
+ .elementor-control-custom_field_wrapper_html_divider2,
177
+ .elementor-control-lightbox_shadow_divider {
178
+ padding: 0 !important;
179
+ }
180
+
181
+ .elementor-control-custom_field_wrapper_html_divider1 hr,
182
+ .elementor-control-lightbox_shadow_divider hr {
183
+ height: 1px !important;
184
+ }
185
+
186
+ .elementor-control-element_show_on {
187
+ padding-top: 15px !important;
188
+ border-top: 1px solid #d5dadf;
189
+ }
190
+
191
+ [class*="wpr__section_"] ~ .elementor-control-type-number .elementor-control-input-wrapper,
192
+ [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-number .elementor-control-input-wrapper {
193
+ max-width: 30% !important;
194
+ margin-left: auto !important;
195
+ }
196
+
197
+ [class*="wpr__section_"] ~ .elementor-control-type-select .elementor-control-input-wrapper,
198
+ [class*="wpr__section_"] ~ .elementor-control-type-repeater .elementor-control-type-select .elementor-control-input-wrapper {
199
+ width: auto !important;
200
+ min-width: 30% !important;
201
+ margin-left: auto !important;
202
+ }
203
+
204
+ .elementor-control-submit_preview_changes .elementor-control-input-wrapper {
205
+ text-align: center !important;
206
+ }
207
+
208
+ .elementor-control-query_manual_related,
209
+ .elementor-control-query_manual_current {
210
+ display: none !important;
211
+ }
212
+
213
+ /* Fix Select Inputs */
214
+ .elementor-control-button_hover_animation .elementor-control-input-wrapper,
215
+ .elementor-control-front_btn_animation .elementor-control-input-wrapper,
216
+ .elementor-control-back_btn_animation .elementor-control-input-wrapper,
217
+
218
+ .elementor-control-select_template .select2-selection,
219
+ .elementor-control-switcher_first_select_template .select2-selection,
220
+ .elementor-control-switcher_second_select_template .select2-selection,
221
+ .elementor-control-switcher_select_template .select2-selection,
222
+ .elementor-control-slider_select_template .select2-selection {
223
+ width: 135px !important;
224
+ }
225
+
226
+ .elementor-control-type-repeater .elementor-control-content > label {
227
+ display: none !important;
228
+ }
229
+
230
+
231
+ /*--------------------------------------------------------------
232
+ == Notification
233
+ --------------------------------------------------------------*/
234
+ #wpr-template-settings-notification {
235
+ position: fixed;
236
+ left: 40px;
237
+ bottom: 5px;
238
+ z-index: 9999;
239
+ padding: 13px 25px;
240
+ background: #fff;
241
+ color: #222;
242
+ -webkit-box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
243
+ box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.3);
244
+ border-radius: 3px;
245
+ }
246
+
247
+ #wpr-template-settings-notification:before {
248
+ content: "";
249
+ position: absolute;
250
+ left: -6px;
251
+ bottom: 10px;
252
+ width: 0;
253
+ height: 0;
254
+ border-top: 6px solid transparent;
255
+ border-bottom: 6px solid transparent;
256
+ border-right-style: solid;
257
+ border-right-width: 6px;
258
+ border-right-color: #fff;
259
+ }
260
+
261
+ #wpr-template-settings-notification h4 {
262
+ margin-bottom: 10px;
263
+ }
264
+
265
+ #wpr-template-settings-notification h4 span {
266
+ font-size: 14px;
267
+ vertical-align: super;
268
+ color: #5f5f5f;
269
+ }
270
+
271
+ #wpr-template-settings-notification h4 i {
272
+ margin-right: 10px;
273
+ color: #3db050;
274
+ font-size: 24px;
275
+ }
276
+
277
+ #wpr-template-settings-notification p {
278
+ color: #666;
279
+ font-size: 12px;
280
+ line-height: 1.5;
281
+ }
282
+
283
+ #wpr-template-settings-notification > i {
284
+ position: absolute;
285
+ top: 7px;
286
+ right: 7px;
287
+ cursor: pointer;
288
+ color: #999;
289
+ }
290
+
291
+ .elementor-control-cf7_notice,
292
+ .elementor-control-wpforms_notice,
293
+ .elementor-control-ninja_forms_notice,
294
+ .elementor-control-caldera_notice {
295
+ color: red;
296
+ }
297
+
298
+ /* Help Button - select with referrals - [href^="https://royal-elementor-addons.com/contact/"] */
299
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] {
300
+ display: inline-block;
301
+ padding: 12px 35px;
302
+ font-size: 13px;
303
+ font-weight: normal;
304
+ color: #fff;
305
+ background: #6A65FF;
306
+ border-radius: 3px;
307
+ -webkit-box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
308
+ box-shadow: 0 2px 7px 0 rgba(0,0,0,0.3);
309
+ letter-spacing: 0.3px;
310
+ -webkit-transition: all 0.2s ease-in;
311
+ -o-transition: all 0.2s ease-in;
312
+ transition: all 0.2s ease-in;
313
+ }
314
+
315
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover {
316
+ color: #fff;
317
+ background: #6A4BFF;
318
+ }
319
+
320
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"] i {
321
+ color: #fff;
322
+ font-size: 14px;
323
+ vertical-align: top;
324
+ }
325
+
326
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i {
327
+ color: #fff;
328
+ }
329
+
330
+ #elementor-panel__editor__help__link[href^="https://wordpress.org/support/plugin/royal-elementor-addons/"]:hover i:before {
331
+ content: '\e942' !important;
332
+ }
333
+
334
+ .elementor-control-posts_slider_notice .elementor-control-raw-html {
335
+ font-style: normal !important;
336
+ }
337
+
338
+ .elementor-control-product_notice_widget_info .elementor-control-raw-html {
339
+ color: red;
340
+ }
341
+
342
+
343
+ /*--------------------------------------------------------------
344
+ == Modal Popup Editor
345
+ --------------------------------------------------------------*/
346
+ .elementor-editor-wpr-popups .elementor-control-document_settings,
347
+ .elementor-editor-wpr-popups .elementor-control-post_title,
348
+ .elementor-editor-wpr-popups .elementor-control-post_status {
349
+ display: none !important;
350
+ }
351
+
352
+
353
+ /*--------------------------------------------------------------
354
+ == Elementor Editor Popup
355
+ --------------------------------------------------------------*/
356
+ #wpr-template-editor-popup .dialog-widget-content {
357
+ width: 90vw;
358
+ height: 90vh;
359
+ }
360
+
361
+ #wpr-template-editor-popup .dialog-message {
362
+ padding: 0;
363
+ width: 100%;
364
+ height: 100%;
365
+ }
366
+
367
+ #wpr-template-editor-popup .dialog-close-button {
368
+ font-size: 24px;
369
+ color: #222;
370
+ }
371
+
372
+ #wpr-template-editor-popup .dialog-header {
373
+ display: none;
374
+ }
375
+
376
+ #wpr-template-editor-loading {
377
+ position: absolute;
378
+ top: 0;
379
+ left: 0;
380
+ width: 100%;
381
+ height: 100%;
382
+ background: #f1f3f5;
383
+ z-index: 9999;
384
+ -webkit-transform: translateZ(0);
385
+ transform: translateZ(0);
386
+ display: -webkit-box;
387
+ display: -ms-flexbox;
388
+ display: flex;
389
+ -webkit-box-pack: center;
390
+ -ms-flex-pack: center;
391
+ justify-content: center;
392
+ -webkit-box-align: center;
393
+ -ms-flex-align: center;
394
+ align-items: center;
395
+ }
396
+
397
+ #wpr-template-editor-loading .elementor-loader-wrapper {
398
+ top: auto;
399
+ left: auto;
400
+ -webkit-transform: none;
401
+ -ms-transform: none;
402
+ transform: none;
403
+ }
404
+
405
+ /* Disable Transitions on Responsive Preview */
406
+ #elementor-preview-responsive-wrapper {
407
+ -webkit-transition: none !important;
408
+ -o-transition: none !important;
409
+ transition: none !important;
410
+ }
411
+
412
+
413
+ /*--------------------------------------------------------------
414
+ == Magazine Grid Layout
415
+ --------------------------------------------------------------*/
416
+ .elementor-control-layout_select.elementor-control .elementor-control-field {
417
+ -webkit-box-orient: vertical !important;
418
+ -webkit-box-direction: normal !important;
419
+ -ms-flex-direction: column !important;
420
+ flex-direction: column !important;
421
+ -webkit-box-align: start;
422
+ -ms-flex-align: start;
423
+ align-items: flex-start;
424
+ }
425
+
426
+ .elementor-control-layout_select.elementor-control .elementor-control-input-wrapper {
427
+ display: -webkit-box;
428
+ display: -ms-flexbox;
429
+ display: flex;
430
+ width: 100% !important;
431
+ margin-top: 10px;
432
+ }
433
+
434
+ .elementor-control-layout_select.elementor-control .elementor-choices {
435
+ -ms-flex-wrap: wrap;
436
+ flex-wrap: wrap;
437
+ -webkit-box-align: stretch;
438
+ -ms-flex-align: stretch;
439
+ align-items: stretch;
440
+ width: 100% !important;
441
+ height: auto;
442
+ border: 1px solid #dfd5d5;
443
+ }
444
+
445
+ .elementor-control-layout_select.elementor-control .elementor-choices label {
446
+ width: 33.3%;
447
+ height: 50px;
448
+ background-size: 75%;
449
+ background-position: center center;
450
+ background-repeat: no-repeat;
451
+ }
452
+
453
+ .elementor-control-layout_select input[type="radio"]:checked + label {
454
+ border: 2px solid #D30C5C;
455
+ border-radius: 0 !important;
456
+ background-color: #ffffff;
457
+ }
458
+
459
+ .elementor-control-layout_select label:nth-child(2) {
460
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='15.2' class='st1' width='22.2' height='11.9'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='9.2'/%3E%3C/g%3E%3C/svg%3E");
461
+ }
462
+
463
+ .elementor-control-layout_select label:nth-child(4) {
464
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
465
+ }
466
+
467
+ .elementor-control-layout_select label:nth-child(6) {
468
+ background: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Cg%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
469
+ }
470
+
471
+ .elementor-control-layout_select label:nth-child(8) {
472
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
473
+ }
474
+
475
+ .elementor-control-layout_select label:nth-child(10) {
476
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='37.2' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='16.6' class='st1' width='10.5' height='10.5'/%3E%3Crect x='2.3' y='4.9' class='st1' width='10.5' height='10.5'/%3E%3C/g%3E%3C/svg%3E");
477
+ }
478
+
479
+ .elementor-control-layout_select label:nth-child(12) {
480
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='28.5' height='22.2'/%3E%3Crect x='31.8' y='12.9' class='st1' width='15.9' height='6.3'/%3E%3Crect x='31.8' y='4.9' class='st1' width='15.9' height='6.8'/%3E%3Crect x='31.8' y='20.3' class='st1' width='15.9' height='6.8'/%3E%3C/g%3E%3C/svg%3E");
481
+ }
482
+
483
+ .elementor-control-layout_select label:nth-child(14) {
484
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='13.9' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='2.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
485
+ }
486
+
487
+ .elementor-control-layout_select label:nth-child(16) {
488
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='33.9' height='13.2'/%3E%3Crect x='2.2' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='19.7' y='19.3' class='st1' width='16.4' height='7.8'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='13.2'/%3E%3Crect x='37.2' y='19.3' class='st1' width='10.5' height='7.8'/%3E%3C/g%3E%3C/svg%3E");
489
+ }
490
+
491
+ .elementor-control-layout_select label:nth-child(18) {
492
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='12.1'/%3E%3Crect x='2.2' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='17.8' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3Crect x='33.3' y='18.2' class='st1' width='14.4' height='8.9'/%3E%3C/g%3E%3C/svg%3E");
493
+ }
494
+
495
+ .elementor-control-layout_select label:nth-child(20) {
496
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='22.2' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
497
+ }
498
+
499
+ .elementor-control-layout_select label:nth-child(22) {
500
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='14.5' height='22.2'/%3E%3Crect x='33.4' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3Crect x='17.9' y='4.9' class='st1' width='14.4' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
501
+ }
502
+
503
+ .elementor-control-layout_select label:nth-child(24) {
504
+ background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3C!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 32' style='enable-background:new 0 0 50 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0{fill:%23FFFFFF;} .st1{fill:%23C2C1C0;} %3C/style%3E%3Cg id='Background'%3E%3Crect class='st0' width='50' height='32'/%3E%3C/g%3E%3Cg id='Layer_1'%3E%3Crect x='2.2' y='4.9' class='st1' width='10.6' height='22.2'/%3E%3Crect x='37.2' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='25.6' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3Crect x='14' y='4.9' class='st1' width='10.5' height='22.2'/%3E%3C/g%3E%3C/svg%3E");
505
+ }
506
+
507
+ /*--------------------------------------------------------------
508
+ == Widget Preview and Library buttons
509
+ --------------------------------------------------------------*/
510
+
511
+ .elementor-control-wpr_library_buttons .wpr-forms a:last-child,
512
+ .elementor-control-wpr_library_buttons .wpr-phone-call a:last-child,
513
+ .elementor-control-wpr_library_buttons .wpr-back-to-top a:last-child,
514
+ .elementor-control-wpr_library_buttons .wpr-lottie-animations a:last-child,
515
+ .elementor-control-wpr_library_buttons .wpr-feature-list a:last-child,
516
+ .elementor-control-wpr_library_buttons .wpr-reading-progress-bar a:last-child,
517
+ .elementor-control-wpr_library_buttons .wpr-dual-color-heading a:last-child,
518
+ .elementor-control-wpr_library_buttons .wpr-flip-carousel a:last-child,
519
+ .elementor-control-wpr_library_buttons .wpr-advanced-accordion a:last-child,
520
+ .elementor-control-wpr_library_buttons .wpr-image-accordion a:last-child,
521
+ .elementor-control-wpr_library_buttons .wpr-mega-menu a:last-child,
522
+ .elementor-control-wpr_library_buttons .wpr-charts a:last-child {
523
+ display: none;
524
+ }
525
+
526
+ .elementor-control-wpr_library_buttons {
527
+ height: 60px;
528
+ padding: 0;
529
+ }
530
+
531
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html {
532
+ padding: 0 10px 10px 10px;
533
+ border-bottom: 1px solid #efefef;
534
+ }
535
+
536
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div {
537
+ display: -webkit-box;
538
+ display: -ms-flexbox;
539
+ display: flex;
540
+ -webkit-box-pack: center;
541
+ -ms-flex-pack: center;
542
+ justify-content: center;
543
+ }
544
+
545
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div a {
546
+ -webkit-box-flex: 1;
547
+ -ms-flex-positive: 1;
548
+ flex-grow: 1;
549
+ padding: 10px 15px;
550
+ border-radius: 3px;
551
+ /*box-shadow: 1px 2px 5px 0 rgba(0,0,0,0.2);*/
552
+ white-space: nowrap;
553
+ overflow: hidden;
554
+ -o-text-overflow: ellipsis;
555
+ text-overflow: ellipsis;
556
+ text-align: center;
557
+ }
558
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:first-child {
559
+ background-color: #1CB4E4;
560
+ color: #fff;
561
+ margin-right: 3px;
562
+ }
563
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html div a:last-child {
564
+ margin-left: 3px;
565
+ background-color: #6A65FF;
566
+ color: #fff;
567
+ }
568
+
569
+ .elementor-control-wpr_library_buttons .elementor-control-raw-html > a {
570
+ display: block;
571
+ margin-top: 10px;
572
+ line-height: 20px;
573
+ color: #777;
574
+ border: none !important;
575
+ }
576
+
577
+ .elementor-section-title > a {
578
+ top: 10px;
579
+ right: 20px;
580
+ position: absolute;
581
+ line-height: 20px;
582
+ font-size: 12px;
583
+ }
584
+
585
+ .elementor-section-title > a:hover {
586
+ border-color: transparent;
587
+ }
588
+
589
+ .elementor-section-title > a .dashicons {
590
+ font-size: 16px;
591
+ vertical-align: middle;
592
+ }
593
+
594
+
595
+ /*--------------------------------------------------------------
596
+ == Apply Changes Button
597
+ --------------------------------------------------------------*/
598
+ .editor-wpr-preview-update {
599
+ margin: 0;
600
+ display: -webkit-box;
601
+ display: -ms-flexbox;
602
+ display: flex;
603
+ -webkit-box-pack: justify;
604
+ -ms-flex-pack: justify;
605
+ justify-content: space-between;
606
+ }
607
+
608
+ .editor-wpr-preview-update button {
609
+ font-size: 13px;
610
+ padding: 5px 10px;
611
+ }
612
+
613
+
614
+ /*--------------------------------------------------------------
615
+ == Free/Pro Options
616
+ --------------------------------------------------------------*/
617
+ .elementor-control select option[value*=pro-] {
618
+ background: #f0f0f0;
619
+ }
620
+
621
+ .elementor-control[class*="pro_notice"] {
622
+ padding: 5px 0 15px 0 !important;
623
+ }
624
+
625
+ .wpr-pro-notice {
626
+ padding: 20px;
627
+ border-top: 1px solid #e6e9ec;
628
+ border-bottom: 1px solid #e6e9ec;
629
+ background-color: #f2fbff;
630
+ line-height: 1.4;
631
+ text-align: center;
632
+ }
633
+
634
+ .wpr-pro-notice-video {
635
+ display: block;
636
+ margin-top: 7px;
637
+ line-height: 20px;
638
+ border: none !important;
639
+ }
640
+
641
+ #elementor-controls .elementor-control-slider_section_pro_notice {
642
+ margin-top: -16px;
643
+ padding-bottom: 0 !important;
644
+ }
645
+
646
+ .elementor-control-layout_select_pro_notice + div,
647
+ .elementor-control-element_align_pro_notice + div {
648
+ padding-top: 15px;
649
+ }
650
+
651
+ .elementor-control-layout_select .elementor-choices label {
652
+ position: relative;
653
+ }
654
+
655
+ .elementor-control-layout_select .elementor-choices label:nth-child(2):after,
656
+ .elementor-control-layout_select .elementor-choices label:nth-child(4):after,
657
+ .elementor-control-layout_select .elementor-choices label:nth-child(6):after,
658
+ .elementor-control-layout_select .elementor-choices label:nth-child(8):after,
659
+ .elementor-control-layout_select .elementor-choices label:nth-child(10):after,
660
+ .elementor-control-layout_select .elementor-choices label:nth-child(12):after {
661
+ content: ' ';
662
+ display: block;
663
+ width: 100%;
664
+ height: 100%;
665
+ position: absolute;
666
+ top: 0;
667
+ left: 0;
668
+ background: rgba(0,0,0,0.2);
669
+ }
670
+
671
+ /* Adjustments */
672
+ .elementor-control.elementor-control-element_align_pro_notice,
673
+ .elementor-control.elementor-control-search_pro_notice,
674
+ .elementor-control.elementor-control-layout_select_pro_notice,
675
+ .elementor-control.elementor-control-grid_columns_pro_notice,
676
+ .elementor-control.elementor-control-slider_content_type_pro_notice,
677
+ .elementor-control.elementor-control-slider_repeater_pro_notice,
678
+ .elementor-control.elementor-control-slider_dots_layout_pro_notice,
679
+ .elementor-control.elementor-control-testimonial_repeater_pro_notice,
680
+ .elementor-control.elementor-control-testimonial_icon_pro_notice,
681
+ .elementor-control.elementor-control-menu_layout_pro_notice,
682
+ .elementor-control.elementor-control-menu_items_submenu_entrance_pro_notice,
683
+ .elementor-control.elementor-control-switcher_label_style_pro_notice,
684
+ .elementor-control.elementor-control-countdown_type_pro_notice,
685
+ .elementor-control.elementor-control-layout_pro_notice,
686
+ .elementor-control.elementor-control-anim_timing_pro_notice,
687
+ .elementor-control.elementor-control-tab_content_type_pro_notice,
688
+ .elementor-control.elementor-control-tabs_repeater_pro_notice,
689
+ .elementor-control.elementor-control-tabs_align_pro_notice,
690
+ .elementor-control.elementor-control-front_trigger_pro_notice,
691
+ .elementor-control.elementor-control-back_link_type_pro_notice,
692
+ .elementor-control.elementor-control-box_anim_timing_pro_notice,
693
+ .elementor-control.elementor-control-image_style_pro_notice,
694
+ .elementor-control.elementor-control-image_animation_timing_pro_notice,
695
+ .elementor-control.elementor-control-label_display_pro_notice,
696
+ .elementor-control.elementor-control-post_type_pro_notice,
697
+ .elementor-control.elementor-control-type_select_pro_notice,
698
+ .elementor-control.elementor-control-icon_style_pro_notice,
699
+ .elementor-control.elementor-control-dual_button_pro_notice,
700
+ .elementor-control.elementor-control-team_member_pro_notice,
701
+ .elementor-control.elementor-control-price_list_pro_notice,
702
+ .elementor-control.elementor-control-business_hours_pro_notice,
703
+ .elementor-control.elementor-control-sharing_columns_pro_notice,
704
+ .elementor-control.elementor-control-popup_trigger_pro_notice,
705
+ .elementor-control.elementor-control-popup_show_again_delay_pro_notice,
706
+ .elementor-control.elementor-control-group_popup_settings_pro_notice,
707
+ .elementor-control.elementor-control-which_particle_pro_notice,
708
+ .elementor-control.elementor-control-paralax_repeater_pro_notice,
709
+ .elementor-control.elementor-control-opnepage_pro_notice,
710
+ .elementor-control.elementor-control-timeline_repeater_pro_notice,
711
+ .elementor-control.elementor-control-limit_grid_items_pro_notice,
712
+ .elementor-control.elementor-control-post_nav_layout_pro_notice,
713
+ .elementor-control.elementor-control-author_name_links_to_pro_notice,
714
+ .elementor-control.elementor-control-author_title_links_to_pro_notice,
715
+ .elementor-control.elementor-control-comments_form_layout_pro_notice,
716
+ .elementor-control.elementor-control-sharing_repeater_pro_notice,
717
+ .elementor-control.elementor-control-mini_cart_style_pro_notice,
718
+ .elementor-control.elementor-control-tabs_position_pro_notice,
719
+ .elementor-control.elementor-control-choose_table_type_pro_notice,
720
+ .elementor-control.elementor-control-accordion_repeater_pro_notice,
721
+ .elementor-control.elementor-control-acc_repeater_pro_notice,
722
+ .elementor-control.elementor-control-data_source_pro_notice,
723
+ .elementor-control.elementor-control-charts_repeater_pro_notice,
724
+ .elementor-control.elementor-control-mob_menu_display_as_pro_notice {
725
+ padding-bottom: 0 !important;
726
+ }
727
+
728
+ .elementor-control-search_pro_notice .wpr-pro-notice,
729
+ .elementor-control-grid_columns_pro_notice .wpr-pro-notice,
730
+ .elementor-control-slider_content_type_pro_notice .wpr-pro-notice,
731
+ .elementor-control-slider_repeater_pro_notice .wpr-pro-notice,
732
+ .elementor-control-slider_dots_layout_pro_notice .wpr-pro-notice,
733
+ .elementor-control-testimonial_repeater_pro_notice .wpr-pro-notice,
734
+ .elementor-control-testimonial_icon_pro_notice .wpr-pro-notice,
735
+ .elementor-control-menu_layout_pro_notice .wpr-pro-notice,
736
+ .elementor-control-menu_items_submenu_entrance_pro_notice .wpr-pro-notice,
737
+ .elementor-control-switcher_label_style_pro_notice .wpr-pro-notice,
738
+ .elementor-control-countdown_type_pro_notice .wpr-pro-notice,
739
+ .elementor-control-layout_pro_notice .wpr-pro-notice,
740
+ .elementor-control-anim_timing_pro_notice .wpr-pro-notice,
741
+ .elementor-control-tab_content_type_pro_notice .wpr-pro-notice,
742
+ .elementor-control-tabs_repeater_pro_notice .wpr-pro-notice,
743
+ .elementor-control-tabs_align_pro_notice .wpr-pro-notice,
744
+ .elementor-control-front_trigger_pro_notice .wpr-pro-notice,
745
+ .elementor-control-back_link_type_pro_notice .wpr-pro-notice,
746
+ .elementor-control-box_anim_timing_pro_notice .wpr-pro-notice,
747
+ .elementor-control-image_style_pro_notice .wpr-pro-notice,
748
+ .elementor-control-image_animation_timing_pro_notice .wpr-pro-notice,
749
+ .elementor-control-label_display_pro_notice .wpr-pro-notice,
750
+ .elementor-control-post_type_pro_notice .wpr-pro-notice,
751
+ .elementor-control-type_select_pro_notice .wpr-pro-notice,
752
+ .elementor-control-icon_style_pro_notice .wpr-pro-notice,
753
+ .elementor-control-dual_button_pro_notice .wpr-pro-notice,
754
+ .elementor-control-team_member_pro_notice .wpr-pro-notice,
755
+ .elementor-control-price_list_pro_notice .wpr-pro-notice,
756
+ .elementor-control-business_hours_pro_notice .wpr-pro-notice,
757
+ .elementor-control-sharing_columns_pro_notice .wpr-pro-notice,
758
+ .elementor-control-popup_trigger_pro_notice .wpr-pro-notice,
759
+ .elementor-control-popup_show_again_delay_pro_notice .wpr-pro-notice,
760
+ .elementor-control-group_popup_settings_pro_notice .wpr-pro-notice,
761
+ .elementor-control-post_nav_layout_pro_notice .wpr-pro-notice,
762
+ .elementor-control-author_name_links_to_pro_notice .wpr-pro-notice,
763
+ .elementor-control-author_title_links_to_pro_notice .wpr-pro-notice,
764
+ .elementor-control-comments_form_layout_pro_notice .wpr-pro-notice,
765
+ .elementor-control-sharing_repeater_pro_notice .wpr-pro-notice,
766
+ .elementor-control-mini_cart_style_pro_notice .wpr-pro-notice,
767
+ .elementor-control-tabs_position_pro_notice .wpr-pro-notice,
768
+ .elementor-control-choose_table_type_pro_notice .wpr-pro-notice,
769
+ .elementor-control-accordion_repeater_pro_notice .wpr-pro-notice,
770
+ .elementor-control.elementor-control-data_source_pro_notice .wpr-pro-notice,
771
+ .elementor-control.elementor-control-mob_menu_display_as_pro_notice .wpr-pro-notice {
772
+ border-bottom: none !important;
773
+ }
774
+
775
+ /* Both */
776
+ .elementor-control.elementor-control-pagination_type_pro_notice,
777
+ .elementor-control.elementor-control-tooltip_trigger_pro_notice,
778
+ .elementor-control.elementor-control-post_info_select_pro_notice {
779
+ padding-top: 0 !important;
780
+ padding-bottom: 0 !important;
781
+ }
782
+
783
+ .elementor-control-pagination_type_pro_notice .wpr-pro-notice {
784
+ border-top: none !important;
785
+ border-bottom: none !important;
786
+ }
787
+
788
+ .elementor-control-pro_features_section .elementor-section-toggle,
789
+ .elementor-control-pro_features_section .elementor-section-title {
790
+ color: #f54;
791
+ }
792
+
793
+ .elementor-control-pro_features_section .elementor-section-title {
794
+ line-height: 20px;
795
+ }
796
+ .elementor-control-pro_features_section .elementor-section-title .dashicons {
797
+ line-height: 20px;
798
+ font-size: 13px;
799
+ }
800
+
801
+ .wpr-pro-features-list {
802
+ text-align: center;
803
+ }
804
+
805
+ .wpr-pro-features-list ul {
806
+ text-align: left;
807
+ }
808
+
809
+ .wpr-pro-features-list ul li {
810
+ position: relative;
811
+ line-height: 22px;
812
+ padding-left: 20px;
813
+ }
814
+
815
+ .wpr-pro-features-list ul li::before {
816
+ content: '.';
817
+ font-size: 38px;
818
+ position: absolute;
819
+ top: -11px;
820
+ left: 0;
821
+ }
822
+
823
+ .wpr-pro-features-list ul + a {
824
+ display: inline-block;
825
+ background-color: #f54;
826
+ color: #fff;
827
+ margin: 15px 15px 10px 0;
828
+ padding: 7px 12px;
829
+ border-radius: 3px;
830
+ }
831
+
832
+ .wpr-pro-features-list ul + a:hover {
833
+ color: #fff;
834
+ }
835
+
836
+ /* Video Tutorial Link */
837
+ .elementor-control[class*="video_tutorial"] {
838
+ padding-top: 0 !important;
839
+ padding-bottom: 5px !important;
840
+ }
841
+
842
+ .elementor-control.elementor-control-woo_grid_notice_video_tutorial,
843
+ .elementor-control-show_last_update_date {
844
+ padding-bottom: 15px !important;
845
+ }
846
+
847
+ .elementor-control.elementor-control-woo_grid_notice_video_tutorial a {
848
+ display: inline-block;
849
+ margin-top: 5px;
850
+ }
851
+
852
+ .elementor-control[class*="video_tutorial"] a {
853
+ line-height: 16px;
854
+ font-size: 12px;
855
+ }
856
+
857
+ .elementor-control[class*="video_tutorial"] a .dashicons {
858
+ font-size: 16px;
859
+ }
860
+
861
+ /* Pro Control Class */
862
+ .elementor-control.wpr-pro-control label i {
863
+ color: #aeaeae;
864
+ font-size: 14px;
865
+ margin-left: 3px;
866
+ }
867
+
868
+ .elementor-control.wpr-pro-control .elementor-control-content:before {
869
+ content: '';
870
+ position: absolute;
871
+ width: 100%;
872
+ height: 100%;
873
+ z-index: 9;
874
+ background: transparent;
875
+ }
876
+
877
+ .elementor-control.wpr-pro-control .elementor-control-content:after {
878
+ content: "This option is available in the Pro Version.";
879
+ visibility: hidden;
880
+ opacity: 0;
881
+ position: absolute;
882
+ top: 30px;
883
+ padding: 15px;
884
+ z-index: 99;
885
+ margin-top: 10px;
886
+ font-size: 12px;
887
+ color: #93003c;
888
+ background-color: #ffffff;
889
+ border-radius: 5px;
890
+ -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
891
+ box-shadow: 1px 1px 5px rgba(0,0,0,0.2);
892
+ border: 1px solid #e6e9ec;
893
+ -webkit-transition: all 0.2s ease-in;
894
+ -o-transition: all 0.2s ease-in;
895
+ transition: all 0.2s ease-in;
896
+ }
897
+
898
+ .elementor-repeater-fields .elementor-control.wpr-pro-control .elementor-control-content:after {
899
+ content: "This is available in the Pro Version.";
900
+ }
901
+
902
+ .elementor-control.wpr-pro-control.no-distance .elementor-control-content:after {
903
+ margin: 0;
904
+ }
905
+
906
+ .elementor-control.wpr-pro-control .elementor-control-content:hover:after {
907
+ visibility: visible;
908
+ opacity: 1;
909
+ }
910
+
911
+ /*--------------------------------------------------------------
912
+ == Request New Feature
913
+ --------------------------------------------------------------*/
914
+ .elementor-control-section_request_new_feature .elementor-section-toggle,
915
+ .elementor-control-section_request_new_feature .elementor-section-title {
916
+ color: #1CB4E4;
917
+ line-height: 20px;
918
+ }
919
+
920
+ .elementor-control-section_request_new_feature .elementor-section-title .dashicons {
921
+ line-height: 20px;
922
+ font-size: 13px;
923
+ }
924
+
925
+ .elementor-control-request_new_feature {
926
+ line-height: 20px;
927
+ }
928
+
929
+ .elementor-control-request_new_feature a {
930
+ display: block;
931
+ padding: 10px 15px;
932
+ border-radius: 3px;
933
+ margin-top: 15px;
934
+ text-align: center;
935
+ text-decoration: none;
936
+ background-color: #1CB4E4;
937
+ color: #fff;
938
+ font-size: 13px;
939
+ font-weight: 500;
940
+ }
941
+
942
+ .elementor-control-request_new_feature a:hover {
943
+ color: #fff;
944
+ background-color: #1589ad;
945
+ }
946
+
947
+ .elementor-control-request_new_feature a .dashicons {
948
+ font-size: 13px;
949
+ line-height: 18px;
950
+ }
951
+
952
+
953
+ /*--------------------------------------------------------------
954
+ == Theme Builder Widgets
955
+ --------------------------------------------------------------*/
956
+ #elementor-panel-categories {
957
+ display: -webkit-box;
958
+ display: -ms-flexbox;
959
+ display: flex;
960
+ -webkit-box-orient: vertical;
961
+ -webkit-box-direction: normal;
962
+ -ms-flex-direction: column;
963
+ flex-direction: column;
964
+ }
965
+
966
+ #elementor-panel-categories > div {
967
+ -webkit-box-ordinal-group: 3;
968
+ -ms-flex-order: 2;
969
+ order: 2;
970
+ }
971
+
972
+ #elementor-panel-category-wpr-theme-builder-widgets,
973
+ #elementor-panel-category-wpr-woocommerce-builder-widgets {
974
+ -webkit-box-ordinal-group: 2 !important;
975
+ -ms-flex-order: 1 !important;
976
+ order: 1 !important;
977
+ }
978
+
979
+ .elementor-editor-wpr-theme-builder #elementor-panel-footer-saver-preview {
980
+ display: none !important;
981
+ }
982
+
983
+
984
+ /*--------------------------------------------------------------
985
+ == Elementor Search Notice
986
+ --------------------------------------------------------------*/
987
+ .wpr-elementor-search-notice {
988
+ background: #fff;
989
+ font-size: 13px;
990
+ padding: 20px;
991
+ line-height: 18px;
992
+ margin: 10px;
993
+ border-left: 3px solid #71d7f7;
994
+ -webkit-box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
995
+ box-shadow: 0 1px 4px 0 rgb(0 0 0 / 7%);
996
+ }
997
+
998
+
999
+ /*--------------------------------------------------------------
1000
+ == Debug
1001
+ --------------------------------------------------------------*/
1002
+ pre.xdebug-var-dump {
1003
+ position: absolute;
1004
+ z-index: 999999;
1005
+ background: #fff;
1006
+ border: 2px solid #000;
1007
+ padding: 20px;
1008
+ left: 300px;
1009
  }
assets/css/frontend.css CHANGED
@@ -1,15384 +1,15543 @@
1
- /*--------------------------------------------------------------
2
- == Reset
3
- --------------------------------------------------------------*/
4
- article,
5
- aside,
6
- footer,
7
- header,
8
- nav,
9
- section,
10
- figcaption,
11
- figure,
12
- main {
13
- display: block;
14
- }
15
-
16
- hr {
17
- -webkit-box-sizing: content-box;
18
- box-sizing: content-box;
19
- height: 0;
20
- overflow: visible;
21
- border: 0;
22
- height: 1px;
23
- margin: 20px 0;
24
- }
25
-
26
- pre {
27
- font-family: monospace, monospace;
28
- font-size: 1em;
29
- }
30
-
31
- a {
32
- text-decoration: none;
33
- background-color: transparent;
34
- -webkit-text-decoration-skip: objects;
35
- }
36
-
37
- [class*="elementor-widget-wpr-"] a {
38
- text-decoration: none;
39
- }
40
-
41
- abbr[title] {
42
- text-decoration: underline;
43
- -webkit-text-decoration: underline dotted;
44
- text-decoration: underline dotted;
45
- }
46
-
47
- b,
48
- strong {
49
- font-weight: inherit;
50
- }
51
-
52
- b,
53
- strong {
54
- font-weight: bolder;
55
- }
56
-
57
- code,
58
- kbd,
59
- samp {
60
- font-family: monospace, monospace;
61
- font-size: 1em;
62
- }
63
-
64
- dfn {
65
- font-style: italic;
66
- }
67
-
68
- mark {
69
- background-color: #ff0;
70
- color: #000;
71
- }
72
-
73
- small {
74
- font-size: 80%;
75
- }
76
-
77
- sub,
78
- sup {
79
- font-size: 75%;
80
- line-height: 0;
81
- position: relative;
82
- vertical-align: baseline;
83
- }
84
-
85
- sub {
86
- bottom: -0.25em;
87
- }
88
-
89
- sup {
90
- top: -0.5em;
91
- }
92
-
93
- audio,
94
- video {
95
- display: inline-block;
96
- }
97
-
98
- audio:not([controls]) {
99
- display: none;
100
- height: 0;
101
- }
102
-
103
- img {
104
- display: block;
105
- border-style: none;
106
- }
107
-
108
- svg:not(:root) {
109
- overflow: hidden;
110
- display: inline;
111
- }
112
-
113
- button,
114
- input {
115
- overflow: visible;
116
- outline: 0;
117
- }
118
-
119
- button,
120
- select {
121
- text-transform: none;
122
- }
123
-
124
- button,
125
- html [type="button"],
126
- [type="reset"],
127
- [type="submit"] {
128
- -webkit-appearance: button;
129
- }
130
-
131
- button::-moz-focus-inner,
132
- [type="button"]::-moz-focus-inner,
133
- [type="reset"]::-moz-focus-inner,
134
- [type="submit"]::-moz-focus-inner {
135
- border-style: none;
136
- padding: 0;
137
- }
138
-
139
- button:-moz-focusring,
140
- [type="button"]:-moz-focusring,
141
- [type="reset"]:-moz-focusring,
142
- [type="submit"]:-moz-focusring {
143
- outline: none;
144
- }
145
-
146
- [type=button]:focus,
147
- [type=button]:hover,
148
- [type=submit]:focus,
149
- [type=submit]:hover,
150
- button:focus,
151
- button:hover {
152
- outline: 0;
153
- }
154
-
155
- legend {
156
- -webkit-box-sizing: border-box;
157
- box-sizing: border-box;
158
- color: inherit;
159
- display: table;
160
- max-width: 100%;
161
- padding: 0;
162
- /* 3 */
163
- white-space: normal;
164
- }
165
-
166
- progress {
167
- display: inline-block;
168
- vertical-align: baseline;
169
- }
170
-
171
- textarea {
172
- overflow: auto;
173
- outline: 0;
174
- }
175
-
176
- [type="checkbox"],
177
- [type="radio"] {
178
- -webkit-box-sizing: border-box;
179
- box-sizing: border-box;
180
- padding: 0;
181
- outline: 0;
182
- }
183
-
184
- [type="number"]::-webkit-inner-spin-button,
185
- [type="number"]::-webkit-outer-spin-button {
186
- height: auto;
187
- outline: 0;
188
- }
189
-
190
- [type="search"] {
191
- -webkit-appearance: none !important;
192
- -moz-appearance: none !important;
193
- appearance: none !important;
194
- outline: 0;
195
- }
196
-
197
- [type="search"]:focus {
198
- -webkit-appearance: none !important;
199
- -moz-appearance: none !important;
200
- appearance: none !important;
201
- outline: 0;
202
- }
203
-
204
- [type="search"] {
205
- -webkit-appearance: textfield;
206
- outline-offset: -2px;
207
- }
208
-
209
- [type="search"]::-webkit-search-cancel-button,
210
- [type="search"]::-webkit-search-decoration {
211
- -webkit-appearance: none;
212
- }
213
-
214
- ::-webkit-file-upload-button {
215
- -webkit-appearance: button;
216
- font: inherit;
217
- }
218
-
219
- details,
220
- menu {
221
- display: block;
222
- }
223
-
224
- summary {
225
- display: list-item;
226
- }
227
-
228
- canvas {
229
- display: inline-block;
230
- }
231
-
232
- template {
233
- display: none;
234
- }
235
-
236
- [hidden] {
237
- display: none;
238
- }
239
-
240
- /* TODO: Remove this when php part is done */
241
- .ast-separate-container .ast-article-post,
242
- .ast-separate-container .ast-article-single {
243
- padding: 0;
244
- border: none;
245
- background-color: transparent;
246
- }
247
-
248
- .ast-separate-container .comment-respond {
249
- padding: 0;
250
- background-color: transparent;
251
- }
252
-
253
-
254
- /*--------------------------------------------------------------
255
- == General
256
- --------------------------------------------------------------*/
257
- /*.wpr-float-align-left .wpr-nav-menu li {
258
- float: left;
259
- }
260
-
261
- .wpr-float-align-right .wpr-nav-menu li {
262
- float: right;
263
- }
264
-
265
- .wpr-float-align-center .wpr-nav-menu {
266
- width: auto;
267
- margin: 0 auto;
268
- }*/
269
-
270
-
271
- /* Hidden Element */
272
- .wpr-hidden-element {
273
- display: none !important;
274
- }
275
-
276
-
277
- /* Vertical Centering */
278
- .wpr-cv-container {
279
- display: block;
280
- width: 100%;
281
- height: 100%;
282
- position: absolute;
283
- left: 0;
284
- top: 0;
285
- z-index: 90;
286
- }
287
-
288
- .wpr-cv-outer {
289
- display: table;
290
- width: 100%;
291
- height: 100%;
292
- }
293
-
294
- .wpr-cv-inner {
295
- display: table-cell;
296
- vertical-align: middle;
297
- }
298
-
299
- .wpr-no-transition-delay {
300
- -webkit-transition-delay: 0s !important;
301
- -o-transition-delay: 0s !important;
302
- transition-delay: 0s !important;
303
- }
304
-
305
-
306
- /* Drop Caps */
307
- .wpr-enable-dropcap p:first-child:first-letter {
308
- float: left;
309
- padding-right: 10px;
310
- font-size: 50px;
311
- line-height: 1;
312
- }
313
-
314
-
315
- /* Tooltips */
316
- .wpr-tooltip {
317
- visibility: hidden;
318
- opacity: 0;
319
- position: absolute;
320
- top: 0;
321
- left: 0;
322
- -webkit-transform: translateY(-100%);
323
- -ms-transform: translateY(-100%);
324
- transform: translateY(-100%);
325
- padding: 6px 10px;
326
- border-radius: 4px;
327
- font-size: 15px;
328
- -webkit-transition: all 230ms ease-in-out 0s;
329
- -o-transition: all 230ms ease-in-out 0s;
330
- transition: all 230ms ease-in-out 0s;
331
- }
332
-
333
- .wpr-tooltip:before {
334
- content: "";
335
- position: absolute;
336
- left: 10px;
337
- bottom: -5px;
338
- width: 0;
339
- height: 0;
340
- border-left: 6px solid transparent;
341
- border-right: 6px solid transparent;
342
- border-top-style: solid;
343
- border-top-width: 6px;
344
- }
345
-
346
-
347
- /*--------------------------------------------------------------
348
- == Nav Menu
349
- --------------------------------------------------------------*/
350
- .wpr-nav-menu,
351
- .wpr-nav-menu ul,
352
- .wpr-mobile-nav-menu,
353
- .wpr-mobile-nav-menu ul {
354
- padding: 0;
355
- margin: 0;
356
- list-style: none;
357
- font-size: 0;
358
- }
359
-
360
- .wpr-nav-menu li {
361
- position: relative;
362
- }
363
-
364
- .wpr-nav-menu-horizontal .wpr-nav-menu>li {
365
- display: inline-block;
366
- }
367
-
368
- .wpr-nav-menu .wpr-menu-item {
369
- display: block;
370
- position: relative;
371
- z-index: 1;
372
- }
373
-
374
- .wpr-nav-menu > li > a,
375
- .wpr-mobile-nav-menu > li > a {
376
- font-size: 16px;
377
- line-height: 1;
378
- }
379
-
380
- .wpr-mobile-nav-menu li {
381
- margin: 0;
382
- }
383
-
384
- .wpr-nav-menu-horizontal .wpr-nav-menu>li:first-child,
385
- .wpr-pointer-none .wpr-nav-menu-horizontal>li:first-child .wpr-menu-item,
386
- .wpr-pointer-line-fx .wpr-nav-menu-horizontal>li:first-child .wpr-menu-item {
387
- padding-left: 0 !important;
388
- margin-left: 0 !important;
389
- }
390
-
391
- .wpr-nav-menu-horizontal .wpr-nav-menu>li:last-child,
392
- .wpr-pointer-none .wpr-nav-menu-horizontal>li:last-child .wpr-menu-item,
393
- .wpr-pointer-line-fx .wpr-nav-menu-horizontal>li:last-child .wpr-menu-item {
394
- padding-right: 0 !important;
395
- margin-right: 0 !important;
396
- }
397
-
398
- div[class*="wpr-main-menu-align-"] .wpr-nav-menu-vertical .wpr-nav-menu>li>.wpr-sub-menu,
399
- div[class*="wpr-main-menu-align-"] .wpr-nav-menu-vertical .wpr-nav-menu>li>.wpr-sub-mega-menu {
400
- left: 100%;
401
- }
402
-
403
- .wpr-main-menu-align-left .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon,
404
- .wpr-main-menu-align-center .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon {
405
- right: 0;
406
- }
407
-
408
- .wpr-main-menu-align-right .wpr-nav-menu-vertical .wpr-sub-icon {
409
- left: 0;
410
- }
411
-
412
- .wpr-main-menu-align-left .wpr-nav-menu-horizontal .wpr-nav-menu,
413
- .wpr-main-menu-align-left .wpr-nav-menu-vertical .wpr-menu-item,
414
- .wpr-main-menu-align-left .wpr-nav-menu-vertical .wpr-sub-menu li a {
415
- text-align: left;
416
- }
417
-
418
- .wpr-main-menu-align-center .wpr-nav-menu-horizontal .wpr-nav-menu,
419
- .wpr-main-menu-align-center .wpr-nav-menu-vertical .wpr-menu-item {
420
- text-align: center;
421
- }
422
-
423
- .wpr-main-menu-align-right .wpr-nav-menu-horizontal .wpr-nav-menu,
424
- .wpr-main-menu-align-right .wpr-nav-menu-vertical .wpr-menu-item,
425
- .wpr-main-menu-align-right .wpr-nav-menu-vertical .wpr-sub-menu li a {
426
- text-align: right;
427
- }
428
-
429
- @media screen and ( min-width: 2400px) {
430
- .wpr-main-menu-align--widescreenleft .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon,
431
- .wpr-main-menu-align--widescreencenter .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon {
432
- right: 0;
433
- }
434
- .wpr-main-menu-align--widescreenleft .wpr-nav-menu-horizontal .wpr-nav-menu,
435
- .wpr-main-menu-align--widescreenleft .wpr-nav-menu-vertical .wpr-menu-item {
436
- text-align: left;
437
- }
438
- .wpr-main-menu-align--widescreencenter .wpr-nav-menu-horizontal .wpr-nav-menu,
439
- .wpr-main-menu-align--widescreencenter .wpr-nav-menu-vertical .wpr-menu-item {
440
- text-align: center;
441
- }
442
- .wpr-main-menu-align--widescreenright .wpr-nav-menu-horizontal .wpr-nav-menu,
443
- .wpr-main-menu-align--widescreenright .wpr-nav-menu-vertical .wpr-menu-item {
444
- text-align: right;
445
- }
446
- }
447
-
448
- @media screen and ( max-width: 1221px) {
449
- .wpr-main-menu-align--laptopleft .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon,
450
- .wpr-main-menu-align--laptopcenter .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon {
451
- right: 0;
452
- }
453
- .wpr-main-menu-align--laptopleft .wpr-nav-menu-horizontal .wpr-nav-menu,
454
- .wpr-main-menu-align--laptopleft .wpr-nav-menu-vertical .wpr-menu-item {
455
- text-align: left;
456
- }
457
- .wpr-main-menu-align--laptopcenter .wpr-nav-menu-horizontal .wpr-nav-menu,
458
- .wpr-main-menu-align--laptopcenter .wpr-nav-menu-vertical .wpr-menu-item {
459
- text-align: center;
460
- }
461
- .wpr-main-menu-align--laptopright .wpr-nav-menu-horizontal .wpr-nav-menu,
462
- .wpr-main-menu-align--laptopright .wpr-nav-menu-vertical .wpr-menu-item {
463
- text-align: right;
464
- }
465
- }
466
-
467
- @media screen and ( max-width: 1200px) {
468
- .wpr-main-menu-align--tablet_extraleft .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon,
469
- .wpr-main-menu-align--tablet_extracenter .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon {
470
- right: 0;
471
- }
472
- .wpr-main-menu-align--tablet_extraleft .wpr-nav-menu-horizontal .wpr-nav-menu,
473
- .wpr-main-menu-align--tablet_extraleft .wpr-nav-menu-vertical .wpr-menu-item {
474
- text-align: left;
475
- }
476
- .wpr-main-menu-align--tablet_extracenter .wpr-nav-menu-horizontal .wpr-nav-menu,
477
- .wpr-main-menu-align--tablet_extracenter .wpr-nav-menu-vertical .wpr-menu-item {
478
- text-align: center;
479
- }
480
- .wpr-main-menu-align--tablet_extraright .wpr-nav-menu-horizontal .wpr-nav-menu,
481
- .wpr-main-menu-align--tablet_extraright .wpr-nav-menu-vertical .wpr-menu-item {
482
- text-align: right;
483
- }
484
- }
485
-
486
- @media screen and ( max-width: 1024px) {
487
- .wpr-main-menu-align--tabletleft .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon,
488
- .wpr-main-menu-align--tabletcenter .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon {
489
- right: 0;
490
- }
491
- .wpr-main-menu-align--tabletleft .wpr-nav-menu-horizontal .wpr-nav-menu,
492
- .wpr-main-menu-align--tabletleft .wpr-nav-menu-vertical .wpr-menu-item {
493
- text-align: left;
494
- }
495
- .wpr-main-menu-align--tabletcenter .wpr-nav-menu-horizontal .wpr-nav-menu,
496
- .wpr-main-menu-align--tabletcenter .wpr-nav-menu-vertical .wpr-menu-item {
497
- text-align: center;
498
- }
499
- .wpr-main-menu-align--tabletright .wpr-nav-menu-horizontal .wpr-nav-menu,
500
- .wpr-main-menu-align--tabletright .wpr-nav-menu-vertical .wpr-menu-item {
501
- text-align: right;
502
- }
503
- }
504
-
505
- @media screen and ( max-width: 880px) {
506
- .wpr-main-menu-align--mobile_extraleft .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon,
507
- .wpr-main-menu-align--mobile_extracenter .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon {
508
- right: 0;
509
- }
510
- .wpr-main-menu-align--mobile_extraleft .wpr-nav-menu-horizontal .wpr-nav-menu,
511
- .wpr-main-menu-align--mobile_extraleft .wpr-nav-menu-vertical .wpr-menu-item {
512
- text-align: left;
513
- }
514
- .wpr-main-menu-align--mobile_extracenter .wpr-nav-menu-horizontal .wpr-nav-menu,
515
- .wpr-main-menu-align--mobile_extracenter .wpr-nav-menu-vertical .wpr-menu-item {
516
- text-align: center;
517
- }
518
- .wpr-main-menu-align--mobile_extraright .wpr-nav-menu-horizontal .wpr-nav-menu,
519
- .wpr-main-menu-align--mobile_extraright .wpr-nav-menu-vertical .wpr-menu-item {
520
- text-align: right;
521
- }
522
- }
523
-
524
- @media screen and ( max-width: 767px) {
525
- .wpr-main-menu-align--mobileleft .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon,
526
- .wpr-main-menu-align--mobilecenter .wpr-nav-menu-vertical .wpr-menu-item .wpr-sub-icon {
527
- right: 0;
528
- }
529
- .wpr-main-menu-align--mobileleft .wpr-nav-menu-horizontal .wpr-nav-menu,
530
- .wpr-main-menu-align--mobileleft .wpr-nav-menu-vertical .wpr-menu-item {
531
- text-align: left;
532
- }
533
- .wpr-main-menu-align--mobilecenter .wpr-nav-menu-horizontal .wpr-nav-menu,
534
- .wpr-main-menu-align--mobilecenter .wpr-nav-menu-vertical .wpr-menu-item {
535
- text-align: center;
536
- }
537
- .wpr-main-menu-align--mobileright .wpr-nav-menu-horizontal .wpr-nav-menu,
538
- .wpr-main-menu-align--mobileright .wpr-nav-menu-vertical .wpr-menu-item {
539
- text-align: right;
540
- }
541
- }
542
-
543
- /* --- Sub Menu --- */
544
- .wpr-nav-menu .wpr-sub-menu {
545
- display: none;
546
- position: absolute;
547
- z-index: 9999;
548
- width: 180px;
549
- text-align: left;
550
- list-style: none;
551
- margin: 0;
552
- }
553
-
554
- .wpr-nav-menu-vertical .wpr-nav-menu>li>.wpr-sub-menu,
555
- .wpr-nav-menu-vertical .wpr-nav-menu>li>.wpr-sub-mega-menu {
556
- top: 0;
557
- }
558
-
559
- .wpr-sub-menu-position-inline .wpr-nav-menu-vertical .wpr-sub-menu {
560
- position: static;
561
- width: 100% !important;
562
- text-align: center !important;
563
- margin-left: 0 !important;
564
- }
565
-
566
- .wpr-sub-menu-position-inline .wpr-sub-menu a {
567
- position: relative;
568
- }
569
-
570
- .wpr-nav-menu .wpr-sub-menu .wpr-sub-menu {
571
- top: 0;
572
- left: 100%;
573
- }
574
-
575
- .wpr-sub-menu .wpr-sub-menu-item {
576
- display: block;
577
- font-size: 14px;
578
- }
579
-
580
- .wpr-nav-menu-horizontal .wpr-menu-item .wpr-sub-icon {
581
- margin-left: 7px;
582
- text-indent: 0;
583
- }
584
-
585
- .wpr-nav-menu:not(.wpr-mega-menu) .wpr-sub-icon {
586
- position: absolute;
587
- top: 48%;
588
- transform: translateY(-50%);
589
- -ms-transform: translateY(-50%);
590
- -webkit-transform: translateY(-50%);
591
- }
592
-
593
- .wpr-nav-menu:not(.wpr-mega-menu) .wpr-sub-icon-rotate {
594
- -webkit-transform: rotate(-90deg) translateX(80%);
595
- -ms-transform: rotate(-90deg) translateX(80%);
596
- transform: rotate(-90deg) translateX(80%);
597
- }
598
-
599
- .wpr-sub-divider-yes .wpr-sub-menu li:not(:last-child) {
600
- border-bottom-style: solid;
601
- }
602
-
603
-
604
- /* Mobile Menu */
605
- .wpr-mobile-nav-menu:not(.wpr-mobile-mega-menu),
606
- .wpr-mobile-nav-menu-container {
607
- display: none;
608
- }
609
-
610
- .wpr-mobile-nav-menu:not(.wpr-mobile-mega-menu) {
611
- position: absolute;
612
- z-index: 9999;
613
- }
614
-
615
- .wpr-mobile-menu-drdown-align-left .wpr-mobile-nav-menu:not(.wpr-mobile-mega-menu),
616
- .wpr-mobile-menu-drdown-align-left .wpr-mobile-mega-menu-wrap {
617
- left: 0;
618
- }
619
-
620
- .wpr-mobile-menu-drdown-align-center .wpr-mobile-nav-menu:not(.wpr-mobile-mega-menu),
621
- .wpr-mobile-menu-drdown-align-center .wpr-mobile-mega-menu-wrap {
622
- left: 50%;
623
- -webkit-transform: translateX(-50%);
624
- -ms-transform: translateX(-50%);
625
- transform: translateX(-50%);
626
- }
627
-
628
- .wpr-mobile-menu-drdown-align-right .wpr-mobile-nav-menu:not(.wpr-mobile-mega-menu),
629
- .wpr-mobile-menu-drdown-align-right .wpr-mobile-mega-menu-wrap {
630
- right: 0;
631
- }
632
-
633
- .wpr-mobile-menu-item,
634
- .wpr-mobile-sub-menu-item {
635
- position: relative;
636
- }
637
-
638
- .wpr-mobile-menu-item,
639
- .wpr-mobile-sub-menu-item {
640
- display: block;
641
- }
642
-
643
- .wpr-mobile-sub-menu,
644
- .wpr-mobile-sub-mega-menu {
645
- display: none;
646
- }
647
-
648
- .wpr-mobile-nav-menu .menu-item-has-children>a:after {
649
- position: absolute;
650
- right: 0;
651
- top: 50%;
652
- transform: translateY(-50%);
653
- -ms-transform: translateY(-50%);
654
- -webkit-transform: translateY(-50%);
655
- }
656
-
657
- .wpr-mobile-menu-item-align-left .wpr-mobile-sub-menu a:before {
658
- content: ' ';
659
- display: inline-block;
660
- width: 10px;
661
- }
662
-
663
- .wpr-mobile-menu-item-align-left .wpr-mobile-sub-menu .wpr-mobile-sub-menu a:before {
664
- width: 20px;
665
- }
666
-
667
- .wpr-mobile-menu-item-align-center .wpr-mobile-nav-menu {
668
- text-align: center;
669
- }
670
-
671
- .wpr-mobile-menu-item-align-right .wpr-mobile-nav-menu {
672
- text-align: right;
673
- }
674
-
675
- .wpr-mobile-menu-item-align-right .wpr-mobile-nav-menu .menu-item-has-children>a:after {
676
- right: auto !important;
677
- left: 0;
678
- }
679
-
680
- div[class*="wpr-sub-icon-"] .wpr-mobile-nav-menu .menu-item-has-children>a:after {
681
- font-family: "Font Awesome 5 Free";
682
- font-size: 12px;
683
- font-weight: 900;
684
- font-style: normal;
685
- text-decoration: none;
686
- line-height: 1;
687
- letter-spacing: 0;
688
- text-rendering: auto;
689
- -webkit-font-smoothing: antialiased;
690
- }
691
-
692
- .wpr-sub-icon-caret-down .wpr-sub-icon:before,
693
- .wpr-sub-icon-caret-down .wpr-mobile-nav-menu .menu-item-has-children>a:after {
694
- content: "\f0d7";
695
- }
696
-
697
- .wpr-sub-icon-angle-down .wpr-sub-icon:before,
698
- .wpr-sub-icon-angle-down .wpr-mobile-nav-menu .menu-item-has-children>a:after {
699
- content: "\f107";
700
- }
701
-
702
- .wpr-sub-icon-chevron-down .wpr-sub-icon:before,
703
- .wpr-sub-icon-chevron-down .wpr-mobile-nav-menu .menu-item-has-children>a:after {
704
- content: "\f078";
705
- }
706
-
707
- .wpr-sub-icon-plus .wpr-sub-icon:before,
708
- .wpr-sub-icon-plus .wpr-mobile-nav-menu .menu-item-has-children>a:after {
709
- content: "\f067";
710
- }
711
-
712
- .wpr-mobile-divider-yes .wpr-mobile-menu-item {
713
- border-bottom-style: solid;
714
- }
715
-
716
-
717
- /* Mobile Menu Toggle Button */
718
- .wpr-mobile-toggle-wrap {
719
- font-size: 0;
720
- line-height: 0;
721
- }
722
-
723
- .wpr-mobile-toggle {
724
- display: inline-block;
725
- padding: 7px;
726
- cursor: pointer;
727
- border-style: solid;
728
- text-align: center;
729
- }
730
-
731
- .wpr-mobile-toggle-line {
732
- display: block;
733
- width: 100%;
734
- }
735
-
736
- .wpr-mobile-toggle-line:last-child {
737
- margin-bottom: 0 !important;
738
- }
739
-
740
- .wpr-mobile-toggle-text {
741
- font-size: 16px;
742
- line-height: 1 !important;
743
- }
744
-
745
- .wpr-mobile-toggle-text:last-child {
746
- display: none;
747
- }
748
-
749
- .wpr-mobile-toggle-v2 .wpr-mobile-toggle-line:nth-child(2) {
750
- width: 78%;
751
- margin-left: 24%;
752
- }
753
-
754
- .wpr-mobile-toggle-v2 .wpr-mobile-toggle-line:nth-child(3) {
755
- width: 45%;
756
- margin-left: 57%;
757
- }
758
-
759
- .wpr-mobile-toggle-v3 .wpr-mobile-toggle-line:nth-child(2) {
760
- width: 75%;
761
- margin-left: 15%;
762
- }
763
-
764
- .wpr-mobile-toggle-v4 .wpr-mobile-toggle-line:nth-child(1),
765
- .wpr-mobile-toggle-v4 .wpr-mobile-toggle-line:nth-child(3) {
766
- width: 75%;
767
- margin-left: 25%;
768
- }
769
-
770
- .wpr-mobile-toggle-v4 .wpr-mobile-toggle-line:nth-child(2) {
771
- width: 75%;
772
- margin-right: 25%;
773
- }
774
-
775
- .wpr-mobile-toggle-v5 .wpr-mobile-toggle-line:nth-child(1) {
776
- display: none;
777
- }
778
-
779
- .wpr-nav-menu-bp-always .wpr-nav-menu-container {
780
- display: none;
781
- }
782
-
783
- .wpr-nav-menu-bp-always .wpr-mobile-nav-menu-container {
784
- display: block;
785
- }
786
-
787
- @media screen and ( max-width: 1025px) {
788
- .wpr-nav-menu-bp-tablet .wpr-nav-menu-container {
789
- display: none;
790
- }
791
- .wpr-nav-menu-bp-tablet .wpr-mobile-nav-menu-container {
792
- display: block;
793
- }
794
- }
795
-
796
- @media screen and ( max-width: 767px) {
797
- .wpr-nav-menu-bp-pro-nn .wpr-nav-menu-container,
798
- .wpr-nav-menu-bp-pro-al .wpr-nav-menu-container,
799
- .wpr-nav-menu-bp-mobile .wpr-nav-menu-container {
800
- display: none;
801
- }
802
- .wpr-nav-menu-bp-pro-nn .wpr-mobile-nav-menu-container,
803
- .wpr-nav-menu-bp-pro-al .wpr-mobile-nav-menu-container,
804
- .wpr-nav-menu-bp-mobile .wpr-mobile-nav-menu-container {
805
- display: block;
806
- }
807
- }
808
-
809
-
810
- /* Highlight Active */
811
- .wpr-pointer-line-fx .wpr-active-menu-item:before,
812
- .wpr-pointer-line-fx .wpr-active-menu-item:after,
813
- .wpr-pointer-border-fx .wpr-active-menu-item:before,
814
- .wpr-pointer-background-fx .wpr-active-menu-item:before {
815
- opacity: 1 !important;
816
- }
817
-
818
- .wpr-pointer-fx-none {
819
- -webkit-transition-duration: 0s !important;
820
- -o-transition-duration: 0s !important;
821
- transition-duration: 0s !important;
822
- }
823
-
824
- .wpr-pointer-overline.wpr-pointer-fx-slide .wpr-active-menu-item:before,
825
- .wpr-pointer-underline.wpr-pointer-fx-slide .wpr-active-menu-item:after,
826
- .wpr-pointer-double-line.wpr-pointer-fx-slide .wpr-active-menu-item:before,
827
- .wpr-pointer-double-line.wpr-pointer-fx-slide .wpr-active-menu-item:after,
828
- .wpr-pointer-overline.wpr-pointer-fx-grow .wpr-active-menu-item:before,
829
- .wpr-pointer-underline.wpr-pointer-fx-grow .wpr-active-menu-item:after,
830
- .wpr-pointer-double-line.wpr-pointer-fx-grow .wpr-active-menu-item:before,
831
- .wpr-pointer-double-line.wpr-pointer-fx-grow .wpr-active-menu-item:after {
832
- width: 100%;
833
- }
834
-
835
- .wpr-pointer-line-fx.wpr-pointer-fx-drop .wpr-active-menu-item:before {
836
- top: 0;
837
- }
838
-
839
- .wpr-pointer-line-fx.wpr-pointer-fx-drop .wpr-active-menu-item:after {
840
- bottom: 0 !important;
841
- }
842
-
843
- .wpr-pointer-border-fx.wpr-pointer-fx-grow .wpr-active-menu-item:before,
844
- .wpr-pointer-border-fx.wpr-pointer-fx-shrink .wpr-active-menu-item:before,
845
- .wpr-pointer-background-fx.wpr-pointer-fx-grow .wpr-active-menu-item:before,
846
- .wpr-pointer-background-fx.wpr-pointer-fx-shrink .wpr-active-menu-item:before,
847
- .wpr-pointer-background-fx.wpr-pointer-fx-sweep .wpr-active-menu-item:before {
848
- -webkit-transform: scale(1);
849
- -ms-transform: scale(1);
850
- transform: scale(1);
851
- }
852
-
853
- .wpr-pointer-background-fx.wpr-pointer-fx-skew .wpr-active-menu-item:before {
854
- -webkit-transform: perspective(600px) rotateX(0deg);
855
- transform: perspective(600px) rotateX(0deg);
856
- }
857
-
858
-
859
- /* WP Default Fix */
860
- .wpr-mobile-nav-menu .sub-menu-toggle {
861
- display: none !important;
862
- }
863
-
864
-
865
- /* Defaults */
866
- .elementor-widget-wpr-nav-menu .wpr-nav-menu .wpr-menu-item,
867
- .elementor-widget-wpr-nav-menu .wpr-mobile-nav-menu a,
868
- .elementor-widget-wpr-nav-menu .wpr-mobile-toggle-text {
869
- line-height: 26px;
870
- }
871
-
872
- .elementor-widget-wpr-nav-menu .wpr-sub-menu .wpr-sub-menu-item {
873
- font-size: 14px;
874
- }
875
-
876
-
877
-
878
- /*--------------------------------------------------------------
879
- == Mega Menu
880
- --------------------------------------------------------------*/
881
- .wpr-mega-menu {
882
- position: relative;
883
- }
884
-
885
- .wpr-mega-menu a.wpr-menu-item,
886
- .wpr-mega-menu a.wpr-sub-menu-item {
887
- display: -webkit-box;
888
- display: -ms-flexbox;
889
- display: flex;
890
- -webkit-box-align: center;
891
- -ms-flex-align: center;
892
- align-items: center;
893
- }
894
-
895
- .wpr-mega-menu .wpr-pointer-item:before,
896
- .wpr-mega-menu .wpr-pointer-item:after {
897
- position: absolute;
898
- }
899
-
900
- .wpr-mega-menu .wpr-sub-icon {
901
- margin-left: auto;
902
- }
903
-
904
- .wpr-nav-menu-horizontal .wpr-mega-menu .wpr-sub-icon {
905
- margin-top: -1px;
906
- }
907
-
908
- .wpr-nav-menu-vertical .wpr-mega-menu .wpr-sub-icon,
909
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu > li > a > .wpr-mobile-sub-icon {
910
- -webkit-transform: rotate(-90deg);
911
- -ms-transform: rotate(-90deg);
912
- transform: rotate(-90deg);
913
- }
914
-
915
- .wpr-mega-menu .wpr-sub-icon-rotate {
916
- -webkit-transform: rotate(-90deg);
917
- -ms-transform: rotate(-90deg);
918
- transform: rotate(-90deg);
919
- }
920
-
921
- .wpr-sub-mega-menu {
922
- display: none;
923
- position: absolute;
924
- z-index: 99999;
925
- overflow: hidden;
926
- width: 100%;
927
- text-align: left;
928
- }
929
-
930
- .wpr-sub-mega-menu,
931
- .wpr-sub-mega-menu ul {
932
- font-size: 1rem;
933
- }
934
-
935
- .wpr-nav-menu-vertical .wpr-sub-mega-menu {
936
- width: 840px;
937
- }
938
-
939
- li.wpr-mega-menu-pos-default {
940
- position: static;
941
- }
942
-
943
- .wpr-mega-menu-pos-default .wpr-sub-mega-menu {
944
- left: 0;
945
- }
946
-
947
- .wpr-mega-menu-width-full .wpr-sub-mega-menu {
948
- width: 100vw;
949
- }
950
-
951
- .wpr-main-menu-align-center .wpr-nav-menu-horizontal .wpr-mega-menu-width-custom .wpr-sub-mega-menu {
952
- left: 50%;
953
- }
954
-
955
- .wpr-mega-menu-icon {
956
- position: relative;
957
- top: -1px;
958
- margin-right: 5px;
959
- }
960
-
961
- .wpr-mega-menu-badge {
962
- font-size: 11px;
963
- padding: 2px 5px;
964
- line-height: 1;
965
- }
966
-
967
- .wpr-nav-menu-horizontal .wpr-mega-menu-badge {
968
- position: absolute;
969
- top: -4px;
970
- right: 0;
971
- }
972
-
973
- .wpr-nav-menu-horizontal .wpr-mega-menu-badge:after {
974
- content: ' ';
975
- position: absolute;
976
- top: 100%;
977
- left: 50%;
978
- -webkit-transform: translateX(-50%);
979
- -ms-transform: translateX(-50%);
980
- transform: translateX(-50%);
981
- border-left: 3px solid transparent;
982
- border-right: 3px solid transparent;
983
- border-top-width: 3px;
984
- border-top-style: solid;
985
- border-top-color: inherit;
986
- }
987
-
988
- .wpr-nav-menu-vertical .wpr-mega-menu-badge,
989
- .wpr-mobile-nav-menu .wpr-mega-menu-badge {
990
- margin-left: 5px;
991
- }
992
-
993
- .wpr-nav-menu-vertical .wpr-mega-menu-badge {
994
- margin-left: 5px;
995
- vertical-align: middle;
996
- position: relative;
997
- top: -1px;
998
- }
999
-
1000
- .wpr-nav-menu-horizontal .wpr-mega-menu-badge-animation {
1001
- -webkit-animation: badgeBounce 2s ease-in-out infinite;
1002
- animation: badgeBounce 2s ease-in-out infinite;
1003
- }
1004
-
1005
- .wpr-nav-menu-vertical .wpr-mega-menu-badge-animation {
1006
- -webkit-animation: badgeFade 2s ease-in-out infinite;
1007
- animation: badgeFade 2s ease-in-out infinite;
1008
- }
1009
-
1010
- div[class*="wpr-sub-menu-fx"] .wpr-mega-menu .wpr-sub-menu,
1011
- div[class*="wpr-sub-menu-fx"] .wpr-mega-menu .wpr-sub-mega-menu {
1012
- display: block;
1013
- visibility: hidden;
1014
- opacity: 0;
1015
- z-index: -1;
1016
- -webkit-transition: all 0.2s ease-in;
1017
- -o-transition: all 0.2s ease-in;
1018
- transition: all 0.2s ease-in;
1019
- }
1020
-
1021
- div[class*="wpr-sub-menu-fx"] .wpr-mega-menu .wpr-sub-menu.wpr-animate-sub,
1022
- div[class*="wpr-sub-menu-fx"] .wpr-mega-menu .wpr-sub-mega-menu.wpr-animate-sub {
1023
- visibility: visible;
1024
- opacity: 1;
1025
- z-index: 9999;
1026
- }
1027
-
1028
- .wpr-sub-menu-fx-fade .wpr-sub-mega-menu {
1029
- -webkit-transition: all 0.3s ease-in;
1030
- -o-transition: all 0.3s ease-in;
1031
- transition: all 0.3s ease-in;
1032
- }
1033
-
1034
- .wpr-sub-menu-fx-move-up .wpr-sub-menu,
1035
- .wpr-sub-menu-fx-move-up .wpr-sub-mega-menu {
1036
- margin-top: 10px;
1037
- }
1038
-
1039
- .wpr-sub-menu-fx-move-down .wpr-sub-menu,
1040
- .wpr-sub-menu-fx-move-down .wpr-sub-mega-menu {
1041
- margin-top: -10px;
1042
- }
1043
-
1044
- .wpr-sub-menu-fx-move-left .wpr-sub-menu,
1045
- .wpr-sub-menu-fx-move-left .wpr-sub-mega-menu {
1046
- margin-left: 10px;
1047
- }
1048
-
1049
- .wpr-sub-menu-fx-move-right .wpr-sub-menu,
1050
- .wpr-sub-menu-fx-move-right .wpr-sub-mega-menu {
1051
- margin-left: -10px;
1052
- }
1053
-
1054
- .wpr-sub-menu-fx-move-up .wpr-sub-menu.wpr-animate-sub,
1055
- .wpr-sub-menu-fx-move-up .wpr-sub-mega-menu.wpr-animate-sub,
1056
- .wpr-sub-menu-fx-move-down .wpr-sub-menu.wpr-animate-sub,
1057
- .wpr-sub-menu-fx-move-down .wpr-sub-mega-menu.wpr-animate-sub {
1058
- margin-top: 0;
1059
- }
1060
-
1061
- .wpr-sub-menu-fx-move-left .wpr-sub-menu.wpr-animate-sub,
1062
- .wpr-sub-menu-fx-move-left .wpr-sub-mega-menu.wpr-animate-sub,
1063
- .wpr-sub-menu-fx-move-right .wpr-sub-menu.wpr-animate-sub,
1064
- .wpr-sub-menu-fx-move-right .wpr-sub-mega-menu.wpr-animate-sub {
1065
- margin-left: 0;
1066
- }
1067
-
1068
- @-webkit-keyframes badgeBounce {
1069
- 0% {
1070
- -webkit-transform:translateY(0);
1071
- transform:translateY(0);
1072
- }
1073
- 50% {
1074
- -webkit-transform:translateY(-25%);
1075
- transform:translateY(-25%);
1076
- }
1077
- 0% {
1078
- -webkit-transform:translateY(0);
1079
- transform:translateY(0);
1080
- }
1081
- }
1082
-
1083
- @keyframes badgeBounce {
1084
- 0% {
1085
- -webkit-transform:translateY(0);
1086
- transform:translateY(0);
1087
- }
1088
- 50% {
1089
- -webkit-transform:translateY(-25%);
1090
- transform:translateY(-25%);
1091
- }
1092
- 0% {
1093
- -webkit-transform:translateY(0);
1094
- transform:translateY(0);
1095
- }
1096
- }
1097
-
1098
- @-webkit-keyframes badgeFade {
1099
- 0% {
1100
- opacity: 1
1101
- }
1102
- 50% {
1103
- opacity: 0.5
1104
- }
1105
- 0% {
1106
- opacity: 1
1107
- }
1108
- }
1109
-
1110
- @keyframes badgeFade {
1111
- 0% {
1112
- opacity: 1
1113
- }
1114
- 50% {
1115
- opacity: 0.5
1116
- }
1117
- 0% {
1118
- opacity: 1
1119
- }
1120
- }
1121
-
1122
- /* Mobile Mega Menu */
1123
- .wpr-mobile-menu-display-dropdown .wpr-mobile-mega-menu-wrap {
1124
- display: none;
1125
- position: absolute;
1126
- z-index: 9999;
1127
- }
1128
-
1129
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu-wrap {
1130
- display: block;
1131
- position: fixed;
1132
- top: 0;
1133
- z-index: 9999;
1134
- height: 100%;
1135
- overflow: hidden;
1136
- -webkit-transition-property: -webkit-transform;
1137
- transition-property: -webkit-transform;
1138
- -o-transition-property: transform;
1139
- transition-property: transform;
1140
- transition-property: transform, -webkit-transform;
1141
- }
1142
-
1143
- .admin-bar .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu-wrap {
1144
- top: 32px;
1145
- }
1146
-
1147
- .wpr-mobile-menu-offcanvas-slide-left .wpr-mobile-mega-menu-wrap,
1148
- .wpr-mobile-menu-offcanvas-slide-center .wpr-mobile-mega-menu-wrap {
1149
- left: 0;
1150
- -webkit-transform: translateX(-100%);
1151
- -ms-transform: translateX(-100%);
1152
- transform: translateX(-100%);
1153
- }
1154
-
1155
- .wpr-mobile-menu-offcanvas-slide-right .wpr-mobile-mega-menu-wrap {
1156
- right: 0;
1157
- -webkit-transform: translateX(100%);
1158
- -ms-transform: translateX(100%);
1159
- transform: translateX(100%);
1160
- }
1161
-
1162
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu-open {
1163
- -webkit-transform: translateX(0);
1164
- -ms-transform: translateX(0);
1165
- transform: translateX(0);
1166
- }
1167
-
1168
- .wpr-mobile-mega-menu-overlay {
1169
- opacity: 0;
1170
- visibility: hidden;
1171
- position: fixed;
1172
- top: 0;
1173
- left: 0;
1174
- z-index: 9998;
1175
- width: 100%;
1176
- height: 100%;
1177
- -webkit-transition: opacity 0.2s ease-in;
1178
- -o-transition: opacity 0.2s ease-in;
1179
- transition: opacity 0.2s ease-in;
1180
- }
1181
-
1182
- .wpr-mobile-mega-menu-open + .wpr-mobile-mega-menu-overlay {
1183
- opacity: 1;
1184
- visibility: visible;
1185
- }
1186
-
1187
- .mobile-mega-menu-header {
1188
- display: -webkit-box;
1189
- display: -ms-flexbox;
1190
- display: flex;
1191
- }
1192
-
1193
- .mobile-mega-menu-close {
1194
- margin-left: auto;
1195
- cursor: pointer;
1196
- }
1197
-
1198
- .wpr-mobile-mega-menu .wpr-mobile-menu-item,
1199
- .wpr-mobile-mega-menu .wpr-mobile-sub-menu-item {
1200
- display: -webkit-box;
1201
- display: -ms-flexbox;
1202
- display: flex;
1203
- -webkit-box-align: center;
1204
- -ms-flex-align: center;
1205
- align-items: center;
1206
- }
1207
-
1208
- .wpr-mobile-mega-menu .wpr-mobile-sub-icon {
1209
- margin-left: auto;
1210
- font-size: 13px;
1211
- }
1212
-
1213
- .wpr-mobile-mega-menu > li > a > .wpr-mobile-sub-icon {
1214
- display: -webkit-box;
1215
- display: -ms-flexbox;
1216
- display: flex;
1217
- -webkit-box-align: end;
1218
- -ms-flex-align: end;
1219
- align-items: flex-end;
1220
- position: absolute;
1221
- right: 0;
1222
- }
1223
-
1224
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu li {
1225
- overflow: hidden;
1226
- }
1227
-
1228
- .wpr-mobile-mega-menu a:after {
1229
- display: none;
1230
- }
1231
-
1232
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu {
1233
- position: relative;
1234
- }
1235
-
1236
- .wpr-mobile-mega-menu > li > a,
1237
- .wpr-mobile-mega-menu .wpr-mobile-sub-menu > li > a {
1238
- position: relative;
1239
- left: 0;
1240
- -webkit-transition-property: left;
1241
- -o-transition-property: left;
1242
- transition-property: left;
1243
- }
1244
-
1245
- .wpr-mobile-mega-menu.wpr-mobile-sub-offcanvas-open > li > a {
1246
- left: -100%;
1247
- }
1248
-
1249
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-sub-mega-menu,
1250
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu > li > .wpr-mobile-sub-menu {
1251
- display: block;
1252
- position: absolute;
1253
- width: 100%;
1254
- top: 0;
1255
- left: 100%;
1256
- z-index: 1;
1257
- -webkit-transition-property: left;
1258
- -o-transition-property: left;
1259
- transition-property: left;
1260
- }
1261
-
1262
- .wpr-mobile-sub-offcanvas-open .wpr-mobile-sub-open > .wpr-mobile-sub-mega-menu,
1263
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu > .wpr-mobile-sub-open > .wpr-mobile-sub-menu {
1264
- left: 0;
1265
- }
1266
-
1267
- .wpr-mobile-mega-menu.wpr-mobile-sub-offcanvas-open > li > a {
1268
- margin-right: 20px;
1269
- }
1270
-
1271
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-sub-offcanvas-open .wpr-mobile-sub-open .wpr-mobile-sub-mega-menu,
1272
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu > .wpr-mobile-sub-open > .wpr-mobile-sub-menu {
1273
- margin-left: 0 !important;
1274
- }
1275
-
1276
- .wpr-mobile-menu-display-offcanvas .wpr-mobile-mega-menu .wpr-mobile-sub-menu .wpr-mobile-sub-menu {
1277
- padding-left: 10px;
1278
- }
1279
-
1280
- .wpr-mobile-sub-offcanvas-open .wpr-mobile-sub-open .wpr-mobile-sub-menu {
1281
- display: block;
1282
- }
1283
-
1284
- .wpr-menu-offcanvas-back {
1285
- display: none;
1286
- }
1287
-
1288
- .wpr-mobile-menu-display-offcanvas .wpr-menu-offcanvas-back {
1289
- display: block;
1290
- cursor: pointer;
1291
- }
1292
-
1293
- .wpr-mobile-menu-display-dropdown .wpr-mobile-mega-menu > li > .wpr-mobile-sub-menu > li:first-child {
1294
- display: none;
1295
- }
1296
-
1297
-
1298
- /*--------------------------------------------------------------
1299
- == Onepage Nav
1300
- --------------------------------------------------------------*/
1301
- .wpr-onepage-nav {
1302
- position: fixed;
1303
- z-index: 99999;
1304
- display: -webkit-box;
1305
- display: -ms-flexbox;
1306
- display: flex;
1307
- -webkit-box-orient: vertical;
1308
- -webkit-box-direction: normal;
1309
- -ms-flex-direction: column;
1310
- flex-direction: column;
1311
- -webkit-box-align: center;
1312
- -ms-flex-align: center;
1313
- align-items: center;
1314
- -webkit-box-pack: center;
1315
- -ms-flex-pack: center;
1316
- justify-content: center;
1317
- }
1318
-
1319
- .wpr-onepage-nav-item {
1320
- position: relative;
1321
- }
1322
-
1323
- .wpr-onepage-nav-item:last-child {
1324
- margin-bottom: 0 !important;
1325
- }
1326
-
1327
- .wpr-onepage-nav-vr-top .wpr-onepage-nav {
1328
- top: 0;
1329
- }
1330
-
1331
- .wpr-onepage-nav-vr-middle .wpr-onepage-nav {
1332
- top: 50%;
1333
- -ms-transform: translateY(-50%);
1334
- transform: translateY(-50%);
1335
- -webkit-transform: translateY(-50%);
1336
- }
1337
-
1338
- .wpr-onepage-nav-vr-bottom .wpr-onepage-nav {
1339
- bottom: 0;
1340
- }
1341
-
1342
- .wpr-onepage-nav-hr-left .wpr-onepage-nav {
1343
- left: 0;
1344
- }
1345
-
1346
- .wpr-onepage-nav-hr-right .wpr-onepage-nav {
1347
- right: 0;
1348
- }
1349
-
1350
- .wpr-onepage-nav-item .wpr-tooltip {
1351
- text-align: center;
1352
- }
1353
-
1354
- .wpr-onepage-nav-item:hover .wpr-tooltip {
1355
- opacity: 1;
1356
- visibility: visible;
1357
- }
1358
-
1359
- .wpr-onepage-nav-hr-left .wpr-onepage-nav-item:hover .wpr-tooltip {
1360
- -ms-transform: translate(10%, -50%);
1361
- transform: translate(10%, -50%);
1362
- -webkit-transform: translate(10%, -50%);
1363
- }
1364
-
1365
- .wpr-onepage-nav-hr-left .wpr-onepage-nav-item .wpr-tooltip {
1366
- top: 50%;
1367
- left: 100%;
1368
- -ms-transform: translate(20%, -50%);
1369
- transform: translate(20%, -50%);
1370
- -webkit-transform: translate(20%, -50%);
1371
- }
1372
-
1373
- .wpr-onepage-nav-hr-left .wpr-onepage-nav-item .wpr-tooltip:before {
1374
- left: auto;
1375
- left: -8px;
1376
- top: 50%;
1377
- -webkit-transform: translateY(-50%) rotate(90deg);
1378
- -ms-transform: translateY(-50%) rotate(90deg);
1379
- transform: translateY(-50%) rotate(90deg);
1380
- }
1381
-
1382
- .wpr-onepage-nav-hr-right .wpr-onepage-nav-item:hover .wpr-tooltip {
1383
- -ms-transform: translate(-110%, -50%);
1384
- transform: translate(-110%, -50%);
1385
- -webkit-transform: translate(-110%, -50%);
1386
- }
1387
-
1388
- .wpr-onepage-nav-hr-right .wpr-onepage-nav-item .wpr-tooltip {
1389
- top: 50%;
1390
- left: 0;
1391
- -ms-transform: translate(-120%, -50%);
1392
- transform: translate(-120%, -50%);
1393
- -webkit-transform: translate(-120%, -50%);
1394
- }
1395
-
1396
- .wpr-onepage-nav-hr-right .wpr-onepage-nav-item .wpr-tooltip:before {
1397
- left: auto;
1398
- right: -8px;
1399
- top: 50%;
1400
- -webkit-transform: translateY(-50%) rotate(-90deg);
1401
- -ms-transform: translateY(-50%) rotate(-90deg);
1402
- transform: translateY(-50%) rotate(-90deg);
1403
- }
1404
-
1405
-
1406
- /* Defaults */
1407
- .elementor-widget-wpr-onepage-nav .wpr-onepage-nav {
1408
- background-color: #605BE5;
1409
- -webkit-box-shadow: 0px 0px 15px 0px #D7D7D7;
1410
- box-shadow: 0px 0px 15px 0px #D7D7D7;
1411
- }
1412
-
1413
- .elementor-widget-wpr-onepage-nav .wpr-onepage-nav-item .wpr-tooltip {
1414
- font-size: 14px;
1415
- }
1416
-
1417
-
1418
- /*--------------------------------------------------------------
1419
- == Single Post Elements
1420
- --------------------------------------------------------------*/
1421
- .wpr-post-title,
1422
- .wpr-archive-title,
1423
- .wpr-author-box-name,
1424
- .wpr-author-box-title {
1425
- margin: 0;
1426
- }
1427
-
1428
- .wpr-archive-title:after {
1429
- content: ' ';
1430
- display: block;
1431
- }
1432
-
1433
- /* Featured Media */
1434
- .wpr-featured-media-image {
1435
- position: relative;
1436
- display: inline-block;
1437
- vertical-align: middle;
1438
- }
1439
-
1440
- .wpr-featured-media-caption {
1441
- position: absolute;
1442
- display: -webkit-box;
1443
- display: -ms-flexbox;
1444
- display: flex;
1445
- width: 100%;
1446
- height: 100%;
1447
- }
1448
-
1449
- .wpr-featured-media-caption span {
1450
- display: inline-block;
1451
- }
1452
-
1453
- /* [data-caption="standard"],
1454
- [data-caption="gallery"]*/
1455
- .wpr-fm-image-caption-hover .wpr-featured-media-caption,
1456
- .wpr-fm-image-caption-hover .wpr-featured-media-caption {
1457
- opacity: 0;
1458
- -webkit-transition-property: opacity;
1459
- -o-transition-property: opacity;
1460
- transition-property: opacity;
1461
- }
1462
-
1463
- /* [data-caption="standard"],
1464
- [data-caption="gallery"] */
1465
- .wpr-fm-image-caption-hover:hover .wpr-featured-media-caption,
1466
- .wpr-fm-image-caption-hover:hover .wpr-featured-media-caption {
1467
- opacity: 1;
1468
- }
1469
-
1470
- .wpr-gallery-slider {
1471
- opacity: 0;
1472
- }
1473
-
1474
- .wpr-gallery-lightbox-yes .wpr-featured-media-image {
1475
- cursor: pointer;
1476
- }
1477
-
1478
- .wpr-gallery-slide img {
1479
- margin: 0 auto;
1480
- }
1481
-
1482
-
1483
- /* Gallery Slider Navigation */
1484
- .wpr-gallery-slider-arrows-wrap {
1485
- position: absolute;
1486
- top: 50%;
1487
- -webkit-transform: translateY(-50%);
1488
- -ms-transform: translateY(-50%);
1489
- transform: translateY(-50%);
1490
- left: 0;
1491
- z-index: 1;
1492
- width: 100%;
1493
- display: -webkit-box;
1494
- display: -ms-flexbox;
1495
- display: flex;
1496
- -webkit-box-pack: justify;
1497
- -ms-flex-pack: justify;
1498
- justify-content: space-between;
1499
- -webkit-box-align: center;
1500
- -ms-flex-align: center;
1501
- align-items: center;
1502
- }
1503
-
1504
- .wpr-thumbnail-slider-arrows-wrap {
1505
- position: absolute;
1506
- top: 90%;
1507
- left: 0;
1508
- z-index: 1;
1509
- width: 100%;
1510
- display: -webkit-box;
1511
- display: -ms-flexbox;
1512
- display: flex;
1513
- -webkit-box-pack: justify;
1514
- -ms-flex-pack: justify;
1515
- justify-content: space-between;
1516
- -webkit-box-align: center;
1517
- -ms-flex-align: center;
1518
- align-items: center;
1519
- }
1520
-
1521
- .wpr-gallery-slider-arrow,
1522
- .wpr-thumbnail-slider-arrow {
1523
- position: absolute;
1524
- top: 50%;
1525
- display: -webkit-box;
1526
- display: -ms-flexbox;
1527
- display: flex;
1528
- -webkit-box-pack: center;
1529
- -ms-flex-pack: center;
1530
- justify-content: center;
1531
- -webkit-box-align: center;
1532
- -ms-flex-align: center;
1533
- align-items: center;
1534
- z-index: 120;
1535
- -webkit-box-sizing: content-box;
1536
- box-sizing: content-box;
1537
- -webkit-transition: all .5s;
1538
- -o-transition: all .5s;
1539
- transition: all .5s;
1540
- text-align: center;
1541
- cursor: pointer;
1542
- }
1543
-
1544
- .wpr-gallery-slider-arrow i,
1545
- .wpr-thumbnail-slider-arrow i {
1546
- display: block;
1547
- width: 100%;
1548
- /* height: 100%; */
1549
- line-height: inherit;
1550
- }
1551
-
1552
- .wpr-gallery-slider-arrow {
1553
- -webkit-transform: translateY(-50%);
1554
- -ms-transform: translateY(-50%);
1555
- transform: translateY(-50%);
1556
- }
1557
-
1558
- .wpr-product-media-slider-nav-fade .wpr-gallery-slider-arrow {
1559
- opacity: 0;
1560
- visibility: hidden;
1561
- }
1562
-
1563
- .wpr-product-media-slider-nav-fade .wpr-gallery-slider:hover .wpr-gallery-slider-arrow {
1564
- opacity: 1;
1565
- visibility: visible;
1566
- }
1567
-
1568
- .wpr-gallery-slider-nav-fade .wpr-gallery-slider-arrow {
1569
- opacity: 0;
1570
- visibility: hidden;
1571
- }
1572
-
1573
- .wpr-gallery-slider-nav-fade .flex-viewport:hover .wpr-gallery-slider-arrow {
1574
- opacity: 1;
1575
- visibility: visible;
1576
- }
1577
-
1578
- /* styles for product gallery from woo-builder */
1579
- .wpr-thumbnail-slider-arrow {
1580
- -webkit-transform: translateY(-50%);
1581
- -ms-transform: translateY(-50%);
1582
- transform: translateY(-50%);
1583
- }
1584
-
1585
- .wpr-thumbnail-slider-nav-fade .wpr-thumbnail-slider-arrow {
1586
- opacity: 0;
1587
- visibility: hidden;
1588
- }
1589
-
1590
- .wpr-thumbnail-slider-nav-fade .wpr-product-thumb-nav:hover .wpr-thumbnail-slider-arrow {
1591
- opacity: 1;
1592
- visibility: visible;
1593
- }
1594
-
1595
- .wpr-product-media-lightbox {
1596
- position: absolute;
1597
- top: 0;
1598
- right: 0;
1599
- z-index: 9;
1600
- display: -webkit-box;
1601
- display: -ms-flexbox;
1602
- display: flex;
1603
- -webkit-box-align: center;
1604
- -ms-flex-align: center;
1605
- align-items: center;
1606
- -webkit-box-pack: center;
1607
- -ms-flex-pack: center;
1608
- justify-content: center;
1609
- }
1610
-
1611
- /* Gallery Slider Pagination */
1612
- .wpr-gallery-slider-dots {
1613
- position: absolute;
1614
- display: inline-table;
1615
- -webkit-transform: translate(-50%, -50%);
1616
- -ms-transform: translate(-50%, -50%);
1617
- transform: translate(-50%, -50%);
1618
- z-index: 110;
1619
- }
1620
-
1621
- .wpr-gallery-slider-dots ul {
1622
- list-style: none;
1623
- margin: 0;
1624
- padding: 0;
1625
- }
1626
-
1627
- .wpr-gallery-slider-dots li {
1628
- float: left;
1629
- }
1630
-
1631
- .wpr-gallery-slider-dot {
1632
- display: block;
1633
- cursor: pointer;
1634
- }
1635
-
1636
- .wpr-gallery-slider-dots li:last-child .wpr-gallery-slider-dot {
1637
- margin: 0 !important;
1638
- }
1639
-
1640
-
1641
- /* Author Box */
1642
- .wpr-author-box-image {
1643
- display: inline-block;
1644
- overflow: hidden;
1645
- }
1646
-
1647
- .wpr-author-box-arrange-left .wpr-author-box {
1648
- display: -webkit-box;
1649
- display: -ms-flexbox;
1650
- display: flex;
1651
- }
1652
-
1653
- .wpr-author-box-arrange-right .wpr-author-box {
1654
- display: -webkit-box;
1655
- display: -ms-flexbox;
1656
- display: flex;
1657
- -webkit-box-orient: horizontal;
1658
- -webkit-box-direction: reverse;
1659
- -ms-flex-direction: row-reverse;
1660
- flex-direction: row-reverse;
1661
- }
1662
-
1663
- .wpr-author-box-arrange-left .wpr-author-box-image,
1664
- .wpr-author-box-arrange-right .wpr-author-box-image {
1665
- -ms-flex-negative: 0;
1666
- flex-shrink: 0;
1667
- }
1668
-
1669
- .wpr-author-box-arrange-left .wpr-author-box-text,
1670
- .wpr-author-box-arrange-right .wpr-author-box-text {
1671
- -webkit-box-flex: 1;
1672
- -ms-flex-positive: 1;
1673
- flex-grow: 1;
1674
- }
1675
-
1676
- .wpr-author-box-btn {
1677
- display: inline-block;
1678
- }
1679
-
1680
-
1681
- /* Post Navigation */
1682
- .wpr-post-navigation-wrap {
1683
- display: -webkit-box;
1684
- display: -ms-flexbox;
1685
- display: flex;
1686
- }
1687
-
1688
- .wpr-posts-navigation-svg-wrapper {
1689
- display: -webkit-box;
1690
- display: -ms-flexbox;
1691
- display: flex;
1692
- -webkit-box-align: center;
1693
- -ms-flex-align: center;
1694
- align-items: center;
1695
- -webkit-box-pack: center;
1696
- -ms-flex-pack: center;
1697
- justify-content: center;
1698
- }
1699
-
1700
- .wpr-post-navigation-wrap>div:last-child {
1701
- margin-right: 0 !important;
1702
- }
1703
-
1704
- .wpr-post-nav-fixed-default-wrap {
1705
- position: fixed;
1706
- bottom: 0;
1707
- z-index: 999;
1708
- }
1709
-
1710
- .wpr-post-nav-fixed.wpr-post-navigation {
1711
- position: fixed;
1712
- -webkit-transform: translateY(-50%);
1713
- -ms-transform: translateY(-50%);
1714
- transform: translateY(-50%);
1715
- z-index: 999;
1716
- }
1717
-
1718
- .wpr-post-nav-fixed.wpr-post-navigation a {
1719
- display: block;
1720
- }
1721
-
1722
- .wpr-post-nav-fixed.wpr-post-navigation img {
1723
- position: absolute;
1724
- top: 0;
1725
- max-width: none;
1726
- }
1727
-
1728
- .wpr-post-nav-fixed.wpr-post-nav-prev {
1729
- left: 0;
1730
- }
1731
-
1732
- .wpr-post-nav-fixed.wpr-post-nav-next {
1733
- right: 0;
1734
- }
1735
-
1736
- .wpr-post-nav-fixed.wpr-post-nav-hover img {
1737
- opacity: 0;
1738
- }
1739
-
1740
- .wpr-post-nav-fixed.wpr-post-nav-hover.wpr-post-nav-prev img {
1741
- -webkit-transform: perspective(600px) rotateY(90deg);
1742
- transform: perspective(600px) rotateY(90deg);
1743
- -webkit-transform-origin: center left 0;
1744
- -ms-transform-origin: center left 0;
1745
- transform-origin: center left 0;
1746
- }
1747
-
1748
- .wpr-post-nav-fixed.wpr-post-nav-hover.wpr-post-nav-next img {
1749
- -webkit-transform: perspective(600px) rotateY(-90deg);
1750
- transform: perspective(600px) rotateY(-90deg);
1751
- -webkit-transform-origin: center right 0;
1752
- -ms-transform-origin: center right 0;
1753
- transform-origin: center right 0;
1754
- }
1755
-
1756
- .wpr-post-nav-fixed.wpr-post-nav-hover:hover img {
1757
- opacity: 1;
1758
- position: absolute;
1759
- -webkit-transform: none;
1760
- -ms-transform: none;
1761
- transform: none;
1762
- }
1763
-
1764
- .wpr-post-nav-static.wpr-post-navigation {
1765
- width: 50%;
1766
- }
1767
-
1768
- .wpr-post-navigation {
1769
- -webkit-box-flex: 1;
1770
- -ms-flex-positive: 1;
1771
- flex-grow: 1;
1772
- background-size: cover;
1773
- background-position: center center;
1774
- background-repeat: no-repeat;
1775
- }
1776
-
1777
- .wpr-post-navigation {
1778
- position: relative;
1779
- }
1780
-
1781
- .wpr-post-navigation a {
1782
- position: relative;
1783
- z-index: 2;
1784
- }
1785
-
1786
- .wpr-post-nav-overlay {
1787
- position: absolute;
1788
- top: 0;
1789
- left: 0;
1790
- width: 100%;
1791
- height: 100%;
1792
- -webkit-transition: all 0.3s ease-in 0s;
1793
- -o-transition: all 0.3s ease-in 0s;
1794
- transition: all 0.3s ease-in 0s;
1795
- }
1796
-
1797
- .wpr-post-nav-back {
1798
- -ms-flex-item-align: center;
1799
- -ms-grid-row-align: center;
1800
- align-self: center;
1801
- font-size: 30px;
1802
- }
1803
-
1804
- .wpr-post-navigation a {
1805
- display: -webkit-box;
1806
- display: -ms-flexbox;
1807
- display: flex;
1808
- -webkit-box-align: center;
1809
- -ms-flex-align: center;
1810
- align-items: center;
1811
- }
1812
-
1813
- .wpr-post-nav-next a {
1814
- -webkit-box-pack: end;
1815
- -ms-flex-pack: end;
1816
- justify-content: flex-end;
1817
- }
1818
-
1819
- .wpr-post-nav-labels {
1820
- min-width: 0;
1821
- }
1822
-
1823
- .wpr-post-nav-labels h5 {
1824
- display: -webkit-box;
1825
- display: -ms-flexbox;
1826
- display: flex;
1827
- overflow: hidden;
1828
- white-space: nowrap;
1829
- -ms-text-overflow: ellipsis;
1830
- -o-text-overflow: ellipsis;
1831
- text-overflow: ellipsis;
1832
- }
1833
-
1834
- .wpr-post-nav-labels span {
1835
- display: -webkit-box;
1836
- display: -ms-flexbox;
1837
- display: flex;
1838
- }
1839
-
1840
- .wpr-post-nav-next .wpr-post-nav-labels > span,
1841
- .wpr-post-nav-next .wpr-post-nav-labels h5 {
1842
- -webkit-box-pack: end;
1843
- -ms-flex-pack: end;
1844
- justify-content: flex-end;
1845
- }
1846
-
1847
- .wpr-post-navigation i {
1848
- text-align: center;
1849
- }
1850
-
1851
- .wpr-post-nav-dividers {
1852
- padding: 10px 0;
1853
- border-top: 1px solid #000;
1854
- border-bottom: 1px solid #000;
1855
- }
1856
-
1857
- .wpr-post-nav-divider {
1858
- -ms-flex-item-align: stretch;
1859
- -ms-grid-row-align: stretch;
1860
- align-self: stretch;
1861
- -ms-flex-negative: 0;
1862
- flex-shrink: 0;
1863
- }
1864
-
1865
- .wpr-post-nav-dividers.wpr-post-navigation-wrap {
1866
- padding-left: 0 !important;
1867
- padding-right: 0 !important;
1868
- }
1869
-
1870
- .wpr-post-nav-back a {
1871
- display: -webkit-box;
1872
- display: -ms-flexbox;
1873
- display: flex;
1874
- -webkit-box-orient: horizontal;
1875
- -webkit-box-direction: normal;
1876
- -ms-flex-flow: row wrap;
1877
- flex-flow: row wrap;
1878
- -webkit-box-pack: center;
1879
- -ms-flex-pack: center;
1880
- justify-content: center;
1881
- font-size: 0;
1882
- }
1883
-
1884
- .wpr-post-nav-back span {
1885
- display: inline-block;
1886
- border-style: solid;
1887
- }
1888
-
1889
- .wpr-post-nav-back span:nth-child(2n) {
1890
- margin-right: 0 !important;
1891
- }
1892
-
1893
-
1894
- /* Post Info */
1895
- .wpr-post-info {
1896
- padding: 0;
1897
- margin: 0;
1898
- list-style: none;
1899
- }
1900
-
1901
- .wpr-post-info li {
1902
- position: relative;
1903
- }
1904
-
1905
- .wpr-post-info-horizontal li {
1906
- display: inline-block;
1907
- }
1908
-
1909
- .wpr-post-info-horizontal li:last-child {
1910
- padding-right: 0 !important;
1911
- }
1912
-
1913
- .wpr-post-info-vertical li:last-child {
1914
- padding-bottom: 0 !important;
1915
- }
1916
-
1917
- .wpr-post-info li .wpr-post-info-text {
1918
- display: inline-block;
1919
- text-align: left !important;
1920
- }
1921
-
1922
- .wpr-post-info li:after {
1923
- content: ' ';
1924
- display: inline-block;
1925
- position: absolute;
1926
- }
1927
-
1928
- .wpr-post-info li:last-child:after {
1929
- display: none;
1930
- }
1931
-
1932
- .wpr-post-info-horizontal li:after {
1933
- top: 50%;
1934
- -webkit-transform: translateY(-50%);
1935
- -ms-transform: translateY(-50%);
1936
- transform: translateY(-50%);
1937
- }
1938
-
1939
- .wpr-post-info-vertical li:after {
1940
- bottom: 0;
1941
- }
1942
-
1943
- .wpr-post-info-align-left .wpr-post-info-vertical li:after {
1944
- left: 0;
1945
- }
1946
-
1947
- .wpr-post-info-align-center .wpr-post-info-vertical li:after {
1948
- left: 50%;
1949
- -webkit-transform: translateX(-50%);
1950
- -ms-transform: translateX(-50%);
1951
- transform: translateX(-50%);
1952
- }
1953
-
1954
- .wpr-post-info-align-right .wpr-post-info-vertical li:after {
1955
- right: 0;
1956
- }
1957
-
1958
- .wpr-post-info-text span {
1959
- display: inline-block;
1960
- }
1961
-
1962
- .wpr-post-info-author img {
1963
- display: inline-block;
1964
- margin-right: 10px;
1965
- vertical-align: middle;
1966
- }
1967
-
1968
- .wpr-post-info-custom-field a,
1969
- .wpr-post-info-custom-field span {
1970
- display: inline-block;
1971
- }
1972
-
1973
-
1974
- /* Post Comments */
1975
- .wpr-comments-list,
1976
- .wpr-comments-list ul.children {
1977
- list-style: none;
1978
- padding: 0;
1979
- margin: 0;
1980
- }
1981
-
1982
- .wpr-comment-avatar {
1983
- float: left;
1984
- overflow: hidden;
1985
- }
1986
-
1987
- .wpr-comment-avatar img {
1988
- margin: 0 !important;
1989
- position: static !important;
1990
- }
1991
-
1992
- .wpr-comment-metadata>* {
1993
- display: inline-block;
1994
- }
1995
-
1996
- .wpr-comment-metadata p {
1997
- display: block;
1998
- }
1999
-
2000
- .wpr-comments-wrap .comment-reply-link {
2001
- float: none !important;
2002
- }
2003
-
2004
- .wpr-comment-reply-separate.wpr-comment-reply-align-right .wpr-comment-reply {
2005
- text-align: right;
2006
- }
2007
-
2008
- .wpr-comment-reply-inline.wpr-comment-reply-align-right .wpr-comment-reply {
2009
- float: right;
2010
- }
2011
-
2012
- .wpr-comment-reply-inline.wpr-comment-reply-align-left .wpr-comment-reply:before {
2013
- content: '\00a0|\00a0';
2014
- }
2015
-
2016
- .wpr-comment-reply a,
2017
- .wpr-comments-navigation a,
2018
- .wpr-comments-navigation span {
2019
- display: inline-block;
2020
- }
2021
-
2022
- .wpr-comments-navigation-center,
2023
- .wpr-comments-navigation-justify {
2024
- text-align: center;
2025
- }
2026
-
2027
- .wpr-comments-navigation-left {
2028
- text-align: left;
2029
- }
2030
-
2031
- .wpr-comments-navigation-right {
2032
- text-align: right;
2033
- }
2034
-
2035
- .wpr-comments-navigation-justify a.prev {
2036
- float: left;
2037
- }
2038
-
2039
- .wpr-comments-navigation-justify a.next {
2040
- float: right;
2041
- }
2042
-
2043
- .wpr-comment-form .comment-notes {
2044
- display: none;
2045
- }
2046
-
2047
- .wpr-comment-form-text,
2048
- .wpr-comment-form-text textarea,
2049
- .wpr-comment-form-author input,
2050
- .wpr-comment-form-email input,
2051
- .wpr-comment-form-url input {
2052
- display: block;
2053
- width: 100%;
2054
- }
2055
-
2056
- .wpr-comment-form {
2057
- display: -webkit-box;
2058
- display: -ms-flexbox;
2059
- display: flex;
2060
- -webkit-box-orient: vertical;
2061
- -webkit-box-direction: normal;
2062
- -ms-flex-direction: column;
2063
- flex-direction: column;
2064
- }
2065
-
2066
- .wpr-comment-form label {
2067
- margin-bottom: 10px;
2068
- }
2069
-
2070
- .wpr-comment-form-fields {
2071
- display: -webkit-box;
2072
- display: -ms-flexbox;
2073
- display: flex;
2074
- }
2075
-
2076
- .wpr-cf-no-url .wpr-comment-form-email {
2077
- margin-right: 0 !important;
2078
- }
2079
-
2080
- .wpr-cf-style-1 .wpr-comment-form-fields,
2081
- .wpr-cf-style-4 .wpr-comment-form-fields {
2082
- display: block;
2083
- }
2084
-
2085
- .wpr-comment-form .wpr-comment-form-fields>div {
2086
- width: 100%;
2087
- }
2088
-
2089
- .wpr-cf-style-2 .wpr-comment-form-fields,
2090
- .wpr-cf-style-5 .wpr-comment-form-fields,
2091
- .wpr-comment-form[class*="wpr-cf-pro"] .wpr-comment-form-fields {
2092
- display: block;
2093
- width: 60%;
2094
- }
2095
-
2096
- .wpr-cf-style-2 .wpr-comment-form-fields > div,
2097
- .wpr-cf-style-5 .wpr-comment-form-fields > div,
2098
- .wpr-comment-form[class*="wpr-cf-pro"] > div {
2099
- margin-right: 0 !important;
2100
- }
2101
-
2102
- .wpr-cf-style-4.wpr-comment-form .wpr-comment-form-fields,
2103
- .wpr-cf-style-5.wpr-comment-form .wpr-comment-form-fields,
2104
- .wpr-cf-style-6.wpr-comment-form .wpr-comment-form-fields,
2105
- .wpr-comment-form[class*="wpr-cf-pro"] .wpr-comment-form-fields {
2106
- -webkit-box-ordinal-group: 0;
2107
- -ms-flex-order: -1;
2108
- order: -1;
2109
- }
2110
-
2111
- .wpr-submit-comment {
2112
- cursor: pointer;
2113
- }
2114
-
2115
- .wpr-comments-list .comment-respond {
2116
- margin-bottom: 30px;
2117
- }
2118
-
2119
- /*--------------------------------------------------------------
2120
- == Grid
2121
- --------------------------------------------------------------*/
2122
-
2123
- .wpr-hide-items-before-append {
2124
- opacity: 0;
2125
- }
2126
-
2127
- .wpr-grid {
2128
- opacity: 0;
2129
- }
2130
-
2131
- .wpr-grid-item {
2132
- padding: 0 !important;
2133
- float: left;
2134
- position: relative;
2135
- text-align: center;
2136
- }
2137
-
2138
- .wpr-grid-item,
2139
- .wpr-grid-item * {
2140
- outline: none !important;
2141
- }
2142
-
2143
- .wpr-grid-last-row {
2144
- margin-bottom: 0 !important;
2145
- }
2146
-
2147
- .wpr-grid-item-above-content {
2148
- border-bottom: 0 !important;
2149
- border-bottom-left-radius: 0 !important;
2150
- border-bottom-right-radius: 0 !important;
2151
- }
2152
-
2153
- .wpr-grid:not([data-settings*="list"]) .wpr-grid-item-below-content {
2154
- border-top: 0 !important;
2155
- border-top-left-radius: 0 !important;
2156
- border-top-right-radius: 0 !important;
2157
- }
2158
-
2159
- .wpr-grid-item-inner,
2160
- .wpr-grid-media-wrap {
2161
- position: relative;
2162
- }
2163
-
2164
- .wpr-grid-image-wrap {
2165
- overflow: hidden;
2166
- }
2167
-
2168
- .wpr-grid-image-wrap img {
2169
- display: block;
2170
- width: 100%;
2171
- }
2172
-
2173
- .wpr-grid-media-hover {
2174
- position: absolute;
2175
- top: 0;
2176
- left: 0;
2177
- width: 100%;
2178
- height: 100%;
2179
- overflow: hidden;
2180
- }
2181
-
2182
- .wpr-grid-media-hover-top {
2183
- position: absolute;
2184
- top: 0;
2185
- left: 0;
2186
- width: 100%;
2187
- z-index: 2;
2188
- }
2189
-
2190
- .wpr-grid-media-hover-bottom {
2191
- position: absolute;
2192
- bottom: 0;
2193
- left: 0;
2194
- width: 100%;
2195
- z-index: 2;
2196
- }
2197
-
2198
- .wpr-grid-media-hover-middle {
2199
- position: relative;
2200
- z-index: 2;
2201
- }
2202
-
2203
- .wpr-grid .wpr-cv-container,
2204
- .wpr-magazine-grid .wpr-cv-container {
2205
- z-index: 1;
2206
- }
2207
-
2208
- .wpr-grid-item-display-block {
2209
- clear: both;
2210
- }
2211
-
2212
- .wpr-grid-item-display-inline.wpr-grid-item-align-left,
2213
- .wpr-grid-item-display-custom.wpr-grid-item-align-left {
2214
- float: left;
2215
- }
2216
-
2217
- .wpr-grid-item-display-inline.wpr-grid-item-align-right,
2218
- .wpr-grid-item-display-custom.wpr-grid-item-align-right {
2219
- float: right;
2220
- }
2221
-
2222
- .wpr-grid-item-display-inline.wpr-grid-item-align-center,
2223
- .wpr-grid-item-display-custom.wpr-grid-item-align-center {
2224
- float: none;
2225
- display: inline-block;
2226
- vertical-align: middle;
2227
- }
2228
-
2229
-
2230
- /*.wpr-grid-item-display-custom .inner-block { //tmp - maybe remove? need to check
2231
- text-align: center;
2232
- }*/
2233
-
2234
- .wpr-grid-item-title .inner-block a,
2235
- .wpr-grid-item-date .inner-block>span,
2236
- .wpr-grid-item-time .inner-block>span,
2237
- .wpr-grid-item-author .inner-block a,
2238
- .wpr-grid-item-comments .inner-block a,
2239
- .wpr-grid-item-read-more .inner-block a,
2240
- .wpr-grid-item-likes .inner-block a,
2241
- .wpr-grid-item-sharing .inner-block>span,
2242
- .wpr-grid-item-lightbox .inner-block>span,
2243
- .wpr-grid-product-categories .inner-block a,
2244
- .wpr-grid-product-tags .inner-block a,
2245
- .wpr-grid-tax-style-1 .inner-block a,
2246
- .wpr-grid-tax-style-2 .inner-block a,
2247
- .wpr-grid-cf-style-1 .inner-block>a,
2248
- .wpr-grid-cf-style-1 .inner-block>span,
2249
- .wpr-grid-cf-style-2 .inner-block>a,
2250
- .wpr-grid-cf-style-2 .inner-block>span,
2251
- .wpr-grid-sep-style-1 .inner-block>span,
2252
- .wpr-grid-sep-style-2 .inner-block>span,
2253
- .wpr-grid-item-status .inner-block>span,
2254
- .wpr-grid-item-price .inner-block>span,
2255
- .wpr-grid-item-add-to-cart .inner-block>a,
2256
- .wpr-grid-item-read-more .inner-block a {
2257
- display: inline-block;
2258
- }
2259
-
2260
- .wpr-grid-item-display-custom.wpr-grid-item-title .inner-block a,
2261
- .wpr-grid-item-display-custom.wpr-grid-item-date .inner-block>span,
2262
- .wpr-grid-item-display-custom.wpr-grid-item-time .inner-block>span,
2263
- .wpr-grid-item-display-custom.wpr-grid-item-comments .inner-block a,
2264
- .wpr-grid-item-display-custom.wpr-grid-item-read-more .inner-block a,
2265
- .wpr-grid-item-display-custom.wpr-grid-item-likes .inner-block a,
2266
- .wpr-grid-item-display-custom.wpr-grid-item-sharing .inner-block>span,
2267
- .wpr-grid-item-display-custom.wpr-grid-item-lightbox .inner-block>span,
2268
- .wpr-grid-item-display-custom.wpr-grid-cf-style-1 .inner-block>a,
2269
- .wpr-grid-item-display-custom.wpr-grid-cf-style-1 .inner-block>span,
2270
- .wpr-grid-item-display-custom.wpr-grid-cf-style-2 .inner-block>a,
2271
- .wpr-grid-item-display-custom.wpr-grid-cf-style-2 .inner-block>span,
2272
- .wpr-grid-item-display-custom.wpr-grid-sep-style-1 .inner-block>span,
2273
- .wpr-grid-item-display-custom.wpr-grid-sep-style-2 .inner-block>span,
2274
- .wpr-grid-item-display-custom.wpr-grid-item-product-status .inner-block>span,
2275
- .wpr-grid-item-display-custom.wpr-grid-item-product-price .inner-block>span,
2276
- .wpr-grid-item-display-custom.wpr-grid-item-add-to-cart .inner-block>a,
2277
- .wpr-grid-item-display-custom.wpr-grid-item-read-more .inner-block a {
2278
- width: 100%;
2279
- }
2280
-
2281
- .wpr-grid-item-content .inner-block,
2282
- .wpr-grid-item-excerpt .inner-block {
2283
- display: inline-block;
2284
- }
2285
-
2286
- .wpr-grid-item-excerpt .inner-block p {
2287
- margin: 0 !important;
2288
- }
2289
-
2290
-
2291
- /* Image Overlay */
2292
- .wpr-grid-media-hover-bg {
2293
- position: absolute;
2294
- }
2295
-
2296
- .wpr-grid-media-hover-bg img {
2297
- position: absolute;
2298
- top: 50%;
2299
- left: 50%;
2300
- -webkit-transform: translate( -50%, -50%) scale(1) !important;
2301
- -ms-transform: translate( -50%, -50%) scale(1) !important;
2302
- transform: translate( -50%, -50%) scale(1) !important;
2303
- -webkit-filter: grayscale(0) !important;
2304
- filter: grayscale(0) !important;
2305
- -webkit-filter: blur(0px) !important;
2306
- -filter: blur(0px) !important;
2307
- }
2308
-
2309
-
2310
- /* Author */
2311
-
2312
- .wpr-grid-item-author img,
2313
- .wpr-grid-item-author span {
2314
- display: inline-block;
2315
- vertical-align: middle;
2316
- }
2317
-
2318
- .wpr-grid-item-author img {
2319
- -webkit-transform: none !important;
2320
- -ms-transform: none !important;
2321
- transform: none !important;
2322
- -webkit-filter: none !important;
2323
- filter: none !important;
2324
- }
2325
-
2326
-
2327
- /* Likes */
2328
-
2329
- .wpr-grid-item-likes .inner-block a {
2330
- text-align: center;
2331
- }
2332
-
2333
- .wpr-likes-no-default.wpr-likes-zero i {
2334
- padding: 0 !important;
2335
- }
2336
-
2337
-
2338
- /* Sharing */
2339
-
2340
- .wpr-grid-item-sharing .inner-block a {
2341
- text-align: center;
2342
- }
2343
-
2344
- .wpr-grid-item-sharing .wpr-post-sharing {
2345
- position: relative;
2346
- }
2347
-
2348
- .wpr-grid-item-sharing .wpr-sharing-icon {
2349
- display: inline-block;
2350
- position: relative;
2351
- }
2352
-
2353
- .wpr-grid-item-sharing .wpr-sharing-icon .wpr-tooltip {
2354
- left: 50%;
2355
- -ms-transform: translate(-50%, -100%);
2356
- transform: translate(-50%, -100%);
2357
- -webkit-transform: translate(-50%, -100%);
2358
- }
2359
-
2360
- .wpr-grid-item-sharing .wpr-sharing-icon:hover .wpr-tooltip {
2361
- visibility: visible;
2362
- opacity: 1;
2363
- -ms-transform: translate(-50%, -120%);
2364
- transform: translate(-50%, -120%);
2365
- -webkit-transform: translate(-50%, -120%);
2366
- }
2367
-
2368
- .wpr-grid-item-sharing .wpr-tooltip:before {
2369
- left: 50%;
2370
- -ms-transform: translateX(-50%);
2371
- transform: translateX(-50%);
2372
- -webkit-transform: translateX(-50%);
2373
- }
2374
-
2375
- .wpr-grid-item-sharing .wpr-sharing-trigger {
2376
- cursor: pointer;
2377
- }
2378
-
2379
- .wpr-grid-item-sharing .wpr-tooltip {
2380
- display: block;
2381
- padding: 10px;
2382
- }
2383
-
2384
- .wpr-grid-item-sharing .wpr-sharing-hidden {
2385
- visibility: hidden;
2386
- position: absolute;
2387
- z-index: 3;
2388
- text-align: center;
2389
- }
2390
-
2391
- .wpr-grid-item-sharing .wpr-sharing-hidden a {
2392
- opacity: 0;
2393
- }
2394
-
2395
- .wpr-sharing-hidden a {
2396
- position: relative;
2397
- top: -5px;
2398
- -webkit-transition-duration: 0.3s !important;
2399
- -o-transition-duration: 0.3s !important;
2400
- transition-duration: 0.3s !important;
2401
- -webkit-transition-timing-function: cubic-bezier(.445, .050, .55, .95);
2402
- -o-transition-timing-function: cubic-bezier(.445, .050, .55, .95);
2403
- transition-timing-function: cubic-bezier(.445, .050, .55, .95);
2404
- -webkit-transition-delay: 0s;
2405
- -o-transition-delay: 0s;
2406
- transition-delay: 0s;
2407
- }
2408
-
2409
- .wpr-sharing-hidden a+a {
2410
- -webkit-transition-delay: 0.1s;
2411
- -o-transition-delay: 0.1s;
2412
- transition-delay: 0.1s;
2413
- }
2414
-
2415
- .wpr-sharing-hidden a+a+a {
2416
- -webkit-transition-delay: 0.2s;
2417
- -o-transition-delay: 0.2s;
2418
- transition-delay: 0.2s;
2419
- }
2420
-
2421
- .wpr-sharing-hidden a+a+a+a {
2422
- -webkit-transition-delay: 0.3s;
2423
- -o-transition-delay: 0.3s;
2424
- transition-delay: 0.3s;
2425
- }
2426
-
2427
- .wpr-sharing-hidden a+a+a+a+a {
2428
- -webkit-transition-delay: 0.4s;
2429
- -o-transition-delay: 0.4s;
2430
- transition-delay: 0.4s;
2431
- }
2432
-
2433
- .wpr-grid-item-sharing a:last-of-type {
2434
- margin-right: 0 !important;
2435
- }
2436
-
2437
- .wpr-grid-item-sharing .inner-block a {
2438
- -webkit-transition-property: color, background-color, border;
2439
- -o-transition-property: color, background-color, border;
2440
- transition-property: color, background-color, border;
2441
- -webkit-transition-timing-function: linear;
2442
- -o-transition-timing-function: linear;
2443
- transition-timing-function: linear;
2444
- }
2445
-
2446
-
2447
- /* Read More */
2448
-
2449
- .wpr-grid-item-read-more .inner-block>a,
2450
- .wpr-grid-item-add-to-cart .inner-block>a {
2451
- position: relative;
2452
- overflow: hidden;
2453
- vertical-align: middle;
2454
- }
2455
-
2456
- .wpr-grid-item-read-more .inner-block>a i,
2457
- .wpr-grid-item-read-more .inner-block>a span,
2458
- .wpr-grid-item-add-to-cart .inner-block>a i,
2459
- .wpr-grid-item-add-to-cart .inner-block>a span {
2460
- position: relative;
2461
- z-index: 2;
2462
- opacity: 1;
2463
- }
2464
-
2465
- .wpr-grid-item-read-more .inner-block>a:before,
2466
- .wpr-grid-item-read-more .inner-block>a:after,
2467
- .wpr-grid-item-add-to-cart .inner-block>a:before,
2468
- .wpr-grid-item-add-to-cart .inner-block>a:after {
2469
- z-index: 1;
2470
- }
2471
-
2472
-
2473
- /* Lightbox */
2474
-
2475
- .wpr-grid-item-lightbox .inner-block>span,
2476
- .wpr-grid-lightbox-overlay {
2477
- cursor: pointer;
2478
- }
2479
-
2480
- .wpr-grid-lightbox-overlay {
2481
- position: absolute;
2482
- top: 0;
2483
- left: 0;
2484
- z-index: 10;
2485
- width: 100%;
2486
- height: 100%;
2487
- }
2488
-
2489
- .admin-bar .lg-toolbar {
2490
- top: 32px;
2491
- }
2492
-
2493
-
2494
- /* Separator */
2495
-
2496
- .wpr-grid-item-separator .inner-block {
2497
- font-size: 0;
2498
- line-height: 0;
2499
- }
2500
-
2501
- .wpr-grid-item-separator.wpr-grid-item-display-inline span {
2502
- width: 100% !important;
2503
- }
2504
-
2505
-
2506
- /* Product Rating */
2507
-
2508
- .wpr-woo-rating i {
2509
- display: inline;
2510
- position: relative;
2511
- font-family: "eicons";
2512
- font-style: normal;
2513
- line-height: 1;
2514
- overflow: hidden;
2515
- }
2516
-
2517
- .wpr-woo-rating i:before {
2518
- content: '\e934';
2519
- font-weight: 900;
2520
- display: block;
2521
- position: absolute;
2522
- top: 0;
2523
- left: 0;
2524
- font-size: inherit;
2525
- font-family: inherit;
2526
- overflow: hidden;
2527
- }
2528
-
2529
- .wpr-woo-rating-style-2 .wpr-woo-rating i:before {
2530
- content: '\002605';
2531
- }
2532
-
2533
- .wpr-woo-rating i:last-of-type {
2534
- margin-right: 0 !important;
2535
- }
2536
-
2537
- .wpr-rating-icon-empty:before {
2538
- display: none !important;
2539
- }
2540
-
2541
- .wpr-rating-icon-0:before {
2542
- width: 0;
2543
- }
2544
-
2545
- .wpr-rating-icon-1:before {
2546
- width: 10%;
2547
- }
2548
-
2549
- .wpr-rating-icon-2:before {
2550
- width: 20%;
2551
- }
2552
-
2553
- .wpr-rating-icon-3:before {
2554
- width: 30%;
2555
- }
2556
-
2557
- .wpr-rating-icon-4:before {
2558
- width: 40%;
2559
- }
2560
-
2561
- .wpr-rating-icon-5:before {
2562
- width: 50%;
2563
- }
2564
-
2565
- .wpr-rating-icon-6:before {
2566
- width: 60%;
2567
- }
2568
-
2569
- .wpr-rating-icon-7:before {
2570
- width: 70%;
2571
- }
2572
-
2573
- .wpr-rating-icon-8:before {
2574
- width: 80%;
2575
- }
2576
-
2577
- .wpr-rating-icon-9:before {
2578
- width: 90%;
2579
- }
2580
-
2581
- .wpr-rating-icon-full:before {
2582
- width: 100%;
2583
- }
2584
-
2585
-
2586
- /* Filters */
2587
-
2588
- .wpr-grid-filters li {
2589
- display: inline-block;
2590
- }
2591
-
2592
- .wpr-grid-filters li:last-of-type {
2593
- margin-right: 0 !important;
2594
- }
2595
-
2596
- .wpr-grid-filters li span {
2597
- display: inline-block;
2598
- cursor: pointer;
2599
- text-decoration: inherit;
2600
- }
2601
-
2602
- .wpr-grid-filters li a {
2603
- display: inline-block;
2604
- }
2605
-
2606
- .wpr-grid-filters li sup {
2607
- position: relative;
2608
- padding-left: 5px;
2609
- line-height: 1;
2610
- }
2611
-
2612
- .wpr-grid-filters li sup[data-brackets="yes"]:before {
2613
- content: '\0028';
2614
- }
2615
-
2616
- .wpr-grid-filters li sup[data-brackets="yes"]:after {
2617
- content: '\0029';
2618
- }
2619
-
2620
- .wpr-grid-filters .wpr-active-filter.wpr-pointer-item:before,
2621
- .wpr-grid-filters .wpr-active-filter.wpr-pointer-item:after {
2622
- opacity: 1 !important;
2623
- width: 100% !important;
2624
- }
2625
-
2626
- .wpr-grid-filters-sep {
2627
- font-style: normal;
2628
- }
2629
-
2630
- .wpr-grid-filters-sep-right li:last-of-type .wpr-grid-filters-sep,
2631
- .wpr-grid-filters-sep-left li:first-child .wpr-grid-filters-sep {
2632
- display: none;
2633
- }
2634
-
2635
- .wpr-sub-filters {
2636
- display: none;
2637
- padding: 0;
2638
- }
2639
-
2640
-
2641
- /* Sorting */
2642
-
2643
- .wpr-grid-sorting {
2644
- display: -webkit-box;
2645
- display: -ms-flexbox;
2646
- display: flex;
2647
- -webkit-box-align: center;
2648
- -ms-flex-align: center;
2649
- align-items: center;
2650
- -ms-flex-wrap: wrap;
2651
- flex-wrap: wrap;
2652
- }
2653
-
2654
- .wpr-grid-sorting>div,
2655
- .wpr-grid-sorting .woocommerce-ordering {
2656
- -webkit-box-flex: 1;
2657
- -ms-flex-positive: 1;
2658
- flex-grow: 1;
2659
- }
2660
-
2661
- .wpr-grid-sorting .woocommerce-ordering {
2662
- text-align: right;
2663
- }
2664
-
2665
- .wpr-grid-sorting .woocommerce-ordering select {
2666
- width: auto;
2667
- outline: none !important;
2668
- }
2669
-
2670
- .wpr-grid-sorting .wpr-shop-page-title,
2671
- .wpr-grid-sorting .woocommerce-result-count,
2672
- .wpr-grid-sorting .woocommerce-ordering {
2673
- margin: 0 !important;
2674
- }
2675
-
2676
- /* Not Clickable */
2677
- .wpr-atc-not-clickable {
2678
- opacity: 0.5;
2679
- pointer-events: none;
2680
- }
2681
-
2682
- /* Added To Cart Popup */
2683
- @-webkit-keyframes added-tc-popup-animation {
2684
- from {opacity: 0; -webkit-transform: translateY(-50%); transform: translateY(-50%)}
2685
- to {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2686
- }
2687
- @keyframes added-tc-popup-animation {
2688
- from {opacity: 0; -webkit-transform: translateY(-50%); transform: translateY(-50%)}
2689
- to {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2690
- }
2691
-
2692
- @-webkit-keyframes added-tc-popup-animation-hide {
2693
- from {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2694
- to {opacity: 0; -webkit-transform: translateY(-50%); transform: translateY(-50%)}
2695
- }
2696
-
2697
- @keyframes added-tc-popup-animation-hide {
2698
- from {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2699
- to {opacity: 0; -webkit-transform: translateY(-50%); transform: translateY(-50%)}
2700
- }
2701
-
2702
- @-webkit-keyframes added-tc-popup-animation-bottom {
2703
- from {opacity: 0; -webkit-transform: translateY(50%); transform: translateY(50%)}
2704
- to {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2705
- }
2706
-
2707
- @keyframes added-tc-popup-animation-bottom {
2708
- from {opacity: 0; -webkit-transform: translateY(50%); transform: translateY(50%)}
2709
- to {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2710
- }
2711
-
2712
- @-webkit-keyframes added-tc-popup-animation-hide-bottom {
2713
- from {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2714
- to {opacity: 0; -webkit-transform: translateY(50%); transform: translateY(50%)}
2715
- }
2716
-
2717
- @keyframes added-tc-popup-animation-hide-bottom {
2718
- from {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2719
- to {opacity: 0; -webkit-transform: translateY(50%); transform: translateY(50%)}
2720
- }
2721
-
2722
- @keyframes added-tc-popup-animation-hide-bottom {
2723
- from {opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
2724
- to {opacity: 0; -webkit-transform: translateY(50%); transform: translateY(50%)}
2725
- }
2726
-
2727
- @-webkit-keyframes added-tc-popup-animation-slide-in-left {
2728
- from {opacity: 0; -webkit-transform: translateX(100%); transform: translateX(100%)}
2729
- to {opacity: 1; -webkit-transform: translateX(0); transform: translateX(0)}
2730
- }
2731
-
2732
- @keyframes added-tc-popup-animation-slide-in-left {
2733
- from {opacity: 0; -webkit-transform: translateX(100%); transform: translateX(100%)}
2734
- to {opacity: 1; -webkit-transform: translateX(0); transform: translateX(0)}
2735
- }
2736
-
2737
- @-webkit-keyframes added-tc-popup-animation-slide-out-left {
2738
- from {opacity: 1; -webkit-transform: translateX(0); transform: translateX(0)}
2739
- to {opacity: 0; -webkit-transform: translateX(100%); transform: translateX(100%)}
2740
- }
2741
-
2742
- @keyframes added-tc-popup-animation-slide-out-left {
2743
- from {opacity: 1; -webkit-transform: translateX(0); transform: translateX(0)}
2744
- to {opacity: 0; -webkit-transform: translateX(100%); transform: translateX(100%)}
2745
- }
2746
-
2747
- @-webkit-keyframes added-tc-popup-animation-scale-up {
2748
- from {opacity: 0; -webkit-transform: scale(0); transform: scale(0)}
2749
- to {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
2750
- }
2751
-
2752
- @keyframes added-tc-popup-animation-scale-up {
2753
- from {opacity: 0; -webkit-transform: scale(0); transform: scale(0)}
2754
- to {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
2755
- }
2756
-
2757
- @-webkit-keyframes added-tc-popup-animation-scale-down {
2758
- from {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
2759
- to {opacity: 0; -webkit-transform: scale(0); transform: scale(0)}
2760
- }
2761
-
2762
- @keyframes added-tc-popup-animation-scale-down {
2763
- from {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
2764
- to {opacity: 0; -webkit-transform: scale(0); transform: scale(0)}
2765
- }
2766
-
2767
- @-webkit-keyframes added-tc-popup-animation-fade {
2768
- from {opacity: 0;}
2769
- to {opacity: 1;}
2770
- }
2771
-
2772
- @keyframes added-tc-popup-animation-fade {
2773
- from {opacity: 0;}
2774
- to {opacity: 1;}
2775
- }
2776
-
2777
- @-webkit-keyframes added-tc-popup-animation-fade-out {
2778
- from {opacity: 1;}
2779
- to {opacity: 0;}
2780
- }
2781
-
2782
- @keyframes added-tc-popup-animation-fade-out {
2783
- from {opacity: 1;}
2784
- to {opacity: 0;}
2785
- }
2786
-
2787
- @-webkit-keyframes added-tc-popup-animation-skew {
2788
- from {opacity: 0; -webkit-transform: perspective(600px) rotateX(-90deg); transform: perspective(600px) rotateX(-90deg)}
2789
- to {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2790
- }
2791
-
2792
- @keyframes added-tc-popup-animation-skew {
2793
- from {opacity: 0; -webkit-transform: perspective(600px) rotateX(-90deg); transform: perspective(600px) rotateX(-90deg)}
2794
- to {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2795
- }
2796
-
2797
- @-webkit-keyframes added-tc-popup-animation-skew-off {
2798
- from {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2799
- to {opacity: 0; -webkit-transform: perspective(600px) rotateX(-90deg); transform: perspective(600px) rotateX(-90deg)}
2800
- }
2801
-
2802
- @keyframes added-tc-popup-animation-skew-off {
2803
- from {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2804
- to {opacity: 0; -webkit-transform: perspective(600px) rotateX(-90deg); transform: perspective(600px) rotateX(-90deg)}
2805
- }
2806
-
2807
- @-webkit-keyframes added-tc-popup-animation-skew-bottom {
2808
- from {opacity: 0; -webkit-transform: perspective(600px) rotateX(90deg); transform: perspective(600px) rotateX(90deg)}
2809
- to {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2810
- }
2811
-
2812
- @keyframes added-tc-popup-animation-skew-bottom {
2813
- from {opacity: 0; -webkit-transform: perspective(600px) rotateX(90deg); transform: perspective(600px) rotateX(90deg)}
2814
- to {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2815
- }
2816
-
2817
- @-webkit-keyframes added-tc-popup-animation-skew-off-bottom {
2818
- from {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2819
- to {opacity: 0; -webkit-transform: perspective(600px) rotateX(90deg); transform: perspective(600px) rotateX(90deg)}
2820
- }
2821
-
2822
- @keyframes added-tc-popup-animation-skew-off-bottom {
2823
- from {opacity: 1; -webkit-transform: perspective(600px) rotateX(0deg); transform: perspective(600px) rotateX(0deg)}
2824
- to {opacity: 0; -webkit-transform: perspective(600px) rotateX(90deg); transform: perspective(600px) rotateX(90deg)}
2825
- }
2826
-
2827
- .wpr-added-to-cart-popup {
2828
- position: fixed;
2829
- display: -webkit-box;
2830
- display: -ms-flexbox;
2831
- display: flex;
2832
- opacity: 0;
2833
- z-index: 99999;
2834
- }
2835
-
2836
- .wpr-added-to-cart-popup.wpr-added-to-cart-slide-in-left {
2837
- -webkit-animation-name: added-tc-popup-animation-slide-in-left !important;
2838
- animation-name: added-tc-popup-animation-slide-in-left !important;
2839
- -webkit-animation-duration: 1s;
2840
- animation-duration: 1s;
2841
- -webkit-animation-fill-mode: forwards;
2842
- animation-fill-mode: forwards;
2843
- }
2844
-
2845
- .wpr-added-to-cart-popup.wpr-added-to-cart-slide-out-left {
2846
- -webkit-animation-name: added-tc-popup-animation-slide-out-left !important;
2847
- animation-name: added-tc-popup-animation-slide-out-left !important;
2848
- -webkit-animation-duration: 1s;
2849
- animation-duration: 1s;
2850
- -webkit-animation-fill-mode: forwards;
2851
- animation-fill-mode: forwards;
2852
- }
2853
-
2854
- .wpr-added-to-cart-popup.wpr-added-to-cart-scale-up {
2855
- -webkit-animation-name: added-tc-popup-animation-scale-up !important;
2856
- animation-name: added-tc-popup-animation-scale-up !important;
2857
- -webkit-animation-duration: 1s;
2858
- animation-duration: 1s;
2859
- -webkit-animation-fill-mode: forwards;
2860
- animation-fill-mode: forwards;
2861
- }
2862
-
2863
- .wpr-added-to-cart-popup.wpr-added-to-cart-scale-down {
2864
- -webkit-animation-name: added-tc-popup-animation-scale-down !important;
2865
- animation-name: added-tc-popup-animation-scale-down !important;
2866
- -webkit-animation-duration: 1s;
2867
- animation-duration: 1s;
2868
- -webkit-animation-fill-mode: forwards;
2869
- animation-fill-mode: forwards;
2870
- }
2871
-
2872
- .wpr-added-to-cart-popup.wpr-added-to-cart-fade {
2873
- -webkit-animation-name: added-tc-popup-animation-fade !important;
2874
- animation-name: added-tc-popup-animation-fade !important;
2875
- -webkit-animation-duration: 1s;
2876
- animation-duration: 1s;
2877
- -webkit-animation-fill-mode: forwards;
2878
- animation-fill-mode: forwards;
2879
- }
2880
-
2881
- .wpr-added-to-cart-popup.wpr-added-to-cart-fade-out {
2882
- -webkit-animation-name: added-tc-popup-animation-fade-out !important;
2883
- animation-name: added-tc-popup-animation-fade-out !important;
2884
- -webkit-animation-duration: 1s;
2885
- animation-duration: 1s;
2886
- -webkit-animation-fill-mode: forwards;
2887
- animation-fill-mode: forwards;
2888
- }
2889
-
2890
- .wpr-atc-popup-top .wpr-added-to-cart-popup.wpr-added-to-cart-skew {
2891
- -webkit-transform-origin: center top 0;
2892
- -ms-transform-origin: center top 0;
2893
- transform-origin: center top 0;
2894
- -webkit-animation-name: added-tc-popup-animation-skew !important;
2895
- animation-name: added-tc-popup-animation-skew !important;
2896
- -webkit-animation-duration: 1s;
2897
- animation-duration: 1s;
2898
- -webkit-animation-fill-mode: forwards;
2899
- animation-fill-mode: forwards;
2900
- }
2901
-
2902
- .wpr-atc-popup-top .wpr-added-to-cart-popup.wpr-added-to-cart-skew-off {
2903
- -webkit-transform-origin: center top 0;
2904
- -ms-transform-origin: center top 0;
2905
- transform-origin: center top 0;
2906
- -webkit-animation-name: added-tc-popup-animation-skew-off !important;
2907
- animation-name: added-tc-popup-animation-skew-off !important;
2908
- -webkit-animation-duration: 1s;
2909
- animation-duration: 1s;
2910
- -webkit-animation-fill-mode: forwards;
2911
- animation-fill-mode: forwards;
2912
- }
2913
-
2914
- .wpr-atc-popup-bottom .wpr-added-to-cart-popup.wpr-added-to-cart-skew {
2915
- -webkit-transform-origin: center bottom 0;
2916
- -ms-transform-origin: center bottom 0;
2917
- transform-origin: center bottom 0;
2918
- -webkit-animation-name: added-tc-popup-animation-skew-bottom !important;
2919
- animation-name: added-tc-popup-animation-skew-bottom !important;
2920
- -webkit-animation-duration: 1s;
2921
- animation-duration: 1s;
2922
- -webkit-animation-fill-mode: forwards;
2923
- animation-fill-mode: forwards;
2924
- }
2925
-
2926
- .wpr-atc-popup-bottom .wpr-added-to-cart-popup.wpr-added-to-cart-skew-off {
2927
- -webkit-transform-origin: center bottom 0;
2928
- -ms-transform-origin: center bottom 0;
2929
- transform-origin: center bottom 0;
2930
- -webkit-animation-name: added-tc-popup-animation-skew-off-bottom !important;
2931
- animation-name: added-tc-popup-animation-skew-off-bottom !important;
2932
- -webkit-animation-duration: 1s;
2933
- animation-duration: 1s;
2934
- -webkit-animation-fill-mode: forwards;
2935
- animation-fill-mode: forwards;
2936
- }
2937
-
2938
- .wpr-atc-popup-top .wpr-added-to-cart-popup {
2939
- -webkit-animation-name: added-tc-popup-animation;
2940
- animation-name: added-tc-popup-animation;
2941
- -webkit-animation-duration: 1s;
2942
- animation-duration: 1s;
2943
- -webkit-animation-fill-mode: forwards;
2944
- animation-fill-mode: forwards;
2945
- }
2946
-
2947
- .wpr-atc-popup-top .wpr-added-to-cart-popup-hide {
2948
- -webkit-animation-name: added-tc-popup-animation-hide;
2949
- animation-name: added-tc-popup-animation-hide;
2950
- -webkit-animation-duration: 1s;
2951
- animation-duration: 1s;
2952
- -webkit-animation-fill-mode: forwards;
2953
- animation-fill-mode: forwards;
2954
- }
2955
-
2956
- .wpr-atc-popup-bottom .wpr-added-to-cart-popup {
2957
- -webkit-animation-name: added-tc-popup-animation-bottom;
2958
- animation-name: added-tc-popup-animation-bottom;
2959
- -webkit-animation-duration: 1s;
2960
- animation-duration: 1s;
2961
- -webkit-animation-fill-mode: forwards;
2962
- animation-fill-mode: forwards;
2963
- }
2964
-
2965
- .wpr-atc-popup-bottom .wpr-added-to-cart-popup-hide {
2966
- -webkit-animation-name: added-tc-popup-animation-hide-bottom;
2967
- animation-name: added-tc-popup-animation-hide-bottom;
2968
- -webkit-animation-duration: 1s;
2969
- animation-duration: 1s;
2970
- -webkit-animation-fill-mode: forwards;
2971
- animation-fill-mode: forwards;
2972
- }
2973
-
2974
- .wpr-atc-popup-top .wpr-added-to-cart-popup {
2975
- top: 0;
2976
- right: 0;
2977
- }
2978
-
2979
- .wpr-atc-popup-bottom .wpr-added-to-cart-popup {
2980
- bottom: 0;
2981
- right: 0;
2982
- }
2983
-
2984
- .wpr-added-tc-title {
2985
- -webkit-box-flex: 1;
2986
- -ms-flex: 1;
2987
- flex: 1;
2988
- }
2989
-
2990
- .wpr-added-tc-title a {
2991
- display: inline;
2992
- }
2993
-
2994
- .wpr-added-tc-title p {
2995
- margin: 0;
2996
- }
2997
-
2998
- .wpr-added-tc-popup-img img {
2999
- width: 100%;
3000
- height: auto;
3001
- }
3002
-
3003
- .wpr-grid .added_to_cart {
3004
- opacity: 0;
3005
- }
3006
-
3007
- /* Pagination */
3008
-
3009
- .wpr-grid-pagination {
3010
- margin-top: 30px;
3011
- }
3012
-
3013
- .wpr-grid-pagination>a,
3014
- .wpr-grid-pagination>span {
3015
- display: inline-block;
3016
- }
3017
-
3018
- .wpr-grid-pagination i,
3019
- .wpr-grid-pagination svg {
3020
- vertical-align: middle;
3021
- }
3022
-
3023
- .wpr-grid-pagination .wpr-disabled-arrow {
3024
- cursor: not-allowed;
3025
- opacity: 0.4;
3026
- }
3027
-
3028
- .wpr-pagination-loading,
3029
- .wpr-pagination-finish {
3030
- display: none;
3031
- }
3032
-
3033
- .wpr-grid-pagination-center .wpr-grid-pagination,
3034
- .wpr-grid-pagination-justify .wpr-grid-pagination {
3035
- text-align: center;
3036
- }
3037
-
3038
- .wpr-grid-pagination-center .wpr-grid-pagination {
3039
- display: -webkit-box;
3040
- display: -ms-flexbox;
3041
- display: flex;
3042
- -webkit-box-pack: center;
3043
- -ms-flex-pack: center;
3044
- justify-content: center;
3045
- }
3046
-
3047
- .wpr-grid-pagination-left .wpr-grid-pagination {
3048
- text-align: left;
3049
- display: -webkit-box;
3050
- display: -ms-flexbox;
3051
- display: flex;
3052
- -webkit-box-pack: start;
3053
- -ms-flex-pack: start;
3054
- justify-content: flex-start;
3055
- }
3056
-
3057
- .wpr-grid-pagination-right .wpr-grid-pagination {
3058
- text-align: right;
3059
- display: -webkit-box;
3060
- display: -ms-flexbox;
3061
- display: flex;
3062
- -webkit-box-pack: end;
3063
- -ms-flex-pack: end;
3064
- justify-content: flex-end;
3065
- }
3066
-
3067
- .wpr-grid-pagination-infinite-scroll {
3068
- text-align: center;
3069
- }
3070
-
3071
- .wpr-grid-pagination-justify .wpr-grid-pagi-left-arrows,
3072
- .wpr-grid-pagination-justify .wpr-grid-pagination-default .wpr-prev-post-link {
3073
- float: left;
3074
- }
3075
-
3076
- .wpr-grid-pagination-justify .wpr-grid-pagi-right-arrows,
3077
- .wpr-grid-pagination-justify .wpr-grid-pagination-default .wpr-next-post-link {
3078
- float: right;
3079
- }
3080
-
3081
- .wpr-grid-pagi-left-arrows,
3082
- .wpr-grid-pagi-right-arrows,
3083
- .wpr-grid-pagination .wpr-load-more-btn {
3084
- display: inline-block;
3085
- }
3086
-
3087
- .wpr-load-more-btn,
3088
- .wpr-grid-pagi-right-arrows a:last-child,
3089
- .wpr-grid-pagi-right-arrows span:last-child {
3090
- margin-right: 0 !important;
3091
- }
3092
-
3093
- .wpr-grid-pagination .wpr-first-page,
3094
- .wpr-grid-pagination .wpr-last-page,
3095
- .wpr-grid-pagination .wpr-prev-page,
3096
- .wpr-grid-pagination .wpr-prev-post-link,
3097
- .wpr-grid-pagination .wpr-next-page,
3098
- .wpr-grid-pagination .wpr-next-post-link {
3099
- display: -webkit-inline-box;
3100
- display: -ms-inline-flexbox;
3101
- display: inline-flex;
3102
- -webkit-box-pack: center;
3103
- -ms-flex-pack: center;
3104
- justify-content: center;
3105
- -webkit-box-align: center;
3106
- -ms-flex-align: center;
3107
- align-items: center;
3108
- height: 100%;
3109
- }
3110
-
3111
- @media screen and ( max-width: 767px) {
3112
- .wpr-grid-pagination a,
3113
- .wpr-grid-pagination span {
3114
- margin-bottom: 10px;
3115
- }
3116
- .wpr-grid-pagination span>span,
3117
- .wpr-grid-pagination a>span {
3118
- display: none;
3119
- }
3120
- .wpr-grid-pagination.wpr-grid-pagination-numbered span i,
3121
- .wpr-grid-pagination.wpr-grid-pagination-numbered a i {
3122
- padding: 0 !important;
3123
- }
3124
- }
3125
-
3126
- .elementor-editor-active .wpr-grid-pagination-infinite-scroll {
3127
- display: none;
3128
- }
3129
-
3130
-
3131
- /* Grid Slider Navigation */
3132
- .wpr-grid-slider-nav-position-default .wpr-grid-slider-arrow-container {
3133
- position: absolute;
3134
- display: -webkit-box;
3135
- display: -ms-flexbox;
3136
- display: flex;
3137
- }
3138
-
3139
- .wpr-grid-slider-nav-position-default .wpr-grid-slider-arrow {
3140
- position: static;
3141
- }
3142
-
3143
- .wpr-grid-slider-nav-position-default .wpr-grid-slider-prev-arrow {
3144
- -ms-transform: none;
3145
- transform: none;
3146
- -webkit-transform: none;
3147
- }
3148
-
3149
- .wpr-grid-slider-nav-position-default .wpr-grid-slider-next-arrow {
3150
- -ms-transform: translateY(0) rotate(180deg);
3151
- transform: translateY(0) rotate(180deg);
3152
- -webkit-transform: translateY(0) rotate(180deg);
3153
- }
3154
-
3155
- .wpr-grid-slider-nav-align-top-center .wpr-grid-slider-arrow-container,
3156
- .wpr-grid-slider-nav-align-bottom-center .wpr-grid-slider-arrow-container {
3157
- left: 50%;
3158
- -webkit-transform: translateX(-50%);
3159
- -ms-transform: translateX(-50%);
3160
- transform: translateX(-50%);
3161
- }
3162
-
3163
- .wpr-grid-slider-arrow {
3164
- position: absolute;
3165
- z-index: 120;
3166
- top: 50%;
3167
- -webkit-box-sizing: content-box;
3168
- box-sizing: content-box;
3169
- -webkit-box-align: center;
3170
- -ms-flex-align: center;
3171
- align-items: center;
3172
- -webkit-box-pack: center;
3173
- -ms-flex-pack: center;
3174
- justify-content: center;
3175
- -webkit-transition: all .5s;
3176
- -o-transition: all .5s;
3177
- transition: all .5s;
3178
- text-align: center;
3179
- cursor: pointer;
3180
- }
3181
-
3182
- .wpr-grid-slider-arrow i {
3183
- display: block;
3184
- width: 100%;
3185
- height: 100%;
3186
- }
3187
-
3188
- .wpr-grid-slider-prev-arrow {
3189
- left: 1%;
3190
- -webkit-transform: translateY(-50%);
3191
- -ms-transform: translateY(-50%);
3192
- transform: translateY(-50%);
3193
- }
3194
-
3195
- .wpr-grid-slider-next-arrow {
3196
- right: 1%;
3197
- -webkit-transform: translateY(-50%) rotate(180deg);
3198
- -ms-transform: translateY(-50%) rotate(180deg);
3199
- transform: translateY(-50%) rotate(180deg);
3200
- }
3201
-
3202
- .wpr-grid-slider-nav-fade .wpr-grid-slider-arrow-container {
3203
- opacity: 0;
3204
- visibility: hidden;
3205
- }
3206
-
3207
- .wpr-grid-slider-nav-fade:hover .wpr-grid-slider-arrow-container {
3208
- opacity: 1;
3209
- visibility: visible;
3210
- }
3211
-
3212
-
3213
- /* Grid Slider Pagination */
3214
- .wpr-grid-slider-dots {
3215
- display: inline-table;
3216
- position: absolute;
3217
- z-index: 110;
3218
- left: 50%;
3219
- -webkit-transform: translate(-50%, -50%);
3220
- -ms-transform: translate(-50%, -50%);
3221
- transform: translate(-50%, -50%);
3222
- }
3223
-
3224
- .wpr-grid-slider-dots ul {
3225
- list-style: none;
3226
- margin: 0;
3227
- padding: 0;
3228
- }
3229
-
3230
- .wpr-grid-slider-dots-horizontal .wpr-grid-slider-dots li,
3231
- .wpr-grid-slider-dots-pro-vr .slick-dots li {
3232
- float: left;
3233
- }
3234
-
3235
- .wpr-grid.slick-dotted.slick-slider {
3236
- margin-bottom: 0 !important;
3237
- }
3238
-
3239
- .wpr-grid-slider-dots-vertical .slick-dots li {
3240
- display: block;
3241
- width: auto !important;
3242
- height: auto !important;
3243
- margin: 0 !important;
3244
- }
3245
-
3246
- .wpr-grid-slider-dots-horizontal .slick-dots li,
3247
- .wpr-grid-slider-dots-pro-vr .slick-dots li {
3248
- width: auto !important;
3249
- padding-top: 10px;
3250
- margin: 0 !important;
3251
- }
3252
-
3253
- .wpr-grid-slider-dots-horizontal .slick-dots li:last-child span {
3254
- margin-right: 0 !important;
3255
- }
3256
-
3257
- .wpr-grid-slider-dot {
3258
- display: block;
3259
- cursor: pointer;
3260
- }
3261
-
3262
- .wpr-grid-slider-dots li:last-child .wpr-grid-slider-dot {
3263
- margin: 0 !important;
3264
- }
3265
-
3266
-
3267
- /* Password Protected Form */
3268
- .wpr-grid-item-protected {
3269
- position: absolute;
3270
- top: 0;
3271
- left: 0;
3272
- z-index: 11 !important;
3273
- width: 100%;
3274
- height: 100%;
3275
- }
3276
-
3277
- .wpr-grid-item-protected i {
3278
- font-size: 22px;
3279
- }
3280
-
3281
- .wpr-grid-item-protected input {
3282
- width: 50%;
3283
- border: none;
3284
- margin-top: 10px;
3285
- padding: 7px 13px;
3286
- font-size: 13px;
3287
- }
3288
-
3289
- /* Locate It Later */
3290
- .wpr-grid-sorting-inner-wrap {
3291
- display: -webkit-box;
3292
- display: -ms-flexbox;
3293
- display: flex;
3294
- -webkit-box-align: center;
3295
- -ms-flex-align: center;
3296
- align-items: center;
3297
- -webkit-box-pack: justify;
3298
- -ms-flex-pack: justify;
3299
- justify-content: space-between;
3300
- }
3301
-
3302
- .wpr-products-result-count .woocommerce-result-count {
3303
- margin: 0;
3304
- }
3305
-
3306
- .wpr-sort-select-position-above .wpr-grid-sort-heading {
3307
- display: -webkit-box;
3308
- display: -ms-flexbox;
3309
- display: flex;
3310
- -webkit-box-pack: justify;
3311
- -ms-flex-pack: justify;
3312
- justify-content: space-between;
3313
- }
3314
-
3315
- .wpr-grid-sort-heading {
3316
- /* flex: 1; */
3317
- width: 100%;
3318
- /* flex-basis: 100%; */
3319
- }
3320
-
3321
- .wpr-grid-sort-heading * {
3322
- margin: 0;
3323
- }
3324
-
3325
- .wpr-grid-sorting-inner-wrap form .orderby::-ms-expend {
3326
- display: none;
3327
- }
3328
-
3329
- .wpr-grid-orderby span {
3330
- position: relative;
3331
- display: block;
3332
- }
3333
-
3334
- .wpr-grid-sorting-wrap form .orderby {
3335
- /* for Firefox */
3336
- -moz-appearance: none;
3337
- /* for Chrome */
3338
- -webkit-appearance: none;
3339
- }
3340
-
3341
- .wpr-grid-sorting-wrap .wpr-orderby-icon {
3342
- position: absolute;
3343
- top: 50%;
3344
- -webkit-transform: translateY(-50%);
3345
- -ms-transform: translateY(-50%);
3346
- transform: translateY(-50%);
3347
- font-family: "Font Awesome 5 Free";
3348
- font-weight: 600 !important;
3349
- }
3350
-
3351
- /* Defaults */
3352
- .elementor-widget-wpr-grid .wpr-grid-media-hover-bg,
3353
- .elementor-widget-wpr-media-grid .wpr-grid-media-hover-bg,
3354
- .elementor-widget-wpr-woo-grid .wpr-grid-media-hover-bg {
3355
- background-color: rgba(0, 0, 0, 0.25);
3356
- }
3357
-
3358
- .elementor-widget-wpr-magazine-grid .wpr-grid-media-hover-bg {
3359
- background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0) 46%, rgba(96, 91, 229, 0.87) 100%);
3360
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(46%, rgba(255, 255, 255, 0)), to(rgba(96, 91, 229, 0.87)));
3361
- background-image: linear-gradient(180deg, rgba(255, 255, 255, 0) 46%, rgba(96, 91, 229, 0.87) 100%);
3362
- }
3363
-
3364
- .elementor-widget-wpr-grid .wpr-grid-item-title,
3365
- .elementor-widget-wpr-woo-grid .wpr-grid-item-title,
3366
- .elementor-widget-wpr-woo-category-grid-pro .wpr-grid-item-title {
3367
- font-size: 21px;
3368
- font-weight: 700;
3369
- line-height: 23px;
3370
- margin: 0;
3371
- }
3372
-
3373
- .elementor-widget-wpr-magazine-grid .wpr-grid-item-title {
3374
- font-size: 22px;
3375
- margin: 0;
3376
- }
3377
-
3378
- .elementor-widget-wpr-media-grid .wpr-grid-item-title {
3379
- font-size: 15px;
3380
- font-weight: 500;
3381
- margin: 0;
3382
- }
3383
-
3384
- .elementor-widget-wpr-grid .wpr-grid-item-content,
3385
- .elementor-widget-wpr-grid .wpr-grid-item-excerpt,
3386
- .elementor-widget-wpr-grid .wpr-grid-item-author,
3387
- .elementor-widget-wpr-grid .wpr-grid-item-time,
3388
- .elementor-widget-wpr-grid .wpr-grid-item-read-more a,
3389
- .elementor-widget-wpr-grid .wpr-grid-item-likes,
3390
- .elementor-widget-wpr-grid .wpr-grid-item-sharing,
3391
- .elementor-widget-wpr-grid .wpr-grid-tax-style-1,
3392
- .elementor-widget-wpr-grid .wpr-grid-cf-style-1,
3393
- .elementor-widget-wpr-grid .wpr-grid-filters li,
3394
- .elementor-widget-wpr-grid .wpr-grid-pagination,
3395
- .elementor-widget-wpr-grid .wpr-grid-item-protected p,
3396
- .elementor-widget-wpr-media-grid .wpr-grid-item-sharing,
3397
- .elementor-widget-wpr-media-grid .wpr-grid-filters li,
3398
- .elementor-widget-wpr-woo-grid .wpr-grid-item-content,
3399
- .elementor-widget-wpr-woo-grid .wpr-grid-product-categories,
3400
- .elementor-widget-wpr-woo-grid .wpr-grid-product-tags,
3401
- .elementor-widget-wpr-woo-grid .wpr-woo-rating span,
3402
- .elementor-widget-wpr-woo-grid .wpr-grid-item-status .inner-block>span,
3403
- .elementor-widget-wpr-woo-grid .wpr-grid-item-add-to-cart a,
3404
- .elementor-widget-wpr-woo-grid .wpr-grid-item-likes,
3405
- .elementor-widget-wpr-woo-grid .wpr-grid-item-sharing,
3406
- .elementor-widget-wpr-woo-grid .wpr-grid-item-lightbox,
3407
- .elementor-widget-wpr-woo-grid .wpr-grid-pagination,
3408
- .elementor-widget-wpr-woo-grid .wpr-grid-item-price .inner-block>span,
3409
- .elementor-widget-wpr-magazine-grid .wpr-grid-item-content,
3410
- .elementor-widget-wpr-magazine-grid .wpr-grid-item-excerpt {
3411
- font-size: 14px;
3412
- }
3413
-
3414
- .elementor-widget-wpr-magazine-grid .wpr-grid-tax-style-1 {
3415
- font-size: 12px;
3416
- list-style-position: 0.5px;
3417
- }
3418
-
3419
- .elementor-widget-wpr-magazine-grid .wpr-grid-item-date,
3420
- .elementor-widget-wpr-magazine-grid .wpr-grid-item-time,
3421
- .elementor-widget-wpr-magazine-grid .wpr-grid-item-author {
3422
- font-size: 12px;
3423
- list-style-position: 0.3px;
3424
- }
3425
-
3426
- .elementor-widget-wpr-grid .wpr-grid-item-date,
3427
- .elementor-widget-wpr-grid .wpr-grid-item-comments,
3428
- .elementor-widget-wpr-grid .wpr-grid-tax-style-2,
3429
- .elementor-widget-wpr-media-grid .wpr-grid-item-caption,
3430
- .elementor-widget-wpr-media-grid .wpr-grid-item-date,
3431
- .elementor-widget-wpr-media-grid .wpr-grid-item-time,
3432
- .elementor-widget-wpr-media-grid .wpr-grid-item-author,
3433
- .elementor-widget-wpr-media-grid .wpr-grid-item-likes,
3434
- .elementor-widget-wpr-media-grid .wpr-grid-tax-style-1,
3435
- .elementor-widget-wpr-media-grid .wpr-grid-tax-style-2,
3436
- .elementor-widget-wpr-media-magazine-grid .wpr-grid-tax-style-2 {
3437
- font-size: 14px;
3438
- }
3439
-
3440
- .elementor-widget-wpr-grid .wpr-grid-item-lightbox,
3441
- .elementor-widget-wpr-media-grid .wpr-grid-item-lightbox {
3442
- font-size: 18px;
3443
- }
3444
-
3445
- .elementor-widget-wpr-grid .wpr-grid-cf-style-2,
3446
- .elementor-widget-wpr-media-grid .wpr-grid-pagination {
3447
- font-size: 15px;
3448
- }
3449
-
3450
- .elementor-widget-wpr-grid .wpr-grid-tax-style-2 .inner-block a {
3451
- background-color: #605BE5;
3452
- }
3453
-
3454
- .elementor-widget-wpr-grid .wpr-grid-tax-style-2 .inner-block a:hover {
3455
- background-color: #4A45D2;
3456
- }
3457
-
3458
- @media screen and (max-width: 580px) {
3459
- .wpr-grid-sorting-inner-wrap {
3460
- -webkit-box-orient: vertical;
3461
- -webkit-box-direction: normal;
3462
- -ms-flex-direction: column;
3463
- flex-direction: column;
3464
- -webkit-box-align: start;
3465
- -ms-flex-align: start;
3466
- align-items: flex-start;
3467
- }
3468
-
3469
- .wpr-products-result-count {
3470
- margin-bottom: 5px;
3471
- }
3472
-
3473
- .wpr-grid-orderby,
3474
- .wpr-grid-orderby select.orderby,
3475
- .wpr-products-result-count {
3476
- width: 100% !important;
3477
- }
3478
- }
3479
-
3480
-
3481
- /*--------------------------------------------------------------
3482
- == Magazine Grid
3483
- --------------------------------------------------------------*/
3484
-
3485
- .wpr-magazine-grid {
3486
- display: -ms-grid;
3487
- display: grid;
3488
- -webkit-box-pack: stretch;
3489
- -ms-flex-pack: stretch;
3490
- justify-content: stretch;
3491
- -ms-grid-rows: 1fr 1fr;
3492
- grid-template-rows: 1fr 1fr;
3493
- }
3494
-
3495
- .wpr-mgzn-grid-item {
3496
- padding: 0 !important;
3497
- text-align: center;
3498
- }
3499
-
3500
- .wpr-mgzn-grid-1vh-3h {
3501
- -ms-grid-rows: auto;
3502
- grid-template-rows: auto;
3503
- }
3504
-
3505
- .wpr-mgzn-grid-1-1-1 {
3506
- -ms-grid-rows: 1fr;
3507
- grid-template-rows: 1fr;
3508
- }
3509
-
3510
- .wpr-mgzn-grid-2-3,
3511
- .wpr-mgzn-grid-1-1-3 {
3512
- -ms-grid-columns: (1fr)[6];
3513
- grid-template-columns: repeat(6, 1fr);
3514
- }
3515
-
3516
- .wpr-mgzn-grid-2-h {
3517
- -ms-grid-columns: (1fr)[2];
3518
- grid-template-columns: repeat(2, 1fr);
3519
- }
3520
-
3521
- .wpr-mgzn-grid-3-h {
3522
- -ms-grid-columns: (1fr)[3];
3523
- grid-template-columns: repeat(3, 1fr);
3524
- }
3525
-
3526
- .wpr-mgzn-grid-4-h {
3527
- -ms-grid-columns: (1fr)[4];
3528
- grid-template-columns: repeat(4, 1fr);
3529
- }
3530
-
3531
- .wpr-mgzn-grid-1vh-3h .wpr-mgzn-grid-item:nth-child(1) {
3532
- -ms-grid-column: 1;
3533
- grid-column-start: 1;
3534
- -ms-grid-row: 1;
3535
- grid-row-start: 1;
3536
- -ms-grid-row-span: 3;
3537
- grid-row-end: 4;
3538
- }
3539
-
3540
- .wpr-mgzn-grid-1vh-3h .wpr-mgzn-grid-item:nth-child(2) {
3541
- -ms-grid-column: 2;
3542
- grid-column-start: 2;
3543
- }
3544
-
3545
- .wpr-mgzn-grid-1vh-3h .wpr-mgzn-grid-item:nth-child(3) {
3546
- -ms-grid-column: 2;
3547
- grid-column-start: 2;
3548
- }
3549
-
3550
- .wpr-mgzn-grid-1vh-3h .wpr-mgzn-grid-item:nth-child(4) {
3551
- -ms-grid-column: 2;
3552
- grid-column-start: 2;
3553
- }
3554
-
3555
- .wpr-mgzn-grid-1-2 .wpr-mgzn-grid-item:nth-child(1),
3556
- .wpr-mgzn-grid-1-3 .wpr-mgzn-grid-item:nth-child(1),
3557
- .wpr-mgzn-grid-1-4 .wpr-mgzn-grid-item:nth-child(1),
3558
- .wpr-mgzn-grid-1-1-2 .wpr-mgzn-grid-item:nth-child(1) {
3559
- -ms-grid-column: 1;
3560
- grid-column-start: 1;
3561
- -ms-grid-row: 1;
3562
- grid-row-start: 1;
3563
- -ms-grid-row-span: 2;
3564
- grid-row-end: 3;
3565
- }
3566
-
3567
- .wpr-mgzn-grid-1-1-2 .wpr-mgzn-grid-item:nth-child(2) {
3568
- -ms-grid-row: 1;
3569
- grid-row-start: 1;
3570
- -ms-grid-row-span: 2;
3571
- grid-row-end: 3;
3572
- }
3573
-
3574
- .wpr-mgzn-grid-2-1-2 .wpr-mgzn-grid-item:nth-child(2) {
3575
- -ms-grid-column: 2;
3576
- grid-column-start: 2;
3577
- -ms-grid-row: 1;
3578
- grid-row-start: 1;
3579
- -ms-grid-row-span: 2;
3580
- grid-row-end: 3;
3581
- }
3582
-
3583
- .wpr-mgzn-grid-1-3 .wpr-mgzn-grid-item:nth-child(2) {
3584
- -ms-grid-column: 2;
3585
- grid-column-start: 2;
3586
- -ms-grid-column-span: 2;
3587
- grid-column-end: 4;
3588
- }
3589
-
3590
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(1),
3591
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(2),
3592
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(1),
3593
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(2) {
3594
- -ms-grid-row: 1;
3595
- grid-row-start: 1;
3596
- -ms-grid-row-span: 1;
3597
- grid-row-end: 2;
3598
- }
3599
-
3600
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(1) {
3601
- -ms-grid-column: 1;
3602
- grid-column-start: 1;
3603
- -ms-grid-column-span: 3;
3604
- grid-column-end: 4;
3605
- }
3606
-
3607
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(2) {
3608
- -ms-grid-column: 4;
3609
- grid-column-start: 4;
3610
- -ms-grid-column-span: 3;
3611
- grid-column-end: 7;
3612
- }
3613
-
3614
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(1) {
3615
- -ms-grid-column: 1;
3616
- grid-column-start: 1;
3617
- -ms-grid-column-span: 4;
3618
- grid-column-end: 5;
3619
- }
3620
-
3621
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(2) {
3622
- -ms-grid-column: 5;
3623
- grid-column-start: 5;
3624
- -ms-grid-column-span: 2;
3625
- grid-column-end: 7;
3626
- }
3627
-
3628
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(3),
3629
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(4),
3630
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(5),
3631
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(3),
3632
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(4),
3633
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(5) {
3634
- -ms-grid-row: 2;
3635
- grid-row-start: 2;
3636
- -ms-grid-row-span: 1;
3637
- grid-row-end: 3;
3638
- }
3639
-
3640
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(3),
3641
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(3) {
3642
- -ms-grid-column: 1;
3643
- grid-column-start: 1;
3644
- -ms-grid-column-span: 2;
3645
- grid-column-end: 3;
3646
- }
3647
-
3648
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(4),
3649
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(4) {
3650
- -ms-grid-column: 3;
3651
- grid-column-start: 3;
3652
- -ms-grid-column-span: 2;
3653
- grid-column-end: 5;
3654
- }
3655
-
3656
- .wpr-mgzn-grid-2-3 .wpr-mgzn-grid-item:nth-child(5),
3657
- .wpr-mgzn-grid-1-1-3 .wpr-mgzn-grid-item:nth-child(5) {
3658
- -ms-grid-column: 5;
3659
- grid-column-start: 5;
3660
- -ms-grid-column-span: 2;
3661
- grid-column-end: 7;
3662
- }
3663
-
3664
- .wpr-magazine-grid .wpr-grid-item-inner,
3665
- .wpr-magazine-grid .wpr-grid-media-wrap,
3666
- .wpr-magazine-grid .wpr-grid-image-wrap {
3667
- height: 100%;
3668
- }
3669
-
3670
- .wpr-magazine-grid .wpr-grid-image-wrap {
3671
- background-size: cover;
3672
- background-position: center center;
3673
- }
3674
-
3675
- .wpr-magazine-grid .wpr-grid-media-hover {
3676
- z-index: 1;
3677
- }
3678
-
3679
-
3680
- /* Responsive */
3681
-
3682
- @media screen and ( max-width: 1024px) {
3683
- /* Layout 1 */
3684
- .wpr-magazine-grid.wpr-mgzn-grid-1-2 {
3685
- -ms-grid-columns: 1fr 1fr !important;
3686
- grid-template-columns: 1fr 1fr !important;
3687
- -ms-grid-rows: 1fr 1fr 1fr;
3688
- grid-template-rows: 1fr 1fr 1fr;
3689
- }
3690
- .wpr-magazine-grid.wpr-mgzn-grid-1-2>*:nth-child(1) {
3691
- -ms-grid-row: 1;
3692
- -ms-grid-column: 1;
3693
- }
3694
- .wpr-magazine-grid.wpr-mgzn-grid-1-2>*:nth-child(2) {
3695
- -ms-grid-row: 1;
3696
- -ms-grid-column: 2;
3697
- }
3698
- .wpr-magazine-grid.wpr-mgzn-grid-1-2>*:nth-child(3) {
3699
- -ms-grid-row: 2;
3700
- -ms-grid-column: 1;
3701
- }
3702
- .wpr-magazine-grid.wpr-mgzn-grid-1-2>*:nth-child(4) {
3703
- -ms-grid-row: 2;
3704
- -ms-grid-column: 2;
3705
- }
3706
- .wpr-magazine-grid.wpr-mgzn-grid-1-2>*:nth-child(5) {
3707
- -ms-grid-row: 3;
3708
- -ms-grid-column: 1;
3709
- }
3710
- .wpr-magazine-grid.wpr-mgzn-grid-1-2>*:nth-child(6) {
3711
- -ms-grid-row: 3;
3712
- -ms-grid-column: 2;
3713
- }
3714
- .wpr-magazine-grid.wpr-mgzn-grid-1-2 article:nth-child(1) {
3715
- -ms-grid-column-span: 3 !important;
3716
- grid-column-end: 3 !important;
3717
- }
3718
- /* Layout 2 */
3719
- .wpr-magazine-grid.wpr-mgzn-grid-1-3 {
3720
- -ms-grid-columns: 1fr 1fr !important;
3721
- grid-template-columns: 1fr 1fr !important;
3722
- -ms-grid-rows: 1fr 1fr 1fr !important;
3723
- grid-template-rows: 1fr 1fr 1fr !important;
3724
- }
3725
- .wpr-magazine-grid.wpr-mgzn-grid-1-3>*:nth-child(1) {
3726
- -ms-grid-row: 1;
3727
- -ms-grid-column: 1;
3728
- }
3729
- .wpr-magazine-grid.wpr-mgzn-grid-1-3>*:nth-child(2) {
3730
- -ms-grid-row: 1;
3731
- -ms-grid-column: 2;
3732
- }
3733
- .wpr-magazine-grid.wpr-mgzn-grid-1-3>*:nth-child(3) {
3734
- -ms-grid-row: 2;
3735
- -ms-grid-column: 1;
3736
- }
3737
- .wpr-magazine-grid.wpr-mgzn-grid-1-3>*:nth-child(4) {
3738
- -ms-grid-row: 2;
3739
- -ms-grid-column: 2;
3740
- }
3741
- .wpr-magazine-grid.wpr-mgzn-grid-1-3>*:nth-child(5) {
3742
- -ms-grid-row: 3;
3743
- -ms-grid-column: 1;
3744
- }
3745
- .wpr-magazine-grid.wpr-mgzn-grid-1-3>*:nth-child(6) {
3746
- -ms-grid-row: 3;
3747
- -ms-grid-column: 2;
3748
- }
3749
- .wpr-magazine-grid.wpr-mgzn-grid-1-3 article:nth-child(1) {
3750
- -ms-grid-column-span: 3 !important;
3751
- grid-column-end: 3 !important;
3752
- -ms-grid-row-span: 2 !important;
3753
- grid-row-end: 2 !important;
3754
- }
3755
- .wpr-magazine-grid.wpr-mgzn-grid-1-3 article:nth-child(2) {
3756
- -ms-grid-column: 1 !important;
3757
- grid-column-start: 1 !important;
3758
- -ms-grid-column-span: 2 !important;
3759
- grid-column-end: 3 !important;
3760
- }
3761
- /* Layout 3 */
3762
- .wpr-magazine-grid.wpr-mgzn-grid-1-4 {
3763
- -ms-grid-columns: 1fr 1fr !important;
3764
- grid-template-columns: 1fr 1fr !important;
3765
- -ms-grid-rows: (1fr)[3];
3766
- grid-template-rows: repeat(3, 1fr);
3767
- }
3768
- .wpr-magazine-grid.wpr-mgzn-grid-1-4>*:nth-child(1) {
3769
- -ms-grid-row: 1;
3770
- -ms-grid-column: 1;
3771
- }
3772
- .wpr-magazine-grid.wpr-mgzn-grid-1-4>*:nth-child(2) {
3773
- -ms-grid-row: 1;
3774
- -ms-grid-column: 2;
3775
- }
3776
- .wpr-magazine-grid.wpr-mgzn-grid-1-4>*:nth-child(3) {
3777
- -ms-grid-row: 2;
3778
- -ms-grid-column: 1;
3779
- }
3780
- .wpr-magazine-grid.wpr-mgzn-grid-1-4>*:nth-child(4) {
3781
- -ms-grid-row: 2;
3782
- -ms-grid-column: 2;
3783
- }
3784
- .wpr-magazine-grid.wpr-mgzn-grid-1-4>*:nth-child(5) {
3785
- -ms-grid-row: 3;
3786
- -ms-grid-column: 1;
3787
- }
3788
- .wpr-magazine-grid.wpr-mgzn-grid-1-4>*:nth-child(6) {
3789
- -ms-grid-row: 3;
3790
- -ms-grid-column: 2;
3791
- }
3792
- .wpr-magazine-grid.wpr-mgzn-grid-1-4 article:nth-child(1) {
3793
- -ms-grid-column: 1;
3794
- grid-column-start: 1;
3795
- -ms-grid-column-span: 2;
3796
- grid-column-end: 3;
3797
- -ms-grid-row-span: 1 !important;
3798
- grid-row-end: 1 !important;
3799
- }
3800
- /* Layout 4 */
3801
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2 {
3802
- -ms-grid-columns: 1fr 1fr !important;
3803
- grid-template-columns: 1fr 1fr !important;
3804
- -ms-grid-rows: 1fr 1fr 1fr !important;
3805
- grid-template-rows: 1fr 1fr 1fr !important;
3806
- }
3807
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2>*:nth-child(1) {
3808
- -ms-grid-row: 1;
3809
- -ms-grid-column: 1;
3810
- }
3811
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2>*:nth-child(2) {
3812
- -ms-grid-row: 1;
3813
- -ms-grid-column: 2;
3814
- }
3815
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2>*:nth-child(3) {
3816
- -ms-grid-row: 2;
3817
- -ms-grid-column: 1;
3818
- }
3819
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2>*:nth-child(4) {
3820
- -ms-grid-row: 2;
3821
- -ms-grid-column: 2;
3822
- }
3823
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2>*:nth-child(5) {
3824
- -ms-grid-row: 3;
3825
- -ms-grid-column: 1;
3826
- }
3827
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2>*:nth-child(6) {
3828
- -ms-grid-row: 3;
3829
- -ms-grid-column: 2;
3830
- }
3831
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2 article:nth-child(1) {
3832
- -ms-grid-column-span: 3;
3833
- grid-column-end: 3;
3834
- -ms-grid-row: 1;
3835
- grid-row-start: 1;
3836
- -ms-grid-row-span: 1;
3837
- grid-row-end: 2;
3838
- }
3839
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-2 article:nth-child(2) {
3840
- -ms-grid-column: 1;
3841
- grid-column-start: 1;
3842
- -ms-grid-column-span: 2;
3843
- grid-column-end: 3;
3844
- -ms-grid-row: 2;
3845
- grid-row-start: 2;
3846
- -ms-grid-row-span: 1;
3847
- grid-row-end: 3;
3848
- }
3849
- /* Layout 5 */
3850
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2 {
3851
- -ms-grid-columns: 1fr 1fr !important;
3852
- grid-template-columns: 1fr 1fr !important;
3853
- -ms-grid-rows: 1fr 1fr 1fr !important;
3854
- grid-template-rows: 1fr 1fr 1fr !important;
3855
- }
3856
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2>*:nth-child(1) {
3857
- -ms-grid-row: 1;
3858
- -ms-grid-column: 1;
3859
- }
3860
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2>*:nth-child(2) {
3861
- -ms-grid-row: 1;
3862
- -ms-grid-column: 2;
3863
- }
3864
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2>*:nth-child(3) {
3865
- -ms-grid-row: 2;
3866
- -ms-grid-column: 1;
3867
- }
3868
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2>*:nth-child(4) {
3869
- -ms-grid-row: 2;
3870
- -ms-grid-column: 2;
3871
- }
3872
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2>*:nth-child(5) {
3873
- -ms-grid-row: 3;
3874
- -ms-grid-column: 1;
3875
- }
3876
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2>*:nth-child(6) {
3877
- -ms-grid-row: 3;
3878
- -ms-grid-column: 2;
3879
- }
3880
- .wpr-magazine-grid.wpr-mgzn-grid-2-1-2 article:nth-child(2) {
3881
- -ms-grid-column: 1;
3882
- grid-column-start: 1;
3883
- -ms-grid-column-span: 2;
3884
- grid-column-end: 3;
3885
- -ms-grid-row: 2;
3886
- grid-row-start: 2;
3887
- }
3888
- /* Layout 6 */
3889
- .wpr-magazine-grid.wpr-mgzn-grid-1vh-3h {
3890
- -ms-grid-columns: 1fr 1fr !important;
3891
- grid-template-columns: 1fr 1fr !important;
3892
- }
3893
- /* Layout 7 */
3894
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-1 {
3895
- -ms-grid-columns: 1fr 1fr !important;
3896
- grid-template-columns: 1fr 1fr !important;
3897
- -ms-grid-rows: 1fr 1fr !important;
3898
- grid-template-rows: 1fr 1fr !important;
3899
- }
3900
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-1>*:nth-child(1) {
3901
- -ms-grid-row: 1;
3902
- -ms-grid-column: 1;
3903
- }
3904
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-1>*:nth-child(2) {
3905
- -ms-grid-row: 1;
3906
- -ms-grid-column: 2;
3907
- }
3908
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-1>*:nth-child(3) {
3909
- -ms-grid-row: 2;
3910
- -ms-grid-column: 1;
3911
- }
3912
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-1>*:nth-child(4) {
3913
- -ms-grid-row: 2;
3914
- -ms-grid-column: 2;
3915
- }
3916
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-1 article:nth-child(2) {
3917
- -ms-grid-column: 1;
3918
- grid-column-start: 1;
3919
- -ms-grid-column-span: 2;
3920
- grid-column-end: 3;
3921
- -ms-grid-row: 1;
3922
- grid-row-start: 1
3923
- }
3924
- /* Layout 8 */
3925
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3 {
3926
- -ms-grid-columns: 1fr 1fr !important;
3927
- grid-template-columns: 1fr 1fr !important;
3928
- -ms-grid-rows: (1fr)[3];
3929
- grid-template-rows: repeat(3, 1fr);
3930
- }
3931
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3>*:nth-child(1) {
3932
- -ms-grid-row: 1;
3933
- -ms-grid-column: 1;
3934
- }
3935
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3>*:nth-child(2) {
3936
- -ms-grid-row: 1;
3937
- -ms-grid-column: 2;
3938
- }
3939
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3>*:nth-child(3) {
3940
- -ms-grid-row: 2;
3941
- -ms-grid-column: 1;
3942
- }
3943
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3>*:nth-child(4) {
3944
- -ms-grid-row: 2;
3945
- -ms-grid-column: 2;
3946
- }
3947
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3>*:nth-child(5) {
3948
- -ms-grid-row: 3;
3949
- -ms-grid-column: 1;
3950
- }
3951
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3>*:nth-child(6) {
3952
- -ms-grid-row: 3;
3953
- -ms-grid-column: 2;
3954
- }
3955
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3 article:nth-child(1) {
3956
- -ms-grid-column: 1;
3957
- grid-column-start: 1;
3958
- -ms-grid-column-span: 2;
3959
- grid-column-end: 3;
3960
- -ms-grid-row-span: 2;
3961
- grid-row-end: 2;
3962
- }
3963
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3 article:nth-child(2) {
3964
- -ms-grid-row: 2;
3965
- grid-row-start: 2;
3966
- -ms-grid-column: 1;
3967
- grid-column-start: 1;
3968
- -ms-grid-column-span: 1;
3969
- grid-column-end: 2;
3970
- }
3971
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3 article:nth-child(3) {
3972
- -ms-grid-row: 2;
3973
- grid-row-start: 2;
3974
- -ms-grid-column: 2;
3975
- grid-column-start: 2;
3976
- -ms-grid-column-span: 1;
3977
- grid-column-end: 3;
3978
- }
3979
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3 article:nth-child(4) {
3980
- -ms-grid-row: 3;
3981
- grid-row-start: 3;
3982
- -ms-grid-column: 1;
3983
- grid-column-start: 1;
3984
- -ms-grid-column-span: 1;
3985
- grid-column-end: 2;
3986
- }
3987
- .wpr-magazine-grid.wpr-mgzn-grid-1-1-3 article:nth-child(5) {
3988
- -ms-grid-row: 3;
3989
- grid-row-start: 3;
3990
- -ms-grid-column: 2;
3991
- grid-column-start: 2;
3992
- -ms-grid-column-span: 1;
3993
- grid-column-end: 3;
3994
- }
3995
- /* Layout 9 */
3996
- .wpr-magazine-grid.wpr-mgzn-grid-2-3 {
3997
- -ms-grid-columns: 1fr 1fr !important;
3998
- grid-template-columns: 1fr 1fr !important;
3999
- -ms-grid-rows: (1fr)[6] !important;
4000
- grid-template-rows: repeat(6, 1fr) !important;
4001
- }
4002
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(1) {
4003
- -ms-grid-row: 1;
4004
- -ms-grid-column: 1;
4005
- }
4006
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(2) {
4007
- -ms-grid-row: 1;
4008
- -ms-grid-column: 2;
4009
- }
4010
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(3) {
4011
- -ms-grid-row: 2;
4012
- -ms-grid-column: 1;
4013
- }
4014
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(4) {
4015
- -ms-grid-row: 2;
4016
- -ms-grid-column: 2;
4017
- }
4018
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(5) {
4019
- -ms-grid-row: 3;
4020
- -ms-grid-column: 1;
4021
- }
4022
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(6) {
4023
- -ms-grid-row: 3;
4024
- -ms-grid-column: 2;
4025
- }
4026
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(7) {
4027
- -ms-grid-row: 4;
4028
- -ms-grid-column: 1;
4029
- }
4030
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(8) {
4031
- -ms-grid-row: 4;
4032
- -ms-grid-column: 2;
4033
- }
4034
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(9) {
4035
- -ms-grid-row: 5;
4036
- -ms-grid-column: 1;
4037
- }
4038
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(10) {
4039
- -ms-grid-row: 5;
4040
- -ms-grid-column: 2;
4041
- }
4042
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(11) {
4043
- -ms-grid-row: 6;
4044
- -ms-grid-column: 1;
4045
- }
4046
- .wpr-magazine-grid.wpr-mgzn-grid-2-3>*:nth-child(12) {
4047
- -ms-grid-row: 6;
4048
- -ms-grid-column: 2;
4049
- }
4050
- .wpr-magazine-grid.wpr-mgzn-grid-2-3 article:nth-child(1) {
4051
- -ms-grid-column: 1;
4052
- grid-column-start: 1;
4053
- -ms-grid-column-span: 1;
4054
- grid-column-end: 2;
4055
- -ms-grid-row: 1;
4056
- grid-row-start: 1;
4057
- -ms-grid-row-span: 3;
4058
- grid-row-end: 4;
4059
- }
4060
- .wpr-magazine-grid.wpr-mgzn-grid-2-3 article:nth-child(2) {
4061
- -ms-grid-column: 1;
4062
- grid-column-start: 1;
4063
- -ms-grid-column-span: 1;
4064
- grid-column-end: 2;
4065
- -ms-grid-row: 4;
4066
- grid-row-start: 4;
4067
- -ms-grid-row-span: 3;
4068
- grid-row-end: 7;
4069
- }
4070
- .wpr-magazine-grid.wpr-mgzn-grid-2-3 article:nth-child(3) {
4071
- -ms-grid-column: 2;
4072
- grid-column-start: 2;
4073
- -ms-grid-column-span: 1;
4074
- grid-column-end: 3;
4075
- -ms-grid-row: 1;
4076
- grid-row-start: 1;
4077
- -ms-grid-row-span: 2;
4078
- grid-row-end: 3;
4079
- }
4080
- .wpr-magazine-grid.wpr-mgzn-grid-2-3 article:nth-child(4) {
4081
- -ms-grid-column: 2;
4082
- grid-column-start: 2;
4083
- -ms-grid-column-span: 1;
4084
- grid-column-end: 3;
4085
- -ms-grid-row: 3;
4086
- grid-row-start: 3;
4087
- -ms-grid-row-span: 2;
4088
- grid-row-end: 5;
4089
- }
4090
- .wpr-magazine-grid.wpr-mgzn-grid-2-3 article:nth-child(5) {
4091
- -ms-grid-column: 2;
4092
- grid-column-start: 2;
4093
- -ms-grid-column-span: 1;
4094
- grid-column-end: 3;
4095
- -ms-grid-row: 5;
4096
- grid-row-start: 5;
4097
- -ms-grid-row-span: 2;
4098
- grid-row-end: 7;
4099
- }
4100
- /* Layout 12 */
4101
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-1 {
4102
- -ms-grid-columns: 1fr 1fr !important;
4103
- grid-template-columns: 1fr 1fr !important;
4104
- -ms-grid-rows: (1fr)[2] !important;
4105
- grid-template-rows: repeat(2, 1fr) !important;
4106
- }
4107
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-1>*:nth-child(1) {
4108
- -ms-grid-row: 1;
4109
- -ms-grid-column: 1;
4110
- }
4111
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-1>*:nth-child(2) {
4112
- -ms-grid-row: 1;
4113
- -ms-grid-column: 2;
4114
- }
4115
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-1>*:nth-child(3) {
4116
- -ms-grid-row: 2;
4117
- -ms-grid-column: 1;
4118
- }
4119
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-1>*:nth-child(4) {
4120
- -ms-grid-row: 2;
4121
- -ms-grid-column: 2;
4122
- }
4123
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2 {
4124
- -ms-grid-columns: 1fr 1fr !important;
4125
- grid-template-columns: 1fr 1fr !important;
4126
- -ms-grid-rows: (1fr)[4] !important;
4127
- grid-template-rows: repeat(4, 1fr) !important;
4128
- }
4129
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(1) {
4130
- -ms-grid-row: 1;
4131
- -ms-grid-column: 1;
4132
- }
4133
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(2) {
4134
- -ms-grid-row: 1;
4135
- -ms-grid-column: 2;
4136
- }
4137
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(3) {
4138
- -ms-grid-row: 2;
4139
- -ms-grid-column: 1;
4140
- }
4141
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(4) {
4142
- -ms-grid-row: 2;
4143
- -ms-grid-column: 2;
4144
- }
4145
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(5) {
4146
- -ms-grid-row: 3;
4147
- -ms-grid-column: 1;
4148
- }
4149
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(6) {
4150
- -ms-grid-row: 3;
4151
- -ms-grid-column: 2;
4152
- }
4153
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(7) {
4154
- -ms-grid-row: 4;
4155
- -ms-grid-column: 1;
4156
- }
4157
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-2>*:nth-child(8) {
4158
- -ms-grid-row: 4;
4159
- -ms-grid-column: 2;
4160
- }
4161
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3 {
4162
- -ms-grid-columns: 1fr 1fr !important;
4163
- grid-template-columns: 1fr 1fr !important;
4164
- -ms-grid-rows: (1fr)[6] !important;
4165
- grid-template-rows: repeat(6, 1fr) !important;
4166
- }
4167
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(1) {
4168
- -ms-grid-row: 1;
4169
- -ms-grid-column: 1;
4170
- }
4171
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(2) {
4172
- -ms-grid-row: 1;
4173
- -ms-grid-column: 2;
4174
- }
4175
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(3) {
4176
- -ms-grid-row: 2;
4177
- -ms-grid-column: 1;
4178
- }
4179
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(4) {
4180
- -ms-grid-row: 2;
4181
- -ms-grid-column: 2;
4182
- }
4183
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(5) {
4184
- -ms-grid-row: 3;
4185
- -ms-grid-column: 1;
4186
- }
4187
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(6) {
4188
- -ms-grid-row: 3;
4189
- -ms-grid-column: 2;
4190
- }
4191
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(7) {
4192
- -ms-grid-row: 4;
4193
- -ms-grid-column: 1;
4194
- }
4195
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(8) {
4196
- -ms-grid-row: 4;
4197
- -ms-grid-column: 2;
4198
- }
4199
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(9) {
4200
- -ms-grid-row: 5;
4201
- -ms-grid-column: 1;
4202
- }
4203
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(10) {
4204
- -ms-grid-row: 5;
4205
- -ms-grid-column: 2;
4206
- }
4207
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(11) {
4208
- -ms-grid-row: 6;
4209
- -ms-grid-column: 1;
4210
- }
4211
- .wpr-magazine-grid.wpr-mgzn-grid-4-h.wpr-mgzn-grid-rows-3>*:nth-child(12) {
4212
- -ms-grid-row: 6;
4213
- -ms-grid-column: 2;
4214
- }
4215
- }
4216
-
4217
- @media screen and ( max-width: 767px) {
4218
- /* Layout 11 */
4219
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-1 {
4220
- -ms-grid-columns: 1fr !important;
4221
- grid-template-columns: 1fr !important;
4222
- -ms-grid-rows: (1fr)[3] !important;
4223
- grid-template-rows: repeat(3, 1fr) !important;
4224
- }
4225
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-1>*:nth-child(1) {
4226
- -ms-grid-row: 1;
4227
- -ms-grid-column: 1;
4228
- }
4229
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-1>*:nth-child(2) {
4230
- -ms-grid-row: 2;
4231
- -ms-grid-column: 1;
4232
- }
4233
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-1>*:nth-child(3) {
4234
- -ms-grid-row: 3;
4235
- -ms-grid-column: 1;
4236
- }
4237
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-2 {
4238
- -ms-grid-columns: 1fr !important;
4239
- grid-template-columns: 1fr !important;
4240
- -ms-grid-rows: (1fr)[6] !important;
4241
- grid-template-rows: repeat(6, 1fr) !important;
4242
- }
4243
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-2>*:nth-child(1) {
4244
- -ms-grid-row: 1;
4245
- -ms-grid-column: 1;
4246
- }
4247
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-2>*:nth-child(2) {
4248
- -ms-grid-row: 2;
4249
- -ms-grid-column: 1;
4250
- }
4251
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-2>*:nth-child(3) {
4252
- -ms-grid-row: 3;
4253
- -ms-grid-column: 1;
4254
- }
4255
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-2>*:nth-child(4) {
4256
- -ms-grid-row: 4;
4257
- -ms-grid-column: 1;
4258
- }
4259
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-2>*:nth-child(5) {
4260
- -ms-grid-row: 5;
4261
- -ms-grid-column: 1;
4262
- }
4263
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-2>*:nth-child(6) {
4264
- -ms-grid-row: 6;
4265
- -ms-grid-column: 1;
4266
- }
4267
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3 {
4268
- -ms-grid-columns: 1fr !important;
4269
- grid-template-columns: 1fr !important;
4270
- -ms-grid-rows: (1fr)[9] !important;
4271
- grid-template-rows: repeat(9, 1fr) !important;
4272
- }
4273
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(1) {
4274
- -ms-grid-row: 1;
4275
- -ms-grid-column: 1;
4276
- }
4277
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(2) {
4278
- -ms-grid-row: 2;
4279
- -ms-grid-column: 1;
4280
- }
4281
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(3) {
4282
- -ms-grid-row: 3;
4283
- -ms-grid-column: 1;
4284
- }
4285
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(4) {
4286
- -ms-grid-row: 4;
4287
- -ms-grid-column: 1;
4288
- }
4289
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(5) {
4290
- -ms-grid-row: 5;
4291
- -ms-grid-column: 1;
4292
- }
4293
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(6) {
4294
- -ms-grid-row: 6;
4295
- -ms-grid-column: 1;
4296
- }
4297
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(7) {
4298
- -ms-grid-row: 7;
4299
- -ms-grid-column: 1;
4300
- }
4301
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(8) {
4302
- -ms-grid-row: 8;
4303
- -ms-grid-column: 1;
4304
- }
4305
- .wpr-magazine-grid.wpr-mgzn-grid-3-h.wpr-mgzn-grid-rows-3>*:nth-child(9) {
4306
- -ms-grid-row: 9;
4307
- -ms-grid-column: 1;
4308
- }
4309
- }
4310
-
4311
-
4312
- /*--------------------------------------------------------------
4313
- == Sharing Buttons
4314
- --------------------------------------------------------------*/
4315
-
4316
- .wpr-sharing-buttons .wpr-sharing-icon {
4317
- overflow: hidden;
4318
- position: relative;
4319
- display: -webkit-box;
4320
- display: -ms-flexbox;
4321
- display: flex;
4322
- color: #ffffff !important;
4323
- }
4324
-
4325
- .wpr-sharing-buttons .wpr-sharing-icon i {
4326
- display: block;
4327
- text-align: center;
4328
- }
4329
-
4330
- .wpr-sharing-label {
4331
- -webkit-box-flex: 1;
4332
- -ms-flex-positive: 1;
4333
- flex-grow: 1;
4334
- }
4335
-
4336
- .elementor-widget-wpr-sharing-buttons.elementor-grid-0 .wpr-sharing-buttons,
4337
- .elementor-widget-wpr-sharing-buttons[class*="elementor-grid-pro-"] .wpr-sharing-buttons {
4338
- display: -webkit-box;
4339
- display: -ms-flexbox;
4340
- display: flex;
4341
- }
4342
-
4343
- .elementor-widget-wpr-sharing-buttons:not(.elementor-grid-0):not(.elementor-grid-pro-3):not(.elementor-grid-pro-4):not(.elementor-grid-pro-5):not(.elementor-grid-pro-6) .wpr-sharing-label-off .wpr-sharing-icon i {
4344
- width: 100% !important;
4345
- }
4346
-
4347
- .wpr-sharing-buttons.wpr-sharing-col-1 .wpr-sharing-icon {
4348
- width: 100%;
4349
- margin-right: 0 !important;
4350
- }
4351
-
4352
- .wpr-sharing-buttons .wpr-sharing-icon:last-child,
4353
- .wpr-sharing-col-1 .wpr-sharing-buttons .wpr-sharing-icon,
4354
- .wpr-sharing-col-2 .wpr-sharing-buttons .wpr-sharing-icon:nth-child(2n),
4355
- .wpr-sharing-col-3 .wpr-sharing-buttons .wpr-sharing-icon:nth-child(3n),
4356
- .wpr-sharing-col-4 .wpr-sharing-buttons .wpr-sharing-icon:nth-child(4n),
4357
- .wpr-sharing-col-5 .wpr-sharing-buttons .wpr-sharing-icon:nth-child(5n),
4358
- .wpr-sharing-col-6 .wpr-sharing-buttons .wpr-sharing-icon:nth-child(6n) {
4359
- margin-right: 0 !important;
4360
- }
4361
-
4362
- .wpr-sharing-buttons .wpr-sharing-icon {
4363
- transition-propery: opacity, border-color;
4364
- -webkit-transition-timing-function: linear;
4365
- -o-transition-timing-function: linear;
4366
- transition-timing-function: linear;
4367
- }
4368
-
4369
- .wpr-sharing-buttons .wpr-sharing-icon i,
4370
- .wpr-sharing-buttons .wpr-sharing-icon span {
4371
- transition-propery: color, background-color;
4372
- -webkit-transition-timing-function: linear;
4373
- -o-transition-timing-function: linear;
4374
- transition-timing-function: linear;
4375
- }
4376
-
4377
- .wpr-sharing-official .wpr-sharing-icon:hover {
4378
- opacity: 0.85;
4379
- }
4380
-
4381
- .wpr-sharing-official .wpr-sharing-facebook-f i,
4382
- .wpr-sharing-official .wpr-sharing-facebook-f span {
4383
- background-color: #3b5998;
4384
- }
4385
-
4386
- .wpr-sharing-official .wpr-sharing-twitter i,
4387
- .wpr-sharing-official .wpr-sharing-twitter span {
4388
- background-color: #1da1f2;
4389
- }
4390
-
4391
- .wpr-sharing-official .wpr-sharing-linkedin-in i,
4392
- .wpr-sharing-official .wpr-sharing-linkedin-in span {
4393
- background-color: #0077b5;
4394
- }
4395
-
4396
- .wpr-sharing-official .wpr-sharing-pinterest-p i,
4397
- .wpr-sharing-official .wpr-sharing-pinterest-p span {
4398
- background-color: #bd081c;
4399
- }
4400
-
4401
- .wpr-sharing-official .wpr-sharing-reddit i,
4402
- .wpr-sharing-official .wpr-sharing-reddit span {
4403
- background-color: #ff4500;
4404
- }
4405
-
4406
- .wpr-sharing-official .wpr-sharing-tumblr i,
4407
- .wpr-sharing-official .wpr-sharing-tumblr span {
4408
- background-color: #35465c;
4409
- }
4410
-
4411
- .wpr-sharing-official .wpr-sharing-digg i,
4412
- .wpr-sharing-official .wpr-sharing-digg span {
4413
- background-color: #005be2;
4414
- }
4415
-
4416
- .wpr-sharing-official .wpr-sharing-xing i,
4417
- .wpr-sharing-official .wpr-sharing-xing span {
4418
- background-color: #026466;
4419
- }
4420
-
4421
- .wpr-sharing-official .wpr-sharing-stumbleupon i,
4422
- .wpr-sharing-official .wpr-sharing-stumbleupon span {
4423
- background-color: #eb4924;
4424
- }
4425
-
4426
- .wpr-sharing-official .wpr-sharing-vk i,
4427
- .wpr-sharing-official .wpr-sharing-vk span {
4428
- background-color: #45668e;
4429
- }
4430
-
4431
- .wpr-sharing-official .wpr-sharing-odnoklassniki i,
4432
- .wpr-sharing-official .wpr-sharing-odnoklassniki span {
4433
- background-color: #f4731c;
4434
- }
4435
-
4436
- .wpr-sharing-official .wpr-sharing-get-pocket i,
4437
- .wpr-sharing-official .wpr-sharing-get-pocket span {
4438
- background-color: #ef3f56;
4439
- }
4440
-
4441
- .wpr-sharing-official .wpr-sharing-skype i,
4442
- .wpr-sharing-official .wpr-sharing-skype span {
4443
- background-color: #00aff0;
4444
- }
4445
-
4446
- .wpr-sharing-official .wpr-sharing-whatsapp i,
4447
- .wpr-sharing-official .wpr-sharing-whatsapp span {
4448
- background-color: #25d366;
4449
- }
4450
-
4451
- .wpr-sharing-official .wpr-sharing-telegram i,
4452
- .wpr-sharing-official .wpr-sharing-telegram span {
4453
- background-color: #2ca5e0;
4454
- }
4455
-
4456
- .wpr-sharing-official .wpr-sharing-delicious i,
4457
- .wpr-sharing-official .wpr-sharing-delicious span {
4458
- background-color: #3399ff;
4459
- }
4460
-
4461
- .wpr-sharing-official .wpr-sharing-envelope i,
4462
- .wpr-sharing-official .wpr-sharing-envelope span {
4463
- background-color: #c13B2c;
4464
- }
4465
-
4466
- .wpr-sharing-official .wpr-sharing-print i,
4467
- .wpr-sharing-official .wpr-sharing-print span {
4468
- background-color: #96c859;
4469
- }
4470
-
4471
- .wpr-sharing-official .wpr-sharing-facebook-f {
4472
- border-color: #3b5998;
4473
- }
4474
-
4475
- .wpr-sharing-official .wpr-sharing-twitter {
4476
- border-color: #1da1f2;
4477
- }
4478
-
4479
- .wpr-sharing-official .wpr-sharing-linkedin-in {
4480
- border-color: #0077b5;
4481
- }
4482
-
4483
- .wpr-sharing-official .wpr-sharing-pinterest-p {
4484
- border-color: #bd081c;
4485
- }
4486
-
4487
- .wpr-sharing-official .wpr-sharing-reddit {
4488
- border-color: #ff4500;
4489
- }
4490
-
4491
- .wpr-sharing-official .wpr-sharing-tumblr {
4492
- border-color: #35465c;
4493
- }
4494
-
4495
- .wpr-sharing-official .wpr-sharing-digg {
4496
- border-color: #005be2;
4497
- }
4498
-
4499
- .wpr-sharing-official .wpr-sharing-xing {
4500
- border-color: #026466;
4501
- }
4502
-
4503
- .wpr-sharing-official .wpr-sharing-stumbleupon {
4504
- border-color: #eb4924;
4505
- }
4506
-
4507
- .wpr-sharing-official .wpr-sharing-vk {
4508
- border-color: #45668e;
4509
- }
4510
-
4511
- .wpr-sharing-official .wpr-sharing-odnoklassniki {
4512
- border-color: #f4731c;
4513
- }
4514
-
4515
- .wpr-sharing-official .wpr-sharing-get-pocket {
4516
- border-color: #ef3f56;
4517
- }
4518
-
4519
- .wpr-sharing-official .wpr-sharing-skype {
4520
- border-color: #00aff0;
4521
- }
4522
-
4523
- .wpr-sharing-official .wpr-sharing-whatsapp {
4524
- border-color: #25d366;
4525
- }
4526
-
4527
- .wpr-sharing-official .wpr-sharing-telegram {
4528
- border-color: #2ca5e0;
4529
- }
4530
-
4531
- .wpr-sharing-official .wpr-sharing-delicious {
4532
- border-color: #3399ff;
4533
- }
4534
-
4535
- .wpr-sharing-official .wpr-sharing-envelope {
4536
- border-color: #c13B2c;
4537
- }
4538
-
4539
- .wpr-sharing-official .wpr-sharing-print {
4540
- border-color: #96c859;
4541
- }
4542
-
4543
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-facebook-f i,
4544
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-facebook-f span {
4545
- color: #3b5998;
4546
- background-color: transparent;
4547
- }
4548
-
4549
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-twitter i,
4550
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-twitter span {
4551
- color: #1da1f2;
4552
- background-color: transparent;
4553
- }
4554
-
4555
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-linkedin-in i,
4556
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-linkedin-in span {
4557
- color: #0077b5;
4558
- background-color: transparent;
4559
- }
4560
-
4561
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-pinterest-p i,
4562
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-pinterest-p span {
4563
- color: #bd081c;
4564
- background-color: transparent;
4565
- }
4566
-
4567
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-reddit i,
4568
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-reddit span {
4569
- color: #ff4500;
4570
- background-color: transparent;
4571
- }
4572
-
4573
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-tumblr i,
4574
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-tumblr span {
4575
- color: #35465c;
4576
- background-color: transparent;
4577
- }
4578
-
4579
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-digg i,
4580
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-digg span {
4581
- color: #005be2;
4582
- background-color: transparent;
4583
- }
4584
-
4585
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-xing i,
4586
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-xing span {
4587
- color: #026466;
4588
- background-color: transparent;
4589
- }
4590
-
4591
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-stumbleupon i,
4592
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-stumbleupon span {
4593
- color: #eb4924;
4594
- background-color: transparent;
4595
- }
4596
-
4597
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-vk i,
4598
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-vk span {
4599
- color: #45668e;
4600
- background-color: transparent;
4601
- }
4602
-
4603
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-odnoklassniki i,
4604
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-odnoklassniki span {
4605
- color: #f4731c;
4606
- background-color: transparent;
4607
- }
4608
-
4609
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-get-pocket i,
4610
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-get-pocket span {
4611
- color: #ef3f56;
4612
- background-color: transparent;
4613
- }
4614
-
4615
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-skype i,
4616
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-skype span {
4617
- color: #00aff0;
4618
- background-color: transparent;
4619
- }
4620
-
4621
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-whatsapp i,
4622
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-whatsapp span {
4623
- color: #25d366;
4624
- background-color: transparent;
4625
- }
4626
-
4627
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-telegram i,
4628
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-telegram span {
4629
- color: #2ca5e0;
4630
- background-color: transparent;
4631
- }
4632
-
4633
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-delicious i,
4634
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-delicious span {
4635
- color: #3399ff;
4636
- background-color: transparent;
4637
- }
4638
-
4639
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-envelope i,
4640
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-envelope span {
4641
- color: #c13B2c;
4642
- background-color: transparent;
4643
- }
4644
-
4645
- .wpr-sharing-official.wpr-sharing-icon-tr .wpr-sharing-print i,
4646
- .wpr-sharing-official.wpr-sharing-label-tr .wpr-sharing-print span {
4647
- color: #96c859;
4648
- background-color: transparent;
4649
- }
4650
-
4651
-
4652
- /*--------------------------------------------------------------
4653
- == CountDown
4654
- --------------------------------------------------------------*/
4655
-
4656
- .wpr-countdown-wrap {
4657
- display: -webkit-box;
4658
- display: -ms-flexbox;
4659
- display: flex;
4660
- -webkit-box-orient: horizontal;
4661
- -webkit-box-direction: normal;
4662
- -ms-flex-direction: row;
4663
- flex-direction: row;
4664
- margin: 0 auto;
4665
- }
4666
-
4667
- .wpr-countdown-item {
4668
- -webkit-box-flex: 1;
4669
- -ms-flex-positive: 1;
4670
- flex-grow: 1;
4671
- -ms-flex-preferred-size: 0;
4672
- flex-basis: 0;
4673
- overflow: hidden;
4674
- color: #fff;
4675
- text-align: center;
4676
- }
4677
-
4678
- .wpr-countdown-item:first-child {
4679
- margin-left: 0 !important;
4680
- }
4681
-
4682
- .wpr-countdown-item:last-of-type {
4683
- margin-right: 0 !important;
4684
- }
4685
-
4686
- .wpr-countdown-number {
4687
- display: block;
4688
- }
4689
-
4690
- .wpr-countdown-separator {
4691
- -ms-flex-item-align: center;
4692
- -ms-grid-row-align: center;
4693
- align-self: center;
4694
- }
4695
-
4696
- .wpr-countdown-separator span {
4697
- display: block;
4698
- }
4699
-
4700
- .wpr-countdown-separator:last-of-type {
4701
- display: none !important;
4702
- }
4703
-
4704
- .wpr-countdown-wrap+div:not(.wpr-countdown-message) {
4705
- display: none;
4706
- }
4707
-
4708
- .wpr-countdown-message+div {
4709
- display: none;
4710
- }
4711
-
4712
-
4713
- /* Defaults */
4714
-
4715
- .elementor-widget-wpr-countdown .wpr-countdown-item {
4716
- background-color: #605BE5;
4717
- }
4718
-
4719
- .elementor-widget-wpr-countdown .wpr-countdown-number {
4720
- font-size: 70px;
4721
- }
4722
-
4723
- .elementor-widget-wpr-countdown .wpr-countdown-label {
4724
- font-size: 19px;
4725
- line-height: 45px;
4726
- }
4727
-
4728
-
4729
- /*--------------------------------------------------------------
4730
- == Google Maps
4731
- --------------------------------------------------------------*/
4732
-
4733
- .wpr-google-map .gm-style-iw-c {
4734
- padding: 0 !important;
4735
- }
4736
-
4737
- .wpr-google-map .gm-style-iw-c>button {
4738
- top: 0 !important;
4739
- right: 0 !important;
4740
- }
4741
-
4742
- .wpr-google-map .gm-style-iw-c .wpr-gm-iwindow h3 {
4743
- margin-bottom: 7px;
4744
- }
4745
-
4746
- .wpr-google-map .gm-style-iw-d {
4747
- overflow: hidden !important;
4748
- }
4749
-
4750
- .wpr-google-map .gm-style img {
4751
- max-width: none !important;
4752
- }
4753
-
4754
-
4755
- /*--------------------------------------------------------------
4756
- == Forms
4757
- --------------------------------------------------------------*/
4758
-
4759
- .wpr-forms-container .wpcf7-form .wpcf7-form-control-wrap {
4760
- display: block !important;
4761
- }
4762
-
4763
- .wpcf7 label,
4764
- .wpcf7-quiz-label {
4765
- width: 100%;
4766
- }
4767
-
4768
- .wpr-forms-container .wpcf7 p {
4769
- margin-bottom: 0;
4770
- }
4771
-
4772
- .wpr-forms-container .wpcf7-form .ajax-loader {
4773
- display: block;
4774
- visibility: hidden;
4775
- height: 0;
4776
- overflow: hidden;
4777
- clear: both;
4778
- }
4779
-
4780
- .wpr-forms-container .wpcf7-select,
4781
- .wpr-forms-container .wpcf7-number,
4782
- .wpr-forms-container .wpcf7-date,
4783
- .wpr-forms-container select.wpforms-field-medium,
4784
- .wpr-forms-container .nf-field-container select,
4785
- .wpr-forms-container .caldera-grid select.form-control {
4786
- padding: 7px 10px !important;
4787
- }
4788
-
4789
- .wpr-forms-container .wpcf7-date {
4790
- width: auto !important;
4791
- }
4792
-
4793
- .wpr-forms-container .wpcf7-number {
4794
- width: 100px !important;
4795
- }
4796
-
4797
- .wpr-forms-container .wpcf7-form .wpcf7-submit {
4798
- display: block;
4799
- }
4800
-
4801
- .wpr-forms-container .wpcf7-form-control.wpcf7-checkbox .wpcf7-list-item,
4802
- .wpr-forms-container .wpcf7-form-control.wpcf7-radio .wpcf7-list-item,
4803
- .wpr-forms-container .wpcf7-form-control.wpcf7-acceptance .wpcf7-list-item {
4804
- margin-left: 0;
4805
- margin-right: 10px;
4806
- }
4807
-
4808
- .wpr-forms-container .wpcf7-response-output {
4809
- clear: both;
4810
- margin: 0;
4811
- }
4812
-
4813
- .wpr-forms-container .wpforms-field:not(.wpforms-field-address) .wpforms-field-medium {
4814
- display: inline-block !important;
4815
- max-width: 100% !important;
4816
- }
4817
-
4818
- .wpr-forms-container .wpforms-field-phone,
4819
- .wpr-forms-container .wpforms-field-address,
4820
- .wpr-forms-container .wpforms-page-indicator {
4821
- display: inline-block;
4822
- }
4823
-
4824
- .wpr-forms-container .wpforms-field-address .wpforms-field-medium {
4825
- max-width: 100% !important;
4826
- }
4827
-
4828
- .wpr-forms-container .intl-tel-input.allow-dropdown input.wpforms-field-medium,
4829
- .wpr-forms-container .wpforms-field-address div.wpforms-field-medium {
4830
- width: 100% !important;
4831
- max-width: 100% !important;
4832
- }
4833
-
4834
- .wpr-forms-container .intl-tel-input.allow-dropdown {
4835
- display: inline-block !important;
4836
- max-width: 100% !important;
4837
- }
4838
-
4839
- .wpr-forms-align-left .wpr-forms-container div.wpforms-container-full .wpforms-form .wpforms-list-inline ul li:last-child {
4840
- margin-right: 0 !important;
4841
- }
4842
-
4843
- .wpr-forms-container .wpcf7-mail-sent-ok,
4844
- .wpr-forms-container .wpforms-confirmation-container-full,
4845
- .wpr-forms-container .nf-response-msg,
4846
- .wpr-forms-container .caldera-grid .alert-success {
4847
- padding: 10px 15px;
4848
- border: 2px solid;
4849
- }
4850
-
4851
- .wpr-forms-container label.wpforms-error a {
4852
- text-decoration: underline;
4853
- }
4854
-
4855
- .wpr-forms-container .wpforms-smart-phone-field {
4856
- text-indent: 0 !important;
4857
- }
4858
-
4859
- .wpr-forms-container select.ninja-forms-field {
4860
- line-height: 1 !important;
4861
- }
4862
-
4863
- .wpr-forms-container .nf-form-wrap .checkbox-wrap label {
4864
- display: inline-block !important;
4865
- }
4866
-
4867
- .wpr-forms-container .nf-form-wrap .starrating .stars {
4868
- display: inline-block;
4869
- }
4870
-
4871
- .wpr-forms-submit-center .wpcf7-submit,
4872
- .wpr-forms-submit-center .wpforms-submit,
4873
- .wpr-forms-submit-center .wpforms-page-next,
4874
- .wpr-forms-submit-center .wpforms-page-previous,
4875
- .wpr-forms-submit-center .submit-wrap .ninja-forms-field,
4876
- .wpr-forms-submit-center .caldera-grid .btn-default:not(a) {
4877
- display: block !important;
4878
- margin-left: auto !important;
4879
- margin-right: auto !important;
4880
- }
4881
-
4882
- .wpr-forms-submit-left .wpcf7-submit,
4883
- .wpr-forms-submit-left .wpforms-submit,
4884
- .wpr-forms-submit-left .wpforms-page-next,
4885
- .wpr-forms-submit-left .wpforms-page-previous,
4886
- .wpr-forms-submit-left .submit-wrap .ninja-forms-field,
4887
- .wpr-forms-submit-left .caldera-grid .btn-default:not(a) {
4888
- float: left !important;
4889
- }
4890
-
4891
- .wpr-forms-submit-right .wpcf7-submit,
4892
- .wpr-forms-submit-right .wpforms-submit,
4893
- .wpr-forms-submit-right .wpforms-page-next,
4894
- .wpr-forms-submit-right .wpforms-page-previous,
4895
- .wpr-forms-submit-right .submit-wrap .ninja-forms-field,
4896
- .wpr-forms-submit-left .caldera-grid .btn-default:not(a) {
4897
- float: right !important;
4898
- }
4899
-
4900
- .wpr-forms-submit-justify .wpcf7-submit,
4901
- .wpr-forms-submit-justify .wpforms-submit,
4902
- .wpr-forms-submit-justify .wpforms-page-next,
4903
- .wpr-forms-submit-justify .wpforms-page-previous,
4904
- .wpr-forms-submit-justify .submit-wrap .ninja-forms-field,
4905
- .wpr-forms-submit-justify .caldera-grid .btn-default:not(a) {
4906
- display: block !important;
4907
- width: 100% !important;
4908
- text-align: center !important;
4909
- }
4910
-
4911
- .wpr-custom-chk-radio .wpcf7-checkbox input,
4912
- .wpr-custom-chk-radio .wpcf7-radio input,
4913
- .wpr-custom-chk-radio .wpcf7-acceptance input,
4914
- .wpr-custom-chk-radio .wpforms-field-radio input,
4915
- .wpr-custom-chk-radio .wpforms-field-checkbox input,
4916
- .wpr-custom-chk-radio .wpforms-field-gdpr-checkbox input {
4917
- display: none !important;
4918
- }
4919
-
4920
- .wpr-custom-chk-radio .wpcf7-checkbox .wpcf7-list-item-label,
4921
- .wpr-custom-chk-radio .wpcf7-radio .wpcf7-list-item-label,
4922
- .wpr-custom-chk-radio .wpcf7-acceptance .wpcf7-list-item-label,
4923
- .wpr-custom-chk-radio .wpforms-field-checkbox input+label,
4924
- .wpr-custom-chk-radio .wpforms-field-gdpr-checkbox input+label,
4925
- .wpr-custom-chk-radio .wpforms-field-radio input+label,
4926
- .wpr-custom-chk-radio .wpforms-field-radio input+span {
4927
- cursor: pointer;
4928
- -webkit-user-select: none;
4929
- -moz-user-select: none;
4930
- -ms-user-select: none;
4931
- -o-user-select: none;
4932
- user-select: none;
4933
- }
4934
-
4935
- .wpr-custom-chk-radio .wpcf7-checkbox .wpcf7-list-item-label:before,
4936
- .wpr-custom-chk-radio .wpcf7-radio .wpcf7-list-item-label:before,
4937
- .wpr-custom-chk-radio .wpcf7-acceptance .wpcf7-list-item-label:before,
4938
- .wpr-custom-chk-radio .wpforms-field-checkbox input+label:before,
4939
- .wpr-custom-chk-radio .wpforms-field-gdpr-checkbox input+label:before,
4940
- .wpr-custom-chk-radio .wpforms-field-radio input+label:before,
4941
- .wpr-custom-chk-radio .wpforms-field-radio input:not(.wpforms-screen-reader-element)+span:before {
4942
- content: "\2714";
4943
- display: inline-block;
4944
- position: relative;
4945
- top: -1px;
4946
- text-align: center;
4947
- border: 1px solid;
4948
- margin-right: 5px;
4949
- color: transparent;
4950
- }
4951
-
4952
- .wpr-forms-align-right .wpforms-field-checkbox ul li input:first-child,
4953
- .wpr-forms-align-right .wpforms-field-radio ul li input:first-child,
4954
- .wpr-forms-align-right .wpforms-image-choices label input:first-of-type,
4955
- .wpr-forms-align-right .wpforms-field-gdpr-checkbox input:first-child {
4956
- float: right;
4957
- margin-right: 0 !important;
4958
- margin-left: 10px !important;
4959
- }
4960
-
4961
- .wpr-forms-align-right .wpr-forms-container,
4962
- .wpr-forms-align-right .wpr-forms-container .wpcf7-form-control {
4963
- direction: rtl;
4964
- }
4965
-
4966
- .wpr-forms-align-right .nf-form-wrap .field-wrap {
4967
- -webkit-box-pack: end;
4968
- -ms-flex-pack: end;
4969
- justify-content: flex-end;
4970
- }
4971
-
4972
- .wpr-forms-align-right .label-right .nf-field-description {
4973
- margin-right: 0 !important;
4974
- }
4975
-
4976
- .wpr-forms-align-right .nf-error.field-wrap .nf-field-element:after {
4977
- right: auto !important;
4978
- left: 1px !important;
4979
- }
4980
-
4981
- .wpr-forms-align-right .wpr-custom-chk-radio .wpcf7-checkbox .wpcf7-list-item-label:before,
4982
- .wpr-forms-align-right .wpr-custom-chk-radio .wpcf7-radio .wpcf7-list-item-label:before,
4983
- .wpr-forms-align-right .wpr-custom-chk-radio .wpcf7-acceptance .wpcf7-list-item-label:before,
4984
- .wpr-forms-align-right .wpr-custom-chk-radio .wpforms-field-checkbox input+label:before,
4985
- .wpr-forms-align-right .wpr-custom-chk-radio .wpforms-field-gdpr-checkbox input+label:before,
4986
- .wpr-forms-align-right .wpr-custom-chk-radio .wpforms-field-radio input+label:before,
4987
- .wpr-forms-align-right .wpr-custom-chk-radio .wpforms-field-radio input:not(.wpforms-screen-reader-element)+span:before {
4988
- margin-right: 0;
4989
- margin-left: 5px;
4990
- }
4991
-
4992
- .wpr-forms-align-right .wpcf7-list-item.last,
4993
- .wpr-forms-align-right .wpcf7-acceptance .wpcf7-list-item,
4994
- .wpr-forms-align-right div.wpforms-container-full .wpforms-form .wpforms-list-inline ul li:first-child {
4995
- margin-right: 0 !important;
4996
- }
4997
-
4998
- .wpr-forms-align-right .wpr-forms-container .intl-tel-input .flag-container {
4999
- left: auto !important;
5000
- right: 0 !important;
5001
- }
5002
-
5003
- .wpr-forms-align-right .caldera-grid .col-sm-4,
5004
- .wpr-forms-align-right .caldera-grid .col-sm-6 {
5005
- float: right;
5006
- }
5007
-
5008
- .wpr-forms-align-right .wpr-forms-container .caldera-grid .checkbox label,
5009
- .wpr-forms-align-right .wpr-forms-container .caldera-grid .checkbox-inline label,
5010
- .wpr-forms-align-right .wpr-forms-container .caldera-grid .radio label {
5011
- padding-left: 0 !important;
5012
- padding-right: 20px;
5013
- }
5014
-
5015
- .wpr-forms-align-right .wpr-forms-container .caldera-grid .checkbox input,
5016
- .wpr-forms-align-right .wpr-forms-container .caldera-grid .radio input {
5017
- margin-right: -20px !important;
5018
- margin-left: 0 !important;
5019
- }
5020
-
5021
- .wpr-forms-align-right .wpr-forms-container .caldera-grid .cf-credit-card {
5022
- background-position: 99% center !important;
5023
- }
5024
-
5025
- .wpr-forms-align-right .wpr-forms-container .caldera-grid .live-gravatar {
5026
- text-align: right !important;
5027
- }
5028
-
5029
- .wpr-forms-align-left .wpr-forms-container .caldera-grid .live-gravatar {
5030
- text-align: left !important;
5031
- }
5032
-
5033
- .wpr-forms-container .nf-form-content {
5034
- padding: 0;
5035
- max-width: none;
5036
- }
5037
-
5038
- .wpr-forms-container .nf-form-content .label-above .field-wrap {
5039
- -webkit-box-orient: vertical;
5040
- -webkit-box-direction: normal;
5041
- -ms-flex-direction: column;
5042
- flex-direction: column;
5043
- }
5044
-
5045
- .wpr-forms-container .nf-form-content .label-above .nf-field-label {
5046
- margin-top: 0;
5047
- }
5048
-
5049
- .wpr-forms-container .field-wrap:not(.textarea-wrap):not(.submit-wrap) .ninja-forms-field {
5050
- border-radius: 0;
5051
- }
5052
-
5053
- .wpr-forms-container .field-wrap.textarea-wrap .ninja-forms-field {
5054
- display: block;
5055
- }
5056
-
5057
- .wpr-forms-container .field-wrap.submit-wrap .ninja-forms-field {
5058
- cursor: pointer;
5059
- }
5060
-
5061
- .wpr-forms-container .listselect-wrap>div select.ninja-forms-field {
5062
- -webkit-appearance: menulist;
5063
- -moz-appearance: menulist;
5064
- appearance: menulist;
5065
- }
5066
-
5067
- .wpr-forms-container .nf-form-content .list-select-wrap .nf-field-element>div,
5068
- .wpr-forms-container .nf-form-content input:not([type=button]),
5069
- .wpr-forms-container .nf-form-content textarea {
5070
- background: transparent;
5071
- border: none;
5072
- }
5073
-
5074
- .wpr-forms-container .checkbox-container.label-right .field-wrap {
5075
- display: block;
5076
- }
5077
-
5078
- .wpr-forms-container .listradio-wrap ul li,
5079
- .wpr-forms-container .listcheckbox-wrap ul li {
5080
- display: inline-block;
5081
- margin-right: 10px !important;
5082
- margin-bottom: 7px !important;
5083
- }
5084
-
5085
- .wpr-forms-container .listcheckbox-container .nf-field-element label:after {
5086
- top: 1px;
5087
- }
5088
-
5089
- .wpr-forms-container .listradio-wrap .nf-field-element label {
5090
- margin-left: 25px !important;
5091
- }
5092
-
5093
- .wpr-forms-container .listradio-wrap .nf-field-element label:after {
5094
- top: 0;
5095
- left: -25px;
5096
- }
5097
-
5098
- .wpr-forms-container .listradio-wrap .nf-field-element label.nf-checked-label:before {
5099
- top: 4px;
5100
- left: -21px;
5101
- }
5102
-
5103
- .wpr-forms-container .listradio-wrap label,
5104
- .wpr-forms-container .checkbox-wrap label,
5105
- .wpr-forms-container .listcheckbox-wrap label {
5106
- cursor: pointer;
5107
- -webkit-user-select: none;
5108
- -moz-user-select: none;
5109
- -ms-user-select: none;
5110
- -o-user-select: none;
5111
- user-select: none;
5112
- }
5113
-
5114
- .wpr-forms-container .nf-error.field-wrap .nf-field-element:after {
5115
- top: 0 !important;
5116
- bottom: 0 !important;
5117
- height: auto !important;
5118
- }
5119
-
5120
- .wpr-forms-container .wpforms-form .wpforms-field,
5121
- .wpr-forms-container .wpforms-submit-container {
5122
- padding: 0 !important;
5123
- }
5124
-
5125
- .wpr-forms-container .wpforms-container,
5126
- .wpr-forms-container div.wpforms-container-full .wpforms-form .wpforms-field-row,
5127
- .wpr-forms-container .wpforms-field-address .wpforms-field-row:nth-last-child(2) {
5128
- margin-bottom: 0 !important;
5129
- }
5130
-
5131
- .wpr-forms-container .wpforms-submit-container:after {
5132
- content: " ";
5133
- clear: both;
5134
- display: table;
5135
- }
5136
-
5137
- .wpr-forms-container .caldera-grid .help-block {
5138
- margin-bottom: 0;
5139
- }
5140
-
5141
- .wpr-forms-container .caldera-grid .caldera-forms-gdpr-field-label a {
5142
- text-decoration: underline;
5143
- }
5144
-
5145
- .wpr-forms-container .caldera-grid .intl-tel-input input {
5146
- text-indent: 40px;
5147
- }
5148
-
5149
- .wpr-forms-container .caldera-grid input.cf-credit-card {
5150
- text-indent: 33px;
5151
- }
5152
-
5153
- .wpr-forms-container .caldera-grid .cf-credit-card {
5154
- background-position: 5px center !important;
5155
- }
5156
-
5157
- .wpr-forms-container .cf2-dropzone .form-control {
5158
- height: auto;
5159
- }
5160
-
5161
- .wpr-forms-container .caldera-grid .form-group input,
5162
- .wpr-forms-container .caldera-grid .form-group textarea {
5163
- -webkit-box-shadow: none;
5164
- box-shadow: none;
5165
- }
5166
-
5167
- .wpr-forms-container .caldera-grid .has-error .form-control {
5168
- -webkit-box-shadow: none;
5169
- box-shadow: none;
5170
- }
5171
-
5172
- .wpr-forms-container .caldera-grid .alert-success {
5173
- text-shadow: none;
5174
- }
5175
-
5176
-
5177
- /* Defaults */
5178
-
5179
- .elementor-widget-wpr-forms .wpforms-head-container .wpforms-title,
5180
- .elementor-widget-wpr-forms .nf-form-title h3 {
5181
- font-size: 28px;
5182
- font-weight: 800;
5183
- }
5184
-
5185
- .elementor-widget-wpr-forms .wpforms-head-container .wpforms-description,
5186
- .elementor-widget-wpr-forms .nf-form-fields-required {
5187
- font-size: 14px;
5188
- }
5189
-
5190
- .elementor-widget-wpr-forms .wpcf7-form,
5191
- .elementor-widget-wpr-forms .nf-field-container label,
5192
- .elementor-widget-wpr-forms .wpforms-field-label,
5193
- .elementor-widget-wpr-forms .wpforms-image-choices-label,
5194
- .elementor-widget-wpr-forms .wpforms-field-label-inline,
5195
- .elementor-widget-wpr-forms .wpforms-captcha-question,
5196
- .elementor-widget-wpr-forms .wpforms-captcha-equation,
5197
- .elementor-widget-wpr-forms .wpforms-payment-total,
5198
- .elementor-widget-wpr-forms .caldera-grid .control-label,
5199
- .elementor-widget-wpr-forms .caldera-forms-summary-field ul li,
5200
- .elementor-widget-wpr-forms .caldera-grid .total-line,
5201
- .elementor-widget-wpr-forms .caldera-grid .checkbox label,
5202
- .elementor-widget-wpr-forms .caldera-grid .radio label,
5203
- .elementor-widget-wpr-forms .caldera-grid .caldera-forms-gdpr-field-label,
5204
- .elementor-widget-wpr-forms .wpr-forms-container .wpforms-confirmation-container-full,
5205
- .elementor-widget-wpr-forms .wpr-forms-container .nf-response-msg {
5206
- font-size: 14px;
5207
- }
5208
-
5209
- .elementor-widget-wpr-forms .wpcf7-text,
5210
- .elementor-widget-wpr-forms .wpcf7-textarea,
5211
- .elementor-widget-wpr-forms .wpcf7-date,
5212
- .elementor-widget-wpr-forms .wpcf7-number,
5213
- .elementor-widget-wpr-forms .wpcf7-select,
5214
- .elementor-widget-wpr-forms .wpcf7-quiz,
5215
- .elementor-widget-wpr-forms .ninja-forms-field,
5216
- .elementor-widget-wpr-forms .wpforms-form input[type=date],
5217
- .elementor-widget-wpr-forms .wpforms-form input[type=datetime],
5218
- .elementor-widget-wpr-forms .wpforms-form input[type=datetime-local],
5219
- .elementor-widget-wpr-forms .wpforms-form input[type=email],
5220
- .elementor-widget-wpr-forms .wpforms-form input[type=month],
5221
- .elementor-widget-wpr-forms .wpforms-form input[type=number],
5222
- .elementor-widget-wpr-forms .wpforms-form input[type=password],
5223
- .elementor-widget-wpr-forms .wpforms-form input[type=range],
5224
- .elementor-widget-wpr-forms .wpforms-form input[type=search],
5225
- .elementor-widget-wpr-forms .wpforms-form input[type=tel],
5226
- .elementor-widget-wpr-forms .wpforms-form input[type=text],
5227
- .elementor-widget-wpr-forms .wpforms-form input[type=time],
5228
- .elementor-widget-wpr-forms .wpforms-form input[type=url],
5229
- .elementor-widget-wpr-forms .wpforms-form input[type=week],
5230
- .elementor-widget-wpr-forms .wpforms-form select,
5231
- .elementor-widget-wpr-forms .wpforms-form textarea,
5232
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=text],
5233
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=email],
5234
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=tel],
5235
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=phone],
5236
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=number],
5237
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=url],
5238
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=color_picker],
5239
- .elementor-widget-wpr-forms .caldera-grid .form-control[type=credit_card_cvc],
5240
- .elementor-widget-wpr-forms .caldera-grid select.form-control,
5241
- .elementor-widget-wpr-forms .caldera-grid textarea.form-control {
5242
- font-size: 13px;
5243
- letter-spacing: 0.2px;
5244
- }
5245
-
5246
- .elementor-widget-wpr-forms .wpcf7-submit,
5247
- .elementor-widget-wpr-forms .submit-wrap .ninja-forms-field,
5248
- .elementor-widget-wpr-forms .submit-wrap .ninja-forms-field,
5249
- .elementor-widget-wpr-forms .wpforms-submit,
5250
- .elementor-widget-wpr-forms .wpforms-page-next,
5251
- .elementor-widget-wpr-forms .wpforms-page-previous,
5252
- .elementor-widget-wpr-forms .caldera-grid .btn-default,
5253
- .elementor-widget-wpr-forms .caldera-grid .cf2-dropzone button {
5254
- background-color: #605BE5;
5255
- }
5256
-
5257
- .elementor-widget-wpr-forms .wpcf7-submit:hover,
5258
- .elementor-widget-wpr-forms .submit-wrap .ninja-forms-field:hover,
5259
- .elementor-widget-wpr-forms .wpforms-submit:hover,
5260
- .elementor-widget-wpr-forms .wpforms-page-next:hover,
5261
- .elementor-widget-wpr-forms .wpforms-page-previous:hover,
5262
- .elementor-widget-wpr-forms .caldera-grid .btn-default:hover,
5263
- .elementor-widget-wpr-forms .caldera-grid .btn-success,
5264
- .elementor-widget-wpr-forms .caldera-grid .cf2-dropzone button:hover {
5265
- background-color: #4A45D2;
5266
- }
5267
-
5268
- .elementor-widget-wpr-forms .wpr-forms-container .wpcf7-not-valid-tip,
5269
- .elementor-widget-wpr-forms .wpr-forms-container .wpcf7-response-output,
5270
- .elementor-widget-wpr-forms .wpr-forms-container label.wpforms-error,
5271
- .elementor-widget-wpr-forms .wpr-forms-container .caldera_ajax_error_block,
5272
- .elementor-widget-wpr-forms .wpr-forms-container .nf-error-msg {
5273
- font-size: 14px;
5274
- }
5275
-
5276
- .elementor-widget-wpr-forms .wpcf7-form,
5277
- .elementor-widget-wpr-forms .nf-field-container label,
5278
- .elementor-widget-wpr-forms .wpforms-field-label,
5279
- .elementor-widget-wpr-forms .wpforms-image-choices-label,
5280
- .elementor-widget-wpr-forms .wpforms-field-label-inline,
5281
- .elementor-widget-wpr-forms .wpforms-captcha-question,
5282
- .elementor-widget-wpr-forms .wpforms-captcha-equation,
5283
- .elementor-widget-wpr-forms .wpforms-payment-total,
5284
- .elementor-widget-wpr-forms .caldera-grid .control-label,
5285
- .elementor-widget-wpr-forms .caldera-forms-summary-field ul li,
5286
- .elementor-widget-wpr-forms .caldera-grid .total-line,
5287
- .elementor-widget-wpr-forms .caldera-grid .checkbox label,
5288
- .elementor-widget-wpr-forms .caldera-grid .radio label,
5289
- .elementor-widget-wpr-forms .caldera-grid .caldera-forms-gdpr-field-label,
5290
- .elementor-widget-wpr-forms .wpr-forms-container .wpforms-confirmation-container-full,
5291
- .elementor-widget-wpr-forms .wpr-forms-container .nf-response-msg {
5292
- font-weight: normal;
5293
- }
5294
-
5295
- .elementor-widget-wpr-forms.nf-field-description,
5296
- .elementor-widget-wpr-forms.wpforms-field-sublabel,
5297
- .elementor-widget-wpr-forms.wpforms-field-description,
5298
- .elementor-widget-wpr-forms.caldera-grid .help-block {
5299
- font-size: 14px;
5300
- }
5301
-
5302
-
5303
- /*--------------------------------------------------------------
5304
- == Before After
5305
- --------------------------------------------------------------*/
5306
-
5307
- .wpr-ba-image-container {
5308
- position: relative;
5309
- overflow: hidden;
5310
- }
5311
-
5312
- .wpr-ba-image-container * {
5313
- -webkit-user-select: none;
5314
- -moz-user-select: none;
5315
- -ms-user-select: none;
5316
- user-select: none;
5317
- }
5318
-
5319
- .wpr-ba-image-1 img,
5320
- .wpr-ba-image-2 img {
5321
- max-width: 100%;
5322
- width: 100%;
5323
- }
5324
-
5325
- .wpr-ba-image-2 {
5326
- position: absolute;
5327
- top: 0;
5328
- left: 0;
5329
- width: 100%;
5330
- height: 100%;
5331
- overflow: hidden;
5332
- }
5333
-
5334
- .wpr-ba-image-2 img {
5335
- position: absolute;
5336
- top: 0;
5337
- }
5338
-
5339
- .wpr-ba-divider {
5340
- display: -webkit-box;
5341
- display: -ms-flexbox;
5342
- display: flex;
5343
- -webkit-box-align: center;
5344
- -ms-flex-align: center;
5345
- align-items: center;
5346
- -webkit-box-pack: center;
5347
- -ms-flex-pack: center;
5348
- justify-content: center;
5349
- position: absolute;
5350
- top: 0;
5351
- left: 50%;
5352
- z-index: 3;
5353
- height: 100%;
5354
- cursor: pointer;
5355
- -ms-touch-action: none;
5356
- touch-action: none;
5357
- }
5358
-
5359
- .wpr-ba-divider-icons {
5360
- display: -webkit-box;
5361
- display: -ms-flexbox;
5362
- display: flex;
5363
- }
5364
-
5365
- .wpr-ba-vertical .wpr-ba-divider-icons {
5366
- -webkit-box-orient: vertical;
5367
- -webkit-box-direction: normal;
5368
- -ms-flex-direction: column;
5369
- flex-direction: column;
5370
- }
5371
-
5372
- .wpr-ba-horizontal .wpr-ba-divider-icons i:first-child {
5373
- text-align: right;
5374
- padding-right: 10%;
5375
- }
5376
-
5377
- .wpr-ba-horizontal .wpr-ba-divider-icons i:last-child {
5378
- text-align: left;
5379
- padding-left: 10%;
5380
- }
5381
-
5382
- .wpr-ba-divider-icons .fa {
5383
- text-align: center;
5384
- }
5385
-
5386
- .wpr-ba-vertical .wpr-ba-divider {
5387
- top: 50%;
5388
- left: auto;
5389
- width: 100%;
5390
- height: auto;
5391
- }
5392
-
5393
- .wpr-ba-vertical .wpr-ba-image-2 img {
5394
- top: auto;
5395
- }
5396
-
5397
- .wpr-ba-horizontal .wpr-ba-divider-icons:before,
5398
- .wpr-ba-horizontal .wpr-ba-divider-icons:after {
5399
- content: '';
5400
- display: block;
5401
- position: absolute;
5402
- height: 100%;
5403
- }
5404
-
5405
- .wpr-ba-vertical .wpr-ba-divider-icons:before,
5406
- .wpr-ba-vertical .wpr-ba-divider-icons:after {
5407
- content: '';
5408
- display: block;
5409
- position: absolute;
5410
- width: 100%;
5411
- }
5412
-
5413
- .wpr-ba-label {
5414
- position: absolute;
5415
- display: -webkit-box;
5416
- display: -ms-flexbox;
5417
- display: flex;
5418
- padding: 15px;
5419
- }
5420
-
5421
- .wpr-ba-labels-none .wpr-ba-label {
5422
- display: none;
5423
- }
5424
-
5425
- .wpr-ba-labels-hover .wpr-ba-label {
5426
- opacity: 0;
5427
- -webkit-transition: 0.1s ease-in;
5428
- -o-transition: 0.1s ease-in;
5429
- transition: 0.1s ease-in;
5430
- }
5431
-
5432
- .wpr-ba-labels-hover:hover .wpr-ba-label {
5433
- opacity: 1;
5434
- }
5435
-
5436
- .wpr-ba-horizontal .wpr-ba-label {
5437
- top: 0;
5438
- height: 100%;
5439
- -webkit-box-orient: vertical;
5440
- -webkit-box-direction: normal;
5441
- -ms-flex-direction: column;
5442
- flex-direction: column;
5443
- }
5444
-
5445
- .wpr-ba-horizontal .wpr-ba-label-1 {
5446
- left: 0;
5447
- }
5448
-
5449
- .wpr-ba-horizontal .wpr-ba-label-2 {
5450
- right: 0;
5451
- }
5452
-
5453
- .wpr-ba-vertical .wpr-ba-label {
5454
- left: 0;
5455
- width: 100%;
5456
- }
5457
-
5458
- .wpr-ba-vertical .wpr-ba-label-1 {
5459
- top: 0;
5460
- }
5461
-
5462
- .wpr-ba-vertical .wpr-ba-label-2 {
5463
- bottom: 0;
5464
- }
5465
-
5466
-
5467
- /* Defaults */
5468
-
5469
- .elementor-widget-wpr-before-after .wpr-ba-label>div {
5470
- background-color: #605BE5;
5471
- font-size: 14px;
5472
- }
5473
-
5474
-
5475
- /*--------------------------------------------------------------
5476
- == Popups
5477
- --------------------------------------------------------------*/
5478
-
5479
- body:not(.elementor-editor-active) .wpr-template-popup {
5480
- display: none;
5481
- }
5482
-
5483
- .wpr-template-popup {
5484
- position: fixed;
5485
- top: 0;
5486
- left: 0;
5487
- width: 100%;
5488
- height: 100%;
5489
- z-index: 99999999;
5490
- }
5491
-
5492
- .wpr-template-popup-inner {
5493
- display: -webkit-box;
5494
- display: -ms-flexbox;
5495
- display: flex;
5496
- position: fixed;
5497
- top: 0;
5498
- left: 0;
5499
- width: 100%;
5500
- height: 100%;
5501
- }
5502
-
5503
- .wpr-popup-container {
5504
- position: relative;
5505
- }
5506
-
5507
- .wpr-popup-container-inner {
5508
- display: -webkit-box;
5509
- display: -ms-flexbox;
5510
- display: flex;
5511
- overflow: hidden;
5512
- position: relative;
5513
- background: #ffffff;
5514
- }
5515
-
5516
- .wpr-popup-container-inner>div {
5517
- width: 100%;
5518
- -ms-flex-negative: 0;
5519
- flex-shrink: 0;
5520
- }
5521
-
5522
- .wpr-popup-container>div {
5523
- width: 100%;
5524
- }
5525
-
5526
- .wpr-popup-image-overlay {
5527
- position: absolute;
5528
- top: 0;
5529
- left: 0;
5530
- width: 100%;
5531
- height: 100%;
5532
- background: #ffffff;
5533
- }
5534
-
5535
- .wpr-popup-overlay {
5536
- position: absolute;
5537
- top: 0;
5538
- left: 0;
5539
- z-index: -1;
5540
- width: 100%;
5541
- height: 100%;
5542
- background: rgba( 0, 0, 0, 0.7);
5543
- }
5544
-
5545
- .wpr-popup-close-btn {
5546
- display: -webkit-box;
5547
- display: -ms-flexbox;
5548
- display: flex;
5549
- position: absolute;
5550
- top: 0;
5551
- right: 0;
5552
- z-index: 99;
5553
- text-align: center;
5554
- cursor: pointer;
5555
- }
5556
-
5557
- .wpr-popup-notification.wpr-template-popup,
5558
- .wpr-popup-notification .wpr-template-popup-inner {
5559
- height: auto !important;
5560
- }
5561
-
5562
- .wpr-popup-notification .wpr-popup-overlay {
5563
- display: none !important;
5564
- }
5565
-
5566
- .wpr-popup-container-inner.ps-container.ps-active-y>.ps-scrollbar-y-rail,
5567
- .wpr-popup-container-inner.ps.ps--active-y>.ps__rail-y {
5568
- display: block;
5569
- background-color: transparent;
5570
- }
5571
-
5572
- .wpr-popup-container-inner.ps-container>.ps-scrollbar-y-rail,
5573
- .wpr-popup-container-inner.ps>.ps__rail-y {
5574
- display: none;
5575
- position: absolute;
5576
- right: 3px;
5577
- width: 3px;
5578
- }
5579
-
5580
- .wpr-popup-container-inner.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y,
5581
- .wpr-popup-container-inner.ps>.ps__rail-y>.ps__thumb-y {
5582
- position: absolute;
5583
- cursor: pointer;
5584
- right: 0;
5585
- width: 3px;
5586
- }
5587
-
5588
- .wpr-popup-container .ps-scrollbar-x-rail {
5589
- display: none !important;
5590
- }
5591
-
5592
- .wpr-popup-notification .wpr-popup-container .slideInDown {
5593
- -webkit-animation-timing-function: linear;
5594
- animation-timing-function: linear;
5595
- }
5596
-
5597
- .wpr-popup-notification .wpr-popup-container {
5598
- width: 100% !important;
5599
- -webkit-box-align: start !important;
5600
- -ms-flex-align: start !important;
5601
- align-items: flex-start !important;
5602
- }
5603
-
5604
- .wpr-popup-trigger-button {
5605
- display: inline-block;
5606
- font-size: 14px;
5607
- font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
5608
- cursor: pointer;
5609
- }
5610
-
5611
-
5612
- /* Only For Editing */
5613
-
5614
- .wpr-popup-container .elementor-editor-section-settings {
5615
- -webkit-transform: translateX(-50%);
5616
- -ms-transform: translateX(-50%);
5617
- transform: translateX(-50%);
5618
- border-radius: 0 0 5px 5px;
5619
- }
5620
-
5621
- .wpr-popup-container .elementor-editor-section-settings .elementor-editor-element-setting:first-child {
5622
- border-radius: 0 0 0 5px;
5623
- }
5624
-
5625
- .wpr-popup-container .elementor-editor-section-settings .elementor-editor-element-setting:first-child:before {
5626
- top: 0;
5627
- border-width: 0 12px 22px 0;
5628
- }
5629
-
5630
- .wpr-popup-container .elementor-editor-section-settings .elementor-editor-element-setting:last-child {
5631
- border-radius: 0 0 5px 0;
5632
- }
5633
-
5634
- .wpr-popup-container .elementor-editor-section-settings .elementor-editor-element-setting:last-child:after {
5635
- top: 0;
5636
- border-width: 0 0 22px 12px;
5637
- }
5638
-
5639
- .elementor-editor-active [data-elementor-type="wpr-popups"] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,
5640
- .elementor-editor-active [data-elementor-type="wpr-popups"]:not(.elementor-edit-mode) {
5641
- display: none;
5642
- }
5643
-
5644
- .elementor .elementor-widget-wpr-popup-trigger .wpr-popup-trigger-button {
5645
- display: inline-block;
5646
- font-size: 14px;
5647
- font-weight: 500;
5648
- cursor: pointer;
5649
- }
5650
-
5651
- .elementor-editor-active [data-elementor-type="wpr-popup"] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,
5652
- .elementor-editor-active [data-elementor-type="wpr-popup"]:not(.elementor-edit-mode) {
5653
- display: none;
5654
- }
5655
-
5656
-
5657
- /* Template Edit button */
5658
-
5659
- .wpr-template-edit-btn {
5660
- position: absolute;
5661
- top: 0;
5662
- right: 40px;
5663
- display: none;
5664
- line-height: 1;
5665
- padding: 8px 13px;
5666
- cursor: pointer;
5667
- background: #333;
5668
- color: #fff;
5669
- border: 1px solid #000;
5670
- }
5671
-
5672
- .elementor-editor-active .wpr-template-edit-btn {
5673
- display: inline-block;
5674
- opacity: 0;
5675
- visibility: hidden;
5676
- }
5677
-
5678
- .elementor-editor-active .elementor-element-edit-mode:hover .wpr-template-edit-btn {
5679
- opacity: 1;
5680
- visibility: visible;
5681
- }
5682
-
5683
-
5684
- /*--------------------------------------------------------------
5685
- == Mailchimp
5686
- --------------------------------------------------------------*/
5687
-
5688
- .wpr-mailchimp-fields {
5689
- display: -webkit-box;
5690
- display: -ms-flexbox;
5691
- display: flex;
5692
- }
5693
-
5694
- .wpr-mailchimp-email label,
5695
- .wpr-mailchimp-email input,
5696
- .wpr-mailchimp-first-name label,
5697
- .wpr-mailchimp-first-name input,
5698
- .wpr-mailchimp-last-name label,
5699
- .wpr-mailchimp-last-name input {
5700
- display: block;
5701
- width: 100%;
5702
- }
5703
-
5704
- .wpr-mailchimp-layout-hr .wpr-mailchimp-fields {
5705
- -webkit-box-orient: horizontal;
5706
- -webkit-box-direction: normal;
5707
- -ms-flex-direction: row;
5708
- flex-direction: row;
5709
- -webkit-box-align: end;
5710
- -ms-flex-align: end;
5711
- align-items: flex-end;
5712
- }
5713
-
5714
- .wpr-mailchimp-layout-vr .wpr-mailchimp-fields {
5715
- -webkit-box-orient: vertical;
5716
- -webkit-box-direction: normal;
5717
- -ms-flex-direction: column;
5718
- flex-direction: column;
5719
- }
5720
-
5721
- .wpr-mailchimp-layout-hr .wpr-mailchimp-email,
5722
- .wpr-mailchimp-layout-hr .wpr-mailchimp-first-name,
5723
- .wpr-mailchimp-layout-hr .wpr-mailchimp-last-name {
5724
- -webkit-box-flex: 1;
5725
- -ms-flex-positive: 1;
5726
- flex-grow: 1;
5727
- }
5728
-
5729
- .wpr-mailchimp-subscribe-btn {
5730
- width: 100%;
5731
- padding: 0 !important;
5732
- outline: none !important;
5733
- cursor: pointer;
5734
- }
5735
-
5736
- .wpr-mailchimp-message,
5737
- .wpr-mailchimp-success-message,
5738
- .wpr-mailchimp-error-message {
5739
- display: none;
5740
- }
5741
-
5742
-
5743
- /* Defaults */
5744
- .elementor-widget-wpr-mailchimp .wpr-mailchimp-header h3 {
5745
- font-size: 28px;
5746
- font-weight: 800;
5747
- margin-top: 0;
5748
- }
5749
-
5750
- .elementor-widget-wpr-mailchimp .wpr-mailchimp-header p {
5751
- font-size: 14px;
5752
- }
5753
-
5754
- .elementor-widget-wpr-mailchimp .wpr-mailchimp-fields label {
5755
- font-size: 13px;
5756
- }
5757
-
5758
- .elementor-widget-wpr-mailchimp .wpr-mailchimp-subscribe-btn {
5759
- background-color: #605BE5;
5760
- }
5761
-
5762
- .elementor-widget-wpr-mailchimp .wpr-mailchimp-subscribe-btn:hover {
5763
- background-color: #4A45D2;
5764
- }
5765
-
5766
-
5767
- /*--------------------------------------------------------------
5768
- == Advanced Slider
5769
- --------------------------------------------------------------*/
5770
-
5771
- .wpr-advanced-slider-wrap {
5772
- position: relative;
5773
- }
5774
-
5775
- .wpr-advanced-slider {
5776
- position: relative;
5777
- height: 500px;
5778
- overflow: hidden;
5779
- }
5780
-
5781
- .wpr-slider-item {
5782
- position: relative;
5783
- height: 500px;
5784
- overflow: hidden;
5785
- }
5786
-
5787
- .wpr-slider-content {
5788
- position: relative;
5789
- max-width: 750px;
5790
- width: 100%;
5791
- padding: 10px 50px 50px 50px;
5792
- z-index: 90;
5793
- }
5794
-
5795
- .wpr-slider-item-bg {
5796
- position: absolute;
5797
- top: 0;
5798
- left: 0;
5799
- width: 100%;
5800
- height: 100%;
5801
- background-repeat: no-repeat;
5802
- background-position: center;
5803
- }
5804
-
5805
- .wpr-slider-title *,
5806
- .wpr-slider-sub-title h3,
5807
- .wpr-slider-description p {
5808
- display: inline-block;
5809
- }
5810
-
5811
- .wpr-slider-title * {
5812
- color: #ffffff;
5813
- font-size: 40px;
5814
- font-weight: 600;
5815
- line-height: 1.5em;
5816
- padding: 5px 10px 5px 10px;
5817
- margin: 0 0 2px 0;
5818
- }
5819
-
5820
- .wpr-slider-sub-title h3 {
5821
- font-size: 16px;
5822
- padding: 5px 10px 5px 10px;
5823
- margin: 0 0 10px 0;
5824
- }
5825
-
5826
- .wpr-slider-description p {
5827
- padding: 5px 10px 5px 10px;
5828
- margin: 0 0 30px 0;
5829
- }
5830
-
5831
- .wpr-slider-primary-btn,
5832
- .wpr-slider-secondary-btn {
5833
- padding: 12px 25px 12px 25px;
5834
- margin: 0 10px 0 10px;
5835
- border-style: solid;
5836
- border-width: 1px;
5837
- border-color: #ffffff;
5838
- border-radius: 2px;
5839
- }
5840
-
5841
- .wpr-slider-btns svg,
5842
- .wpr-slider-scroll-btn svg {
5843
- vertical-align: bottom;
5844
- }
5845
-
5846
-
5847
- /* Ken burn Effect */
5848
-
5849
- @keyframes ken-burns-in {
5850
- 0% {
5851
- -webkit-transform: scale(1);
5852
- transform: scale(1)
5853
- }
5854
- 100% {
5855
- -webkit-transform: scale(1.3);
5856
- transform: scale(1.3);
5857
- }
5858
- }
5859
-
5860
- @-webkit-keyframes ken-burns-in {
5861
- 0% {
5862
- -webkit-transform: scale(1);
5863
- transform: scale(1)
5864
- }
5865
- 100% {
5866
- -webkit-transform: scale(1.3);
5867
- transform: scale(1.3);
5868
- }
5869
- }
5870
-
5871
- @keyframes ken-burns-out {
5872
- 0% {
5873
- -webkit-transform: scale(1.3);
5874
- transform: scale(1.3);
5875
- }
5876
- 100% {
5877
- -webkit-transform: scale(1);
5878
- transform: scale(1);
5879
- }
5880
- }
5881
-
5882
- @-webkit-keyframes ken-burns-out {
5883
- 0% {
5884
- -webkit-transform: scale(1.3);
5885
- transform: scale(1.3);
5886
- }
5887
- 100% {
5888
- -webkit-transform: scale(1);
5889
- transform: scale(1);
5890
- }
5891
- }
5892
-
5893
- .wpr-advanced-slider .slick-slide.slick-active .wpr-slider-item-bg {
5894
- -webkit-animation-timing-function: linear;
5895
- animation-timing-function: linear;
5896
- -webkit-animation-duration: 10s;
5897
- animation-duration: 10s;
5898
- }
5899
-
5900
- .wpr-advanced-slider .slick-slide.slick-active .wpr-slider-item-bg.wpr-ken-burns-in {
5901
- -webkit-animation-name: ken-burns-in;
5902
- animation-name: ken-burns-in;
5903
- -webkit-transform: scale(1.3);
5904
- -ms-transform: scale(1.3);
5905
- transform: scale(1.3);
5906
- }
5907
-
5908
- .wpr-advanced-slider .slick-slide.slick-active .wpr-slider-item-bg.wpr-ken-burns-out {
5909
- -webkit-animation-name: ken-burns-out;
5910
- animation-name: ken-burns-out;
5911
- -webkit-transform: scale(1);
5912
- -ms-transform: scale(1);
5913
- transform: scale(1)
5914
- }
5915
-
5916
- .wpr-ken-burns-in {
5917
- -webkit-transform: scale(1);
5918
- -ms-transform: scale(1);
5919
- transform: scale(1);
5920
- }
5921
-
5922
- .wpr-ken-burns-out {
5923
- -webkit-transform: scale(1.3);
5924
- -ms-transform: scale(1.3);
5925
- transform: scale(1.3);
5926
- }
5927
-
5928
-
5929
- /* Slider Item URL */
5930
-
5931
- .wpr-slider-item-url {
5932
- display: block;
5933
- width: 100%;
5934
- height: 100%;
5935
- position: absolute;
5936
- left: 0;
5937
- top: 0;
5938
- z-index: 90;
5939
- }
5940
-
5941
-
5942
- /* Slider Navigation */
5943
-
5944
- .wpr-slider-nav-position-default .wpr-slider-arrow-container {
5945
- position: absolute;
5946
- display: -webkit-box;
5947
- display: -ms-flexbox;
5948
- display: flex;
5949
- }
5950
-
5951
- .wpr-slider-nav-position-default .wpr-slider-arrow {
5952
- position: static;
5953
- }
5954
-
5955
- .wpr-slider-nav-position-default .wpr-slider-prev-arrow {
5956
- -ms-transform: none;
5957
- transform: none;
5958
- -webkit-transform: none;
5959
- }
5960
-
5961
- .wpr-slider-nav-position-default .wpr-slider-next-arrow {
5962
- -ms-transform: translateY(0) rotate(180deg);
5963
- transform: translateY(0) rotate(180deg);
5964
- -webkit-transform: translateY(0) rotate(180deg);
5965
- }
5966
-
5967
- .wpr-slider-nav-align-top-center .wpr-slider-arrow-container,
5968
- .wpr-slider-nav-align-bottom-center .wpr-slider-arrow-container {
5969
- left: 50%;
5970
- -webkit-transform: translateX(-50%);
5971
- -ms-transform: translateX(-50%);
5972
- transform: translateX(-50%);
5973
- }
5974
-
5975
- .wpr-slider-arrow {
5976
- position: absolute;
5977
- z-index: 120;
5978
- top: 50%;
5979
- -webkit-box-sizing: content-box;
5980
- box-sizing: content-box;
5981
- text-align: center;
5982
- -webkit-transition: all .5s;
5983
- -o-transition: all .5s;
5984
- transition: all .5s;
5985
- cursor: pointer;
5986
- -webkit-box-align: center;
5987
- -ms-flex-align: center;
5988
- align-items: center;
5989
- -webkit-box-pack: center;
5990
- -ms-flex-pack: center;
5991
- justify-content: center;
5992
- }
5993
-
5994
- .wpr-slider-arrow i {
5995
- display: block;
5996
- line-height: inherit;
5997
- }
5998
-
5999
- .wpr-slider-prev-arrow {
6000
- left: 1%;
6001
- -webkit-transform: translateY(-50%);
6002
- -ms-transform: translateY(-50%);
6003
- transform: translateY(-50%);
6004
- }
6005
-
6006
- .wpr-slider-next-arrow {
6007
- right: 1%;
6008
- -webkit-transform: translateY(-50%) rotate(180deg);
6009
- -ms-transform: translateY(-50%) rotate(180deg);
6010
- transform: translateY(-50%) rotate(180deg);
6011
- }
6012
-
6013
- .wpr-slider-nav-fade .wpr-slider-arrow {
6014
- opacity: 0;
6015
- visibility: hidden;
6016
- }
6017
-
6018
- .wpr-slider-nav-fade .wpr-advanced-slider-wrap:hover .wpr-slider-arrow {
6019
- opacity: 1;
6020
- visibility: visible;
6021
- }
6022
-
6023
-
6024
- /* Slider Pagination */
6025
-
6026
- .wpr-slider-dots {
6027
- display: inline-table;
6028
- position: absolute;
6029
- z-index: 110;
6030
- left: 50%;
6031
- -webkit-transform: translate(-50%, -50%);
6032
- -ms-transform: translate(-50%, -50%);
6033
- transform: translate(-50%, -50%);
6034
- }
6035
-
6036
- .wpr-slider-dots .slick-dots {
6037
- position: static !important;
6038
- }
6039
-
6040
- .wpr-slider-dots ul {
6041
- list-style: none;
6042
- margin: 0;
6043
- padding: 0;
6044
- }
6045
-
6046
- .wpr-advanced-slider.slick-dotted.slick-slider {
6047
- margin-bottom: 0 !important;
6048
- }
6049
-
6050
- .wpr-slider-dots-vertical .slick-dots li {
6051
- display: block;
6052
- width: auto !important;
6053
- height: auto !important;
6054
- margin: 0 !important;
6055
- }
6056
-
6057
- .wpr-slider-dots-horizontal .slick-dots li {
6058
- width: auto !important;
6059
- padding-top: 10px;
6060
- margin: 0 !important;
6061
- }
6062
-
6063
- .wpr-slider-dots-pro-vr .slick-dots li:last-child span,
6064
- .wpr-slider-dots-horizontal .slick-dots li:last-child span {
6065
- margin-right: 0 !important;
6066
- }
6067
-
6068
- .wpr-slider-dots-pro-vr .wpr-slider-dots li,
6069
- .wpr-slider-dots-horizontal .wpr-slider-dots li {
6070
- float: left;
6071
- }
6072
-
6073
- .wpr-slider-dot {
6074
- display: block;
6075
- cursor: pointer;
6076
- }
6077
-
6078
- .wpr-slider-dots li:last-child .wpr-slider-dot {
6079
- margin: 0 !important;
6080
- }
6081
-
6082
-
6083
- /* Slider Scroll Button */
6084
-
6085
- .wpr-slider-scroll-btn {
6086
- position: absolute;
6087
- bottom: 45px;
6088
- left: 50%;
6089
- -webkit-transform: translateX(-50%);
6090
- -ms-transform: translateX(-50%);
6091
- transform: translateX(-50%);
6092
- display: inline-block;
6093
- -webkit-transition-duration: 200ms;
6094
- -o-transition-duration: 200ms;
6095
- transition-duration: 200ms;
6096
- line-height: 1;
6097
- overflow: hidden;
6098
- }
6099
-
6100
- @-webkit-keyframes wpr-scroll-animation {
6101
- 0% {
6102
- opacity: 0;
6103
- -webkit-transform: translate3d(0, -60%, 0);
6104
- transform: translate3d(0, -60%, 0);
6105
- }
6106
- 50% {
6107
- opacity: 1;
6108
- -webkit-transform: translate3d(0, 20%, 0);
6109
- transform: translate3d(0, 20%, 0);
6110
- }
6111
- 100% {
6112
- opacity: 0;
6113
- -webkit-transform: translate3d(0, 20%, 0);
6114
- transform: translate3d(0, 20%, 0);
6115
- }
6116
- }
6117
-
6118
- @keyframes wpr-scroll-animation {
6119
- 0% {
6120
- opacity: 0;
6121
- -webkit-transform: translate3d(0, -60%, 0);
6122
- transform: translate3d(0, -60%, 0);
6123
- }
6124
- 50% {
6125
- opacity: 1;
6126
- -webkit-transform: translate3d(0, 20%, 0);
6127
- transform: translate3d(0, 20%, 0);
6128
- }
6129
- 100% {
6130
- opacity: 0;
6131
- -webkit-transform: translate3d(0, 20%, 0);
6132
- transform: translate3d(0, 20%, 0);
6133
- }
6134
- }
6135
-
6136
- .wpr-scroll-animation {
6137
- -webkit-animation-name: wpr-scroll-animation;
6138
- animation-name: wpr-scroll-animation;
6139
- -webkit-animation-duration: 1300ms;
6140
- animation-duration: 1300ms;
6141
- -webkit-animation-iteration-count: infinite;
6142
- animation-iteration-count: infinite;
6143
- }
6144
-
6145
-
6146
- /* Slider Video */
6147
-
6148
- .wpr-slider-video {
6149
- position: absolute;
6150
- width: 100%;
6151
- height: 100%;
6152
- top: 0;
6153
- left: 0;
6154
- z-index: 90;
6155
- }
6156
-
6157
- .wpr-slider-video-btn {
6158
- margin: 0 auto;
6159
- }
6160
-
6161
- .wpr-slider-video-btn i {
6162
- display: block;
6163
- }
6164
-
6165
- .wpr-slider-video-icon-size-none .wpr-slider-video-btn {
6166
- display: none;
6167
- }
6168
-
6169
- .wpr-slider-video-icon-size-small .wpr-slider-video-btn {
6170
- height: 50px;
6171
- width: 50px;
6172
- font-size: 16px;
6173
- padding: 16px 0 0 4px;
6174
- border-width: 1px;
6175
- }
6176
-
6177
- .wpr-slider-video-icon-size-medium .wpr-slider-video-btn {
6178
- height: 80px;
6179
- width: 80px;
6180
- font-size: 26px;
6181
- padding: 25px 0 0 5px;
6182
- border-width: 2px;
6183
- }
6184
-
6185
- .wpr-slider-video-icon-size-large .wpr-slider-video-btn {
6186
- height: 100px;
6187
- width: 100px;
6188
- font-size: 30px;
6189
- padding: 33px 0 0 7px;
6190
- border-width: 2px;
6191
- }
6192
-
6193
- .wpr-slider-video-btn {
6194
- text-align: center;
6195
- border-style: solid;
6196
- border-radius: 50%;
6197
- cursor: pointer;
6198
- }
6199
-
6200
-
6201
- /* Slider Overlay */
6202
-
6203
- .wpr-slider-item-overlay {
6204
- position: absolute;
6205
- left: 0;
6206
- top: 0;
6207
- width: 100%;
6208
- height: 100%;
6209
- z-index: 80;
6210
- }
6211
-
6212
-
6213
- /* Slick Slider */
6214
-
6215
- .slick-slider {
6216
- position: relative;
6217
- display: block;
6218
- -webkit-box-sizing: border-box;
6219
- box-sizing: border-box;
6220
- -webkit-user-select: none;
6221
- -moz-user-select: none;
6222
- -ms-user-select: none;
6223
- user-select: none;
6224
- -webkit-touch-callout: none;
6225
- -khtml-user-select: none;
6226
- -ms-touch-action: pan-y;
6227
- touch-action: pan-y;
6228
- -webkit-tap-highlight-color: transparent;
6229
- }
6230
-
6231
- .slick-list {
6232
- position: relative;
6233
- display: block;
6234
- overflow: hidden;
6235
- margin: 0;
6236
- padding: 0;
6237
- }
6238
-
6239
- .slick-list:focus {
6240
- outline: none;
6241
- }
6242
-
6243
- .slick-list.dragging {
6244
- cursor: pointer;
6245
- cursor: hand;
6246
- }
6247
-
6248
- .slick-slider .slick-track,
6249
- .slick-slider .slick-list {
6250
- -webkit-transform: translate3d(0, 0, 0);
6251
- -ms-transform: translate3d(0, 0, 0);
6252
- transform: translate3d(0, 0, 0);
6253
- }
6254
-
6255
- .slick-track {
6256
- position: relative;
6257
- top: 0;
6258
- left: 0;
6259
- display: block;
6260
- margin-left: auto;
6261
- margin-right: auto;
6262
- }
6263
-
6264
- .slick-track:before,
6265
- .slick-track:after {
6266
- display: table;
6267
- content: '';
6268
- }
6269
-
6270
- .slick-track:after {
6271
- clear: both;
6272
- }
6273
-
6274
- .slick-loading .slick-track {
6275
- visibility: hidden;
6276
- }
6277
-
6278
- .slick-slide {
6279
- display: none;
6280
- float: left;
6281
- height: 100%;
6282
- min-height: 1px;
6283
- }
6284
-
6285
- [dir='rtl'] .slick-slide {
6286
- float: right;
6287
- }
6288
-
6289
- .slick-slide img {
6290
- display: block;
6291
- }
6292
-
6293
- .slick-slide.slick-loading img {
6294
- display: none;
6295
- }
6296
-
6297
- .slick-slide.dragging img {
6298
- pointer-events: none;
6299
- }
6300
-
6301
- .slick-initialized .slick-slide {
6302
- display: block;
6303
- }
6304
-
6305
- .slick-loading .slick-slide {
6306
- visibility: hidden;
6307
- }
6308
-
6309
- .slick-vertical .slick-slide {
6310
- display: block;
6311
- height: auto;
6312
- border: 1px solid transparent;
6313
- }
6314
-
6315
- .slick-arrow.slick-hidden {
6316
- display: none;
6317
- }
6318
-
6319
-
6320
- /*--------------------------------------------------------------
6321
- == Pricing Table
6322
- --------------------------------------------------------------*/
6323
-
6324
- .wpr-pricing-table {
6325
- position: relative;
6326
- }
6327
-
6328
-
6329
- /* Heading */
6330
-
6331
- .wpr-pricing-table-heading {
6332
- text-align: center;
6333
- }
6334
-
6335
- .wpr-pricing-table-headding-inner {
6336
- display: inline-block;
6337
- }
6338
-
6339
- .wpr-pricing-table-heading-left .wpr-pricing-table-headding-inner>div,
6340
- .wpr-pricing-table-heading-right .wpr-pricing-table-headding-inner>div {
6341
- display: inline-block;
6342
- vertical-align: top;
6343
- }
6344
-
6345
- .wpr-pricing-table-heading-left .wpr-pricing-table-icon {
6346
- float: left;
6347
- }
6348
-
6349
- .wpr-pricing-table-heading-right .wpr-pricing-table-icon {
6350
- float: right;
6351
- }
6352
-
6353
- .wpr-pricing-table-heading-left .wpr-pricing-table-title-wrap,
6354
- .wpr-pricing-table-heading-right .wpr-pricing-table-title-wrap {
6355
- text-align: left;
6356
- }
6357
-
6358
- .wpr-pricing-table-heading-center .wpr-pricing-table-icon img {
6359
- margin: 0 auto;
6360
- }
6361
-
6362
- .wpr-pricing-table-icon img {
6363
- display: block;
6364
- border-style: none;
6365
- }
6366
-
6367
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-title-wrap .wpr-pricing-table-title {
6368
- font-size: 26px;
6369
- font-weight: 600;
6370
- }
6371
-
6372
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-title-wrap .wpr-pricing-table-sub-title {
6373
- font-size: 14px;
6374
- }
6375
-
6376
- .wpr-pricing-table-price {
6377
- text-align: center;
6378
- font-size: 65px;
6379
- font-weight: 500;
6380
- line-height: 0.9;
6381
- }
6382
-
6383
- .wpr-pricing-table-price-inner {
6384
- -ms-box-orient: horizontal;
6385
- display: -webkit-box;
6386
- display: -ms-flexbox;
6387
- display: -moz-flex;
6388
- display: flex;
6389
- -webkit-box-pack: center;
6390
- -ms-flex-pack: center;
6391
- justify-content: center;
6392
- }
6393
-
6394
- .wpr-pricing-table-sub-price,
6395
- .wpr-pricing-table-currency,
6396
- .wpr-pricing-table-old-price,
6397
- .wpr-pricing-table-preiod {
6398
- line-height: 1;
6399
- }
6400
-
6401
- .wpr-pricing-table-preiod {
6402
- font-size: 17px;
6403
- line-height: 1.5;
6404
- -webkit-align-self: flex-end;
6405
- -ms-flex-item-align: end;
6406
- align-self: flex-end;
6407
- }
6408
-
6409
- .wpr-pricing-table-old-price {
6410
- text-decoration: line-through !important;
6411
- }
6412
-
6413
-
6414
- /* Feature */
6415
-
6416
- .wpr-pricing-table-feature {
6417
- position: relative;
6418
- font-size: 15px;
6419
- }
6420
-
6421
- .wpr-pricing-table-feature-inner {
6422
- display: -webkit-box;
6423
- display: -ms-flexbox;
6424
- display: flex;
6425
- -webkit-box-align: center;
6426
- -ms-flex-align: center;
6427
- align-items: center;
6428
- margin: 0 auto;
6429
- }
6430
-
6431
- .wpr-pricing-table-feature-inner span {
6432
- position: relative;
6433
- }
6434
-
6435
- .wpr-pricing-table-feature-inner span.wpr-pricing-table-ftext-line-yes {
6436
- text-decoration: line-through;
6437
- }
6438
-
6439
- .wpr-pricing-table-feature:after {
6440
- content: "";
6441
- display: block;
6442
- width: 100%;
6443
- margin: 0 auto;
6444
- }
6445
-
6446
- .wpr-pricing-table section:last-of-type:after {
6447
- display: none;
6448
- }
6449
-
6450
- .wpr-pricing-table-feature-text,
6451
- .wpr-pricing-table-feature-icon {
6452
- display: inline;
6453
- }
6454
-
6455
- .wpr-pricing-table-feature-icon {
6456
- margin-right: 8px;
6457
- }
6458
-
6459
- .wpr-pricing-table-feature-tooltip {
6460
- position: absolute;
6461
- top: 0;
6462
- left: 50%;
6463
- border-radius: 4px;
6464
- padding: 6px 10px;
6465
- visibility: hidden;
6466
- opacity: 0;
6467
- font-size: 15px;
6468
- -webkit-transform: translate(-50%, -100%);
6469
- -ms-transform: translate(-50%, -100%);
6470
- transform: translate(-50%, -100%);
6471
- -webkit-transition: all 230ms ease-in-out 0s;
6472
- -o-transition: all 230ms ease-in-out 0s;
6473
- transition: all 230ms ease-in-out 0s;
6474
- text-align: center;
6475
- }
6476
-
6477
- .wpr-pricing-table-feature-tooltip:before {
6478
- content: "";
6479
- position: absolute;
6480
- left: 10px;
6481
- bottom: -5px;
6482
- width: 0;
6483
- height: 0;
6484
- border-left: 6px solid transparent;
6485
- border-right: 6px solid transparent;
6486
- border-top-style: solid;
6487
- border-top-width: 6px;
6488
- }
6489
-
6490
- .wpr-pricing-table-feature:hover .wpr-pricing-table-feature-tooltip {
6491
- visibility: visible;
6492
- opacity: 1;
6493
- top: 5px;
6494
- -ms-transform: translate(-50%, -100%);
6495
- transform: translate(-50%, -100%);
6496
- -webkit-transform: translate(-50%, -100%);
6497
- }
6498
-
6499
- .wpr-pricing-table-feature-tooltip:before {
6500
- left: 50%;
6501
- -ms-transform: translateX(-50%);
6502
- transform: translateX(-50%);
6503
- -webkit-transform: translateX(-50%) !important;
6504
- }
6505
-
6506
-
6507
- /* Button */
6508
-
6509
- .wpr-pricing-table-button {
6510
- text-align: center;
6511
- font-size: 17px;
6512
- }
6513
-
6514
- .wpr-pricing-table-btn {
6515
- position: relative;
6516
- overflow: hidden;
6517
- display: inline-block;
6518
- vertical-align: middle;
6519
- cursor: pointer;
6520
- }
6521
-
6522
- .wpr-pricing-table-btn span {
6523
- position: relative;
6524
- z-index: 2;
6525
- opacity: 1 !important;
6526
- }
6527
-
6528
- .wpr-pricing-table-btn:before,
6529
- .wpr-pricing-table-btn:after {
6530
- z-index: 1 !important;
6531
- }
6532
-
6533
-
6534
- /* Badge */
6535
-
6536
- .wpr-pricing-table-badge {
6537
- position: absolute;
6538
- display: inline-block;
6539
- text-align: center;
6540
- z-index: 2;
6541
- }
6542
-
6543
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-badge .wpr-pricing-table-badge-inner {
6544
- font-size: 15px;
6545
- font-weight: 900;
6546
- }
6547
-
6548
- .wpr-pricing-table-badge-left {
6549
- left: 0;
6550
- right: auto;
6551
- }
6552
-
6553
- .wpr-pricing-table-badge-right {
6554
- left: auto;
6555
- right: 0;
6556
- }
6557
-
6558
- .wpr-pricing-table-badge-corner {
6559
- top: 0;
6560
- width: 200px;
6561
- height: 200px;
6562
- overflow: hidden;
6563
- }
6564
-
6565
- .wpr-pricing-table-badge-corner .wpr-pricing-table-badge-inner {
6566
- width: 200%;
6567
- }
6568
-
6569
- .wpr-pricing-table-badge-corner.wpr-pricing-table-badge-right {
6570
- -ms-transform: rotate(90deg);
6571
- transform: rotate(90deg);
6572
- -webkit-transform: rotate(90deg);
6573
- }
6574
-
6575
- .wpr-pricing-table-badge-cyrcle {
6576
- top: 0;
6577
- }
6578
-
6579
- .wpr-pricing-table-badge-cyrcle .wpr-pricing-table-badge-inner {
6580
- border-radius: 100%;
6581
- }
6582
-
6583
- .wpr-pricing-table-badge-flag {
6584
- border-right: 5px;
6585
- }
6586
-
6587
- .wpr-pricing-table-badge-flag.wpr-pricing-table-badge-left {
6588
- margin-left: -10px;
6589
- }
6590
-
6591
- .wpr-pricing-table-badge-flag.wpr-pricing-table-badge-right {
6592
- margin-right: -10px;
6593
- }
6594
-
6595
- .wpr-pricing-table-badge-flag:before {
6596
- content: "";
6597
- position: absolute;
6598
- z-index: 1;
6599
- bottom: -5px;
6600
- width: 0;
6601
- height: 0;
6602
- margin-left: -10px;
6603
- border-left: 10px solid transparent;
6604
- border-right: 10px solid transparent;
6605
- border-top-style: solid;
6606
- border-top-width: 10px;
6607
- }
6608
-
6609
- .wpr-pricing-table-badge-flag .wpr-pricing-table-badge-inner {
6610
- position: relative;
6611
- z-index: 2;
6612
- border-top-left-radius: 3px;
6613
- border-top-right-radius: 3px;
6614
- }
6615
-
6616
- .wpr-pricing-table-badge-flag.wpr-pricing-table-badge-left:before {
6617
- left: 5px;
6618
- -ms-transform: rotate(90deg);
6619
- transform: rotate(90deg);
6620
- -webkit-transform: rotate(90deg);
6621
- }
6622
-
6623
- .wpr-pricing-table-badge-flag.wpr-pricing-table-badge-right:before {
6624
- right: -5px;
6625
- -ms-transform: rotate(-90deg);
6626
- transform: rotate(-90deg);
6627
- -webkit-transform: rotate(-90deg);
6628
- }
6629
-
6630
- .wpr-pricing-table-badge-flag.wpr-pricing-table-badge-left .wpr-pricing-table-badge-inner {
6631
- border-bottom-right-radius: 3px;
6632
- }
6633
-
6634
- .wpr-pricing-table-badge-flag.wpr-pricing-table-badge-right .wpr-pricing-table-badge-inner {
6635
- border-bottom-left-radius: 3px;
6636
- }
6637
-
6638
-
6639
- /* Text */
6640
- .wpr-pricing-table-text {
6641
- font-size: 13px;
6642
- line-height: 1.3;
6643
- }
6644
-
6645
-
6646
- /* Divider */
6647
- .wpr-pricing-table-divider {
6648
- margin: 0 auto;
6649
- border: 0;
6650
- }
6651
-
6652
-
6653
- /* Animation */
6654
- .wpr-pricing-table-animation-slide {
6655
- -webkit-transition-property: margin;
6656
- -o-transition-property: margin;
6657
- transition-property: margin;
6658
- -webkit-transition-timing-function: ease-in-out;
6659
- -o-transition-timing-function: ease-in-out;
6660
- transition-timing-function: ease-in-out;
6661
- }
6662
-
6663
- .wpr-pricing-table-animation-bounce {
6664
- -webkit-animation-iteration-count: 1;
6665
- animation-iteration-count: 1;
6666
- }
6667
-
6668
- .wpr-pricing-table-animation-slide:hover {
6669
- margin-top: -5px;
6670
- }
6671
-
6672
- .wpr-pricing-table-animation-bounce:hover {
6673
- -webkit-animation-name: bounce;
6674
- animation-name: bounce;
6675
- }
6676
-
6677
-
6678
- /* Defaults */
6679
-
6680
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-heading {
6681
- background-color: #f9f9f9;
6682
- }
6683
-
6684
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-price {
6685
- background-color: #605be5;
6686
- }
6687
-
6688
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-button {
6689
- background-color: #f9f9f9;
6690
- }
6691
-
6692
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-btn {
6693
- background-color: #2B2B2B;
6694
- }
6695
-
6696
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-btn:hover {
6697
- background-color: #4A45D2;
6698
- }
6699
-
6700
- .elementor-widget-wpr-pricing-table .wpr-pricing-table-text {
6701
- background-color: #f9f9f9;
6702
- }
6703
-
6704
-
6705
- /*--------------------------------------------------------------
6706
- == Logo
6707
- --------------------------------------------------------------*/
6708
-
6709
- .wpr-logo {
6710
- position: relative;
6711
- display: inline-table;
6712
- overflow: hidden;
6713
- }
6714
-
6715
- .wpr-logo-image img {
6716
- display: block;
6717
- }
6718
-
6719
- .wpr-logo-description {
6720
- margin: 0;
6721
- }
6722
-
6723
- .wpr-logo-image,
6724
- .wpr-logo-text {
6725
- position: relative;
6726
- display: block;
6727
- width: 100%;
6728
- z-index: 7;
6729
- }
6730
-
6731
- .wpr-logo-url {
6732
- position: absolute;
6733
- display: block;
6734
- width: 100%;
6735
- height: 100%;
6736
- top: 0;
6737
- left: 0;
6738
- z-index: 5;
6739
- }
6740
-
6741
- .wpr-logo-position-left .wpr-logo-image,
6742
- .wpr-logo-position-left .wpr-logo-text {
6743
- float: left;
6744
- }
6745
-
6746
- .wpr-logo-position-right .wpr-logo-image,
6747
- .wpr-logo-position-right .wpr-logo-text {
6748
- float: right;
6749
- }
6750
-
6751
- .wpr-logo-position-center .wpr-logo-image {
6752
- margin: 0 auto;
6753
- }
6754
-
6755
- .wpr-logo-position-center .wpr-logo-text {
6756
- text-align: center;
6757
- }
6758
-
6759
- .wpr-logo-position-left .wpr-logo-text,
6760
- .wpr-logo-position-right .wpr-logo-text {
6761
- text-align: left;
6762
- }
6763
-
6764
-
6765
- /* Defaults */
6766
-
6767
- .elementor-widget-wpr-logo .wpr-logo-title {
6768
- font-size: 16px;
6769
- line-height: 1.5;
6770
- }
6771
-
6772
- .elementor-widget-wpr-logo .wpr-logo-description {
6773
- font-size: 13px;
6774
- }
6775
-
6776
-
6777
- /*--------------------------------------------------------------
6778
- == Testimonial
6779
- --------------------------------------------------------------*/
6780
-
6781
- .wpr-testimonial-carousel .slick-slider {
6782
- cursor: drag;
6783
- }
6784
-
6785
- .wpr-testimonial-carousel .slick-track {
6786
- display: -webkit-box !important;
6787
- display: flex !important;
6788
- display: -ms-flexbox !important;
6789
- }
6790
-
6791
- .wpr-testimonial-carousel .slick-slide {
6792
- height: inherit !important;
6793
- }
6794
-
6795
- .wpr-testimonial-carousel-wrap .slick-list {
6796
- padding-right: 1px !important;
6797
- }
6798
-
6799
-
6800
- /* Testimonial Navigation */
6801
- .wpr-testimonial-nav-position-default .wpr-testimonial-arrow-container {
6802
- position: absolute;
6803
- display: -webkit-box;
6804
- display: -ms-flexbox;
6805
- display: flex;
6806
- }
6807
-
6808
- .wpr-testimonial-nav-position-default .wpr-testimonial-arrow {
6809
- position: static;
6810
- }
6811
-
6812
- .wpr-testimonial-nav-position-default .wpr-testimonial-prev-arrow {
6813
- -ms-transform: none;
6814
- transform: none;
6815
- -webkit-transform: none;
6816
- }
6817
-
6818
- .wpr-testimonial-nav-position-default .wpr-testimonial-next-arrow {
6819
- -ms-transform: translateY(0) rotate(180deg);
6820
- transform: translateY(0) rotate(180deg);
6821
- -webkit-transform: translateY(0) rotate(180deg);
6822
- }
6823
-
6824
- .wpr-testimonial-nav-align-top-center .wpr-testimonial-arrow-container,
6825
- .wpr-testimonial-nav-align-bottom-center .wpr-testimonial-arrow-container {
6826
- left: 50%;
6827
- -webkit-transform: translateX(-50%);
6828
- -ms-transform: translateX(-50%);
6829
- transform: translateX(-50%);
6830
- }
6831
-
6832
- .wpr-testimonial-arrow {
6833
- position: absolute;
6834
- z-index: 120;
6835
- top: 52%;
6836
- -webkit-box-sizing: content-box;
6837
- box-sizing: content-box;
6838
- -webkit-box-align: center;
6839
- -ms-flex-align: center;
6840
- align-items: center;
6841
- -webkit-box-pack: center;
6842
- -ms-flex-pack: center;
6843
- justify-content: center;
6844
- text-align: center;
6845
- -webkit-transition: all .5s;
6846
- -o-transition: all .5s;
6847
- transition: all .5s;
6848
- cursor: pointer;
6849
- }
6850
-
6851
- .wpr-testimonial-arrow i {
6852
- display: block;
6853
- line-height: inherit;
6854
- }
6855
-
6856
- .wpr-testimonial-prev-arrow {
6857
- left: 2%;
6858
- -webkit-transform: translateY(-50%);
6859
- -ms-transform: translateY(-50%);
6860
- transform: translateY(-50%);
6861
- }
6862
-
6863
- .wpr-testimonial-next-arrow {
6864
- right: 2%;
6865
- -webkit-transform: translateY(-50%) rotate(180deg);
6866
- -ms-transform: translateY(-50%) rotate(180deg);
6867
- transform: translateY(-50%) rotate(180deg);
6868
- }
6869
-
6870
- .wpr-testimonial-nav-fade .wpr-testimonial-arrow {
6871
- opacity: 0;
6872
- }
6873
-
6874
-
6875
- /* Testimonial Pagination */
6876
-
6877
- .wpr-testimonial-dots {
6878
- display: inline-table;
6879
- position: absolute;
6880
- z-index: 110;
6881
- left: 50%;
6882
- -webkit-transform: translate(-50%, -50%);
6883
- -ms-transform: translate(-50%, -50%);
6884
- transform: translate(-50%, -50%);
6885
- }
6886
-
6887
- .wpr-testimonial-dots ul {
6888
- list-style: none;
6889
- padding: 0;
6890
- margin: 0;
6891
- }
6892
-
6893
- .wpr-testimonial-dots li {
6894
- float: left;
6895
- width: auto !important;
6896
- margin: 0 !important;
6897
- }
6898
-
6899
- .wpr-testimonial-dot {
6900
- display: block;
6901
- cursor: pointer;
6902
- }
6903
-
6904
- .wpr-testimonial-dots li:last-child .wpr-testimonial-dot {
6905
- margin: 0 !important;
6906
- }
6907
-
6908
-
6909
- /* Social Media */
6910
-
6911
- .wpr-testimonial-social-media {
6912
- display: inline-block;
6913
- }
6914
-
6915
- .wpr-testimonial-social {
6916
- display: block;
6917
- float: left;
6918
- width: 45px;
6919
- height: 45px;
6920
- line-height: 45px;
6921
- font-size: 45px;
6922
- -webkit-box-sizing: content-box;
6923
- box-sizing: content-box;
6924
- text-align: center;
6925
- -webkit-transition: all .5s;
6926
- -o-transition: all .5s;
6927
- transition: all .5s;
6928
- cursor: pointer;
6929
- }
6930
-
6931
- .wpr-testimonial-social i {
6932
- display: block;
6933
- width: 100%;
6934
- height: 100%;
6935
- line-height: inherit;
6936
- }
6937
-
6938
- .wpr-testimonial-social:last-child {
6939
- margin-right: 0 !important;
6940
- }
6941
-
6942
-
6943
- /* Rating */
6944
-
6945
- .wpr-testimonial-rating i {
6946
- display: inline;
6947
- position: relative;
6948
- font-family: "eicons";
6949
- font-style: normal;
6950
- line-height: 1;
6951
- overflow: hidden;
6952
- }
6953
-
6954
- .wpr-testimonial-rating i:before {
6955
- content: '\e934';
6956
- font-weight: 900;
6957
- display: block;
6958
- position: absolute;
6959
- top: 0;
6960
- left: 0;
6961
- font-size: inherit;
6962
- font-family: inherit;
6963
- overflow: hidden;
6964
- }
6965
-
6966
- .wpr-testimonial-rating-style_2 .wpr-testimonial-rating i:before {
6967
- content: '\002605';
6968
- }
6969
-
6970
- .wpr-testimonial-rating i:last-of-type {
6971
- margin-right: 0 !important;
6972
- }
6973
-
6974
- .wpr-rating-icon-empty:before {
6975
- display: none !important;
6976
- }
6977
-
6978
-
6979
- /* Content */
6980
-
6981
- .elementor-widget-wpr-testimonial-carousel .wpr-testimonial-content-wrap .wpr-testimonial-title {
6982
- font-size: 18px;
6983
- font-weight: 700;
6984
- }
6985
-
6986
- .wpr-testimonial-content {
6987
- position: relative;
6988
- font-size: 15px;
6989
- }
6990
-
6991
- .wpr-testimonial-content p {
6992
- position: relative;
6993
- z-index: 5;
6994
- margin: 0;
6995
- }
6996
-
6997
-
6998
- /* Icon */
6999
-
7000
- .wpr-testimonial-content .wpr-testimonial-icon {
7001
- position: absolute;
7002
- width: 100%;
7003
- z-index: 1;
7004
- }
7005
-
7006
- .wpr-testimonial-date {
7007
- font-size: 10px;
7008
- }
7009
-
7010
-
7011
- /* Triangle */
7012
- .wpr-testimonial-content-inner {
7013
- position: relative;
7014
- background-color: #f9f9f9;
7015
- }
7016
-
7017
- .wpr-testimonial-triangle-yes .wpr-testimonial-content-inner:before {
7018
- content: "";
7019
- position: absolute;
7020
- width: 0;
7021
- height: 0;
7022
- border-left: 15px solid transparent;
7023
- border-right: 15px solid transparent;
7024
- border-top-style: solid;
7025
- border-top-width: 15px;
7026
- }
7027
-
7028
- .wpr-testimonial-meta-position-top.wpr-testimonial-meta-align-center .wpr-testimonial-content-inner:before,
7029
- .wpr-testimonial-meta-position-bottom.wpr-testimonial-meta-align-center .wpr-testimonial-content-inner:before {
7030
- right: calc( 50% - 15px);
7031
- }
7032
-
7033
- .wpr-testimonial-meta-position-top.wpr-testimonial-meta-align-left .wpr-testimonial-content-inner:before,
7034
- .wpr-testimonial-meta-position-bottom.wpr-testimonial-meta-align-left .wpr-testimonial-content-inner:before {
7035
- margin-left: -15px;
7036
- }
7037
-
7038
- .wpr-testimonial-meta-position-top.wpr-testimonial-meta-align-right .wpr-testimonial-content-inner:before,
7039
- .wpr-testimonial-meta-position-bottom.wpr-testimonial-meta-align-right .wpr-testimonial-content-inner:before {
7040
- margin-right: -15px;
7041
- }
7042
-
7043
- .wpr-testimonial-meta-position-left .wpr-testimonial-content-inner:before,
7044
- .wpr-testimonial-meta-position-right .wpr-testimonial-content-inner:before {
7045
- margin-top: -7.5px;
7046
- }
7047
-
7048
- .wpr-testimonial-meta-position-top .wpr-testimonial-content-inner:before {
7049
- -webkit-transform: rotate(180deg);
7050
- -ms-transform: rotate(180deg);
7051
- transform: rotate(180deg);
7052
- }
7053
-
7054
- .wpr-testimonial-meta-position-top .wpr-testimonial-content-inner {
7055
- margin-top: 15px;
7056
- }
7057
-
7058
- .wpr-testimonial-meta-position-right .wpr-testimonial-content-inner:before {
7059
- -webkit-transform: rotate(-90deg);
7060
- -ms-transform: rotate(-90deg);
7061
- transform: rotate(-90deg);
7062
- }
7063
-
7064
- .wpr-testimonial-meta-position-right .wpr-testimonial-content-inner {
7065
- margin-right: 15px;
7066
- }
7067
-
7068
- .wpr-testimonial-meta-position-left .wpr-testimonial-content-inner:before {
7069
- -webkit-transform: rotate(90deg);
7070
- -ms-transform: rotate(90deg);
7071
- transform: rotate(90deg);
7072
- }
7073
-
7074
- .wpr-testimonial-meta-position-left .wpr-testimonial-content-inner {
7075
- margin-left: 15px;
7076
- }
7077
-
7078
- .wpr-testimonial-meta-position-bottom .wpr-testimonial-content-inner:before {
7079
- bottom: -15px;
7080
- }
7081
-
7082
- .wpr-testimonial-meta-position-bottom .wpr-testimonial-content-inner {
7083
- margin-bottom: 15px;
7084
- }
7085
-
7086
- .wpr-testimonial-meta-position-extra .wpr-testimonial-content-inner:before {
7087
- display: none;
7088
- }
7089
-
7090
- .wpr-testimonial-meta-position-left .wpr-testimonial-content-inner:before {
7091
- left: -22px;
7092
- }
7093
-
7094
- .wpr-testimonial-meta-position-right .wpr-testimonial-content-inner:before {
7095
- right: -22px;
7096
- }
7097
-
7098
- .wpr-testimonial-meta-position-top .wpr-testimonial-content-inner:before {
7099
- top: -15px;
7100
- }
7101
-
7102
- .wpr-testimonial-meta-position-bottom .wpr-testimonial-content-inner:before {
7103
- bottom: -15px;
7104
- }
7105
-
7106
-
7107
- /* Meta */
7108
-
7109
- .wpr-testimonial-image {
7110
- overflow: hidden;
7111
- }
7112
-
7113
- .elementor-widget-wpr-testimonial-carousel .wpr-testimonial-meta .wpr-testimonial-name {
7114
- font-size: 14px;
7115
- font-weight: 700;
7116
- }
7117
-
7118
- .wpr-testimonial-logo-image {
7119
- display: block;
7120
- overflow: hidden;
7121
- }
7122
-
7123
-
7124
- /* Meta Position */
7125
-
7126
- .wpr-testimonial-item {
7127
- display: -webkit-box !important;
7128
- display: -ms-flexbox !important;
7129
- display: flex !important;
7130
- -webkit-box-pack: start;
7131
- -ms-flex-pack: start;
7132
- justify-content: flex-start;
7133
- }
7134
-
7135
- .wpr-testimonial-meta-position-extra .wpr-testimonial-item {
7136
- -webkit-box-orient: vertical;
7137
- -webkit-box-direction: normal;
7138
- -ms-flex-direction: column;
7139
- flex-direction: column;
7140
- }
7141
-
7142
- .wpr-testimonial-meta-position-top .wpr-testimonial-item {
7143
- -webkit-box-orient: vertical;
7144
- -webkit-box-direction: normal;
7145
- -ms-flex-direction: column;
7146
- flex-direction: column;
7147
- }
7148
-
7149
- .wpr-testimonial-meta-position-bottom .wpr-testimonial-item {
7150
- -webkit-box-orient: vertical;
7151
- -webkit-box-direction: reverse;
7152
- -ms-flex-direction: column-reverse;
7153
- flex-direction: column-reverse;
7154
- -webkit-box-pack: end;
7155
- -ms-flex-pack: end;
7156
- justify-content: flex-end;
7157
- }
7158
-
7159
- .wpr-testimonial-meta-position-right .wpr-testimonial-item {
7160
- -webkit-box-orient: horizontal;
7161
- -webkit-box-direction: reverse;
7162
- -ms-flex-direction: row-reverse;
7163
- flex-direction: row-reverse;
7164
- }
7165
-
7166
- .wpr-testimonial-meta-position-left .wpr-testimonial-item {
7167
- -webkit-box-orient: horizontal;
7168
- -webkit-box-direction: normal;
7169
- -ms-flex-direction: row;
7170
- flex-direction: row;
7171
- }
7172
-
7173
- .wpr-testimonial-meta-position-right .wpr-testimonial-meta,
7174
- .wpr-testimonial-meta-position-left .wpr-testimonial-meta {
7175
- -ms-flex-negative: 0;
7176
- flex-shrink: 0;
7177
- }
7178
-
7179
- @media screen and ( max-width: 480px) {
7180
- .wpr-testimonial-meta-position-left .wpr-testimonial-item,
7181
- .wpr-testimonial-meta-position-right .wpr-testimonial-item {
7182
- -webkit-box-orient: vertical;
7183
- -webkit-box-direction: normal;
7184
- -ms-flex-direction: column;
7185
- flex-direction: column;
7186
- }
7187
- .wpr-testimonial-meta-position-left .wpr-testimonial-content-inner,
7188
- .wpr-testimonial-meta-position-right .wpr-testimonial-content-inner {
7189
- margin-left: 0 !important;
7190
- }
7191
- .wpr-testimonial-meta-position-left .wpr-testimonial-meta,
7192
- .wpr-testimonial-meta-position-right .wpr-testimonial-meta {
7193
- margin-left: 0 !important;
7194
- margin-right: 0 !important;
7195
- padding: 0 !important;
7196
- margin-bottom: 20px;
7197
- }
7198
- .wpr-testimonial-meta-position-left .wpr-testimonial-content-inner:before,
7199
- .wpr-testimonial-meta-position-right .wpr-testimonial-content-inner:before {
7200
- display: none;
7201
- }
7202
- }
7203
-
7204
-
7205
- /* Job */
7206
-
7207
- .wpr-testimonial-job {
7208
- font-size: 10px;
7209
- }
7210
-
7211
-
7212
- /* Meta Image Positon */
7213
-
7214
- .wpr-testimonial-image-position-left .wpr-testimonial-meta-inner>div,
7215
- .wpr-testimonial-image-position-right .wpr-testimonial-meta-inner>div {
7216
- display: inline-block;
7217
- vertical-align: top;
7218
- }
7219
-
7220
- .wpr-testimonial-image-position-left .wpr-testimonial-image,
7221
- .wpr-testimonial-image-position-left .wpr-testimonial-logo-image img,
7222
- .wpr-testimonial-image-position-center.wpr-testimonial-meta-align-left .wpr-testimonial-meta img {
7223
- float: left;
7224
- }
7225
-
7226
- .wpr-testimonial-image-position-right .wpr-testimonial-image,
7227
- .wpr-testimonial-image-position-right .wpr-testimonial-logo-image img,
7228
- .wpr-testimonial-image-position-center.wpr-testimonial-meta-align-right .wpr-testimonial-meta img {
7229
- float: right;
7230
- }
7231
-
7232
- .wpr-testimonial-meta-align-left .wpr-testimonial-meta,
7233
- .wpr-testimonial-image-position-left .wpr-testimonial-meta-content-wrap {
7234
- text-align: left;
7235
- }
7236
-
7237
- .wpr-testimonial-meta-align-center .wpr-testimonial-meta {
7238
- text-align: center;
7239
- }
7240
-
7241
- .wpr-testimonial-meta-align-right .wpr-testimonial-meta,
7242
- .wpr-testimonial-image-position-right .wpr-testimonial-meta-content-wrap {
7243
- text-align: right;
7244
- }
7245
-
7246
- .wpr-testimonial-meta-align-center .wpr-testimonial-meta img {
7247
- margin: 0 auto;
7248
- }
7249
-
7250
- .wpr-testimonial-meta-position-extra .wpr-testimonial-meta img {
7251
- display: inline-block;
7252
- }
7253
-
7254
- .wpr-testimonial-meta-inner {
7255
- display: inline-block;
7256
- }
7257
-
7258
- .wpr-testimonial-meta-position-top .wpr-testimonial-meta-content-wrap,
7259
- .wpr-testimonial-meta-position-bottom .wpr-testimonial-meta-content-wrap {
7260
- /*text-align: center !important;*/
7261
- }
7262
-
7263
- .wpr-testimonial-meta-position-top .wpr-testimonial-logo-image img,
7264
- .wpr-testimonial-meta-position-bottom .wpr-testimonial-logo-image img,
7265
- .wpr-testimonial-meta-position-top .wpr-testimonial-social-media,
7266
- .wpr-testimonial-meta-position-bottom .wpr-testimonial-social-media {
7267
- float: none !important;
7268
- display: inline-block !important;
7269
- }
7270
-
7271
- @media screen and (min-width: 480px) {
7272
- .wpr-testimonial-image-position-left .wpr-testimonial-image,
7273
- .wpr-testimonial-image-position-right .wpr-testimonial-image {
7274
- margin-bottom: 0 !important;
7275
- }
7276
- }
7277
-
7278
- @media screen and (max-width: 480px) {
7279
- .wpr-testimonial-meta-position-left .wpr-testimonial-image,
7280
- .wpr-testimonial-meta-position-right .wpr-testimonial-image,
7281
- .wpr-testimonial-meta-position-left .wpr-testimonial-meta-content-wrap,
7282
- .wpr-testimonial-meta-position-right .wpr-testimonial-meta-content-wrap {
7283
- display: block !important;
7284
- float: none !important;
7285
- text-align: center !important;
7286
- }
7287
- .wpr-testimonial-meta-position-left.wpr-testimonial-image-position-left .wpr-testimonial-image,
7288
- .wpr-testimonial-meta-position-right.wpr-testimonial-image-position-left .wpr-testimonial-image,
7289
- .wpr-testimonial-meta-position-left.wpr-testimonial-image-position-right .wpr-testimonial-image,
7290
- .wpr-testimonial-meta-position-right.wpr-testimonial-image-position-right .wpr-testimonial-image {
7291
- margin-left: 0 !important;
7292
- margin-right: 0 !important;
7293
- }
7294
- .wpr-testimonial-meta-position-left .wpr-testimonial-image img,
7295
- .wpr-testimonial-meta-position-right .wpr-testimonial-image img,
7296
- .wpr-testimonial-meta-position-left .wpr-testimonial-logo-image img,
7297
- .wpr-testimonial-meta-position-right .wpr-testimonial-logo-image img {
7298
- display: inline-block !important;
7299
- float: none !important;
7300
- }
7301
- }
7302
-
7303
- /*--------------------------------------------------------------
7304
- == Search
7305
- --------------------------------------------------------------*/
7306
-
7307
- .wpr-search-admin-notice {
7308
- text-align: center;
7309
- margin: 0;
7310
- margin-top: 10px;
7311
- padding: 8px;
7312
- }
7313
-
7314
- .wpr-ajax-search-pagination-center .wpr-ajax-search-pagination {
7315
- text-align: center;
7316
- }
7317
-
7318
- .wpr-ajax-search-pagination-center .wpr-ajax-search-pagination {
7319
- display: -webkit-box;
7320
- display: -ms-flexbox;
7321
- display: flex;
7322
- -webkit-box-pack: center;
7323
- -ms-flex-pack: center;
7324
- justify-content: center;
7325
- }
7326
-
7327
- .wpr-ajax-search-pagination-left .wpr-ajax-search-pagination {
7328
- text-align: left;
7329
- display: -webkit-box;
7330
- display: -ms-flexbox;
7331
- display: flex;
7332
- -webkit-box-pack: start;
7333
- -ms-flex-pack: start;
7334
- justify-content: flex-start;
7335
- }
7336
-
7337
- .wpr-ajax-search-pagination-right .wpr-ajax-search-pagination {
7338
- text-align: right;
7339
- display: -webkit-box;
7340
- display: -ms-flexbox;
7341
- display: flex;
7342
- -webkit-box-pack: end;
7343
- -ms-flex-pack: end;
7344
- justify-content: flex-end;
7345
- }
7346
-
7347
- .wpr-data-fetch .wpr-ajax-search-pagination {
7348
- text-align: center;
7349
-
7350
- }
7351
-
7352
- .wpr-data-fetch ul::-webkit-scrollbar {
7353
- width: 4px;
7354
- background-color: transparent;
7355
- }
7356
-
7357
- .wpr-data-fetch ul::-webkit-scrollbar-thumb {
7358
- /* border-left: 6px solid transparent; */
7359
- border-left: 3px solid blue;
7360
- }
7361
-
7362
- .wpr-no-results {
7363
- display: -webkit-box;
7364
- display: -ms-flexbox;
7365
- display: flex;
7366
- -webkit-box-pack: center;
7367
- -ms-flex-pack: center;
7368
- justify-content: center;
7369
- -webkit-box-align: center;
7370
- -ms-flex-align: center;
7371
- align-items: center;
7372
- margin: 0;
7373
- }
7374
-
7375
- .wpr-load-more-results {
7376
- display: none;
7377
- width: 100%;
7378
- }
7379
-
7380
- .wpr-no-more-results {
7381
- display: none;
7382
- margin: 0;
7383
- text-align: center;
7384
- }
7385
-
7386
- .wpr-ajax-search-content {
7387
- text-align: left;
7388
- }
7389
-
7390
- .wpr-ajax-search-content a {
7391
- display: inline-block;
7392
- }
7393
-
7394
- .wpr-data-fetch {
7395
- position: absolute;
7396
- top: 100%;
7397
- left: 0;
7398
- width: 100%;
7399
- height: auto;
7400
- di